摘 要: 復(fù)位是FPGA設(shè)計(jì)中一個(gè)基本而又重要的問(wèn)題,,如果處理不當(dāng),不僅可能導(dǎo)致亞穩(wěn)態(tài)的問(wèn)題,,而且會(huì)降低設(shè)計(jì)的資源利用率,。分析了不同的復(fù)位方式對(duì)系統(tǒng)亞穩(wěn)態(tài)和資源利用率的影響,并對(duì)不同的目標(biāo)器件中復(fù)位信號(hào)的使用給出了建議,。
關(guān)鍵詞: 復(fù)位,;亞穩(wěn)態(tài);資源利用率
在FPGA設(shè)計(jì)中,,復(fù)位信號(hào)扮演著重要的角色,,設(shè)計(jì)人員通常都使用一個(gè)外部輸入的全局復(fù)位信號(hào)在上電初期對(duì)系統(tǒng)進(jìn)行初始化[1-2],。通常,F(xiàn)PGA中的全局復(fù)位信號(hào)一般由3種途徑獲得[3]:(1)用一個(gè)復(fù)位按鈕產(chǎn)生一個(gè)復(fù)位信號(hào)接到FPGA的全局復(fù)位管腳上,它的速度非常慢,,而且存在抖動(dòng)的問(wèn)題;(2)上電時(shí)由電源芯片產(chǎn)生,如TI公司TPS76x系列的電源系統(tǒng)一般都可以產(chǎn)生復(fù)位信號(hào),,供主芯片上電復(fù)位使用;(3)由微處理器產(chǎn)生復(fù)位脈沖,,這個(gè)是設(shè)計(jì)人員可以方便使用程序控制的,。
全局復(fù)位管腳類似于其他任何輸入管腳,通常都是異步的,,設(shè)計(jì)人員可以在FPGA中將其當(dāng)作異步或同步復(fù)位信號(hào)來(lái)使用,, 但一個(gè)最佳的復(fù)位結(jié)構(gòu)卻可以對(duì)FPGA的亞穩(wěn)態(tài)和資源利用率產(chǎn)生很大的影響。
1 復(fù)位與亞穩(wěn)態(tài)
1.1 異步復(fù)位
在大多數(shù)FPGA設(shè)計(jì)中,,外部輸入的全局復(fù)位信號(hào)被直接當(dāng)作異步復(fù)位來(lái)使用,。這種用法在可控的仿真環(huán)境下工作正常,然而在真實(shí)的系統(tǒng)中卻常常會(huì)出現(xiàn)不規(guī)律的錯(cuò)誤,,其原因在于設(shè)計(jì)人員常常低估了真實(shí)系統(tǒng)中復(fù)位信號(hào)的“釋放”問(wèn)題,,這個(gè)問(wèn)題可能導(dǎo)致系統(tǒng)中的觸發(fā)器進(jìn)入亞穩(wěn)態(tài),從而影響整個(gè)系統(tǒng)的穩(wěn)定性[4],。
常用的異步復(fù)位電路Verilog描述如下:
always @ (posedge clk or negedge rst_n)
begin
if(!rst_n) q <= 1’b0;
else q <= d;
end
在Quartus Ⅱ中綜合出的異步復(fù)位電路模型如圖1所示,。圖2為異步復(fù)位電路的復(fù)位時(shí)序圖。
如果異步復(fù)位信號(hào)的撤銷時(shí)間在Trecovery(恢復(fù)時(shí)間)和Tremoval(移除時(shí)間)之內(nèi),,則造成亞穩(wěn)態(tài)的產(chǎn)生,,觸發(fā)器的輸出在時(shí)鐘邊沿的Tco后會(huì)產(chǎn)生振蕩,最終穩(wěn)定到“0”或者“1”,,這就有可能造成復(fù)位失敗,。
1.2 同步復(fù)位
由于全局復(fù)位信號(hào)通常是異步的,因此,,有些設(shè)計(jì)人員采用同步復(fù)位電路對(duì)FPGA進(jìn)行復(fù)位,,并且絕大多數(shù)文獻(xiàn)資料認(rèn)為同步復(fù)位電路都不會(huì)發(fā)生亞穩(wěn)態(tài),其實(shí)不然,,同步電路也會(huì)發(fā)生亞穩(wěn)態(tài),,只是幾率小于異步復(fù)位電路。
常用的同步復(fù)位電路Verilog描述如下:
always @ (posedge clk)
begin
if(!rst_n) q <= 1’b0;
elseq <= d;
end
在Quartus Ⅱ中綜合出的異步復(fù)位電路模型如圖3所示,其復(fù)位時(shí)序圖如圖4所示,。
當(dāng)輸入端d為高電平且復(fù)位信號(hào)的撤銷時(shí)間在clk的Tsu(建立時(shí)間)和Th(保持時(shí)間)內(nèi)時(shí),,亞穩(wěn)態(tài)就隨之產(chǎn)生了。如圖4所示,,當(dāng)復(fù)位信號(hào)的撤銷時(shí)間在clk的Tsu和Th內(nèi)時(shí),,輸入數(shù)據(jù)為“1”,通過(guò)和輸入數(shù)據(jù)相“與”后產(chǎn)生的信號(hào)d’也在clk的Tsu和Th內(nèi),,因此,,勢(shì)必會(huì)造成類似異步信號(hào)采集的亞穩(wěn)態(tài)情況,。
1.3 異步復(fù)位、同步釋放
為了解決單純的異步復(fù)位或同步復(fù)位所帶來(lái)的亞穩(wěn)態(tài)問(wèn)題,,一種常用的處理方式是異步復(fù)位,、同步釋放。其Verilog描述如下:
always @ (posedge clk or negedge rst_n_asyn)
begin
if (!rst_n_asyn)
begin
temp <= 1′b0;
rst_n_syn <= 1′b0;
end
else
begin
temp <= 1′b1;
rst_n_syn <= temp;
end
end
在Quartus Ⅱ中綜合出的異步復(fù)位,、同步釋放電路模型如圖5所示,。
由圖5可以看出,新產(chǎn)生的復(fù)位信號(hào)rst_n_syn是一個(gè)同步化了的異步復(fù)位信號(hào),,其復(fù)位時(shí)刻的到來(lái)不受時(shí)鐘信號(hào)的影響,,同時(shí)其復(fù)位釋放的時(shí)刻卻與時(shí)鐘信號(hào)同步。這種復(fù)位方式很好地將異步復(fù)位和同步復(fù)位的優(yōu)點(diǎn)結(jié)合起來(lái),,設(shè)計(jì)人員在開發(fā)FPGA工程時(shí)只需要在每個(gè)時(shí)鐘域內(nèi)用這種異步復(fù)位,、同步釋放的復(fù)位結(jié)構(gòu)產(chǎn)生一個(gè)局部的復(fù)位信號(hào)rst_n_syn,并用它來(lái)對(duì)該時(shí)鐘域內(nèi)的所有模塊進(jìn)行復(fù)位,便可以有效地降低亞穩(wěn)態(tài)出現(xiàn)的幾率,。
2 復(fù)位與資源利用率
在不同的目標(biāo)器件中,,寄存器對(duì)復(fù)位的異步或同步、高電平或低電平有不同的要求和實(shí)現(xiàn),,因此,,不同的復(fù)位方式對(duì)FPGA的資源利用率也將產(chǎn)生很大的影響。
2.1 Altera公司的FPGA
在Altera公司的FGPA中,,每個(gè)寄存器都有一個(gè)異步的清零輸入端[5]。高/低電平的異步/同步復(fù)位電路在Quartus Ⅱ中綜合出的電路模型如圖6~圖9所示,。
由圖6~圖9所示的電路模型可以看出,,在Altera公司的FPGA中,不論是高電平還是低電平的異步復(fù)位,直接使用了寄存器的CLR端口,;然而如果是同步復(fù)位,,綜合后會(huì)在其寄存器的數(shù)據(jù)路徑上增加一個(gè)數(shù)據(jù)選擇器,將復(fù)位信號(hào)作為輸入邏輯的使能信號(hào),,這樣不僅增加了設(shè)計(jì)的資源占用量,,而且增加了數(shù)據(jù)信號(hào)的路徑時(shí)延。
2.2 Xilinx公司的FPGA
在Xilinx公司的FGPA中,,每個(gè)寄存器都有一個(gè)專用的清零輸入端[6],。高/低電平的異步/同步復(fù)位電路在ISE 12.4中綜合出的電路模型如圖10~圖13所示。
由圖10~圖13所示的電路模型可以看出,,在Xilinx的FPGA中,,不論是同步的還是異步的高電平復(fù)位,直接使用了寄存器的專用清零輸入端,;然而如果是低電平復(fù)位,,綜合后會(huì)在復(fù)位路徑上增加一個(gè)反相器,,這樣不僅增加了設(shè)計(jì)的資源占用量,而且增加了復(fù)位信號(hào)的路徑時(shí)延,。
從以上分析可以看出,, 在FPGA設(shè)計(jì)中,通過(guò)異步復(fù)位,、同步釋放的復(fù)位結(jié)構(gòu)將外部輸入的全局復(fù)位信號(hào)進(jìn)行同步化,,可以降低系統(tǒng)中亞穩(wěn)態(tài)出現(xiàn)的幾率,增加系統(tǒng)復(fù)位的可靠性,; 同時(shí),在Altera公司的FPGA中對(duì)寄存器使用高電平或低電平的異步復(fù)位,、在Xilinx公司的FPGA中對(duì)寄存器使用異步或同步的高電平復(fù)位,均可以降低設(shè)計(jì)的資源占用量,,提高資源利用率,。因此,在FPGA設(shè)計(jì)時(shí),,設(shè)計(jì)人員應(yīng)該根據(jù)不同的應(yīng)用場(chǎng)景和不同的目標(biāo)器件區(qū)別使用復(fù)位方式,,以取得最佳的復(fù)位效果。
參考文獻(xiàn)
[1] 周偉,杜玉曉,,楊其宇,等.FPGA跨時(shí)鐘域亞穩(wěn)態(tài)研究[J].
電子世界, 2012(3):87-89.
[2] 黃隸凡,鄭學(xué)仁.FPGA設(shè)計(jì)中的亞穩(wěn)態(tài)研究[J]. 微電子
學(xué), 2011,41(2):265-268,273.
[3] CHAPMAN K. Get smart about reset think local, not
global[Z]. Xilinx FPGAs, 2008.
[4] 汪路元.FPGA設(shè)計(jì)中的亞穩(wěn)態(tài)及其緩解措施[J].電子技
術(shù)應(yīng)用,,2012,38(8):13-15.
[5] Altera. Cyclone IV device handbook[Z].2013.
[6] Xilinx. Virtex-5 family overview[Z].2009.