《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 一種高可靠性高速可編程異步FIFO的設(shè)計(jì)
一種高可靠性高速可編程異步FIFO的設(shè)計(jì)
2019年電子技術(shù)應(yīng)用第7期
牛 博,,趙宏亮
遼寧大學(xué) 物理學(xué)院,,遼寧 沈陽(yáng)110036
摘要: 基于一款國(guó)產(chǎn)FPGA芯片的研發(fā),提出了一種具有高可靠性,、高速及可編程性的異步FIFO電路結(jié)構(gòu),。通過(guò)增加近空滿示警閾值和近空滿狀態(tài)位的方式用以提高異步FIFO的可編程性,同時(shí)內(nèi)部通過(guò)使用格雷碼指針進(jìn)行比較的結(jié)構(gòu)用以提高電路的可靠性,。并在此基礎(chǔ)上,,提出了一種新的空滿判斷標(biāo)準(zhǔn),使系統(tǒng)速度和邏輯利用率得到了進(jìn)一步的提升,?;赨MC 28 nm標(biāo)準(zhǔn)CMOS工藝,采用全定制方法進(jìn)行電路設(shè)計(jì),。仿真結(jié)果表明,,提出的異步FIFO在1 V的標(biāo)準(zhǔn)電壓下,最高工作頻率為666.6 MHz,,平均功耗為7.1 mW,。
中圖分類號(hào): TN495
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.183185
中文引用格式: 牛博,,趙宏亮. 一種高可靠性高速可編程異步FIFO的設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2019,,45(7):36-39,,43.
英文引用格式: Niu Bo,Zhao Hongliang. Design of high reliability and high speed programmable asynchronous FIFO[J]. Application of Electronic Technique,,2019,,45(7):36-39,43.
Design of high reliability and high speed programmable asynchronous FIFO
Niu Bo,,Zhao Hongliang
School of Physics,,Liaoning University,Shenyang 110036,,China
Abstract: Based on the research of a domestic field programmable gate array(FPGA) chip, an asynchronous first input first output(FIFO) circuit structure with high reliability, high speed and programmability is proposed. By adding the full/empty warning threshold and the full/empty state bit, the programmability of the proposed asynchronous FIFO is improved. Meanwhile, the reliability of the circuit is improved by using the Gray code pointer for comparation. On this basis, a new criterion for judging the full/empty state is proposed, which is applied to further improve the system working speed and logic utilization. Based on the United Microelectronics Corporation(UMC) 28 nm standard complementary metal oxide semiconductor(CMOS) process, the circuit design is carried out by fully customized method. The simulation results show that the proposed asynchronous FIFO has a maximum operating frequency of 666.6 MHz and an average power consumption of 7.1 mW at 1 V standard voltage.
Key words : programmability,;asynchronous FIFO;full/empty warning threshold,;Gray code pointer,;full/empty judgment

