時(shí)序邏輯電路的建立,保持時(shí)間裕量分析
在Verilog里,時(shí)序邏輯電路即表示如下圖所示的電路。前后兩級(jí)寄存器之間有一個(gè)組合邏輯運(yùn)算電路。
假設(shè)寄存器的建立時(shí)間要求為tsetup, 保持時(shí)間要求為thold, 輸出延時(shí)為tcq。
故對(duì)于第一個(gè)寄存器,時(shí)鐘上升沿之后,經(jīng)過時(shí)間tcq數(shù)據(jù)才從Q端輸出。波形圖示如下。
假設(shè)組合邏輯運(yùn)算電路的運(yùn)算耗時(shí)為tlogic。故運(yùn)算后的數(shù)據(jù)在時(shí)鐘上升沿之后經(jīng)過時(shí)間tcq+tlogic才到達(dá)下一級(jí)寄存器的D端,圖示如下。
那么對(duì)于下一級(jí)寄存器在接下來到來的時(shí)鐘上升沿采集數(shù)據(jù),其必須要滿足建立保持時(shí)間要求。
建立時(shí)間:既數(shù)據(jù)D至少需要提前于clk上升沿多長(zhǎng)時(shí)間到來,數(shù)據(jù)的采集才不會(huì)出錯(cuò)。
從上述分析可得數(shù)據(jù)D提前于clk上升沿的時(shí)間為 tcycle-(tcq+tlogic)。
其中tcycle為時(shí)鐘周期。
如果tcycle-(tcq+tlogic) >tsetup 那么建立時(shí)間要求就得到了滿足。一般稱tcycle-(tcq+tlogic) -tsetup 為建立時(shí)間裕量,為保證建立時(shí)間滿足要求,裕量必須要大于0。
當(dāng)然上述情況還忽略了時(shí)鐘的延遲,即默認(rèn)前后兩級(jí)寄存器的clk都是同時(shí)到達(dá)。如果時(shí)鐘存在正延時(shí),即時(shí)鐘的傳播方向與數(shù)據(jù)傳播方向一致,即電路如下圖所示。clk從第一級(jí)到后一級(jí)寄存器的線路延時(shí)為tclk_delay。
從而對(duì)應(yīng)的時(shí)序如下。針對(duì)于下一級(jí)的寄存器來說,相當(dāng)于建立時(shí)間裕量增加了tclk_delay,即建立時(shí)間裕量為tcycle-(tcq+tlogic) -tsetup+tclk_delay。這種情況對(duì)于建立時(shí)間是有好處的。
相反,如果時(shí)鐘存在反向延時(shí),即時(shí)鐘的傳播方向與數(shù)據(jù)傳播方向相反,那么對(duì)于建立時(shí)間是不利的。此時(shí)的建立時(shí)間裕量為tcycle-(tcq+tlogic) -tsetup-tclk_delay。大家可自行畫時(shí)序圖分析,當(dāng)作練習(xí)。
從上述對(duì)建立時(shí)間裕量的分析,可以發(fā)現(xiàn),從前端設(shè)計(jì)的角度去分析,優(yōu)化建立時(shí)間裕量可以靠減少兩級(jí)寄存器之間的組合邏輯的延時(shí)去增大建立時(shí)間裕量。后面會(huì)有文章去根據(jù)示例來介紹優(yōu)化方法,其中流水線設(shè)計(jì)就是一種優(yōu)化方式。
保持時(shí)間(thold):就是時(shí)鐘上升沿之后,數(shù)據(jù)D還需要維持多長(zhǎng)時(shí)間不變,寄存器對(duì)數(shù)據(jù)的采集才不會(huì)出錯(cuò)。還是對(duì)下面這個(gè)電路模型進(jìn)行分析。
對(duì)于后一級(jí)寄存器來說,時(shí)鐘上升沿之后,后一級(jí)D端的數(shù)據(jù)要得到改變,必須是上一級(jí)的數(shù)據(jù)Q輸出了,并通過組合邏輯運(yùn)算電路的延時(shí),送到了D端。故在時(shí)鐘上升沿之后,數(shù)據(jù)要經(jīng)過時(shí)間tcq+tlogic才到達(dá)下一級(jí)寄存器的D端,故每次時(shí)鐘上升沿之后,后一級(jí)寄存器的數(shù)據(jù)D可以維持不變的時(shí)間為tcq+tlogic。那么保持時(shí)間裕量為tcq+tlogic-thold。時(shí)序見下圖。
從這可以看出,時(shí)序邏輯電路里面tlogic越大,對(duì)建立時(shí)間裕量不利,但對(duì)保持時(shí)間裕量有利。
同樣,再考慮存在時(shí)鐘延時(shí)對(duì)保持時(shí)間的影響。如下電路,即時(shí)鐘存在正延時(shí)時(shí)。
分析后一級(jí)寄存器的保持時(shí)間裕量時(shí),對(duì)應(yīng)的時(shí)序變成如下??梢钥吹剑喈?dāng)于前級(jí)寄存器的clk比下一級(jí)寄存器的clk提前了tclk_delay時(shí)間,故數(shù)據(jù)D2提前到來了。保持時(shí)間裕量變成了tcq+tlogic-thold-tclk_delay。
可以看到時(shí)鐘正向延時(shí)對(duì)建立時(shí)間要求有利,但對(duì)于保持時(shí)間要求是不利的。對(duì)于時(shí)鐘反向延時(shí),大家自行畫圖分析。
上面還有一個(gè)因素沒有說明,就是時(shí)鐘clk的抖動(dòng)。因?yàn)闀r(shí)鐘上升沿不可能每次都固定間隔時(shí)間tcycle到來一次??赡芘c這個(gè)時(shí)間有一個(gè)小小的偏差,但是不確定是提前到來還是延遲到來。這個(gè)偏差的時(shí)間為tjitter。如果考慮這個(gè)因素,建立時(shí)間與保持時(shí)間裕量都還要減掉這個(gè)抖動(dòng)時(shí)間。故最終的建立時(shí)間與保持時(shí)間裕量計(jì)算公式入下(其中的tclk_delay為時(shí)鐘正向延時(shí)):
建立時(shí)間裕量 tsetup_slack =tcycle-(tcq+tlogic) -tsetup+tclk_delay-tjitter
保持時(shí)間裕量 thold_slack =tcq+tlogic-thold-tclk_delay-tjitter
到這大家明白了,建立時(shí)間裕量與保持時(shí)間裕量就是一對(duì)矛盾的關(guān)系,我們需要通過優(yōu)化時(shí)鐘延時(shí),組合邏輯延時(shí)來折中考慮這兩個(gè)裕量。在裕量不滿足要求時(shí),可以選擇增大時(shí)鐘clk的周期,但這就降低了電路的運(yùn)行速度。從而就要考慮時(shí)序優(yōu)化,從前端考慮也就是兩級(jí)寄存器之間的組合邏輯延時(shí)優(yōu)化,比如簡(jiǎn)化組合邏輯,或者通過流水線設(shè)計(jì),后面會(huì)通過實(shí)例介紹。
-
邏輯電路
+關(guān)注
關(guān)注
13文章
502瀏覽量
43342 -
寄存器
+關(guān)注
關(guān)注
31文章
5434瀏覽量
124492
原文標(biāo)題:時(shí)序邏輯電路的建立,保持時(shí)間裕量分析
文章出處:【微信號(hào):LF-FPGA,微信公眾號(hào):小魚FPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
靜態(tài)時(shí)序之建立時(shí)間和保持時(shí)間分析
fpga時(shí)序邏輯電路的分析和設(shè)計(jì)
同步時(shí)序邏輯電路
異步時(shí)序邏輯電路
時(shí)序邏輯電路分析實(shí)例

時(shí)序邏輯電路的分析與設(shè)計(jì)
時(shí)序邏輯電路的主要故障分析

組合邏輯電路和時(shí)序邏輯電路比較_組合邏輯電路和時(shí)序邏輯電路有什么區(qū)別

時(shí)序邏輯電路分析有幾個(gè)步驟(同步時(shí)序邏輯電路的分析方法)

時(shí)序邏輯電路由什么組成_時(shí)序邏輯電路特點(diǎn)是什么

時(shí)序邏輯電路的分析方法

評(píng)論