Sử dụng '-' như một giá trị nhập Hãy để chúng tôi đầu tiên kiểm tra các vấn đề liên quan đến sử dụng - như
một giá trị đầu vào. Considerthe ưu tiên functionof Table6.3. Chúng tôi có thể temptedto mã
mạch như sau:
y <= "10" khi req = "l--" khác
một ll O 1 khi req = "01-" khác
"00" khi req = "001" khác
00;
Các đang syntacticallycorrect. Tuy nhiên, trong một mạch vật lý, một tín hiệu đầu vào có thể chỉ
giả định một giá trị '0' hoặc '1', nhưng không bao giờ '-', và do đó req = lll-- "và req =" Ol- "
biểu sẽ luôn luôn là sai lầm . Nếu giá trị của tín hiệu req là "Ill", không ai trong số các
biểu thức Boolean là đúng và AOO "sẽ được gán cho y phù hợp. Để khắc phục
vấn đề này, chúng ta phải loại bỏ các comparisonof '-' trong biểu thức Boolean:
y <= "10" khi req (2) = '1' khác
"01" khi req (2 downto l) = tlOllle LSE
"00" khi req (2 downto O> = ll0Olt1e LSE
00;
. các fordemonstrationpurposes codeisjust andisnot rất hiệu quả Bettercode forpriority
encodingcircuit được minh họa trong phần 4.3.1.
trong gói IEEEnumeric-std, có một chức năng, std-matcho, thực hiện
don ' . so sánh t-chăm sóc accordingto việc giải thích truyền thống chức năng so sánh
hai inputsof loại std-logic-vectordata và diễn giải '-' làm đừng chăm sóc trong một cảm giác thông thường Đoạn mã trên có thể được viết như sau.
9..
sử dụng iEEE. số-std tất cả;.
y <= lll O tl khi std trận (req, "l--" 1 khác
"01" khi std trận (req, la O l - I 1) khác
110.011 khi std trận ( req, "OOL") khác
I1 00 I1.
...
tôi
thảo luận của chúng tôi '-' cũng được áp dụng cho các biểu hiện sự lựa chọn trong một tín hiệu được lựa chọn
. assignmentstatement và tuyên bố trường hợp Ví dụ, đoạn code sau đây có vẻ là
trực tiếp implementationof sự bảng chức năng nhỏ gọn của bảng 6.3:
với req chọn
y <= t1101 ~ khi II 1 - - 1 1
"O 1 lt khi lt O 1 - lt,
một tl OO khi ls OO 1 ll,
lf OO 1 một khi những người khác;
các đang syntacticallycorrect. Một lần nữa, kể từ khi một tín hiệu đầu vào vật chất không bao giờ có thể giả định một
giá trị của '-'., Các lựa chọn 111-- "và" 01- "sẽ không bao giờ xảy ra Nếu giá trị của tín hiệu req
là 1II tôi t, không có trận đấu và ' tôi 00 "sẽ là assignedto y. Thereisno sửa chữa dễ dàng trong trường hợp này.
Chúng ta phải xác định một cách rõ ràng sự lựa chọn expressionsin về '0' và 'l', như trong bản gốc trái
bảng chức năng của Bảng 6.3. Mã correctVHDL là
VHDL SYNTHESISFLOW 139
đang được dịch, vui lòng đợi..
