一、前言
? ? ? ? 在之前的內(nèi)容中,我們介紹了組合電路的時(shí)序問(wèn)題和可能導(dǎo)致的毛刺,強(qiáng)烈推薦在閱讀前文的基礎(chǔ)上再繼續(xù)閱讀本文,?前文鏈接:FPGA時(shí)序分析與約束(1)——組合電路時(shí)序
? ? ? ? 這篇文章中,我們將繼續(xù)介紹FPGA時(shí)序分析相關(guān)內(nèi)容,本文介紹的是時(shí)序電路的時(shí)序問(wèn)題。
二、時(shí)序電路時(shí)序
1、D觸發(fā)器時(shí)序問(wèn)題
1.1 回顧
????????觸發(fā)器(Filp Flop,FF)是一種只能存儲(chǔ)一個(gè)二進(jìn)制位(bit,比特)的存儲(chǔ)單元,可以用作時(shí)序邏輯電路的記憶元件。FPGA邏輯單元中的D觸發(fā)器(D-FF)是一種在時(shí)鐘邊沿將輸入信號(hào)的變化傳送到輸出的邊沿觸發(fā)器。
? ? ? ? D觸發(fā)器的本質(zhì)是由組合電路元件組成的。D、Q、CLK都有時(shí)序要求。
1.2 建立時(shí)間與保持時(shí)間
? ? ? ? CMOS工藝下的D-FF結(jié)構(gòu)如下圖所示:
? ? ? ? 先由傳送門(mén)和兩個(gè)反相器組成一個(gè)循環(huán)電路(鎖存器),再由前后兩級(jí)鎖存器按主從結(jié)構(gòu)連接而成。?這里的傳輸門(mén)起開(kāi)關(guān)的作用,隨著CLK的狀態(tài)變化切換開(kāi)關(guān)。只看輸入的話,前級(jí)鎖存器的值將會(huì)隨著時(shí)鐘輸入的變化有序地傳輸?shù)胶蠹?jí)鎖存器。為了防止時(shí)鐘信號(hào)變化時(shí)輸入信號(hào)發(fā)生冒險(xiǎn),從而使穩(wěn)定的輸入信號(hào)進(jìn)入前級(jí)鎖存器,前級(jí)鎖存器的時(shí)鐘相位應(yīng)該與產(chǎn)生輸入信號(hào)的電路時(shí)鐘相反。
? ? ? ? D-FF電路原理圖如下:
? ? ? ? 當(dāng)CLK=0(主鎖存器工作)時(shí),位于前級(jí)的主鎖存器將輸入D的值保存進(jìn)來(lái),后級(jí)的從鎖存器維持上一個(gè)時(shí)鐘周期的數(shù)據(jù)。由于此時(shí)前級(jí)和后級(jí)反相器環(huán)路之間的傳輸門(mén)是關(guān)閉狀態(tài),所以前級(jí)的信號(hào)不會(huì)傳送到后級(jí)。
? ? ? ? 當(dāng)CLK=1(從鎖存器工作)時(shí),前級(jí)反相器環(huán)路中保存的數(shù)據(jù)會(huì)傳輸?shù)胶蠹?jí),同時(shí)輸入D信號(hào)會(huì)被隔絕在外。如果此時(shí)前級(jí)反相器環(huán)路中的信號(hào)沒(méi)有循環(huán)一周以上,就會(huì)出現(xiàn)在0和1之間搖擺的中間電位,這就是所謂的亞穩(wěn)態(tài)。由于亞穩(wěn)態(tài)時(shí)間比延遲時(shí)間長(zhǎng),在該階段讀取數(shù)據(jù)可能會(huì)引入錯(cuò)誤,所以我們就引入了建立時(shí)間(setup time)來(lái)約束在時(shí)鐘上升沿到來(lái)前輸入D保持穩(wěn)定的時(shí)間。
? ? ? ? 當(dāng)CLK=1時(shí),如果輸入D在傳送門(mén)關(guān)閉前就發(fā)生了變化,那么本該在下一個(gè)時(shí)鐘周期讀取的數(shù)據(jù)就提前進(jìn)入了鎖存器,就會(huì)引起反相器環(huán)路振蕩或產(chǎn)生亞穩(wěn)態(tài)。因此,在CLK=1之后也需要輸入D維持一定的時(shí)間,我們稱(chēng)之為保持時(shí)間(hold time)約束。
? ? ? ? 所以總結(jié)一下就是:
建立時(shí)間?Setup time : 時(shí)鐘沿到來(lái)前數(shù)據(jù)信號(hào)必須保持穩(wěn)定的最短時(shí)間
保持時(shí)間 Hold time: 時(shí)鐘沿到來(lái)后數(shù)據(jù)信號(hào)必須保持穩(wěn)定的最短時(shí)間?
然后我們可以得到Aperture time : 時(shí)鐘沿附近數(shù)據(jù)信號(hào)必須保持穩(wěn)定的最短時(shí)間
1.3 觸發(fā)器輸出時(shí)序
? ? ? ??Contamination delay clock-to-q(tccq):在時(shí)鐘沿過(guò)后,Q開(kāi)始變化的最早的時(shí)間
????????Propagation delay clock-to-q (tpcq)? :? 在時(shí)鐘沿過(guò)后,Q停止變化的最晚的時(shí)間
1.4 時(shí)序系統(tǒng)分析
? ? ? ? 多個(gè)觸發(fā)器被連接到組合電路中,必須要滿足每一個(gè)寄存器的時(shí)序要求:
? ? ? ? 以上圖為例,需要滿足R1,R2兩個(gè)寄存器的時(shí)序要求。也就要求確保R2的正確輸入時(shí)序。也就要求滿足R2的建立時(shí)間要求和保持時(shí)間要求。
? ? ? ? 這就意味著在兩個(gè)觸發(fā)器之間的組合邏輯電路需要有一個(gè)最小的時(shí)間延遲和一個(gè)最大的時(shí)間延遲:
(1)時(shí)間延遲太?。▊鞑ヌ欤哼`反R2的保持時(shí)間;
(2)時(shí)間延遲太大(傳播太慢):違反R2的建立時(shí)間。
?1.4.1 建立約束
? ? ? ?在STA領(lǐng)域,建立是指在要求時(shí)間之前檢查最新數(shù)據(jù)是否可用。因此,可以在任意終點(diǎn)進(jìn)行建立檢查——而不僅僅是觸發(fā)器。即使在輸出端也要進(jìn)行建立檢查。
? ? ? ? 建立可以用如下更加通用的方式進(jìn)行定義:數(shù)據(jù)需要在一些參考事件之前建立并使之可用。對(duì)于觸發(fā)器,參考事件是時(shí)鐘觸發(fā)。對(duì)于其他終點(diǎn),參考事件是“期望數(shù)據(jù)在那一點(diǎn)可用的時(shí)間?!?/strong>
????????安全時(shí)間取決于R1到R2的最大時(shí)間延遲,到達(dá)R2的輸入信號(hào)必須在時(shí)鐘沿到來(lái)前的建立時(shí)間內(nèi)保持穩(wěn)定(為時(shí)鐘周期,為Q停止變化的時(shí)間,為組合電路輸出結(jié)束變化的時(shí)間)
1.4.2 保持約束
? ? ? ?類(lèi)似地,保持是指在當(dāng)前信號(hào)的穩(wěn)定性要求滿足后,檢查最新地?cái)?shù)據(jù)可以干擾當(dāng)前信號(hào)的最早時(shí)間。因此,和建立一樣,可以在任意終點(diǎn)進(jìn)行保持檢查,包括在輸出端——不僅僅是觸發(fā)器。
? ? ? ? 保持可以用如下更通用的方式來(lái)定義:一些參考事件后,數(shù)據(jù)需要保持和不干涉。對(duì)于觸發(fā)器,參考事件是時(shí)鐘觸發(fā)。對(duì)于其他終點(diǎn),參考事件是“允許數(shù)據(jù)在此點(diǎn)變化的時(shí)間?!?/span>
????????安全時(shí)間取決于R1到R2的最小時(shí)間延遲,到達(dá)R2的輸入信號(hào)D2必須在時(shí)鐘沿到來(lái)后的保持時(shí)間內(nèi)保持穩(wěn)定(為Q開(kāi)始變化的時(shí)間,為組合電路輸出開(kāi)始變化的時(shí)間)
? ? ? ? 也就是說(shuō)為了滿足我們的設(shè)計(jì)不出現(xiàn)時(shí)序違規(guī)的情況,兩個(gè)觸發(fā)器R1,R2之間的組合電路被設(shè)置了一個(gè)最大時(shí)間延遲和一個(gè)最小時(shí)間延遲。組合電路的時(shí)延在這個(gè)范圍之內(nèi)。
1.4.3 其他分析
? ? ? ? 建立檢查可以確保移動(dòng)最慢的數(shù)據(jù)也能及時(shí)達(dá)到并滿足建立的標(biāo)準(zhǔn)。因此,數(shù)據(jù)路徑可以計(jì)算最大延遲。因此,它也被稱(chēng)為最大分析(max analysis)。由于建立檢查考慮了最晚的數(shù)據(jù),所以也稱(chēng)為晚期分析(late analysis)。
? ? ? ? 類(lèi)似地,保持檢查可以確保即使是移動(dòng)最快的數(shù)據(jù)也不應(yīng)該干擾其他數(shù)據(jù),同時(shí)期望數(shù)據(jù)保持穩(wěn)定。因此,數(shù)據(jù)路徑計(jì)算最小延遲。因此,它也被稱(chēng)為最小分析(min analysis)。由于保持檢查考慮了最早到達(dá)的數(shù)據(jù),所以也稱(chēng)之為早期分析(early analysis)。
? ? ? ? STA的建立-保持分析也被稱(chēng)為最大-最小分析或者早期-晚期分析。
? ? ? ? 除了建立或者保持分析外,STA還進(jìn)行脈沖寬度、恢復(fù)、撤銷(xiāo)分析等。
1.4.4 裕度
? ? ? ? 建立裕度 = 數(shù)據(jù)建立要求 - 最后一個(gè)到達(dá)的信號(hào)
? ? ? ? 保持裕度 = 最早達(dá)到的信號(hào) - 數(shù)據(jù)穩(wěn)定要求
? ? ? ? 正裕度意味著時(shí)序已經(jīng)得到滿足,而負(fù)裕度意味著時(shí)序尚未得到滿足。根據(jù)所使用工具的不同,報(bào)告的確切格式將不同。但是,對(duì)于任何工具而言,它們都將通過(guò)路徑跟蹤延遲(建立分析的最大值和保持分析的最小值),并跟蹤信號(hào)所要求的時(shí)間。然后,它將比較兩個(gè)數(shù)值并給出裕度值(正或負(fù))。路徑延遲或要求時(shí)間的計(jì)算還考慮了時(shí)鐘路徑的延遲,該延遲用于觸發(fā)起點(diǎn)處的數(shù)據(jù)啟動(dòng)和終點(diǎn)處的數(shù)據(jù)捕捉。
三、總結(jié)
? ? ? ? 本文我們介紹了時(shí)序電路中的時(shí)序問(wèn)題,這是我們進(jìn)行進(jìn)一步時(shí)序分析內(nèi)容學(xué)習(xí)的重要理論基礎(chǔ),首先我們介紹了D觸發(fā)器相關(guān)內(nèi)容,著重說(shuō)明了建立時(shí)間和保持時(shí)間的含義和產(chǎn)生原因,然后引入了觸發(fā)器的輸出時(shí)序,最后介紹了時(shí)序電路系統(tǒng)的設(shè)計(jì)約束。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-688915.html
? ? ? ? 在后續(xù)的文章中,我們計(jì)劃進(jìn)一步討論關(guān)于時(shí)鐘的相關(guān)內(nèi)容,畢竟除了組合邏輯電路和時(shí)序邏輯電路,我們現(xiàn)實(shí)中的時(shí)鐘也是存在時(shí)延的。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-688915.html
到了這里,關(guān)于FPGA時(shí)序分析與約束(2)——時(shí)序電路時(shí)序的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!