0
我正在嘗試使用生成函數使多個觸發器被用作寄存器。我有一個信號位矢量,我希望每一位都是D輸入到它的等效觸發器,但編譯後我得到警告,輸出Q沒有驅動程序。VHDL如何生成多個觸發器實體使用BIT_VECTOR作爲D輸入
在這裏,我限定觸發器
entity flipflop is
port(
D,CLK,RST: in BIT;
Q: out BIT
);
end entity;
architecture behavioral of flipflop is
begin
P1: process(RST,CLK)
begin
if(RST='1')then
Q <= '0';
elsif(CLK='1' and CLK'EVENT) then
Q <= D;
end if;
end process;
end behavioral;
我然後生成32個觸發器和嘗試將bit_vector信號總和的每個比特設置爲每一個的觸發器的輸入端d的行爲。
SIGNAL Q,D: BIT_VECTOR (31 DOWNTO 0);
SIGNAL SUM: BIT_VECTOR (31 DOWNTO 0);
BEGIN
register_maker : for i in 0 to 31 generate
BEGIN
flipflop_inst : ENTITY work.flipflop port map
(Q => Q(i),
CLK => CLK,
RST => RST,
D => D(i)
);
end generate register_maker;
process (D,SUM)
begin
for i in 0 to 31 loop
D(i) <= SUM(i);
end loop;
end process;
我不知道我哪裏出錯了,但拖鞋的輸出沒有變化。
感謝
而不是'if(CLK ='1'和CLK'EVENT)',使用'if(rising_edge(CLK))'。 –
對不起,這是我的錯誤,我誤解了你的代碼。我通常不會看到bit_vector被使用,全部是 – gsm
我假設當你編寫*之後,我得到的警告是輸出Q沒有驅動程序*你正在談論編譯的模擬。你確定你首先編譯了「flipflop」,然後編譯了其他設計嗎?而且這是你試圖模擬的其他設計? –