0 引言

    在現(xiàn)代的大規(guī)模ASIC設(shè)計(jì)中,常常涉及多時(shí)鐘系統(tǒng)控制方式,,這樣就會(huì)產(chǎn)生不同時(shí)鐘域數(shù)據(jù)傳輸?shù)膯?wèn)題,。比較好的解決方案就是使用異步FIFO(First In First Out)來(lái)實(shí)現(xiàn)不同時(shí)鐘域數(shù)據(jù)傳輸?shù)木彌_[1-2]。這是因?yàn)?,異步FIFO只按指針的遞增順序?qū)懭霐?shù)據(jù),,并以同樣的順序讀出數(shù)據(jù),不需要外部讀寫地址線,,使用起來(lái)非常簡(jiǎn)單,,這樣既可以使相異時(shí)鐘域數(shù)據(jù)傳輸?shù)臅r(shí)序要求變得寬松,也提高了它們之間的傳輸效率,。因此,,異步FIFO在網(wǎng)絡(luò)通信和數(shù)字信息處理等領(lǐng)域都有著廣泛的應(yīng)用[3-6]。而高性能異步FIFO的研究也就成為了大規(guī)模集成電路設(shè)計(jì)領(lǐng)域的研究熱點(diǎn)之一,,并取得了很多研究成果[7-10],。

    例如,文獻(xiàn)[7]中,,采取了比較同步指針的方法來(lái)降低亞穩(wěn)態(tài)出現(xiàn)的可能,,這樣做確實(shí)保證了比較時(shí)兩個(gè)指針都是同步的,但是在進(jìn)行大容量FIFO設(shè)計(jì)時(shí),,讀,、寫指針的位數(shù)很多,同步模塊會(huì)使用大量的寄存器,,這樣會(huì)大大增加設(shè)計(jì)成本,,降低工作效率,。而且該論文提到的設(shè)計(jì)方案在進(jìn)行空滿判斷時(shí),增加了一個(gè)地址位來(lái)標(biāo)識(shí)讀寫指針的相對(duì)位置,,這樣做不僅占用了過(guò)多的邏輯資源,,還降低了FIFO控制系統(tǒng)的可移植性。文獻(xiàn)[8]中提到了一種通過(guò)判斷格雷碼前兩位來(lái)劃分存儲(chǔ)區(qū)間,,進(jìn)而判斷空滿的方法,,但是由于這種判斷區(qū)間的劃分方式是通過(guò)硬件的形式實(shí)現(xiàn)的,可編程性不好,。本設(shè)計(jì)為了滿足一款國(guó)產(chǎn)FPGA的芯片設(shè)計(jì)需求,,在保證高可靠性的前提下,進(jìn)一步增強(qiáng)了異步FIFO的可編程性,,提出了一種基于格雷碼的,、可以對(duì)近空滿示警閾值進(jìn)行編程的異步FIFO,并且結(jié)合異步指針比較的方法提出了一種新的空滿判斷標(biāo)準(zhǔn),,進(jìn)而提高了電路的工作速度和效率,,最終設(shè)計(jì)出了一種具有高可靠性、高速及可編程性的高性能異步FIFO電路結(jié)構(gòu),。

1 所提出的異步FIFO系統(tǒng)結(jié)構(gòu)

    所提出的異步FIFO設(shè)計(jì)思路是,,在傳統(tǒng)FIFO模塊的基礎(chǔ)上,,通過(guò)對(duì)電路結(jié)構(gòu)和狀態(tài)判斷依據(jù)的改進(jìn)和優(yōu)化,,實(shí)現(xiàn)可靠性、可編程性和速度上的突破,。傳統(tǒng)的FIFO主要具有讀,、寫和空滿判斷的功能,它不需要外部讀寫地址線,,這樣使用起來(lái)非常簡(jiǎn)單,,因此它只能順序?qū)懭霐?shù)據(jù),順序地讀出數(shù)據(jù),,不能像普通存儲(chǔ)器那樣可以由地址線決定讀取或?qū)懭肽硞€(gè)指定的地址,。本設(shè)計(jì)中增加了近空滿示警功能,使用者可以對(duì)FIFO進(jìn)行編程設(shè)置示警閾值,,并且增加了近空和近滿指示位來(lái)提示FIFO的狀態(tài),,增加了FIFO的可編程性。FIFO模塊的系統(tǒng)結(jié)構(gòu)圖如圖1所示,。

