《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 復(fù)位對(duì)FPGA亞穩(wěn)態(tài)和資源利用率的影響
復(fù)位對(duì)FPGA亞穩(wěn)態(tài)和資源利用率的影響
2014年微型機(jī)與應(yīng)用第12期
姚建波, 沈 亮, 程國(guó)華
江南計(jì)算技術(shù)研究所, 江蘇 無(wú)錫
摘要: 在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ì)人員可以方便使用程序控制的。
Abstract:
Key words :

  摘   要復(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í)序圖。

001.jpg

  如果異步復(fù)位信號(hào)的撤銷(xiā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所示。

002.jpg

  當(dāng)輸入端d為高電平且復(fù)位信號(hào)的撤銷(xiāo)時(shí)間在clk的Tsu(建立時(shí)間)和Th(保持時(shí)間)內(nèi)時(shí),亞穩(wěn)態(tài)就隨之產(chǎn)生了。如圖4所示,當(dāng)復(fù)位信號(hào)的撤銷(xiā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所示。

003.jpg

  由圖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ì)人員在開(kāi)發(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所示。

004.jpg

005.jpg

  由圖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所示。

006.jpg

007.jpg

008.jpg

009.jpg

  由圖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.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。