同步電路設(shè)計(jì)將系統(tǒng)狀態(tài)的變化與時(shí)鐘信號(hào)同步,并通過這種理想化的方式降低電路設(shè)計(jì)難度。同步電路設(shè)計(jì)是 FPGA 設(shè)計(jì)的基礎(chǔ)。
01
觸發(fā)器
觸發(fā)器(Flip Flop,F(xiàn)F)是一種只能存儲(chǔ)1個(gè)二進(jìn)制位(bit,比特)的存儲(chǔ)單元,并且具備記憶功能,可以用作時(shí)序邏輯電路的記憶元件。FPGA邏輯單元內(nèi)的D觸發(fā)器(D-FF)具有兩個(gè)穩(wěn)定狀態(tài),即"0"和"1",在一定的外界信號(hào)作用下,可以從一個(gè)穩(wěn)定狀態(tài)翻轉(zhuǎn)到另一個(gè)穩(wěn)定狀態(tài),就是一種在時(shí)鐘的上升沿(或下降沿)將輸入信號(hào)的變化傳送至輸出的邊沿觸發(fā)器。D-FF的符號(hào)和真值表如圖1所示。D-FF在CLK信號(hào)(時(shí)鐘)的上升沿將輸入值傳送至輸出Q。
圖 1 D 觸發(fā)器
02
建立時(shí)間和保持時(shí)間
時(shí)鐘是整個(gè)電路最重要、最特殊的信號(hào),系統(tǒng)內(nèi)大部分器件的動(dòng)作都是在時(shí)鐘的跳變沿上進(jìn)行,這就要求時(shí)鐘信號(hào)時(shí)延差要非常小, 否則就可能造成時(shí)序邏輯狀態(tài)出錯(cuò);因而明確FPGA設(shè)計(jì)中決定系統(tǒng)時(shí)鐘的因素,盡量較小時(shí)鐘的延時(shí)對(duì)保證設(shè)計(jì)的穩(wěn)定性有非常重要的意義。
建立時(shí)間(Tsu:set up time)是指在時(shí)鐘沿到來之前數(shù)據(jù)從不穩(wěn)定到穩(wěn)定所需的時(shí)間,如果建立的時(shí)間不滿足要求那么數(shù)據(jù)將不能在這個(gè)時(shí)鐘上升沿被穩(wěn)定的打入觸發(fā)器;
保持時(shí)間(Th:hold time)是指數(shù)據(jù)穩(wěn)定后保持的時(shí)間,如果保持時(shí)間不滿足要求那么數(shù)據(jù)同樣也不能被穩(wěn)定的打入觸發(fā)器。
CMOS 工藝下的D-FF結(jié)構(gòu)如圖2所示,先由傳輸門和兩個(gè)反相器組成一個(gè)循環(huán)電路(鎖存器),再由前后兩級(jí)鎖存器按主從結(jié)構(gòu)連接而成。這里的傳輸門起開關(guān)的作用,隨著CLK的狀態(tài)變化切換開關(guān)。只看輸出的話,前級(jí)鎖存器的值會(huì)將時(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í)鐘反向。圖3 為 D-FF 的原理圖。
圖 2D-FF 的電路結(jié)構(gòu)
圖 3D-FF 的原理
當(dāng)CLK=0主鎖存器工作)時(shí),位于前級(jí)的主鎖存器將輸入D的值保存進(jìn)來,后級(jí)的從鎖存器則維持上一時(shí)鐘周期的數(shù)據(jù)。由于此時(shí)前級(jí)和后級(jí)反相器環(huá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)沒有循環(huán)一圈以上,就會(huì)出現(xiàn)如圖4所示的在 0 和 1 之間搖擺的中間電位,這就是所謂的亞穩(wěn)態(tài)(metastable)。由于亞穩(wěn)態(tài)時(shí)間比延遲時(shí)間長,在該階段讀取數(shù)據(jù)可能會(huì)引入錯(cuò)誤,所以我們引入建立時(shí)間(setup time)來約束在時(shí)鐘上升沿到來前輸入 D 保持穩(wěn)定 的時(shí)間。
當(dāng) CLK=1 時(shí),如果輸入 D 在傳輸門關(guān)閉前就發(fā)生變化,那么本該 在下一周期讀取的數(shù)據(jù)就會(huì)提前進(jìn)入鎖存器,從而引起反相器環(huán)路振蕩 或產(chǎn)生亞穩(wěn)態(tài)。因此在 CLK=1 之后也需要輸入 D 維持一定的時(shí)間,我 們稱之為保持時(shí)間(hold time)約束。
為了正確地從輸入讀取數(shù)據(jù),并正確地將數(shù)據(jù)輸出,F(xiàn)PGA 內(nèi)所有 的 FF 都要遵守建立時(shí)間和保持時(shí)間等時(shí)序上的約束。
圖4建立時(shí)間和保持時(shí)間
03
時(shí)序分析
從硬件描述語言(Hardware Description Language,HDL)編寫的RTL(Register Transfer Level,寄存器傳輸級(jí))設(shè)計(jì)代碼生成網(wǎng)表(邏輯門間的配線信息)的過程稱為邏輯綜合。最終決定邏輯綜合所生成的電路網(wǎng)表在FPGA中以何種方式實(shí)現(xiàn)的兩道工序稱為布局和布線。FPGA內(nèi)部規(guī)則地?cái)[放著大量設(shè)計(jì)好的電路及電路間配線,用以實(shí)現(xiàn)用戶設(shè)計(jì)。所謂 FPGA 的設(shè)計(jì)流程,就是決定專為FPGA綜合生成的電路擺放在哪兒、電路之間以什么樣的布線路徑相連的過程。
為了保證設(shè)計(jì)好的電路能夠正常工作,不單要保證功能(邏輯)正確,還必須要確保時(shí)序正確。而時(shí)序分析是以分析時(shí)間序列的發(fā)展過程、方向和趨勢,預(yù)測將來時(shí)域可能達(dá)到的目標(biāo)的方法。此方法運(yùn)用概率統(tǒng)計(jì)中時(shí)間序列分析原理和技術(shù),利用時(shí)序系統(tǒng)的數(shù)據(jù)相關(guān)性,建立相應(yīng)的數(shù)學(xué)模型,描述系統(tǒng)的時(shí)序狀態(tài),以預(yù)測未來。在 FPGA 的設(shè)計(jì)流程中,從邏輯綜合到布局布線,每一步都會(huì)對(duì)生成的電路進(jìn)行評(píng)估分析。由于基于仿真的方式分析每個(gè)邏輯值并進(jìn)行動(dòng)態(tài)時(shí)序分析的方法過于耗時(shí),所以 FPGA 的性能評(píng)估主要采用靜態(tài)時(shí)序分析(Static Timing Analysis,STA)。STA只需要提供電路網(wǎng)表就可以進(jìn)行全面的評(píng)估驗(yàn)證,并且原理上只需遍歷一次電路的拓?fù)浣Y(jié)構(gòu),因此也具有分析速度快的優(yōu)點(diǎn)。最近,隨著電路規(guī)模不斷增大,不僅FPGA其他 EDA 工具也采用 STA 的方式來驗(yàn)證電路是否能夠按照要求的速度正確工作。時(shí)序分析包含對(duì)設(shè)計(jì)電路的建立時(shí)間分析和保持時(shí)間分析,并能夠以此進(jìn)行時(shí)序驗(yàn)證。時(shí)序驗(yàn)證主要是評(píng)估 FPGA 上設(shè)計(jì)電路的延遲是否滿足時(shí)序約束(時(shí)序上的設(shè)計(jì)需求)。布線的延遲取決于 FPGA 設(shè)計(jì)電路的擺放位置和所使用的布線,也就是說取決于布局布線工具的編譯結(jié)果。當(dāng) FPGA 的性能和邏輯門資源富余時(shí)編譯過程較為容易;相反,當(dāng)設(shè)計(jì)電路的規(guī)模和 FPGA 片上資源相當(dāng)時(shí),布局布線過程所需時(shí)間可能會(huì)很長。時(shí)序分析必須檢查所有路徑上邏輯延遲和布線延遲的時(shí)序余裕,確保它們滿足建立時(shí)間和保持時(shí)間的時(shí)序約束。
04
單相時(shí)鐘同步電路
布局布線上具有一定自由度的 FPGA 都以同步電路設(shè)計(jì)方式為主, 而同步電路可以使用STA進(jìn)行時(shí)序分析和驗(yàn)證。STA具有驗(yàn)證速度高的優(yōu)點(diǎn),但對(duì)電路結(jié)構(gòu)有一定的要求:延遲分析的起點(diǎn)和終點(diǎn)必須是基于同一時(shí)鐘的FF,從而可以通過累加起點(diǎn)和終點(diǎn)間的延遲來計(jì)算、驗(yàn)證每條路徑的總延遲。因?yàn)楦鳁l路徑上的布線長度長短不一,所以信號(hào)的延遲會(huì)不同,輸出數(shù)據(jù)變化的時(shí)間點(diǎn)也會(huì)有所差別。因此如圖5所示,F(xiàn)PGA設(shè)計(jì)中的輸入信號(hào)會(huì)先被送到FF,輸出信號(hào)則必須從FF引出,并且所有FF都由同相的時(shí)鐘驅(qū)動(dòng)。這種設(shè)計(jì)屬于由同一時(shí)鐘的同一邊沿同步動(dòng)作的電路類型,而反相時(shí)鐘(相位反轉(zhuǎn)的時(shí)鐘或反方向的邊沿)不屬于此類。基本上,采用單一時(shí)鐘進(jìn)行同步是較為理想的選擇。
同步設(shè)計(jì)的一個(gè)前提是所有FF都必須同時(shí)接收到時(shí)鐘信號(hào),而現(xiàn)實(shí)中時(shí)鐘信號(hào)的布線非常長,時(shí)鐘信號(hào)驅(qū)動(dòng)的負(fù)荷(扇出數(shù))、布線延遲等原因會(huì)導(dǎo)致出現(xiàn)時(shí)間差,因此很難嚴(yán)格地滿足上述條件。這種時(shí)鐘信號(hào)到達(dá)時(shí)間的錯(cuò)位稱為時(shí)鐘偏移(skew)。另外,由于時(shí)鐘振蕩器的 變動(dòng)或信號(hào)變形,時(shí)鐘邊沿會(huì)偏離平均位置,這種情況稱為時(shí)鐘抖動(dòng)(jitter)。為了保證所有 FF 的輸入時(shí)鐘信號(hào)同步,需要將時(shí)鐘偏移和時(shí) 鐘抖動(dòng)控制在一定范圍之內(nèi)。
圖5 單相時(shí)鐘同步電路
時(shí)鐘偏移和邏輯門電路的延遲一樣,會(huì)對(duì)時(shí)鐘周期的設(shè)定產(chǎn)生影響。因此時(shí)鐘設(shè)計(jì)是集成電路時(shí)序設(shè)計(jì)的重要一環(huán)。而 FPGA 上已經(jīng)提前實(shí)現(xiàn)好了多層時(shí)鐘樹結(jié)構(gòu),并且通過驅(qū)動(dòng)能力強(qiáng)的專用布線(global buffer)將時(shí)鐘低偏移地連接到整個(gè)芯片的FF 上,因此在時(shí)鐘設(shè)計(jì)上要 比 ASIC 容易很多。
責(zé)任編輯:xj
原文標(biāo)題:理解FPGA的基礎(chǔ)知識(shí)——同步電路設(shè)計(jì)
文章出處:【微信公眾號(hào):FPGA技術(shù)聯(lián)盟】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
FPGA
+關(guān)注
關(guān)注
1635文章
21837瀏覽量
608348 -
同步電路
+關(guān)注
關(guān)注
1文章
60瀏覽量
13383
原文標(biāo)題:理解FPGA的基礎(chǔ)知識(shí)——同步電路設(shè)計(jì)
文章出處:【微信號(hào):gh_873435264fd4,微信公眾號(hào):FPGA技術(shù)聯(lián)盟】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
北斗衛(wèi)星同步時(shí)鐘授時(shí)天線:實(shí)現(xiàn)精確時(shí)間同步的關(guān)鍵

北斗衛(wèi)星同步時(shí)鐘系統(tǒng):精準(zhǔn)時(shí)間的秘密

數(shù)字鎖相環(huán)提取位同步信號(hào)的原理
鋸齒波同步信號(hào)的觸發(fā)電路有哪些
RobustRIO-E模塊 時(shí)鐘同步&分發(fā),實(shí)現(xiàn)聲音與振動(dòng)板卡間及跨機(jī)箱時(shí)鐘同步

計(jì)數(shù)器同步和異步怎么判斷
怎么判斷同步清零和異步清零
同步電路和異步電路怎么判斷正負(fù)極
同步電路和異步電路的優(yōu)缺點(diǎn)
同步電路和異步電路的優(yōu)缺點(diǎn)有哪些
同步整流的優(yōu)缺點(diǎn)有哪些
如何選擇適合自己需求的衛(wèi)星同步時(shí)鐘設(shè)備?

如何解決同步時(shí)鐘系統(tǒng)中的常見問題和故障?

GPS衛(wèi)星同步時(shí)鐘的工作原理及應(yīng)用場景介紹

評(píng)論