2017-08-29 300 views
0

我遇到了邏輯設計,我有一些問題。第一個問題是在這種設計中是否有兩個單獨的SR觸發器?第二個問題是,是否通常使用時鐘來傳播通過設計的輸入,或者如果這可以稱爲組合?因爲我很難理解將輸入傳播到輸出需要多少個時鐘週期。如果我理解正確,它將首先需要一個時鐘週期來傳播設計的第一部分(第一個觸發器?),然後第二個時鐘週期會將新輸入傳播到設計的第二部分(第二部分拖鞋?)。同步與異步邏輯 - SR-Flipflop

logical design

我想實現這個設計VHDL,但不能完全肯定,如果我只是可以做這樣的事情:

entity logic_design is 
    port(
    R  : in std_logic; 
    S1 : in std_logic; 
    R1 : in std_logic; 
    A  : in std_logic; 

    Q  : out std_logic; 
    Q_bar : out std_logic 
); 
end logic_design; 

architecture Behavioral of logic_design is 

signal sig_Q1_out  : std_logic; 
signal sig_Q1_bar_out : std_logic; 
signal sig_Q2_out  : std_logic; 
signal sig_Q2_bar_out : std_logic; 

begin 

process(S1, R1) 
begin 

    sig_Q1_out  <= S1 nand sig_Q1_bar_out; 
    sig_Q1_bar_out <= R1 nand sig_Q1_out; 

    sig_Q2_out  <= sig_Q1_out nor sig_Q2_bar_out; 
    sig_Q2_bar_out <= (sig_Q2_out nor A) nor R; 

end process; 

Q  <= signal_Q2_out; 
Q_bar <= signal_Q2_bar_out; 

此外,是否有應用這種設計的任何實例。我已經讀過,在使用開關和按鈕時沒有正確理解這可以幫助避免反彈,這是非常常見的。

+2

你的圖和VHDL代碼不匹配。 *** ...我很難理解將輸入傳播到輸出需要多少個時鐘週期。***沒有可辨別的時鐘。你的問題不清楚。你有沒有考慮模擬?你沒有向我們展示它是如何使用的。 – user1155120

+1

2 downvotes ?!爲什麼?這是一個關於組合邏輯的完全合理的問題,並展示了一些研究工作,並且遠遠優於絕大多數關於SO的VHDL或Verilog問題。 – EML

回答

0

當前您的設計是組合式的,因爲您沒有任何時鐘,也沒有移位寄存器觸發器。這意味着,如果更改輸入,則輸出將直接更新,但可能會有延遲,但在模擬期間不會考慮。

如果你希望你的設計是連續的,你需要添加寄存器(又名.D Flip Flop)來存儲臨時結果。 DFF的行爲是存儲輸入並將其作爲輸出傳遞到上升沿時鐘。

D Flip Flop behavior

考慮到d是輸入Q是你看,你需要等待時鐘的下一個上升沿到輸入信號傳播到輸出或以組合的設計輸出。順便說一句,你是如何使電路同步並創建管道的。

我建議你嘗試用自己的行爲來實現一個D觸發器,並在每個輸入之前加一個,在每個輸出之後加一個。爲了獲得這樣的設計: Synchronous circuit principle

那麼你應該模仿它,你會看到你的輸出變化的上升沿鍾而已,你也將看到你只需要輸入的變化之間的一個時鐘週期和輸出的更新。這也是如何創建同步電路的原則。

如果您想要更多週期(例如爲了提高時鐘頻率),您必須將設計分成兩個組合設計,並在它們之間添加DFF。例如,在Q1和S2之間。如果這樣做,第一個時鐘週期將從您的輸入計算Q1並將其存儲在中間DFF中,第二個時鐘週期將計算Q1的輸出。

我想你應該找一些書籍或課程來解釋如何做出這樣的設計,如果你想製作一些數字電路,這是一個必要的基礎。

1

在設計中有兩個級聯的SR 鎖存器,而不是觸發器。它們都是經典的交叉耦合NAND鎖存器(如果您是De-Morganise第二個鎖存器,您可以看到這一點)。

這是一個完全組合電路;沒有時鐘,你必須考慮組合,而不是時鐘/時序邏輯。

其實際作用,不過,我不知道。通常,S1和R1爲低電平有效控制輸入,Q2爲低電平有效輸出。 S1'設置'(並強制)Q2(到0),但復位(到1)更復雜 - 你必須釋放R1,然後設置A或R2,並且不清楚它的意義。這大概是一個更大的電路的一部分 - 可能是觸發器實現某種形式的(注意,您所認爲的「時鐘」的邏輯實際上是從根本上異步組合電路,像這樣的一切)。一個SR鎖存器可以用於去抖動,但是這是用於板級設計的 - 你不會在芯片中做到這一點(而是將所有時鐘都做成)。

你的VHDL是一個良好的開端,但你需要一個和R2在敏感列表。根據您當前的邏輯,他們實際上是採樣當S1或R1的變化(所以你已經增加了兩個採樣電路,即觸發器)。我會把它分成兩個過程,第一個對S1和R1敏感,第二個對Q1,A和R2敏感。

您可能會合成這種電路到FPGA,但你必須要小心時機,否則將無法正常工作。