我已經開始嘗試讓我的測試臺爲我做一些錯誤檢查。在下面的模型中,我使用一個進程來檢查兩個值是否相等,如果是這樣,請將布爾表達式更改爲true。 問題在於它根本沒有改變。它檢查的整數值在仿真中似乎沒有更新,但我在體系結構模型中添加了一個多路複用器來進行仔細檢查,並且它似乎響應HOW_MANY整數值的變化。模型和仿真下面VHDL - 更新錯誤檢查的整數值
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.numeric_std.ALL;
ENTITY rt IS
PORT (oranges, apples : IN std_logic_vector(3 DOWNTO 0);
number : IN integer;
pears : OUT std_logic);
END ENTITY rt;
ARCHITECTURE struct OF rt IS
SIGNAL HOW_MANY : integer;
BEGIN
HOW_MANY <= to_integer(unsigned(apples) + unsigned(oranges));
pears <= '1' WHEN how_many = 2 ELSE
'0';
END ARCHITECTURE struct;
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.numeric_std.ALL;
ENTITY test IS
END ENTITY test;
ARCHITECTURE io OF test IS
SIGNAL oranges, apples : std_logic_vector(3 DOWNTO 0);
SIGNAL number : integer;
SIGNAL pears : std_logic;
SIGNAL ERROR : boolean := FALSE;
SIGNAL HOW_MANY : integer;
SIGNAL int_oranges : natural;
BEGIN
H1 : ENTITY work.rt(struct)
PORT MAP (oranges, apples, number, pears);
oranges <= std_logic_vector(to_unsigned(int_oranges,4));
TESTER : PROCESS IS
BEGIN
int_oranges <= 3;
apples <= "0001";
number <= 4;
WAIT FOR 1 ns;
int_oranges <= 7;
apples <= "0001";
number <= 4;
WAIT FOR 1 ns;
int_oranges <= 1;
apples <= "0001";
number <= 2;
WAIT FOR 1 ns;
END PROCESS TESTER;
E_C : PROCESS (apples, int_oranges, number) IS
BEGIN
ERROR <= number = HOW_MANY;
END PROCESS E_C;
END ARCHITECTURE io;
模擬
你可以看到HOW_MANY整數從不與布爾值一起變化值,但梨值STD_LOGIC值確實發生了改變。
乾杯 d
嗨,感謝您的回覆,我需要將以下語句添加到io體系結構中嗎? \t HOW_MANY <= to_integer(unsigned(apple)+ unsigned(oranges)); – hoboBob
從實例化的RT中傳遞它不是更容易嗎? – user1155120