wdz1-t1.gif

    整個(gè)FIFO可以劃分成四種模塊:存儲(chǔ)模塊,、指針產(chǎn)生模塊、指針比較模塊和標(biāo)志位產(chǎn)生模塊,。r_clk為讀時(shí)鐘,;w_clk為寫時(shí)鐘,;data_in為寫入數(shù)據(jù);data_out為讀出數(shù)據(jù),;ale_num為近空示警閾值,;alf_num為近滿示警閾值;r_ptr為讀指針,;w_ptr為寫指針,;al_empty為近空標(biāo)志;al_full為近滿標(biāo)志,;empty為空標(biāo)志,;full為滿標(biāo)志;alr_ptr為近空指針,;alw_ptr為近滿指針,。

    雙端口SRAM具有兩個(gè)完全獨(dú)立的讀、寫端口,,使用時(shí)可以選定一個(gè)端口寫入data_in,,另一個(gè)端口讀出data_out,這樣讀操作和寫操作互相獨(dú)立,,比較適合用來(lái)實(shí)現(xiàn)FIFO的功能,。在圖1中可以看出,一個(gè)FIFO可以分成讀時(shí)鐘域和寫時(shí)鐘域兩個(gè)完全相互獨(dú)立的時(shí)鐘域,。寫指針模塊根據(jù)w_clk產(chǎn)生w_ptr并且在w_ptr上疊加alf_num產(chǎn)生alw_ptr,,w_ptr一方面會(huì)控制存儲(chǔ)模塊將data_in寫入,寫入的數(shù)據(jù)將由r_ptr控制讀出,,另一方面w_ptr和alw_ptr進(jìn)入指針比較模塊與讀指針產(chǎn)生的r_ptr和alr_ptr進(jìn)行比較,,比較的結(jié)果進(jìn)入標(biāo)志位產(chǎn)生模塊進(jìn)行判斷,產(chǎn)生空,、滿,、近空和近滿標(biāo)志位,如果FIFO讀空,,則停止e_ptr,,如果寫滿,則停止w_ptr,。

    在以上的系統(tǒng)設(shè)計(jì)中不難看出,,系統(tǒng)指針間互相比較過(guò)程中數(shù)據(jù)的可靠性和空滿判斷過(guò)程中系統(tǒng)的精確度制約著系統(tǒng)性能的提升。因此,,在第二節(jié)和第三節(jié)中,,將分別詳細(xì)闡述系統(tǒng)指針比較和空滿判斷的設(shè)計(jì)方案。

2 系統(tǒng)指針比較的設(shè)計(jì)方案

    在數(shù)據(jù)的傳輸過(guò)程中,,接收寄存器收到變化的數(shù)據(jù)時(shí),,如果數(shù)據(jù)的改變發(fā)生在時(shí)鐘觸發(fā)沿,,那么會(huì)導(dǎo)致接受數(shù)據(jù)出現(xiàn)不穩(wěn)定的狀態(tài),這種狀態(tài)叫做亞穩(wěn)態(tài),。進(jìn)入亞穩(wěn)態(tài)時(shí),,既無(wú)法預(yù)測(cè)該單元的輸出電平,也無(wú)法預(yù)測(cè)何時(shí)輸出才能穩(wěn)定在某個(gè)正確的電平上,。在這個(gè)穩(wěn)定期間,,將會(huì)輸出一些中間級(jí)電平,或者可能處于振蕩狀態(tài),,并且這種無(wú)用的輸出電平可以沿信號(hào)通道級(jí)聯(lián)式傳播下去,。亞穩(wěn)態(tài)的發(fā)生會(huì)使得FIFO出現(xiàn)錯(cuò)誤,讀,、寫時(shí)鐘采樣的地址指針會(huì)與真實(shí)的值之間不同,,這就導(dǎo)致寫入或讀出的地址錯(cuò)誤。亞穩(wěn)態(tài)無(wú)法徹底消除,,只能想辦法將其發(fā)生的概率降到最低,。傳統(tǒng)的FIFO電路中為了解決亞穩(wěn)態(tài)問(wèn)題采取的方法是使用指針同步模塊,經(jīng)過(guò)同步的指針之間進(jìn)行比較就不存在亞穩(wěn)態(tài)的問(wèn)題了,。指針同步模塊一般采用圖2中所示的結(jié)構(gòu),。假設(shè)clk1與clk2為異步時(shí)鐘,當(dāng)data1的改變發(fā)生在B2的觸發(fā)沿處時(shí),,data2就有可能出現(xiàn)一個(gè)亞穩(wěn)態(tài),,但是,這時(shí)B3捕獲和發(fā)送的是上一個(gè)沒(méi)有出現(xiàn)亞穩(wěn)態(tài)時(shí)的數(shù)據(jù),,在下一個(gè)clk2時(shí)鐘觸發(fā)沿到來(lái)時(shí),,data2很可能已經(jīng)趨于穩(wěn)定,變?yōu)榇_定值0或者1,,這樣的話B3就是對(duì)一個(gè)確定值進(jìn)行捕獲。當(dāng)然,,data2也有可能無(wú)法在一個(gè)時(shí)鐘周期中穩(wěn)定,,但是data3出現(xiàn)亞穩(wěn)態(tài)的概率被極大地降低了。

