數(shù)字門級(jí)電路可分為兩大類:組合邏輯和時(shí)序邏輯。鎖存器是組合邏輯和時(shí)序邏輯的一個(gè)交叉點(diǎn),在后面會(huì)作為單獨(dú)的主題處理。
組合邏輯描述了門級(jí)電路,其中邏輯塊的輸出直接反映到該塊的輸入值的組合,例如,雙輸入AND門的輸出是兩個(gè)輸入的邏輯與。如果輸入值發(fā)生變化,輸出值將反映這一變化,組合邏輯的RTL模型需要反映這種門級(jí)行為,這意味著邏輯塊的輸出必須始終反映該邏輯塊當(dāng)前輸入值的組合。
SystemVerilog有三種在可綜合RTL級(jí)別表示組合邏輯的方法:連續(xù)賦值語(yǔ)句、always程序塊和函數(shù)。接下來(lái)幾篇文章將探討每種編碼風(fēng)格,并推薦最佳實(shí)踐編碼風(fēng)格。
時(shí)序邏輯的時(shí)鐘到Q傳播和建立/保持時(shí)間
在ASIC和FPGA的實(shí)現(xiàn)層面,時(shí)鐘時(shí)序邏輯具有不同于組合邏輯的特點(diǎn)。其中一個(gè)特點(diǎn)是,從時(shí)鐘輸入觸發(fā)到觸發(fā)器輸出變化的傳播延遲。這通常被稱為時(shí)鐘到Q的延遲。第二個(gè)特性是建立和保持時(shí)間。建立時(shí)間是在時(shí)鐘觸發(fā)前數(shù)據(jù)輸入必須穩(wěn)定的時(shí)間段。
保持時(shí)間是時(shí)鐘觸發(fā)后數(shù)據(jù)必須保持穩(wěn)定的時(shí)間段。如果數(shù)據(jù)在建立和保持時(shí)間內(nèi)發(fā)生變化,作為新的觸發(fā)器狀態(tài)存儲(chǔ)的值將是不確定的。在這些條件下,一個(gè)觸發(fā)器的狀態(tài)也有可能在數(shù)值之間振蕩一段時(shí)間,然后再穩(wěn)定到一個(gè)穩(wěn)定的數(shù)值。這種不穩(wěn)定的時(shí)期被稱為偏移性(metastability)。
RTL模型應(yīng)該是零延遲模型--這是最佳協(xié)同結(jié)果質(zhì)量(QoR)的要求--這意味著RTL模型不存在傳播延遲。觸發(fā)器的輸出在仿真時(shí)間的同一時(shí)刻發(fā)生變化,沒(méi)有門級(jí)時(shí)鐘到Q的傳播延遲。作為零延遲模型,抽象的RTL觸發(fā)器也沒(méi)有建立和保持時(shí)間,也不會(huì)發(fā)生變異。然而,時(shí)鐘到Q的傳播行為必須用抽象的RTL模型來(lái)表示,而且RTL模型需要反映適當(dāng)?shù)脑O(shè)計(jì)技術(shù),以避免在ASIC或FPGA中實(shí)現(xiàn)后出現(xiàn)偏移性的情況。
時(shí)序邏輯的時(shí)鐘到Q的傳播延遲。在ASIC和FPGA的實(shí)現(xiàn)層面上,時(shí)鐘序列器件有一個(gè)時(shí)鐘到Q的傳播延遲。觸發(fā)器的狀態(tài)或內(nèi)部存儲(chǔ)在時(shí)鐘的一個(gè)邊沿上被更新。過(guò)渡到一個(gè)新的狀態(tài)并不是瞬間發(fā)生的。內(nèi)部狀態(tài)的改變需要少量的時(shí)間。在這個(gè)過(guò)渡時(shí)間內(nèi),翻轉(zhuǎn)器的前一個(gè)狀態(tài)可以在翻轉(zhuǎn)器的輸出上使用。當(dāng)多個(gè)觸發(fā)器串聯(lián)在一起時(shí),這種通過(guò)每個(gè)觸發(fā)器的時(shí)鐘到Q的傳播延遲在一系列觸發(fā)器中產(chǎn)生級(jí)聯(lián)效應(yīng)。移位寄存器和計(jì)數(shù)器就利用了這種級(jí)聯(lián)效應(yīng)。
圖8-1中的電路表示一個(gè)4位的約翰遜(Johnson)計(jì)數(shù)器,它是一個(gè)移位寄存器,最后一個(gè)觸發(fā)器的輸出被反相并反饋到第一個(gè)觸發(fā)器的輸入。
圖8-1:4位約翰遜(Johnson)計(jì)數(shù)器示意圖
復(fù)位后,這個(gè)4位約翰遜(Johnson)計(jì)數(shù)器的輸出示例是:
cnt[0:3]-0000 cnt[0:3]-1000 cnt[0:3]-1100 cnt[0:3]-1110 cnt[0:3]-1111 cnt[0:3]-0111 cnt[0:3]-0011 cnt[0:3]-0001 cnt[0:3]-0000
從一個(gè)觸發(fā)器到下一個(gè)觸發(fā)器的級(jí)聯(lián)效應(yīng)在這個(gè)輸出中很明顯。上一個(gè)觸發(fā)器DFF4的O輸出被反轉(zhuǎn),在第一個(gè)觸發(fā)器的D輸入端oFF1上變成1。在第一個(gè)時(shí)鐘周期,這個(gè)1被存儲(chǔ)到DFF1中,而DFFl的舊狀態(tài),一個(gè)0,被級(jí)聯(lián)到DFF2。在第二個(gè)時(shí)鐘周期,DFFl輸出的1被級(jí)聯(lián)到DFF2中。
在第三個(gè)時(shí)鐘周期,DFF2的1級(jí)聯(lián)到DFF3,而在第四個(gè)時(shí)鐘周期,DFF3的1級(jí)聯(lián)到DFF4。在第四個(gè)時(shí)鐘周期后,DFF4的輸出變?yōu)?,DFFl的D輸入變?yōu)?。下一個(gè)時(shí)鐘周期,0加載到DF Fl中,并且0在隨后的每個(gè)時(shí)鐘周期中級(jí)聯(lián)通過(guò)四個(gè)觸發(fā)器。
約翰遜(Johnson)計(jì)數(shù)器的設(shè)計(jì)取決于每個(gè)觸發(fā)器的時(shí)鐘到Q的傳播延遲,它允許系列中每個(gè)觸發(fā)器的前一個(gè)狀態(tài)成為系列觸發(fā)器中每個(gè)后續(xù)階段的穩(wěn)定D輸入。即使RTL代碼用零延遲建模,RTL模型也要保持這種時(shí)鐘到Q的傳播延遲行為,這一點(diǎn)至關(guān)重要。觸發(fā)器行為的這一重要特征是由非阻塞賦值符號(hào)(<=)表示的。
審核編輯:劉清
-
FPGA
+關(guān)注
關(guān)注
1629文章
21738瀏覽量
603459 -
asic
+關(guān)注
關(guān)注
34文章
1200瀏覽量
120510 -
RTL
+關(guān)注
關(guān)注
1文章
385瀏覽量
59797 -
Verilog語(yǔ)言
+關(guān)注
關(guān)注
0文章
113瀏覽量
8237 -
門級(jí)電路
+關(guān)注
關(guān)注
0文章
15瀏覽量
1977
原文標(biāo)題:SystemVerilog-時(shí)序邏輯建模(3)建立/保持時(shí)間
文章出處:【微信號(hào):Open_FPGA,微信公眾號(hào):OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論