FPGA時序分析及時序約束常用方法(上篇)

背景:時序分析和時序約束是FPGA中很基礎但很重要的一部分內容。設計出一個好的時序電路不是件簡單的事,要理解什麼是FPGA的時序分析和時序約束,首先我們必須對FPGA開發板的基本組成有一定的瞭解。

這裏可以簡單把FPGA芯片分成三部分

1:可編程邏輯功能快

可以這麼說,在不考慮價格的前提下,可編程邏輯功能塊數量是我們選購一塊FPGA開發板很重要的因素。FPGA全名爲現場可編程門陣列。這裏的現場指的就是Altera和Xilinx兩家主流的FPGA廠商,他們的FPGA大部分是基於SRAM工藝,所以可以反覆進行擦寫。而我們這裏說的可編程邏輯功能塊,就可以理解成實現FPGA可編程這個功能的基本單元。
而可編程邏輯功能快又分爲三部分
1:查找表(look up table簡稱LUT)
在我們的硬件描述語言Verilog或者VHDL中,代碼中的組合邏輯在最後下板實現的時候,都是通過查找表的方式實現的,根據輸入的不同查找表會有不同的輸出,我們也常常聽說四輸入查找表、六輸入查找表等等。
2:觸發器(簡稱FF,常用的D觸發器爲DFF)
FPGA本質就是數字電路的物理實現,所以這裏所說的觸發器跟我們數電中是一樣的,D觸發器的簡化原理圖如下,當復位信號無效之後,觸發器開始正常工作,每當時鐘沿來到的時候,將數據從D端口送給Q端口。(這個是我們後續理解時序分析和時序約束的基礎)
在這裏插入圖片描述
3:進位鏈

2:片類互連線

3:IO端口

除了上述的三種資源之外,FPGA芯片一般還有
1:數字時鐘管理單元
2:DSP(嵌入式硬核除法器)
3:高速串行I/O接口
4:特殊功能模塊(PCIE、DDR等硬核IP)
5:有的帶有arm(即PL + PS的SOC架構)

常見的時序問題分四類:
1:寄存器到寄存器
2:輸入引腳到寄存器
3:寄存器到輸出引腳
4:輸入引腳到輸出引腳

下面結合上面給出的D觸發器的結構圖具體談談一些時序分析中的基礎知識

時序分析:時序分析分析的是數據從一個寄存器出來,到進入下一個寄存器這一段路徑,我們分析的就是這一段路徑上數據的傳輸情況,看數據是否能被正確的接受以及發送給下一級電路。

時序約束:時序約束的目的就是爲了保證在數據在上述那一段路徑上的時間控制在一個時鐘週期以內。時序約束我們要乾的事就是告訴EDA工具一些我們設計的要求,然後讓EDA工具去自動優化佈局佈線以儘可能達到我們的設計要求。

時序分析和時序約束的意義:可以概括爲兩點,第一就是可以保證數據的正確接受,第二是可以讓我們設計出來的電路跑在更高的時鐘主頻下,畢竟FPGA一個很重要的特點就是能高速處理數據,這背後當然就是更高頻率的時鐘。

建立時間(setup_time):FPGA一般在每一個時鐘的上升沿採集數據,建立時間指的就是在一個時鐘上升沿來到之前,數據應該提前被準備好,這樣我們才能正確地採集到這個數據,所以我們把建立時間定義爲,在時鐘上升沿來到之前,數據必須保持穩定的最小時間

保持時間(hold_time):同樣的我們來理解保持時間,保持時間就是也是爲了能正確地接受數據,他指的是數據在時鐘沿被採樣之後,數據必須保持穩定的最小時間

Tco:數據從觸發器的輸入端口進去,到從輸出端口出來這之間的延遲,這個延遲是有器件本身的電氣特性決定的,一般來說這個時間很短

Tdata: 數據傳輸的延遲時間,這個時間的長短完全取決於你代碼的質量,我們常說好的時序是設計出來的,其實指的就是這一部分。數據傳輸時間過長不利於滿足建立時間,但數據傳輸時間過短也不利於保持時間的滿足

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章