wdz1-t2.gif

    使用比較同步指針的方法雖然可靠性高,,但是當(dāng)FIFO的數(shù)據(jù)深度很大時(shí),,指針一般都有很多位,這就需要對(duì)每一位都進(jìn)行同步,,極大地增加了寄存器的使用數(shù)量,,增加了設(shè)計(jì)成本。

    針對(duì)這種情況可以考慮使用格雷碼指針,。格雷碼在相鄰的兩個(gè)碼元之間只由一位變換(二進(jìn)制碼在很多情況下是很多碼元在同時(shí)變化),。這就會(huì)避免指針變動(dòng)的時(shí)候發(fā)生亞穩(wěn)態(tài)現(xiàn)象,。在寫地址和讀地址傳輸前,為了提高數(shù)據(jù)的穩(wěn)定性,,采用格雷碼替換二進(jìn)制碼進(jìn)行計(jì)數(shù),。這樣的話就可以不使用指針同步模塊,采取比較異步指針的方法,,將兩個(gè)異步指針直接進(jìn)行比較,,然后把比較后得出的標(biāo)志位同步到想要的時(shí)鐘域即可。本設(shè)計(jì)中指針產(chǎn)生模塊的原理圖如圖3所示,。

wdz1-t3.gif

    二進(jìn)制指針產(chǎn)生模塊的基本原理就是一個(gè)二進(jìn)制加法計(jì)數(shù)器,,每有一個(gè)時(shí)鐘上升沿來(lái)臨,它都會(huì)在之前輸出數(shù)值的基礎(chǔ)上加一,,這樣可以產(chǎn)生一個(gè)逐步累加的二進(jìn)制指針,,這個(gè)二進(jìn)制指針進(jìn)入半加器與近空滿示警閾值相加產(chǎn)生一個(gè)用于近空滿比較二進(jìn)制指針,最后,,這兩種指針都會(huì)被格雷碼產(chǎn)生模塊轉(zhuǎn)化為格雷碼指針輸出,。設(shè)計(jì)中使用格雷碼是為了降低亞穩(wěn)態(tài)出現(xiàn)的概率,節(jié)省邏輯開銷,,降低設(shè)計(jì)成本,;對(duì)指針類型進(jìn)行擴(kuò)充,增加了近空滿示警閾值和近空滿指針,,是為了提升FIFO的可編程性,。

