giúp đỡ về đặt mã này VHDL làm việc

F

frs89

Guest
I NEED SOME HELP TO PUT MÃ LÀM VIỆC NÀY.PLEASE!!NẾU EN = '0 'sau đó O = "0000" khác O (x) = y. .. vv

thư viện IEEE;
IEEE.std_logic_1164.all sử dụng;

thực thể là CHÍNH

port (
A: trong std_logic_vector (0-3);
B: in std_logic_vector (0-3);
C: in std_logic_vector (0-3);
D: in std_logic_vector (0-3);
E: in std_logic_vector (0-3);
F: in std_logic_vector (0-3);
G: in std_logic_vector (0-3);
H: in std_logic_vector (0-3);
EN: in std_logic;
O: out std_logic_vector (0-3)
);

cuối CHÍNH;kiến trúc arch1 của CHÍNH là

bắt đầu

đặt lại: quá trình (EN)
bắt đầu
nếu EN = '0 'rồi
O <= "0000";
nếu kết thúc;
kết thúc quá trình cài lại;

O (0) <= '1 'khi (A = E) hoặc (A = F) hoặc (A = G) hoặc (A = H) else '0';
O (1) <= '1 'khi (B = E) hoặc (B = F) hoặc (B = G) hoặc (B = H) else '0';
O (2) <= '1 'khi (C = E) hoặc (D = F) hoặc (E = G) hoặc (F = H) else '0';
O (3) <= '1 'khi (A = E) hoặc (A = F) hoặc (A = G) hoặc (A = H) else '0';

cuối arch1;

THE ERROR: Error 554 dòng 34: Một số tín hiệu bit o '' đang hướng nhiều hơn một lần
LÀM THẾ NÀO tôi thực hiện một đơn giản, nếu (EN == 0) (O = "0000") else (O (0) = x, y, vv) như trong Java hoặc C.?

Cảm ơn bạn
Flavio Silvestre

 
Bạn đã không nói với các thông báo lỗi, nhưng giống như "nhiều trình điều khiển cho O net [x]" có thể mong đợi.

Logic chính trong thiết kế của bạn là loại không đồng bộ, tinh khiết combinational.Nó không cần một nguyên nhân đầu vào Thiết lập lại nó memoryless, không depent trên tiểu bang trước đó.En đầu vào có thể được sử dụng trong các kết quả đầu ra combinational, với ưu tiên, nếu cần thiết, ví dụ như:
Mã số:

O (0) <= '0 'khi En = '0' else

'1 'Khi (A = E) hoặc (A = F) hoặc (A = G) hoặc (A = H) else '0';
 
frs89 đã viết:O (0) <= '1 'khi (A = E) hoặc (A = F) hoặc (A = G) hoặc (A = H) else '0';

O (1) <= '1 'khi (B = E) hoặc (B = F) hoặc (B = G) hoặc (B = H) else '0';

O (2) <= '1 'khi (C = E) hoặc (D = F) hoặc (E = G) hoặc (F = H) else '0';

O (3) <= '1 'khi (A = E) hoặc (A = F) hoặc (A = G) hoặc (A = H) else '0';
 
Những chất liệu tôi có lưu trữ thực tế, những Case-KHI-IF phải được đặt bên trong quá trình.
liên quan đến:
FvM đã viết:

Có điều kiện chuyển nhượng cú pháp không được áp dụng trong quá trình
 
IEEE 1076 giải thích về chủ đề này tại chiều dài lớn.
Trích:

statement.
Đối với một tín hiệu được phân công có điều kiện, có một báo cáo quá trình tương đương tương ứng với nó như được định nghĩa cho bất kỳ tuyên bố phân công đồng thời tín hiệu.

Nếu có điều kiện chuyển nhượng là tín hiệu có dạngmục tiêu <= tùy chọn

waveform1 khi condition1 khác

waveform2 khi condition2 khácwaveformN 1 khi conditionN 1 khác

waveformN khi conditionN;statement is of the form
sau đó là tín hiệu biến đổi trong quá trình
tương ứng là tuyên bố của biểu mẫunếu sau đó condition1

wave_transform1

elsif condition2 sau đó

wave_transform2elsif conditionN 1 sau đó

wave_transformN 1

elsif conditionN sau đó

wave_transformN

nếu kết thúc;
 
Xin lỗi cho những sai lầm và laziness của tôi

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />

FvM ...
Tôi đã thử và tôi đã nhận rằng công việc tốt mã:
xxx đã viết:

thực thể là CHÍNHport (

A: trong std_logic_vector (0-3);

B: in std_logic_vector (0-3);

C: in std_logic_vector (0-3);

D: in std_logic_vector (0-3);

E: in std_logic_vector (0-3);

F: in std_logic_vector (0-3);

G: in std_logic_vector (0-3);

H: in std_logic_vector (0-3);

EN: in std_logic;

O: out std_logic_vector (0-3)

);cuối CHÍNH;kiến trúc arch1 của CHÍNH làbắt đầuđặt lại: quá trình (EN)

bắt đầu

nếu EN = '0 'rồi

O <= "0000";

nếu kết thúc;

nếu (EN = '1 ') và ((A = E) hoặc (A = F) hoặc (A = G) hoặc (A = H)) sau đó O (0) <= '1';

else O (0) <= '0 ';

nếu kết thúc;

nếu (EN = '1 ') và ((B = E) hoặc (B = F) hoặc (B = G) hoặc (B = H)) sau đó O (1) <= '1';

O khác (1) <= '0 '; kết thúc nếu;

nếu (EN = '1 ') và ((C = E) hoặc (D = F) hoặc (E = G) hoặc (F = H)) sau đó O (2) <= '1';

else O (2) <= '0 '; kết thúc nếu;

nếu (EN = '1 ') và ((A = E) hoặc (A = F) hoặc (A = G) hoặc (A = H)) sau đó O (3) <= '1';

O khác (3) <= '0 '; kết thúc nếu;

kết thúc quá trình cài lại;cuối arch1;

 
Vâng, câu trường hợp có thể được sử dụng chỉ trong một quá trình.
variant is functional equivalent to the conditional assignment variant i suggested in my first posting.

Quy trình của bạn nếu sau đó
biến thể là chức năng tương đương với tôi đề nghị chuyển nhượng có điều kiện trong phiên bản đầu tiên của tôi đăng.Cả hai đều có thể được sử dụng.

Tuy nhiên một trong những điểm đến nên được chính xác trong mã của bạn: Tất cả các yếu tố đầu vào AH phải có trong danh sách quá trình nhạy cảm, nếu không trình biên dịch HDL là miễn phí để bỏ qua những thay đổi ở đầu vào, mặc dù tôi không mong chờ nó trong trường hợp này.

 

Welcome to EDABoard.com

Sponsor

Back
Top