劉 彤,王德龍,張艷飛,蔣 婷
(無錫中微億芯有限公司,江蘇無錫 214072)
現(xiàn)場(chǎng)可編程門陣列(FPGA)是一種半定制電路,具有開發(fā)周期短、成本低、風(fēng)險(xiǎn)小、集成度高、靈活性強(qiáng),且便于電子系統(tǒng)維護(hù)和升級(jí)的特點(diǎn),因此成為了數(shù)字芯片的主流,被廣泛應(yīng)用在通信、控制、視頻、信息處理、消費(fèi)電子、互聯(lián)網(wǎng)、汽車以及航空航天等諸多領(lǐng)域[1-2]。
可編程邏輯單元是FPGA 最基本和最核心的模塊,基于查找表的可編程邏輯單元是實(shí)現(xiàn)時(shí)序電路和組合電路的主要邏輯資源,其中移位寄存器是查找表邏輯應(yīng)用中最重要的功能之一,通過移位寄存器產(chǎn)生需要的延時(shí)或延時(shí)補(bǔ)償,用來平衡數(shù)據(jù)流水線的時(shí)序,同樣移位寄存器可用于同步先進(jìn)先出(FIFO)以及內(nèi)容可尋址存儲(chǔ)器的實(shí)現(xiàn)[3],同時(shí)還可以用于數(shù)的加、減、乘、除運(yùn)算,用于數(shù)字匹配濾波器的實(shí)現(xiàn)[4],以及串并數(shù)據(jù)轉(zhuǎn)換,構(gòu)成可變分頻器和高效隨機(jī)數(shù)發(fā)生器的實(shí)現(xiàn)[5-6]等??删幊踢壿媶卧囊莆患拇嫫麈湹膽?yīng)用非常廣泛,因此研究一款靈活的移位寄存器架構(gòu)具有重要意義,本文提出了一種基于查找表的移位寄存器鏈的架構(gòu)設(shè)計(jì)。
目前市場(chǎng)主流的移位寄存器鏈由觸發(fā)器(DFF)級(jí)聯(lián)實(shí)現(xiàn),如圖1 所示,由4 級(jí)DFF 首尾級(jí)聯(lián),完成4 個(gè)時(shí)鐘周期的移位操作。由于觸發(fā)器數(shù)量有限,面積較大,位數(shù)滿足不了用戶的設(shè)計(jì)要求,因此需要設(shè)計(jì)寬位數(shù)有效的移位寄存器鏈。
本文的目的是研究可編程邏輯單元移位功能架構(gòu)的實(shí)現(xiàn)方式和電路設(shè)計(jì),提出了一種基于查找表的移位寄存器鏈架構(gòu),通過電路設(shè)計(jì)、布局、仿真和優(yōu)化,并進(jìn)行了流片和測(cè)試,從而驗(yàn)證該架構(gòu)在28 nm 工藝下的功能和性能可行性,市場(chǎng)主流芯片對(duì)比參考頻率為450 MHz,電路設(shè)計(jì)目標(biāo)頻率為500 MHz,從而實(shí)現(xiàn)一款靈活的可編程邏輯單元的設(shè)計(jì),打通28 nm 工藝下FPGA 的設(shè)計(jì)流程。該架構(gòu)以查找表的配置存儲(chǔ)單元作為移位基本模塊,通過對(duì)時(shí)鐘和寫使能的控制,兩個(gè)存儲(chǔ)單元作為一個(gè)周期移位基本單元,對(duì)查找表的存儲(chǔ)資源進(jìn)行重復(fù)利用,有效地實(shí)現(xiàn)了寬時(shí)鐘周期的移位功能。
圖1 DFF 級(jí)聯(lián)移位寄存器
查找表的基本原理是采用二選一的復(fù)用器組成的一種樹形結(jié)構(gòu),查找表樹形結(jié)構(gòu)的最后一級(jí)是單個(gè)二選一的復(fù)用器,前面每一級(jí)復(fù)用器的數(shù)量依次遞增,都是后一級(jí)的兩倍,第一級(jí)選擇器(MUX)用于接收靜態(tài)存儲(chǔ)單元(SRAM)中的值,實(shí)現(xiàn)1 個(gè)n 輸入的查找表需要2n 個(gè)SRAM 存儲(chǔ)單元[7-8]。1 個(gè)可編程邏輯模塊,包含4 個(gè)六輸入的查找表邏輯單元,如圖2 所示,包含 A、B、C、D 4 個(gè)查找表區(qū)域,每個(gè)查找表實(shí)現(xiàn)方式為64 個(gè)配置存儲(chǔ)單元和6 個(gè)輸入地址信號(hào),通過對(duì)存儲(chǔ)單元的配置,實(shí)現(xiàn)6 信號(hào)輸入任意函數(shù)表達(dá)式的功能。
圖2 查找表邏輯單元
基于查找表移位寄存器鏈的基本結(jié)構(gòu)如圖3 所示,包括一個(gè)移位時(shí)鐘使能模塊(1),一個(gè)時(shí)鐘使能區(qū)域控制模塊(2),存儲(chǔ)單元(3)和一個(gè)輸入控制模塊二輸入選擇器(4)?;诳删幊檀鎯?chǔ)單元的移位寄存器結(jié)構(gòu)包含(A)、(B)、(C)、(D)4 個(gè)存儲(chǔ)單元區(qū)域,存儲(chǔ)區(qū)域(D)的初始輸入信號(hào)為SI_D,第1 個(gè)存儲(chǔ)單元的使能控制信號(hào)為WEN_D,第1 個(gè)存儲(chǔ)單元的輸出端口接入到第2 個(gè)存儲(chǔ)單元的輸入端,第2 個(gè)存儲(chǔ)單元的使能控制信號(hào)為WE_D,在進(jìn)行移位操作時(shí),WEN_D 與 WE_D 始終保持不重疊邏輯 1,即當(dāng)WEN_D=1,第1 個(gè)存儲(chǔ)單元寫入信號(hào)SI_D,此時(shí)WE_D=0,第 2 個(gè)存儲(chǔ)單元處于保持狀態(tài);當(dāng)WEN_D=0,第1 個(gè)存儲(chǔ)單元處于保持狀態(tài),不能寫入數(shù)據(jù),此時(shí)WE_D=1,第2 個(gè)存儲(chǔ)單元把第1 個(gè)存儲(chǔ)單元的值寫入至第2 個(gè)存儲(chǔ)單元。當(dāng)CLK=0 時(shí),WEN_D=1,當(dāng) CLK=1 時(shí),WE_D=1,因此 2 個(gè)存儲(chǔ)單元作為1 組,可以完成1 個(gè)時(shí)鐘周期的移位操作。1 個(gè)存儲(chǔ)區(qū)域共包含64 個(gè)存儲(chǔ)單元,以此類推第1 個(gè)、第3 個(gè)、第5 個(gè)、……、第63 個(gè)存儲(chǔ)單元的移位使能信號(hào)為 WEN_D,第 2 個(gè)、第 4 個(gè)、第 6 個(gè)、……、第 64 個(gè)存儲(chǔ)單元的移位使能信號(hào)為WE_D。
圖3 移位寄存器結(jié)構(gòu)
一個(gè)存儲(chǔ)區(qū)域最大可以構(gòu)成1 個(gè)32 個(gè)時(shí)鐘周期的移位操作,同理存儲(chǔ)區(qū)域(C)、(B)和(A)均可以構(gòu)成1 個(gè)32 個(gè)時(shí)鐘周期的移位操作。存儲(chǔ)區(qū)域(C)、(B)和(A)的初始輸入信號(hào)由二輸入選擇器(4)進(jìn)行控制。當(dāng)選擇器(MUX)(4)選擇輸入端口1 信號(hào)輸入時(shí),則存儲(chǔ)區(qū)域(D)、(C)、(B)和(A)的輸入初始值分別為SI_D、SI_C、SI_B 和 SI_A,4 個(gè)存儲(chǔ)區(qū)域構(gòu)成了 4 個(gè)獨(dú)立的最大能實(shí)現(xiàn)32 個(gè)時(shí)鐘周期的移位操作。當(dāng)(D)和(C)存儲(chǔ)區(qū)域之間的MUX(4)選擇輸入端口2 信號(hào)輸入時(shí),則存儲(chǔ)區(qū)域(C)的初始值為 D<64>,(D)和(C)存儲(chǔ)區(qū)域級(jí)聯(lián)成一個(gè)最大能實(shí)現(xiàn)64 位時(shí)鐘周期的移位操作,同理(D)、(C)、(B)和(A)的輸入初始值分別選擇 D<64>、C<64> 和 B<64>,4 個(gè)存儲(chǔ)區(qū)域構(gòu)成了首尾級(jí)聯(lián),最大實(shí)現(xiàn)一個(gè)128 個(gè)時(shí)鐘周期的移位操作,輸入初始值為SI_D,因此所述基于可編程存儲(chǔ)單元的移位寄存器結(jié)構(gòu)的存儲(chǔ)單元能實(shí)現(xiàn)0~128 位時(shí)鐘周期內(nèi)任意整數(shù)個(gè)時(shí)鐘周期的移位操作。MUX(4)的選擇控制信號(hào)為靜態(tài)SRAM 值,由用戶進(jìn)行配置。當(dāng)存儲(chǔ)區(qū)域(D)的MUX(4)選擇級(jí)聯(lián)進(jìn)位信號(hào)DIN 輸入時(shí),級(jí)聯(lián)成更大時(shí)鐘周期的移位操作。
移位時(shí)鐘使能模塊(2)如圖4 所示,其輸入信號(hào)為時(shí)鐘信號(hào)CLK,移位使能信號(hào)GWE,移位使能控制信號(hào)Q_SHIFT,輸出信號(hào)為Y 和YN。Q_SHIFT 為靜態(tài)存儲(chǔ)單元控制,Q_SHIFT=1,代表選通模塊的移位功能操作。GWE 為寫使能信號(hào),高電平時(shí)執(zhí)行寫信號(hào)操作。CLK 為時(shí)鐘,2 個(gè)二輸入或非門和5 個(gè)反相器用于產(chǎn)生不交疊高電平使能信號(hào)Y 和YN,用于完成移位寄存器鏈的移位操作[9]。
圖4 移位時(shí)鐘使能模塊結(jié)構(gòu)
每個(gè)時(shí)鐘使能區(qū)域控制模塊的Q_SHIFT 相互獨(dú)立,分別為 Q_SHIFT_D、Q_SHIFT_C、Q_SHIFT_B、Q_SHIFT_A,用于單獨(dú)控制該區(qū)域是否執(zhí)行移位操作,因此對(duì)應(yīng)的使能輸出信號(hào)分別為WE_D、WEN_D、WE_C、WEN_C、WE_B、WEN_B、WE_A、WEN_A。
移位寄存器結(jié)構(gòu)的存儲(chǔ)單元(3)的具體結(jié)構(gòu)如圖5 所示,包含1 個(gè)六管靜態(tài)存儲(chǔ)單元結(jié)構(gòu),存儲(chǔ)單元的寫信號(hào)為SI,EN 為寫使能信號(hào),靜態(tài)存儲(chǔ)單元具有雙穩(wěn)態(tài)結(jié)構(gòu),具有寫0 容易寫1 難的特點(diǎn),因此當(dāng)SI 為0 時(shí),通過一個(gè)NMOS 管從Z 端直接寫入,當(dāng)SI 為1時(shí),通過 3 個(gè) NMOS 管從 Z 和 ZN 雙端寫入,并存儲(chǔ)在SRAM 中,存儲(chǔ)單元的輸出端口為ZO。
圖5 移位單元結(jié)構(gòu)
移位寄存器的輸出如圖6 所示,移位輸出端口SR1~32,輸出端口通過查找表的輸入信號(hào)A1、A2、A3、A4、A5、A6 作為移位選擇輸出,選擇輸出 1~32 任意周期的移位操作。
對(duì)圖3 中的結(jié)構(gòu)進(jìn)行仿真,選擇28 nm UMCHPC+工藝,電源電壓為1 V,選擇典型工藝角,溫度25 ℃,對(duì)電路進(jìn)行配置,配置成4 個(gè)獨(dú)立的32 位移位寄存器,輸入信號(hào)分別為 DI、CI、BI、AI,輸入時(shí)鐘CLK 為500 MHz,令4 個(gè)輸入信號(hào)頻率或相位不同,輸出分別為 D、C、B、A,Hspice 仿真結(jié)果如圖 7 所示,表明輸出之間相互獨(dú)立,輸出與輸入均相差32 個(gè)時(shí)鐘周期。
圖6 移位輸出結(jié)構(gòu)
圖7 配置成4 個(gè)獨(dú)立32 位移位寄存器的仿真波形
選擇典型工藝角,溫度25 ℃,對(duì)電路進(jìn)行配置,進(jìn)行 D、C、B、A 首尾級(jí)聯(lián),配置成 1 個(gè) 128 位移位寄存器,輸入信號(hào)為DI,輸入時(shí)鐘CLK 為500 MHz,輸出分別為 D、C、B、A,Hspice 仿真結(jié)果如圖 8 所示,其中D 輸出與 DI 相差 32 個(gè)時(shí)鐘周期,C 輸出與 DI 相差64 個(gè)時(shí)鐘周期,B 輸出與DI 相差96 個(gè)時(shí)鐘周期,A輸出與DI 相差128 個(gè)時(shí)鐘周期,完成了128 個(gè)周期移位操作。
圖8 配置成128 位移位寄存器的仿真波形
采用28 nm UMC HPC+ 工藝進(jìn)行多項(xiàng)目晶圓(MPW)流片,對(duì)電路進(jìn)行配置,進(jìn)行 D、C、B、A 首尾級(jí)聯(lián),配置成1 個(gè)128 位移位寄存器,增加輸入信號(hào)為DI,輸入時(shí)鐘CLK 為500 MHz,示波器測(cè)試輸出結(jié)果如圖9 所示,其中輸出分別為D、C、B、A,結(jié)果表明D、C、B、A 輸出與輸入分別相差 32 個(gè)時(shí)鐘周期、64 個(gè)時(shí)鐘周期、96 個(gè)時(shí)鐘周期和128 個(gè)時(shí)鐘周期,與仿真匹配良好,且實(shí)現(xiàn)了最高頻率500 MHz 的目標(biāo),相較于市場(chǎng)主流芯片參考頻率450 MHz,性能提高10%。
圖9 配置成128 位移位寄存器的示波器波形
本文對(duì)一種基于查找表的移位寄存器鏈架構(gòu)進(jìn)行設(shè)計(jì)、布局、仿真和優(yōu)化,并在28 nm 工藝下進(jìn)行流片和測(cè)試,測(cè)試結(jié)果表明功能和性能達(dá)到預(yù)期目標(biāo)。所設(shè)計(jì)的基于查找表的移位寄存器可實(shí)現(xiàn)1~128 任意周期的移位操作,且最高工作頻率可達(dá)到500 MHz,相比于市場(chǎng)主流28 nm 芯片的參考頻率450 MHz,性能提高了10%。