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

組合邏輯電路和時(shí)序邏輯電路的區(qū)別
組合邏輯電路和時(shí)序邏輯電路的區(qū)別和聯(lián)系

評(píng)論