3 空滿判斷的設(shè)計(jì)方案

    由于FIFO的功能需要一邊讀一邊寫,因此實(shí)際上FIFO的容量并不等于同SRAM存儲(chǔ)器陣列的實(shí)際容量,,而是取決于讀指針和寫指針的相對(duì)速度,。FIFO模塊正確使用的初始狀態(tài)一定是寫指針在讀指針之前,這樣可以保證讀出的內(nèi)容都是經(jīng)過(guò)寫入的數(shù)據(jù),,經(jīng)過(guò)一段時(shí)間的讀寫后,,如果由于讀指針追趕上了寫指針而致使讀寫指針相同,說(shuō)明存儲(chǔ)其中的數(shù)據(jù)被讀空,,再進(jìn)行下去會(huì)讀出錯(cuò)誤的數(shù)據(jù),;如果是寫指針追趕上了讀指針,則說(shuō)明存儲(chǔ)器被寫滿,,再進(jìn)行下去則會(huì)使未讀出的數(shù)據(jù)被重寫,。以上兩種情況是一定要避免的,所以如何判斷空滿狀態(tài),,關(guān)系到FIFO的精確度和可靠性,。

    傳統(tǒng)的做法是增加一位地址位來(lái)表示讀寫指針的相對(duì)位置,由于這種方法增加了一位地址位,使FIFO地址位的數(shù)量與SRAM地址位數(shù)量不同,,降低了FIFO控制器的可移植性,,而且增加的這一位地址位實(shí)際上增加了不必要的邏輯開銷??紤]到設(shè)計(jì)中提到的FIFO增添了近空滿示警標(biāo)志位,,所以可以借助近示警標(biāo)志位來(lái)產(chǎn)生空滿標(biāo)志位。其狀態(tài)判斷原理如圖4所示,。

wdz1-t4.gif

    近空滿示警標(biāo)志位產(chǎn)生的原理是,,將讀寫指針加上一個(gè)二進(jìn)制數(shù)作為示警的閾值,這樣就有了四種不同的指針,,分別為讀,、寫指針和近空滿讀寫指針,使用這四種指針相互比較就能得出想要的結(jié)果,。在FIFO使用過(guò)程中,,如果近空滿讀指針等于寫指針,說(shuō)明讀指針的速度比寫指針?biāo)俣瓤?,近空滿示警信號(hào)指示FIFO近空,,這時(shí)只需要注意FIFO被讀空,一旦讀寫指針相等就可以判斷FIFO讀空,;如果近空滿寫指針等于讀指針,,則說(shuō)明寫指針的速度快,應(yīng)指示近滿,,F(xiàn)IFO只存在寫滿的風(fēng)險(xiǎn),,一旦讀寫指針相等即判斷FIFO寫滿。這種空滿判斷方法借助了示警標(biāo)志位,,不需要增加額外的指針位,,提高了邏輯利用率和FIFO控制器的可移植性,而且這樣做不需要對(duì)方向位進(jìn)行運(yùn)算,,提升了運(yùn)行速度,。

4 仿真驗(yàn)證

    本設(shè)計(jì)基于UMC 28 nm標(biāo)準(zhǔn)CMOS工藝,采用全定制方法進(jìn)行電路設(shè)計(jì),。使用Hspice軟件進(jìn)行了電路仿真驗(yàn)證,。仿真結(jié)果表明,提出的異步FIFO在1 V的標(biāo)準(zhǔn)電壓下,,最高工作頻率為666.6 MHz,功耗為7.1 mW,。具體仿真結(jié)果如圖5所示,。

wdz1-t5.gif

    對(duì)近空、空標(biāo)志位進(jìn)行驗(yàn)證時(shí),使用的讀時(shí)鐘周期為1.5 ns(666.6 MHz),,寫時(shí)鐘周期為2.5 ns(400 MHz),,近空示警閾值設(shè)置為17,一共用到了9位二進(jìn)制地址,,按照格雷碼的規(guī)律變化,。仿真結(jié)果如圖5(a)所示。圖中r_ptr為讀指針信號(hào),,w_ptr為寫指針信號(hào),,均以3位十六進(jìn)制數(shù)的形式表示;empty為讀空信號(hào)(高有效),;al_empty為近空信號(hào)(低有效),。可以看出,,當(dāng)讀寫指針相等時(shí)讀空信號(hào)有效,,并且近空信號(hào)提前17個(gè)讀周期示警FIFO快要讀空。

    對(duì)近滿,、滿標(biāo)志位進(jìn)行驗(yàn)證時(shí),,使用的讀時(shí)鐘周期為2.5 ns(400 MHz),寫時(shí)鐘周期為1.5 ns(666.6 MHz),,近空示警閾值設(shè)置為15,,一共用到了9位二進(jìn)制地址,按照格雷碼的規(guī)律變化,。仿真結(jié)果如圖5(b)所示,。圖中w_ptr為寫指針信號(hào),r_ptr為讀指針信號(hào),,均以3位十六進(jìn)制數(shù)的形式表示,;full為寫滿信號(hào)(高有效);al_full為近滿信號(hào)(低有效),??梢钥闯觯?dāng)讀寫指針相等時(shí)寫滿信號(hào)有效,,并且近滿信號(hào)提前15個(gè)寫周期示警FIFO快要讀空,。

