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