我試圖在VHDL中實現某些功能。代碼1給出了錯誤的輸出,我不明白爲什麼。如果VHDL程序中的塊無法正常工作,值賦值
process(Data_in, reset)
begin
if(reset = '1') then
sig_sel <= "00";
elsif(reset = '0') then
if(Data_in(0) = '1') then
sig_sel <= "11";
report "sig_sel a is: " & STD_LOGIC'image(sig_sel(0));
report "sig_sel b is: " & STD_LOGIC'image(sig_sel(1));
if(sig_sel = "11") then
report "i am one and one";
end if;
end if;
end if;
end process;
注:sig_sel一個是: '0'
注:sig_sel b爲: '0'
但如果我刪除或復位後發表評論if語句(如下 - 代碼2)它的工作原理!
process(Data_in, reset)
begin
if(reset = '1') then
sig_sel <= "00";
elsif(reset = '0') then
--if(Data_in(0) = '1') then
sig_sel <= "11";
report "sig_sel a is: " & STD_LOGIC'image(sig_sel(0));
report "sig_sel b is: " & STD_LOGIC'image(sig_sel(1));
if(sig_sel = "11") then
report "i am one and one";
end if;
--end if;
end if;
end process;
注:sig_sel一個是: '1'
注:sig_sel b爲: '1'
這奇怪的是我,因爲我需要做一對夫婦檢查的前賦值sig_sel
值。什麼可能是錯的?
這是一個模擬或合成問題? – Paebbels
如果(復位='1'),那麼... elsif(復位='0')then'行對於合成代碼是重複的;第二部分只需要說'else'。 –
謝謝,但不是主要問題:) –