2
我知道,它不允許與可合成VHDL代碼中的X
或Z
進行比較。但是,是否允許編寫一個代碼,在該代碼中,我將信號與0
或1
進行比較以檢測Z
並暫停操作?代碼如下:與0或1進行比較以檢測高阻抗
process(clk)
begin
if rising_edge(clk) then
if(rst = '0') then
reg_0 <= (others => 'Z');
elsif(btf_start = '1') then
reg_0 <= "ZZ" & frame_in;
elsif(t_btf_finish = '1') then
reg_0 <= (others => 'Z');
end if;
end if;
end process;
process(clk)
begin
if rising_edge(clk) then
if(reg_0(0) = '0' or reg_0(0) = '1') then
-- DO SOME OPERATIONS
else
-- DO NOTHING
end if;
end if;
end process;
Thaks爲您的答覆。解釋是有道理的。我很困惑,因爲我在其中一個模塊中使用了類似的代碼,並且它在預綜合(modelsim)和後綜合模擬(ise)中都起作用。但是當我用fpga實現整個設計時,它並沒有像預期的那樣工作。通常情況下,後綜合模擬應該檢測所有這些故障? – dmm
@dmm理想情況下,它應該,但它強烈依賴於供應商如何爲其原語實現模擬庫。顯然在你的情況下,模擬庫沒有完全建模物理行爲。老實說,由於這個和類似的原因,我認爲後合成模擬浪費時間;在FPGA原型中使用諸如Chipscope或Signal Tap之類的邏輯分析儀通常是更快更實際的選擇。 – zennehoy