根據(jù)邏輯電路的不同特點,數(shù)字電路分為組合邏輯和時序邏輯,明德?lián)P粉絲里的同學(xué)提出,無法正確區(qū)分,今天讓我跟一起來學(xué)習(xí)一下兩種邏輯的區(qū)別以及使用環(huán)境。
時序邏輯和組合邏輯的區(qū)別
關(guān)于組合邏輯和時序邏輯的不同,我們可以從三方面來理解,分別是code(代碼),電路圖和波形圖三方面。
從代碼層面來看,時序邏輯即敏感列表里面帶有時鐘上升沿,如果是沒有上升沿或者是帶有“*”號的代碼,為組合邏輯。
電路層面,兩種邏輯反映的電路也有不同,時序邏輯相當(dāng)于在組合邏輯的基礎(chǔ)上多了一個D觸發(fā)器。
波形圖層面,組合邏輯的波形是即刻反映變化的,與時鐘無關(guān);但是時序邏輯的波形不會立刻反映出來,只有在時鐘的上升沿發(fā)生變化。
用一個簡單的例子來區(qū)分學(xué)習(xí)下,如計算c=a+b。
在代碼層面,時序邏輯代碼表示如下,可以看到此代碼有“posedge“時鐘上升沿,即表示有一個D觸發(fā)器,a+b的結(jié)果c是在D觸發(fā)器發(fā)出指令后才進(jìn)行輸出的。
組合邏輯則如下所示,是不帶上升沿的,有“*”號的,直接輸出a+b=c的值,不進(jìn)行額外操作:
對比兩種邏輯的代碼表示,可以看出同樣是輸出c的值,不同的邏輯輸出時間卻不同,時序邏輯是在時鐘上升沿輸出,組合邏輯則直接輸出。
電路圖層面,組合邏輯為一個加法器連接a和b,緊接著立刻給到c,如下圖所示,可以看到a+b得出的值c直接輸出,沒有進(jìn)行任何額外操作:
時序邏輯的電路圖加法器連接的a和b沒有變,但是c的值在輸出部分,不會直接輸出,D觸發(fā)器就像一扇門,信號值c‘停留在門前,當(dāng)D觸發(fā)器收到了時鐘clk上升沿的信號,才會把門打開,輸出信號c的值,如下圖所示:
可以看到,組合邏輯是直接輸出信號c,時序邏輯需要D觸發(fā)器收到時鐘上升沿信號后才會輸出信號c。
在波形圖層面,我們可以畫出時序圖來分析,如下圖所示??梢钥闯龅谝粋€時鐘時a=1,b=2,此時組合邏輯立刻得出c=3,是跟時鐘沒有關(guān)系的;但是時序邏輯一定要在下一個時鐘的上升沿處才得出c=3的結(jié)果;
以此類推,后面的原理是一樣的,當(dāng)a=2,b=4時,組合邏輯馬上得出c=6,時序邏輯在第3個時鐘上升沿得出c=6。
綜上所述,我們進(jìn)行一下總結(jié),組合邏輯任意時刻的輸出僅僅取決該時刻的輸入,與時鐘無關(guān);時序邏輯先算好當(dāng)前輸入信號的結(jié)果,但還不影響輸出,只有等到時鐘上升沿的一瞬間,才把結(jié)果給了輸出。
時序邏輯和組合邏輯的使用
相信大家已經(jīng)可以非常清晰的區(qū)分組合邏輯和時序邏輯,下面我們就討論一下組合邏輯和時序邏輯的使用環(huán)境。
首先我們需要保證信號的結(jié)果是正確的,只要滿足目標(biāo)需求,這時使用時序邏輯還是組合邏輯都是可以的(這里我們討論的是大多數(shù)情況,但也有例外,例如模塊的輸出一般要求是時序邏輯)。
在實際設(shè)計中,為了便于操作,我們可以首先考慮用時序邏輯,看是否能滿足設(shè)計要求。如果無法滿足目標(biāo)要求,需要湊時序,那么就考慮改為組合邏輯。
舉個例子便于大家更好地理解,如下圖所示,假設(shè)有一個模塊,有兩個信號dout和dout_vld,其中dout表示數(shù)據(jù),dout_vld表示數(shù)據(jù)有效性。我們假設(shè)需要該模塊先后輸出兩個數(shù)據(jù)6和1。
但假設(shè)現(xiàn)在輸出的結(jié)果如下圖所示,輸出的是8和5,不是我們目標(biāo)需要的6和1,并且可以看到,dout_vld比dout晚了一個時鐘,這個時候就可以考慮設(shè)計dout_vld的時序邏輯改為組合邏輯,將信號dout_vld提前一拍,就可以得到正確的結(jié)果。
另一種方法,假設(shè)dout是組合邏輯設(shè)計的,就是把dout改為時序邏輯實現(xiàn),將dout推遲一拍,達(dá)到信號對齊的效果。
通過上面的詳細(xì)解釋,相信大家都可以掌握時序邏輯和組合邏輯的原理和使用,更多時序知識,請參考時序約束培訓(xùn)教程。更好的思路就加微信進(jìn)群,我們互相討論互相學(xué)習(xí)。
審核編輯:湯梓紅
-
電路圖
+關(guān)注
關(guān)注
10358文章
10725瀏覽量
533269 -
數(shù)字電路
+關(guān)注
關(guān)注
193文章
1629瀏覽量
80852 -
觸發(fā)器
+關(guān)注
關(guān)注
14文章
2018瀏覽量
61379 -
組合邏輯
+關(guān)注
關(guān)注
0文章
48瀏覽量
10076 -
時序邏輯
+關(guān)注
關(guān)注
0文章
39瀏覽量
9194
發(fā)布評論請先 登錄
相關(guān)推薦
FPGA之組合邏輯與時序邏輯、同步邏輯與異步邏輯的概念
soc中的組合邏輯和時序邏輯應(yīng)用說明
勇敢的芯伴你玩轉(zhuǎn)Altera FPGA連載25:組合邏輯與時序邏輯
【技巧分享】時序邏輯和組合邏輯的區(qū)別和使用
在FPGA中何時用組合邏輯或時序邏輯
FPGA中組合邏輯和時序邏輯的區(qū)別
組合邏輯電路和時序邏輯電路比較_組合邏輯電路和時序邏輯電路有什么區(qū)別
![<b class='flag-5'>組合</b><b class='flag-5'>邏輯</b>電路和<b class='flag-5'>時序</b><b class='flag-5'>邏輯</b>電路比較_<b class='flag-5'>組合</b><b class='flag-5'>邏輯</b>電路和<b class='flag-5'>時序</b><b class='flag-5'>邏輯</b>電路有什么<b class='flag-5'>區(qū)別</b>](https://file.elecfans.com/web1/M00/45/8D/o4YBAFpwOm-AeOViAADjgo-gVO0256.jpg)
組合邏輯電路和時序邏輯電路的區(qū)別
組合邏輯電路和時序邏輯電路的區(qū)別和聯(lián)系
![<b class='flag-5'>組合</b><b class='flag-5'>邏輯</b>電路和<b class='flag-5'>時序</b><b class='flag-5'>邏輯</b>電路的<b class='flag-5'>區(qū)別</b>和聯(lián)系](https://file.elecfans.com//web2/M00/98/8B/pYYBAGQQOSqAVA6NAACVUJcYAZg590.jpg)
評論