常見的FPGA復(fù)位設(shè)計(jì)_第1頁
常見的FPGA復(fù)位設(shè)計(jì)_第2頁
常見的FPGA復(fù)位設(shè)計(jì)_第3頁
常見的FPGA復(fù)位設(shè)計(jì)_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

常見的FPGA復(fù)位設(shè)計(jì)在FPGA設(shè)計(jì)中,當(dāng)復(fù)位整個(gè)系統(tǒng)或功能模塊時(shí),需要將先關(guān)寄存器被清零或者賦初值,以保證整個(gè)系統(tǒng)或功能運(yùn)行正常。在大部分的設(shè)計(jì)中,我們經(jīng)常用“同步復(fù)位”或“異步復(fù)位”直接將所有的寄存器全部復(fù)位,這部分可能大家都習(xí)以為常。但實(shí)際上,是否需要每個(gè)寄存器都進(jìn)行復(fù)位呢?這是一個(gè)值得探討的問題。一、為什么需要進(jìn)行復(fù)位?在FPGA設(shè)計(jì)中,復(fù)位是一個(gè)基本操作。復(fù)位的目的是將FPGA的寄存器清零或賦初值,以確保仿真或正常上板運(yùn)行時(shí)正常,以防止出現(xiàn)不確定的運(yùn)行狀態(tài)。需要注意的是,F(xiàn)PGA中可編程邏輯塊和寄存器,可能運(yùn)行在不同的時(shí)鐘和狀態(tài)下,在某些功能突然停止運(yùn)行時(shí),可能處于未知狀態(tài),如果不按照預(yù)期的方式進(jìn)行復(fù)位操作,F(xiàn)PGA可能無法正常工作。如果需要了解同步復(fù)位與異步復(fù)位,請看這篇文章:FPGA中的異步復(fù)位、同步復(fù)位與異步復(fù)位同步釋放。二、常見的復(fù)位設(shè)計(jì)根據(jù)復(fù)位方式的不同,F(xiàn)PGA復(fù)位信號可以分為外部復(fù)位和內(nèi)部復(fù)位兩種,復(fù)位信號也要分為高電平復(fù)位有效或低電平復(fù)位有效。1、外部復(fù)位外部復(fù)位是指由硬件按鍵或芯片產(chǎn)生的復(fù)位信號,也可由軟件產(chǎn)生,但這些信號往往與FPGA內(nèi)部各個(gè)時(shí)鐘信號異步。2、內(nèi)部復(fù)位內(nèi)部復(fù)位是由FPGA內(nèi)部邏輯產(chǎn)生的復(fù)位信號,例如在上電后自動復(fù)位或識別到某種內(nèi)部命令后自發(fā)產(chǎn)生復(fù)位信號。這些復(fù)位信號相對于某一時(shí)鐘域往往是同步的,但如果存在多個(gè)時(shí)鐘域,也可能會存在異步復(fù)位信號的情況。對于一個(gè)正常的FPGA系統(tǒng)來說,上電自動復(fù)位和手動按鍵復(fù)位都是必須的,二者相輔相成。除此之外,我們還需要根據(jù)實(shí)際情況確定是否需要對每個(gè)寄存器進(jìn)行復(fù)位操作,以及選擇適當(dāng)?shù)膹?fù)位方式和控制復(fù)位操作的時(shí)機(jī)。在進(jìn)行FPGA復(fù)位設(shè)計(jì)時(shí),還需要注意復(fù)位電路的功耗,以減少不必要的功耗損失。注意:軟復(fù)位邏輯需要注意復(fù)位信號持續(xù)時(shí)間,比如一般fifo復(fù)位至少需要保持8個(gè)周期以上。3、復(fù)位信號特點(diǎn)(1)復(fù)位網(wǎng)絡(luò)需要占用布線資源,會使得剩余的布線資源變少,對于布線設(shè)計(jì)帶來挑戰(zhàn)。

(2)復(fù)位信號的引入可能會對其他信號的布線自由度造成限制,這意味著布線可能需要更多的代價(jià)才能成功完成。

(3)復(fù)位網(wǎng)絡(luò)占用大量的布局網(wǎng)絡(luò)資源,會導(dǎo)致Place&Route的時(shí)間大大增加。

(4)復(fù)位信號需要占用額外的邏輯資源,可能會影響整個(gè)FPGA芯片設(shè)計(jì)的資源消耗。

(5)需要使用觸發(fā)器的專用復(fù)位管腳才能實(shí)現(xiàn)復(fù)位信號的輸入,這也會占用有限的管腳資源。

(6)可操作的復(fù)位信號往往需要在D觸發(fā)器輸入前增加額外的門操作或?qū)S玫膹?fù)位信號輸入,可能會降低系統(tǒng)性能。(7)大量的使用全局復(fù)位,復(fù)位信號將變成一個(gè)高扇出的信號,這對時(shí)序收斂無疑是一個(gè)巨大的挑戰(zhàn)4、寄存器復(fù)位與賦初值FPGA的內(nèi)部資源(觸發(fā)器和RAM)等都會在上電后默認(rèn)賦初值,一般是0,也可以在定義寄存器時(shí)賦初值,如:reg[1:0]test='d2;//定義時(shí)賦初值以上這個(gè)賦初值操作實(shí)際意義不大,但只在系統(tǒng)上電后有效,當(dāng)FPGA中系統(tǒng)運(yùn)行起來后,這個(gè)變量的值處于變化的狀態(tài),還是需要通過復(fù)位信號或者使能信號來控制將信號復(fù)位。三、是否需要對每個(gè)寄存器都進(jìn)行復(fù)位?FPGA復(fù)位需要消耗FPGA內(nèi)部資源,也會影響FPGA布線和時(shí)序收斂,所以對于每個(gè)寄存器都進(jìn)行復(fù)位并不是最優(yōu)方案,比如寄存器變量延遲幾拍、有使能信號或有效信號控制的信號變量等情況都可以不做復(fù)位處理,如下所示:moduletest(inputclk,inputrst,inputdata_valid_i,inputdata_i,outputregdata0_valid_o,outputregdata0_o,outputregdata1_valid_o,outputregdata1_o,outputregdata2_valid_o,outputregdata2_o);regd_r0,d_r1;always@(posedgeclk)begind_r0<=data_i;d_r1<=d_r0;?endalways@(posedgeclk)begindata0_valid_o<=data_valid_i;if(data_valid_i)begindata0_o<=data_i;endelsebegindata0_o<='b0;endendalways@(posedgeclk)beginif(rst)begindata1_valid_o<='b0;data1_o<='b0;endelsebegindata1_valid_o<=data_valid_i;if(data_valid_i)begindata1_o<=data_i;endelsebegindata1_o<='b0;endendendalways@(posedgeclkorposedgerst)beginif(rst)begindata2_valid_o<='b0;data2_o<='b0;endelsebegindata2_valid_o<=data_valid_i;if(data_valid_i)begindata2_o<=data_i;endelsebegin

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論