FPGA研發(fā)之道(8)架構設計漫談(三)時鐘和復位
接口確定以后,FPGA內部如何規(guī)劃?首先需要考慮就是時鐘和復位。
本文引用地址:http://m.butianyuan.cn/article/264351.htm時鐘:根據時鐘的分類,可以分為邏輯時鐘,接口時鐘,存儲器時鐘等;
(1)邏輯時鐘取決與邏輯的關鍵路徑,最終值是設計和優(yōu)化的結果,從經驗而不是實際出發(fā):低端FPGA(cyclone spantan)工作頻率在40-80Mhz之間,而高端器件(stratix virtex)可達100-200Mhz之間,根據各系列的先后性能會有所提升,但不是革命性的。
(2)接口時鐘,異步信號的時序一般也是通過FPGA片內同步邏輯產生,一般需要同步化,即接口的同步化采樣。某些接口的同步時鐘一般是固定而精確的,例如下表所示,如SERDES的時鐘盡量由該BANK的專用時鐘管腳輸入,這樣可保證一組SERDES組成的高速接口時鐘偏斜一致。
(3)外部存儲器時鐘:這里時鐘主要為LPDDR/DDR2/DDR3等器件的時鐘,一般來說FPGA的接口不用工作在相應器件的最高頻率。能夠滿足系統(tǒng)緩存數據的性能即可,但是一般這些IP的接口都規(guī)定了相應的最小時鐘頻率,因為這些接口狀態(tài)機需不停進行外部器件的刷新(充電),過低的頻率可能會引起刷新的問題,造成數據丟失或者不穩(wěn)定。
(4)另外一些需要輸出的低速時鐘,例如I2C、MDIO、低速采樣等操作,可以通過內部分頻得到。不用通過PLL/DCM產生所需時鐘。在XILINX的FPGA中,禁止PLL產生的時鐘直接輸出到管腳上,而ALTERA的器件可以如此操作。解決此類問題的方法可通過ODDR器件通過時鐘及其180度相位時鐘(反向)接入的時鐘管腳分別采樣0、1邏輯得到。
因為有了DCM/PLL這些專用產生時鐘的器件,似乎產生任意時鐘輸出都是可能是,但實際例化的結果,時鐘的輸出只能選取某些范圍和某些頻率,取決于輸入時鐘和分頻系數,CLK_OUT = CLK_IN *(M/N) 。這些分頻系數基本取整數,其產生的頻率也是有限的值。
復位:根據復位的分類,FPGA內部復位可以分為硬復位,邏輯復位、軟復位等;
硬復位:故名思議,即外部引腳引入的復位,可以在上電時給入,使整個FPGA邏輯配置完成后,能夠達到穩(wěn)定的狀態(tài),這種復位重要性在于復雜單板上除了FPGA外,可能還有多個器件(CPU、DSP),其上電順序不同,在未完成全部上電之前,其工作狀態(tài)為不穩(wěn)定狀態(tài)。這種復位引腳可以通過專用時鐘管腳引入,也可通過普通I/O引入,一般由單板MCU或者CPLD給出。
邏輯復位:則是由FPGA內部邏輯產生,例如可以通過計數產生,等待一段時間開始工作,一般等待外部某些信號準備好,另一種FPGA內部邏輯準備好的狀態(tài)信號,常見的有DCM/PLL的LOCK信號;只有內部各邏輯準備好后,FPGA才能正常工作。另外FPGA內部如設計邏輯的看門狗的話,其產生的復位屬于這個層次。
軟復位:嚴格的說,應屬于調試接口,指FPGA接收外部指令產生的復位信號,用于復位某些模塊,用于定位和排除問題,也屬于可測性設計的一部分。例如FPGA通過EMIF接口與CPU連接,內部設定軟復位寄存器,CPU通過寫此寄存器可以復位FPGA內部單元邏輯,通過寫內部寄存器進行軟復位,是復雜IP常用的功能接口。調試時,FPGA返回錯誤或無返回,通過軟復位能否恢復,可以迅速定位分割問題,加快調試速度。
復位一般通過與或者或的方式(高電平或、低電平與),產生統(tǒng)一的復位給各模塊使用。模塊軟復位信號,只在本模塊內部使用。
問題:同步復位好、還是異步復位好? XILINX雖然推薦同步復位,但也不一概而論,復位的目的是使整個系統(tǒng)處于初始狀態(tài),這根據個人寫代碼經驗,這些操作都可以,前提是整個設計為同步設計,時鐘域之間相互隔開,復位信號足夠長,而不是毛刺。下面推薦一種異步復位的同步化方式,其電路圖如下:
時鐘和復位基本上每個模塊的基本輸入,也是FPGA架構上首先要規(guī)劃的部分,而不要用到才考慮,搞的整個設計到處例化DCM或者輸出LOCK進行復位,這些對于工程的可維護性和問題定位都沒有益處?!吨渭腋裱浴氛f:“宜未雨而綢繆,毋臨渴而掘井。這與FPGA時鐘和復位的規(guī)劃是同一個意思。
fpga相關文章:fpga是什么
電路圖符號相關文章:電路圖符號大全
存儲器相關文章:存儲器原理
評論