2014-10-06 116 views
-1

對於以下VHDL代碼,假定在時間5 ns時D更改爲'1'。每次發生更改時,請給出A, B, C, D, E,F的值。也就是說,給出時間5 ns,5 + delta,5 + 2(delta)等值。執行此操作直到出現20個步驟,直到不再發生變化,或者直到出現重複模式。對於以下VHDL代碼

entity prob4 is 

port (D: inout bit); 

end prob4; 

architecture q1 of prob4 is 

signal A,B,C,E,F: bit; 

begin 

C <= A; 

A <= (B and not E) or D; 

P1: proecess (A) 

begin 

B <= A; 

end prcoess P1; 

P2: process 

wait until A <= '1'; 

wait for 0 ns; 

E <= B after 5 ns; 

D < = '0'; 

F <= E; 

end process P2; 

end architecture q1; 
+1

請正確格式化您的代碼,它會幫助我們幫助您很長的路要走。另外,你的問題是什麼,你有什麼嘗試,你卡在哪裏。就目前而言,它看起來像你希望我們幫助你做作業,這是不行的。 – 2014-10-06 18:11:33

回答

0

所呈現

有一些明顯的語法錯誤的問題:

entity prob4 is 
    port (D: inout bit); 
end prob4; 

architecture q1 of prob4 is 
    signal A,B,C,E,F: bit; 
begin 

    C <= A; 
    A <= (B and not E) or D; 

P1: proecess (A) -- misspelled process 
    begin  
     B <= A; 
    end prcoess P1; -- misspelled process 

P2: process 
    -- begin -- missing begin 

     wait until A <= '1';  
     wait for 0 ns; 

     E <= B after 5 ns; 
     D < = '0'; -- should be "<=" (a single delimiter token signifying assignment) 
     F <= E; 
    end process P2; 
end architecture q1; 

回答這個問題似乎需要你注意聽課,做筆記和/或完成了所需的閱讀。

注意,有兩個驅動程序的一個過程P2分配D,其他模式inout端口D。對於BIT類型沒有解決方案,這意味着某些未由VHDL設計規範顯示的事件負責在5 ns時爲D分配值1,並且未驅動端口D的實際值。解析函數可以與任何子類型聲明相關聯(並且端口聲明聲明子類型)。

那是不是這裏的情況:

entity tb_prob4 is 
end entity; 

architecture foo of tb_prob4 is 
    signal D: bit; 
begin 

DUT: 
    entity work.prob4 port map (D); 

STIMULUS: 
    process 
    begin 
     D <= '1' after 5 ns; 
    wait; 
    end process; 
end architecture; 

ghdl -a prob4 .vhdl
ghdl -e tb_prob4
ghdl -r tb_prob4
./tb_prob4:error: several sources for unresolved signal
for signal: .tb_prob4(foo).ghdl: compilation error

理論上你就可以回答與相應的VHDL步進的prob4的分析版本的模擬你的「問題」提供的「問題」工具。這需要強制D在5 ns時爲'1',並在被測設備的下一個增量週期(一步之後)釋放它。否則,這是一個無意義的問題,VHDL設計規範是無效的(見上文)。你可以推測一下,「假設D變爲'1'」被添加來避開關於有效性的問題。

解決問題

的問題也還用手(紙筆)來完成。

「......假設D在時間5ns變爲'1'」聽起來像是暗示單一事件(沒有持久力)。

在VHDL中,未初始化的信號將採用最左邊的值,對於類型位的枚舉值爲'0'(請參見封裝std.standard)。這告訴你什麼都是5納秒。 (A,B,C,D,E,F的初始值是多少?)

通過分配到當前模擬時間來推斷增量循環。當進一步的信號分配安排在當前模擬時間時,仿真時間會提前。然後仿真時間提前到下一次預定事務出現在建模設計層次的預計輸出波形中。

after在投影輸出波形中爲其目標安排一個信號事件。在示例中,計劃將分配給D的當前值爲B

模擬時間前進到下一次事件(等待,之後),wait for 0 ns是指當前模擬時間,是否會導致增量循環?