5 結(jié)論

    在傳統(tǒng)FIFO結(jié)構(gòu)的基礎(chǔ)上,通過(guò)對(duì)電路結(jié)構(gòu)和狀態(tài)判斷依據(jù)的改進(jìn)和優(yōu)化,,提出了一種高性能異步FIFO電路結(jié)構(gòu),。基于UMC 28 nm標(biāo)準(zhǔn)CMOS工藝進(jìn)行電路設(shè)計(jì),、仿真與驗(yàn)證,。仿真結(jié)果表明,,提出的異步FIFO結(jié)構(gòu)具有高可靠性、高速及可編程性等優(yōu)點(diǎn),,能夠滿足國(guó)產(chǎn)FPGA芯片研發(fā)的系統(tǒng)需求,。

參考文獻(xiàn)

[1] 金大超,冷建偉.異步時(shí)鐘域信號(hào)同步的實(shí)現(xiàn)[J].天津理工大學(xué)學(xué)報(bào),,2017,,33(3):40-44.

[2] 劉杰,賽景波.基于DDR2 SDRAM乒乓雙緩沖的高速數(shù)據(jù)收發(fā)系統(tǒng)設(shè)計(jì)[J].電子器件,,2015,,38(3):650-654.

[3] 莊洪毅.一種基于FX2與FPGA聯(lián)用實(shí)現(xiàn)USB2.0通訊協(xié)議的方法[J].電子測(cè)量技術(shù),2017,,40(4):78-81.

[4] 馮國(guó)富,,馬玉齊,陳明,,等.一種面向船聯(lián)網(wǎng)的“北斗”異步FIFO多通道模型[J].微電子學(xué)與計(jì)算機(jī),,2017,34(2):1-5.

[5] 吳修英,,黃嵩人.浮點(diǎn)型DSP中異步FIFO的研究與設(shè)計(jì)[J].電子世界,,2018,1(69):145-146.

[6] 倪露,,鄒學(xué)玉.LZW的異步FIFO輸入緩沖設(shè)計(jì)[J].電子測(cè)量技術(shù),,2015,38(4):19-23.

[7] 司嵐山,,吳海宏,,王勇,等.一種大容量異步FIFO的設(shè)計(jì)與實(shí)現(xiàn)[J].微電子學(xué),,2013,,43(3):405-408.

[8] 李賽,蔣林.OTN中異步FIFO的設(shè)計(jì)與實(shí)現(xiàn)[J].光通信研究,,2015,,191(5):55-58.

[9] 王齊雙,黃震春,,蒲海峰.基于FPGA的異步FIFO的設(shè)計(jì)方案及性能[J].彈箭與制導(dǎo)學(xué)報(bào),,2014,34(6):185-189.

[10] 肖靜嫻,,戴亞文.基于FPGA的異步FIFO緩存設(shè)計(jì)[J].電子測(cè)量技術(shù),,2009,32(11):92-94.



作者信息:

牛  博,,趙宏亮

(遼寧大學(xué) 物理學(xué)院,,遼寧 沈陽(yáng)110036)

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