1、硬件描述語言HDL(Hardware Description Language)
硬件描述語言(HDL)是一種用形式化方法來描述數(shù)字電路和系統(tǒng)的語言。數(shù)字電路系統(tǒng)的設(shè)計者利用這種語言可以從上層到下層(從抽象到具體)逐層描述自己的設(shè)計思想,用一系列分層次的模塊來表示極其復(fù)雜的數(shù)字系統(tǒng)。然后利用電子設(shè)計自動化(以下簡稱為EDA)工具逐層進行仿真驗證,再把其中需要變?yōu)榫唧w物理電路的模塊組合經(jīng)由自動綜合工具轉(zhuǎn)換到門級電路網(wǎng)表。接下去再用專用集成電路(ASIC)或現(xiàn)場可編程門陣列(FPGA)自動布局布線工具把網(wǎng)表轉(zhuǎn)換為具體電路布線結(jié)構(gòu)的實現(xiàn)。在制成物理器件之前,還可以用Verilog的門級模型(原語元件或UDP)來代替具體基本元件。因其邏輯功能和延時特性與真實的物理元件完全一致,所以在仿真工具的支持下能驗證復(fù)雜數(shù)字系統(tǒng)物理結(jié)構(gòu)的正確性,使投片的成功率達到100%。目前,這種稱之為高層次設(shè)計(High-Level-Design)的方法已被廣泛采用。據(jù)統(tǒng)計,目前在美國硅谷約有90%以上的ASIC和FPGA已采用Verilog硬件描述語言方法進行設(shè)計。
硬件描述語言的發(fā)展至今已有近三十年的歷史,并成功地應(yīng)用于設(shè)計的各個階段:建模、仿真、驗證 和綜合等。最近十多年來,用綜合工具把可綜合風(fēng)格的HDL模塊自動轉(zhuǎn)換為具體電路發(fā)展非常迅速,大大地提高了復(fù)雜數(shù)字系統(tǒng)的設(shè)計生產(chǎn)率。在美國和日本等先進電子工業(yè)國,Verilog語言已成為設(shè)計數(shù)字系統(tǒng)的基礎(chǔ)。
對于FPGA新手應(yīng)由淺入深學(xué)習(xí):
(1)Verilog的基本語法,
(2)簡單的可綜合Verilog模塊與邏輯電路的對應(yīng)關(guān)系,
(3)簡單的Verilog測試模塊和它的意義,
(4)如何編寫復(fù)雜的多層次的可綜合風(fēng)格的Verilog HDL模塊,
(5)如何用可綜合的Verilog模塊構(gòu)成一個可靠的復(fù)雜IP軟核和固核模塊,
(6)在開發(fā)工具建立自己的FPGA工程,實現(xiàn)簡單FPGA小例子。
2、Verilog HDL的歷史
2.1、什么是Verilog HDL
Verilog HDL是硬件描述語言的一種,用于數(shù)字電子系統(tǒng)設(shè)計。它允許設(shè)計者用它來進行各種級別的邏輯設(shè)計,可以用它進行數(shù)字邏輯系統(tǒng)的仿真驗證、時序分析、邏輯綜合。它是目前應(yīng)用最廣泛的一種硬件描述語言。據(jù)有關(guān)文獻報道,目前在美國使用Verilog HDL進行設(shè)計的工程師大約有10多萬人,全美國有200多所大學(xué)教授用 Verilog 硬件描述語言的設(shè)計方法。在我國臺灣地區(qū)幾乎所有著名大學(xué)的電子和計算機工程系都講授Verilog有關(guān)的課程。
2.2、Verilog HDL的產(chǎn)生及發(fā)展
Verilog HDL是在1983年,由GDA(GateWay Design Automation)公司的Phil Moorby首創(chuàng)的。Phil Moorby后來成為Verilog-XL的主要設(shè)計者和Cadence公司(Cadence Design System)的第一個合伙人。在1984-1985年,Moorby設(shè)計出了第一個名為Verilog-XL的仿真器,1986年,他對Verilog HDL的發(fā)展又作出了另一個巨大貢獻:即提出了用于快速門級仿真的XL算法。
隨著Verilog-XL算法的成功,Verilog HDL語言得到迅速發(fā)展。1989年,Cadence公司收購了GDA公司,Verilog HDL語言成為Cadence公司的私有財產(chǎn)。1990年,Cadence公司決定公開Verilog HDL語言,于是成立了OVI(Open Verilog International)組織來負(fù)責(zé)促進Verilog HDL語言的發(fā)展。基于Verilog HDL的優(yōu)越性,IEEE于1995年制定了Verilog HDL的IEEE標(biāo)準(zhǔn),即Verilog HDL1364-1995;2001年發(fā)布了Verilog HDL1364-2001標(biāo)準(zhǔn);2005年SystemVerilog IEEE 1800-2005 標(biāo)準(zhǔn)的公布,更使得Verilog語言在綜合、仿真驗證和模塊的重用等性能方面都有大幅度的提高。
下圖展示了Verilog的發(fā)展歷史和未來。
圖1
2.3、Verilog HDL和 VHDL的比較
Verilog HDL和VHDL都是用于邏輯設(shè)計的硬件描述語言,并且都已成為IEEE標(biāo)準(zhǔn)。VHDL是在1987年成為IEEE標(biāo)準(zhǔn),Verilog HDL則在1995年才正式成為IEEE標(biāo)準(zhǔn)。之所以VHDL比Verilog HDL早成為IEEE標(biāo)準(zhǔn),這是因為VHDL是由美國軍方組織開發(fā)的,而Verilog HDL 則是從一個普通的民間公司的私有財產(chǎn)轉(zhuǎn)化而來,基于Verilog HDL的優(yōu)越性,才成為的IEEE標(biāo)準(zhǔn),因而有更強的生命力。
VHDL 其英文全名為VHSIC Hardware Description Language,而VHSIC則是Very High Speed Integerated Circuit的縮寫詞,意為甚高速集成電路,故VHDL其準(zhǔn)確的中文譯名為甚高速集成電路的硬件描述語言。
Verilog HDL和VHDL作為描述硬件電路設(shè)計的語言,其共同的特點在于:能形式化地抽象表示電路的行為和結(jié)構(gòu)、支持邏輯設(shè)計中層次與范圍的描述、可借用高級語言的精巧結(jié)構(gòu)來簡化電路行為的描述、具有電路仿真與驗證機制以保證設(shè)計的正確性、支持電路描述由高層到低層的綜合轉(zhuǎn)換、硬件描述與實現(xiàn)工藝無關(guān)(有關(guān)工藝參數(shù)可通過語言提供的屬性包括進去)、便于文檔管理、易于理解和設(shè)計重用。
但是Verilog HDL和VHDL又各有其自己的特點。由于Verilog HDL早在1983年就已推出,至今已有二十多年的應(yīng)用歷史,因而Verilog HDL擁有更廣泛的設(shè)計群體,成熟的資源也遠比VHDL豐富。與VHDL相比Verilog HDL的最大優(yōu)點是:它是一種非常容易掌握的硬件描述語言,只要有C語言的編程基礎(chǔ),通過二十學(xué)時的學(xué)習(xí),再加上一段實際操作,一般同學(xué)可在二至三個月內(nèi)掌握這種設(shè)計方法的基本技術(shù)。而掌握VHDL設(shè)計技術(shù)就比較困難。這是因為VHDL不很直觀,需要有Ada編程基礎(chǔ),一般認(rèn)為至少需要半年以上的專業(yè)培訓(xùn),才能掌握VHDL的基本設(shè)計技術(shù)。2005年SystemVerilog IEEE1800-2005標(biāo)準(zhǔn)公布以后,集成電路設(shè)計界普遍認(rèn)為Verilog HDL 將在十年內(nèi)全面取代VHDL成為ASIC設(shè)計行業(yè)包攬設(shè)計、測試和驗證功能的的唯一語言。下面圖2所示的是Verilog HDL和VHDL建模能力的比較圖,供讀者參考:
圖2
2001年公布的VerilogIEEE1364- 2001標(biāo)準(zhǔn)和2005年公布的SystemVerilog IEEE1800-2005標(biāo)準(zhǔn),不但使Verilog的可綜合性能和系統(tǒng)仿真性能方面有大幅度的提高,而且在IP的重用方面(包括設(shè)計和驗證模塊的重用)也有重大的突破。因此Verilog HDL不但作為學(xué)習(xí)HDL設(shè)計方法的入門和基礎(chǔ)是比較合適的,而且對于ASIC設(shè)計專業(yè)人員而言,也是必須掌握的基本技術(shù)。學(xué)習(xí)掌握Verilog HDL建模、仿真、綜合、重用和驗證技術(shù)不僅可以使同學(xué)們對數(shù)字電路設(shè)計技術(shù)有更進一步的了解,而且可以為以后學(xué)習(xí)高級的行為綜合、物理綜合、IP設(shè)計和復(fù)雜系統(tǒng)設(shè)計和驗證打下堅實的基礎(chǔ)。
2.4、 Verilog 目前的應(yīng)用情況和適用的設(shè)計
近十多年以來,EDA界一直對在數(shù)字邏輯設(shè)計中究竟采用哪一種硬件描述語言爭論不休。近兩三年來,美國、日本和我國臺灣省電子設(shè)計界的情況已經(jīng)清楚地表明,在高層次數(shù)字系統(tǒng)設(shè)計領(lǐng)域,Verilog 已經(jīng)取得壓倒性的優(yōu)勢;在中國大陸,近10年來,Verilog應(yīng)用的比率已有顯著的增加。根據(jù)筆者了解,國內(nèi)大多數(shù)集成電路設(shè)計公司都采用Verilog HDL。Verilog是專門為復(fù)雜數(shù)字系統(tǒng)的設(shè)計仿真而開發(fā)的,本身就非常適合復(fù)雜數(shù)字邏輯電路和系統(tǒng)的仿真和綜合。由于Verilog 在其門級描述的底層,也就是在晶體管開關(guān)的描述方面比VHDL有強得多得功能,所以即使是VHDL的設(shè)計環(huán)境,在底層實質(zhì)上也是由Verilog HDL描述的器件庫所支持的。1998年通過的Verilog HDL新標(biāo)準(zhǔn),把Verilog HDL-A并入Verilog HDL新標(biāo)準(zhǔn),使其不僅支持?jǐn)?shù)字邏輯電路的描述還支持模擬電路的描述,因此在混合信號的電路系統(tǒng)的設(shè)計中,它也有很廣泛的應(yīng)用。在深亞微米ASIC和高密度FPGA已成為電子設(shè)計主流的今天,Verilog的發(fā)展前景是非常遠大的。2001年3月,Verilog IEEE1364-2001標(biāo)準(zhǔn)的公布,以及2005年10月SystemVerilog IEEE 1800-2005 標(biāo)準(zhǔn)的公布,使得Verilog語言在綜合、仿真驗證和IP模塊重用等性能方面都有大幅度的提高,更加拓寬了Verilog的發(fā)展前景。
Verilog適合系統(tǒng)級(System)、算法級(Alogrithem)、寄存器傳輸級(RTL)、邏輯級(Logic)、門級(Gate)、電路開關(guān)級(Switch)設(shè)計,而SystemVerilog是Verilog語言的擴展和延伸,更適用于可重用的可綜合IP和可重用的驗證用IP設(shè)計,以及特大型(千萬門級以上)基于IP的系統(tǒng)級設(shè)計和驗證。
2.5、采用Verilog HDL設(shè)計復(fù)雜數(shù)字電路的優(yōu)點
2.5.1、傳統(tǒng)設(shè)計方法--電路原理圖輸入法
幾十年前,當(dāng)時所做的復(fù)雜數(shù)字邏輯電路及系統(tǒng)的設(shè)計規(guī)模比較小也比較簡單,其中所用到的FPGA或ASIC設(shè)計工作往往只能采用廠家提供的專用電路圖輸入工具來進行。為了滿足設(shè)計性能指標(biāo),工程師往往需要花好幾天或更長的時間進行艱苦的手工布線。工程師還得非常熟悉所選器件的內(nèi)部結(jié)構(gòu)和外部引線特點,才能達到設(shè)計要求。這種低水平的設(shè)計方法大大延長了設(shè)計周期。
近年來,F(xiàn)PGA和ASIC的設(shè)計在規(guī)模和復(fù)雜度方面不斷取得進展,而對邏輯電路及系統(tǒng)的設(shè)計的時間要求卻越來越短。這些因素促使設(shè)計人員采用高水準(zhǔn)的設(shè)計工具,如:硬件描述語言(Verilog HDL或VHDL)來進行設(shè)計。
2.5.2、 Verilog HDL設(shè)計法與傳統(tǒng)的電路原理圖輸入法的比較
如 2.5.1.所述,采用電路原理圖輸入法進行設(shè)計,具有設(shè)計的周期長,需要專門的設(shè)計工具,需手工布線等缺陷。而采用Verilog 輸入法時,由于Verilog HDL的標(biāo)準(zhǔn)化,可以很容易地把完成的設(shè)計移植到不同的廠家的不同的芯片中去,并在不同規(guī)模的應(yīng)用時可以較容易地作修改。這不僅是因為用Verilog HDL所完成的設(shè)計,它的信號位數(shù)是很容易改變的,可以很容易地對它進行修改,來適應(yīng)不同規(guī)模的應(yīng)用,在仿真驗證時,仿真測試矢量還可以用同一種描述語言來完成,而且還因為采用Verilog HDL綜合器生成的數(shù)字邏輯是一種標(biāo)準(zhǔn)的電子設(shè)計互換格式(EDIF)文件,獨立于所采用的實現(xiàn)工藝。有關(guān)工藝參數(shù)的描述可以通過 Verilog HDL提供的屬性包括進去,然后利用不同廠家的布局布線工具,在不同工藝的芯片上實現(xiàn)。
采用Verilog 輸入法最大的優(yōu)點是其與工藝無關(guān)性。這使得工程師在功能設(shè)計、邏輯驗證階段,可以不必過多考慮門級及工藝實現(xiàn)的具體細節(jié),只需要利用系統(tǒng)設(shè)計時對芯片的要求,施加不同的約束條件,即可設(shè)計出實際電路。實際上這是利用了計算機的巨大能力在EDA工具的幫助下,把邏輯驗證與具體工藝庫匹配、布線及時延計算分成不同的階段來實現(xiàn)從而減輕了人們的繁瑣勞動。
2.5.3、Verilog 的標(biāo)準(zhǔn)化
Verilog 是在1983年由GATEWAY公司首先開發(fā)成功的,經(jīng)過諸多改進,于1995年11月正式被批準(zhǔn)為Verilog IEEE1364-1995標(biāo)準(zhǔn),2001年3月在原標(biāo)準(zhǔn)的基礎(chǔ)上經(jīng)過改進和補充又推出Verilog IEEE1364-2001新標(biāo)準(zhǔn)。2005年10月又推出了Verilog語言的擴展,即SystemVerilog (IEEE 1800-2005 標(biāo)準(zhǔn))語言,這使得Verilog語言在綜合、仿真驗證和IP模塊重用等性能方面都有大幅度的提高,更加拓寬了Verilog的發(fā)展前景。
Verilog HDL的標(biāo)準(zhǔn)化大大加快了Verilog HDL的推廣和發(fā)展。由于Verilog HDL設(shè)計方法的與工藝無關(guān)性,因而大大提高了Verilog模型的可重用性。
2.5.4、軟核
我們把功能經(jīng)過驗證的、可綜合的、實現(xiàn)后電路結(jié)構(gòu)總門數(shù)在5000門以上的Verilog HDL模型稱之為“軟核”(Soft Core)。而把由軟核構(gòu)成的器件稱為虛擬器件,在新電路的研制過程中,軟核和虛擬器件可以很容易地借助EDA綜合工具與其它外部邏輯結(jié)合為一體。這樣,軟核和虛擬器件的重用性就可大大縮短設(shè)計周期,加快了復(fù)雜電路的設(shè)計。
2.5.5、固核和硬核的概念以及它們的重用
2.5.5.1、固核
我們把在某一種現(xiàn)場可編程門陣列(FPGA)器件上實現(xiàn)的,經(jīng)驗證是正確的總門數(shù)在5000門以上電路結(jié)構(gòu)編碼文件,稱之為“固核”。
2.5.5.1、硬核
我們把在某一種專用集成電路工藝的(ASIC)器件上實現(xiàn)的經(jīng)驗證是正確的總門數(shù)在5000門以上的電路結(jié)構(gòu)版圖掩膜,稱之為“硬核”。
2.5.5.3、軟核、固核、硬核對比
在具體實現(xiàn)手段和工藝技術(shù)尚未確定的邏輯設(shè)計階段,軟核具有最大的靈活性,它可以很容易地借助EDA綜合工具與其它外部邏輯結(jié)合為一體。當(dāng)然,由于實現(xiàn)技術(shù)的不確定性,有可能要作一些改動以適應(yīng)相應(yīng)的工藝。相比之下固核和硬核與其它外部邏輯結(jié)合為一體的靈活性要差得多,特別是電路實現(xiàn)工藝技術(shù)改變時更是如此。而近年來電路實現(xiàn)工藝技術(shù)的發(fā)展是相當(dāng)迅速的,為了邏輯電路設(shè)計成果的積累,和更快更好地設(shè)計更大規(guī)模的電路,發(fā)展軟核的設(shè)計和推廣軟核的重用技術(shù)是非常有必要的。我們新一代的數(shù)字邏輯電路設(shè)計師必須掌握這方面的知識和技術(shù)。Verilog語言以及它的擴展SystemVerilog 是設(shè)計可重用的IP,即軟核、固核、硬核和驗證用虛擬核所必須的語言。
2.6、FPGA硬件描述語言設(shè)計流程
2.6.1、自頂向下(Top-Down)設(shè)計
自頂向下的設(shè)計(即TOP_DOWN設(shè)計)是從系統(tǒng)級開始,把系統(tǒng)劃分為基本單元,然后再把每個基本單元劃分為下一層次的基本單元,一直這樣做下去,直到可以直接用EDA元件庫中的基本元件來實現(xiàn)為止。利用層次化、結(jié)構(gòu)化的設(shè)計方法,一個完整的硬件設(shè)計任務(wù)首先由總設(shè)計師(Architect)劃分為若干個可操作的模塊,編制出相應(yīng)的模型(行為的或結(jié)構(gòu)的),通過仿真加以驗證后,再把這些模塊分配給下一層的設(shè)計師。這就允許多個設(shè)計者同時設(shè)計一個硬件系統(tǒng)中的不同模塊,其中每個設(shè)計者負(fù)責(zé)自己所承擔(dān)的部分;而由上一層設(shè)計師對其下層設(shè)計者完成的設(shè)計用行為級上層模塊對其所做的設(shè)計進行驗證。為了提高設(shè)計質(zhì)量,如果其中有一部分模塊可由商業(yè)渠道得到,我們可以購買它們的知識產(chǎn)權(quán)的使用權(quán)(IP核的重用),以節(jié)省時間和開發(fā)經(jīng)費,。圖3為自頂向下的示意圖,以設(shè)計樹的形式繪出。
圖3 自頂向下設(shè)計
2.6.2、FPGA模塊的設(shè)計編譯和仿真的過程
在不同的層次做具體模塊的設(shè)計所用的方法也有所不同,在高層次上往往編寫一些行為級的模塊通過仿真加以驗證,其主要目的是系統(tǒng)性能的總體考慮和各模塊的指標(biāo)分配,并非具體電路的實現(xiàn)。因而綜合及其以后的步驟往往不需進行。而當(dāng)設(shè)計的層次比較接近底層時,行為描述往往需要用電路邏輯來實現(xiàn)。這時的模塊不僅需要通過仿真加以驗證,還需進行綜合、優(yōu)化、布線和后仿真。總之具體電路是從底向上逐步實現(xiàn)的。EDA工具往往不僅支持HDL描述也支持電路圖輸入,有效地利用這兩種方法是提高設(shè)計效率的辦法之一。下面的流程圖簡要地說明了模塊的編譯和測試過程:
圖4
從上圖可以看出,模塊設(shè)計流程主要由兩大主要功能部分組成:
(1)、設(shè)計開發(fā):即從編寫設(shè)計文件-->綜合到布局布線-->電路生成這樣一系列步驟。
(2)、設(shè)計驗證:也就是進行各種仿真的一系列步驟,如果在仿真過程中發(fā)現(xiàn)問題就返回設(shè)計輸入進行修改。
2.7、總結(jié)
2.7.1、編程語言verilog的優(yōu)點
(1)采用VerilogHDL進行電路設(shè)計的最大優(yōu)點是設(shè)計與工藝無關(guān)系,
(2)能夠在每個抽象層次的描述上對設(shè)計進行仿真驗證,
(3)VerilogHDL適用于復(fù)雜數(shù)字邏輯電路和系統(tǒng)的總體仿真、子系統(tǒng)仿真和具體電路綜合等各個設(shè)計階段。
2.7.2、熟練掌握FPGA設(shè)計流程
由于TOP_DOWN的設(shè)計方法是首先從系統(tǒng)設(shè)計入手,從頂層進行功能劃分和結(jié)構(gòu)設(shè)計。系統(tǒng)的總體仿真是頂層進行功能劃分的重要環(huán)節(jié),這時的設(shè)計是與工藝無關(guān)的。由于設(shè)計的主要仿真和調(diào)試過程是在高層次完成的所以能夠早期發(fā)現(xiàn)結(jié)構(gòu)設(shè)計上的錯誤,避免設(shè)計工作的浪費,同時也減少了邏輯仿真的工作量。自頂向下的設(shè)計方法方便了從系統(tǒng)級劃分和管理整個項目,使得幾十萬門甚至幾千萬門規(guī)模的復(fù)雜數(shù)字電路的設(shè)計成為可能,并可減少設(shè)計人員,避免不必要的重復(fù)設(shè)計,提高了設(shè)計的一次成功率。
從底向上的設(shè)計在某種意義上講可以看作上述TOP_DOWN設(shè)計的逆過程。雖然設(shè)計也是從系統(tǒng)級開始,即從設(shè)計樹的樹根開始對設(shè)計進行逐次劃分,但劃分時首先考慮的是單元是否存在,即設(shè)計劃分過程必須從已經(jīng)存在的基本單元出發(fā),設(shè)計樹最末枝上的單元要么是已經(jīng)制造出的單元,要么是其它項目已開發(fā)好的單元或者是可外購得到的單元。
-
FPGA
+關(guān)注
關(guān)注
1642文章
21918瀏覽量
611911 -
Verilog
+關(guān)注
關(guān)注
28文章
1364瀏覽量
111453 -
HDL
+關(guān)注
關(guān)注
8文章
330瀏覽量
47716 -
編程語言
+關(guān)注
關(guān)注
10文章
1952瀏覽量
35727
原文標(biāo)題:FPGA之編程語言verilog
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論