0
我有簡單的寄存器並從5個狀態機(一次都有)獲取單個位值。這些值作爲std_logic_vector存儲在一個寄存器中,並且必須作爲另一個模塊的輸入。一旦這個寄存器的輸出在另一個模塊中被處理,寄存器中的索引就會發生變化(e,g 0到1),該索引處的值應該被重置(e,g 1到0),它應該對於那個特定的索引不需要進一步的輸入(但是有來自狀態機的持續輸入)。任何建議,應該怎麼做?重置VHDL寄存器中的值並停止進一步寫入
的註冊登記號爲:
entity fault_reg is
port (
clk : in std_logic;
rst : in std_logic;
reg_in : in std_logic_vector(NUM_PORTS - 1 downto 0);
reg_out : out std_logic_vector(NUM_PORTS - 1 downto 0));
end fault_reg;
architecture Behavioral of fault_reg is
begin
reg_impl : process(clk, rst)
begin
if rst = '1' then
reg_out <= (others => '0');
elsif clk'event and clk='1' then
reg_out <= reg_in;
end if;
end process reg_impl;
end Behavioral;
不是這樣。最初的輸入值應該是這樣的寄存器輸出:'reg_out <= reg_in',之後它應該檢查'reg_in'的哪個索引是** 1 **,並且它應該總是使用** 0 **作爲該索引同時它不應該接受該輸入索引的更多值(因爲連續值將來自另一個模塊以避免重寫)。 – Digeek
好的,在這種情況下,你需要另一箇中間人來跟蹤哪些位是活的,哪些不是... –
好的,我明白了你的觀點。我添加了一個'select'輸入,當輸出爲'1'時爲'1',在這種情況下,它應該寫入常量'0'而不是**輸入**值。 – Digeek