摘 要: 以順序狀態(tài)邏輯有限狀態(tài)機(jī)的設(shè)計(jì)為例,,簡(jiǎn)要介紹了用Verilog語(yǔ)言進(jìn)行集成電路設(shè)計(jì)的一般過程,,并在ModelSim和DC環(huán)境下成功地進(jìn)行了仿真和綜合。
關(guān)鍵詞: Verilog 順序狀態(tài)邏輯 FSM
硬件描述語(yǔ)言Verilog為數(shù)字系統(tǒng)設(shè)計(jì)人員提供了一種在廣泛抽象層次上描述數(shù)字系統(tǒng)的方式,,同時(shí),,為計(jì)算機(jī)輔助設(shè)計(jì)工具在工程設(shè)計(jì)中的應(yīng)用提供了方法。該語(yǔ)言支持早期的行為結(jié)構(gòu)設(shè)計(jì)的概念,,以及其后層次化結(jié)構(gòu)設(shè)計(jì)的實(shí)現(xiàn),。這在設(shè)計(jì)過程中,進(jìn)行邏輯結(jié)構(gòu)部分設(shè)計(jì)時(shí)可以將行為結(jié)構(gòu)和層次化結(jié)構(gòu)混合起來(lái),;為確認(rèn)正確性還可以將描述進(jìn)行模擬,,并提供一些用于自動(dòng)設(shè)計(jì)的綜合工具。因而Verilog語(yǔ)言為設(shè)計(jì)者進(jìn)行大型復(fù)雜數(shù)字系統(tǒng)的設(shè)計(jì)提供了途徑[1],。超大規(guī)模集成電路設(shè)計(jì)的典型流程如圖1所示[2],。
本文將以順序狀態(tài)邏輯有限狀態(tài)機(jī)的設(shè)計(jì)為例介紹用Verilog語(yǔ)言設(shè)計(jì)數(shù)字電路的一般過程。
1 設(shè)計(jì)規(guī)范與設(shè)計(jì)構(gòu)思
電子設(shè)計(jì)工程師在設(shè)計(jì)過程中不可避免地會(huì)遇到設(shè)計(jì)可執(zhí)行特殊操作序列電路的工作,,如用來(lái)控制其他電路進(jìn)行操作的控制器,,而有限狀態(tài)機(jī)(Finite Status Machine,FSM)是設(shè)計(jì)這種能執(zhí)行特殊操作序列電路的一種非常有效的模型,。FSM的結(jié)構(gòu)通常由當(dāng)前狀態(tài)寄存器,、下一狀態(tài)邏輯和輸出邏輯三部分構(gòu)成。FSM也有很多種模型,,本文僅以順序狀態(tài)邏輯FSM的設(shè)計(jì)為例來(lái)說(shuō)明用Verilog進(jìn)行集成電路設(shè)計(jì)的一般設(shè)計(jì)過程,。為簡(jiǎn)單起見,本設(shè)計(jì)只設(shè)計(jì)了包含有8個(gè)狀態(tài)的順序狀態(tài)邏輯FSM,。8個(gè)狀態(tài)分別為One,、Two、ThreeA,、ThreeB,、ThreeC、Dummy、Four,、Five,。開始狀態(tài)為One,各狀態(tài)之間的轉(zhuǎn)換關(guān)系如圖2所示[3],。
該順序狀態(tài)邏輯FSM的功能及要求如下,。
(1)同步復(fù)位信號(hào)Reset至少要維持4個(gè)時(shí)鐘周期的高電平信號(hào),以保證狀態(tài)機(jī)進(jìn)入狀態(tài)One,。
(2)當(dāng)狀態(tài)機(jī)在5個(gè)狀態(tài)中循環(huán)時(shí),,A、B,、C 3個(gè)輸入按優(yōu)先級(jí)使?fàn)顟B(tài)機(jī)從狀態(tài)Two進(jìn)入相應(yīng)的狀態(tài)ThreeA,、ThreeB、ThreeC,、Dummy,。
(3)復(fù)位后,如果A持續(xù)為高電平,,則輸出信號(hào)Y1的周期為時(shí)鐘周期的5倍,,且高電平維持的時(shí)間為1個(gè)時(shí)鐘周期。
(4)如果A,、B維持為低電平,,而C維持為高電平,則輸出信號(hào)Y3的周期為時(shí)鐘周期的5倍,,且高電平維持的時(shí)間為1個(gè)時(shí)鐘周期,。
(5)如果A維持低電平,而B維持高電平,,則輸出信號(hào)Y2與Y1和Y3不同,,只維持1個(gè)時(shí)鐘周期的高電平。因?yàn)楫?dāng)狀態(tài)機(jī)進(jìn)入狀態(tài)ThreeB時(shí),,信號(hào)BeenInState3B被設(shè)置為1,,而該信號(hào)就會(huì)禁止?fàn)顟B(tài)機(jī)再次進(jìn)入狀態(tài)ThreeB,直到另一個(gè)復(fù)位信號(hào)出現(xiàn)為止,。
以上是一個(gè)時(shí)序電路的設(shè)計(jì),,如何保證正確的時(shí)序是設(shè)計(jì)的關(guān)鍵。根據(jù)設(shè)計(jì)要求,,該狀態(tài)機(jī)至少應(yīng)該有8個(gè)端口:5個(gè)輸入端口(A,、B、C,、Reset,、Clock),,3個(gè)輸出端口(Y1、Y2,、Y3),。其中輸入端A、B,、C和Reset信號(hào)均由時(shí)鐘邊緣進(jìn)行觸發(fā),,Reset具有最高的優(yōu)先權(quán),而輸入信號(hào)A,、B,、C的優(yōu)先權(quán)則依次遞減。
該順序狀態(tài)邏輯有限狀態(tài)機(jī)的端口示意圖和設(shè)計(jì)構(gòu)思圖分別如圖3和圖4所示,。
2 用Verilog語(yǔ)言編寫源代碼
基于上面的分析,,可以寫出如下設(shè)計(jì)代碼:
3 源代碼功能仿真
通常EDA(Electronic Design Automation)工具都為設(shè)計(jì)人員提供了測(cè)試平臺(tái),以驗(yàn)證數(shù)字電子系統(tǒng)設(shè)計(jì)在功能和時(shí)序二方面的正確性,。不同的EDA工具提供的平臺(tái)會(huì)有差別,但是它們都可以實(shí)現(xiàn)對(duì)被測(cè)試對(duì)象加載測(cè)試信號(hào),,并且能夠通過波形輸出或文件記錄輸出等方式來(lái)方便地進(jìn)行觀察及比較仿真結(jié)果,。而測(cè)試用的激勵(lì)代碼通常是由設(shè)計(jì)人員自己編寫。為了便于清楚地觀察,、比較仿真結(jié)果,,本設(shè)計(jì)對(duì)一個(gè)340ns時(shí)間段進(jìn)行了模擬,且測(cè)試代碼考慮了各種可能出現(xiàn)的激勵(lì)情況,,具體的測(cè)試代碼如下:
筆者使用Model公司的ModelSim5.6對(duì)該系統(tǒng)進(jìn)行了功能仿真,,結(jié)果如圖5所示。
4 邏輯綜合
邏輯綜合的目標(biāo)是將寄存器時(shí)間邏輯(RTL)的HDL(Hardware Description Language)代碼映射到具體的工藝上加以實(shí)現(xiàn),,因而從這一步開始,,設(shè)計(jì)過程與實(shí)現(xiàn)工藝相關(guān)聯(lián)。實(shí)現(xiàn)自動(dòng)綜合的前提是要有邏輯綜合庫(kù)的支持,。綜合庫(kù)內(nèi)部包含了相應(yīng)的工藝參數(shù),,最典型的有:門級(jí)延時(shí)、單元面積,、扇入扇出系數(shù)等,。設(shè)計(jì)一個(gè)電子系統(tǒng),總有相應(yīng)的設(shè)計(jì)目標(biāo),,如時(shí)鐘頻率,、芯片面積、端口驅(qū)動(dòng)能力等,。自動(dòng)綜合工具將這些設(shè)計(jì)指標(biāo)作為綜合過程的約束條件,,在給定的包含工藝參數(shù)的綜合庫(kù)中選取最佳單元,實(shí)現(xiàn)綜合過程。
與模擬工具一樣,,目前有許多優(yōu)秀的綜合工具借助現(xiàn)有的綜合庫(kù)能將Verilog語(yǔ)言源代碼進(jìn)行綜合,,轉(zhuǎn)化成門級(jí)電路圖,并且可以根據(jù)設(shè)計(jì)者施加的約束條件對(duì)電路進(jìn)行優(yōu)化,,生成相應(yīng)的門級(jí)網(wǎng)表,。Synopsys公司的DC(DesignCompiler)就是一個(gè)比較好的邏輯綜合工具。DC邏輯綜合與優(yōu)化后得到的電路圖如圖6所示,。
5 門級(jí)仿真
綜合之后所得到的電路是否仍能滿足設(shè)計(jì)要求,,同樣需要通過仿真來(lái)確定,邏輯綜合之后的仿真稱為門級(jí)仿真,。門級(jí)網(wǎng)表是使用門電路以及電路之間的連接來(lái)描述電路的方式,。門級(jí)仿真與RTL仿真不同的是,門級(jí)仿真包含了門單元的延時(shí)信息,,因而門級(jí)仿真需要相應(yīng)工藝的仿真庫(kù)支持,。把綜合后得到的網(wǎng)表中門級(jí)延時(shí)參數(shù)提取出來(lái)后,對(duì)被測(cè)試對(duì)象進(jìn)行反標(biāo),,然后再進(jìn)行仿真,,得到的結(jié)果如圖7所示。
從門級(jí)仿真所得到的波形圖輸出結(jié)果來(lái)看,,本設(shè)計(jì)在功能與時(shí)序上是符合設(shè)計(jì)要求的,。
6 后端設(shè)計(jì)
門級(jí)仿真通過后,接著就是進(jìn)行版圖規(guī)劃,;版圖規(guī)劃好以后就進(jìn)行布局與布線,;在版圖的布局布線都已確定后,可以從版圖中進(jìn)一步提取出連線電阻,、電容等參數(shù),。
生成版圖之后,把從版圖中提取出的參數(shù)反標(biāo)到門級(jí)網(wǎng)表中,,進(jìn)行包含門延時(shí),、連線延時(shí)的門級(jí)仿真,稱作后仿真,。這一步主要是進(jìn)行時(shí)序模擬,,如果時(shí)序不能滿足設(shè)計(jì)要求,通常需要修改版圖的布局與布線,、邏輯綜合的約束條件,,有時(shí)也可能回到RTL描述、行為級(jí)描述甚至設(shè)計(jì)規(guī)范或算法實(shí)現(xiàn)上加以調(diào)整,。版圖得到驗(yàn)證后就可以交付生產(chǎn)廠家做到硅片上,。
7 結(jié)束語(yǔ)
由以上的設(shè)計(jì)過程可以看出,,Verilog語(yǔ)言的最大特點(diǎn)是簡(jiǎn)潔、靈活,、高效,,其編程風(fēng)格和C語(yǔ)言極其相似,所以很容易學(xué)習(xí)和掌握,。同時(shí),,Verilog語(yǔ)言還具有底層描述方面的優(yōu)勢(shì),而且其設(shè)計(jì)方法與具體工藝無(wú)關(guān),,這就使得用Verilog語(yǔ)言編寫的功能模塊具有很高的可重用性,。隨著集成電路的深亞微米制造技術(shù)、設(shè)計(jì)技術(shù)的迅速發(fā)展,,集成電路已進(jìn)入片上系統(tǒng)(System on a Chip,,SoC)設(shè)計(jì)時(shí)代。SoC設(shè)計(jì)的最大挑戰(zhàn)之一是IP(Intellectual Property)模塊的有效使用和重用,。IP模塊的重用,,除能縮短SoC芯片設(shè)計(jì)的時(shí)間外,還能降低設(shè)計(jì)和制造成本,,提高可靠性,。在SoC設(shè)計(jì)中,可重用的IP模塊越多,,設(shè)計(jì)過程的效率就會(huì)越高。由此可見,,Verilog語(yǔ)言在SoC設(shè)計(jì)中可以發(fā)揮更大的作用,。因此,能用Verilog語(yǔ)言進(jìn)行電路設(shè)計(jì)是每個(gè)電子設(shè)計(jì)工程師必須掌握的基本技術(shù),。
參考文獻(xiàn)
1 Thomas D E,,Mooby P R著.劉明業(yè)等譯.硬件描述語(yǔ)言Verilog(第4版).北京:清華大學(xué)出版社,2001
2 張亮.數(shù)字電路設(shè)計(jì)與Verilog HDL.北京:人民郵電出版社,,2000
3 Smith D J.HDL CHIP DESIGN:A Practical guide for Designing,,Synthesizing and Simujlating ASICs and FPGAs using VHDL or Verilog.USA:Doone Publications,Madison,,AL,,1996