Verilog HDL是一種硬件描述語(yǔ)言(HDL:Hardware Discription Language),Verilog HDL語(yǔ)言是一種以文本形式來(lái)描述數(shù)字系統(tǒng)硬件的結(jié)構(gòu)和行為的語(yǔ)言,用它可以表示邏輯電路圖、邏輯表達(dá)式,還可以表示數(shù)字邏輯系統(tǒng)所完成的邏輯功能。
Verilog HDL和VHDL是目前世界上最流行的兩種硬件描述語(yǔ)言,都是在20世紀(jì)80年代中期開(kāi)發(fā)出來(lái)的。前者由Gateway Design Automation公司(該公司于1989年被Cadence公司收購(gòu))開(kāi)發(fā)。兩種HDL均為IEEE標(biāo)準(zhǔn)
Verilog HDL語(yǔ)言學(xué)習(xí)用途就是在最廣泛的C語(yǔ)言的基礎(chǔ)上發(fā)展起來(lái)的一種件描述語(yǔ)言,它是由GDA(Gateway Design Automation)公司的PhilMoorby在1983年末首創(chuàng)的,最初只設(shè)計(jì)了一個(gè)仿真與驗(yàn)證工具,之后又陸續(xù)開(kāi)發(fā)了相關(guān)的故障模擬與時(shí)序分析工具。1985年Moorby推出它的第三個(gè)商用仿真器Verilog-XL,獲得了巨大的成功,從而使得Verilog HDL迅速得到推廣應(yīng)用。1989年CADENCE公司收購(gòu)了GDA公司,使得VerilogHDL成為了該公司的獨(dú)家專(zhuān)利。1990年CADENCE公司公開(kāi)發(fā)表了Verilog HDL,并成立LVI組織以促進(jìn)Verilog HDL成為IEEE標(biāo)準(zhǔn),即IEEE Standard 1364-1995.
Verilog HDL的最大特點(diǎn)就是易學(xué)易用,如果有C語(yǔ)言的編程經(jīng)驗(yàn),可以在一個(gè)較短的時(shí)間內(nèi)很快的學(xué)習(xí)和掌握,因而可以把Verilog HDL內(nèi)容安排在與ASIC設(shè)計(jì)等相關(guān)課程內(nèi)部進(jìn)行講授,由于HDL語(yǔ)言本身是專(zhuān)門(mén)面向硬件與系統(tǒng)設(shè)計(jì)的,這樣的安排可以使學(xué)習(xí)者同時(shí)獲得設(shè)計(jì)實(shí)際電路的經(jīng)驗(yàn)。與之相比,VHDL的學(xué)習(xí)要困難一些。但Verilog HDL較**的語(yǔ)法,也容易造成初學(xué)者犯一些錯(cuò)誤,這一點(diǎn)要注意。
1. 首先講一下為什么需要學(xué)習(xí)硬件描述語(yǔ)言(Hardware Description Language,HDL)
硬件描述語(yǔ)言是一種形式化方法描述數(shù)字電路和系統(tǒng)的語(yǔ)言。數(shù)字電路,應(yīng)該是在大二上學(xué)期左右學(xué)習(xí)的課程,是一門(mén)非常重要的課程?,F(xiàn)在大學(xué)的可能主要集中在邏輯門(mén)和小規(guī)模集成電路的講解上,很少涉及到HDL。當(dāng)然,我們是可以通過(guò)一些列的74系列芯片構(gòu)成我們想設(shè)計(jì)數(shù)字系統(tǒng),但是當(dāng)系統(tǒng)門(mén)數(shù)增多,設(shè)計(jì)就會(huì)變得非常復(fù)雜和困難——但是照樣有老外用這個(gè)方法實(shí)現(xiàn)了8位處理器,不過(guò)說(shuō)實(shí)話,其成本和消耗的精力只能用來(lái)賺點(diǎn)眼球效應(yīng),而沒(méi)太多的實(shí)際意義。
隨著EDA技術(shù)發(fā)展,現(xiàn)在更多的是采用CPLD、FPGA、ASIC等來(lái)實(shí)現(xiàn)。首先采用HDL由抽象到具體、逐層描述設(shè)計(jì)思想,最后利用EDA工具進(jìn)行仿真、綜合,轉(zhuǎn)換成門(mén)級(jí)電路網(wǎng)表,接下來(lái)再用CPLD/FPGA/ASIC自動(dòng)布局布線工具把網(wǎng)表轉(zhuǎn)換成具體電路布線結(jié)構(gòu)的實(shí)現(xiàn)(這個(gè)概念可能對(duì)新手有一定難度,打個(gè)比方就好像是選了一堆適用的74芯片,然后再進(jìn)行了連線)。
現(xiàn)在的數(shù)字系統(tǒng)和數(shù)字信號(hào)處理發(fā)展相當(dāng)快,掌握一門(mén)HDL,是理工科大學(xué)生的一個(gè)基本技能,現(xiàn)在的趨勢(shì)是甚至比掌握單片機(jī)更加重要。因?yàn)槲覀兪褂肏DL,甚至可以自己編寫(xiě)一個(gè)自己的單片機(jī)出來(lái),然后在FPGA/ASIC上實(shí)現(xiàn)。
2. 選Verilog還是VHDL?
硬件描述語(yǔ)言的發(fā)展至今已經(jīng)有20多年的歷史。現(xiàn)在主要的語(yǔ)言VHDL(Very High Speed Integerated Hardware Description Language)和Verilog HDL(Verilog Hardware Description Language)適應(yīng)了歷史發(fā)展的趨勢(shì)和要求,先后成為IEEE標(biāo)準(zhǔn)。
由我看來(lái),語(yǔ)言的出現(xiàn)就是用語(yǔ)言描述替代圖形化(元件拼湊)設(shè)計(jì),把我們要實(shí)現(xiàn)的功能和思想用語(yǔ)言的形式寫(xiě)出來(lái),轉(zhuǎn)換成實(shí)際電路的工作就交給EDA工具去做,從而簡(jiǎn)化了我們?cè)O(shè)計(jì)的工作,節(jié)約了開(kāi)發(fā)的時(shí)間。也可以這么說(shuō),對(duì)于硬件不是特別明白的人也不必要去了解過(guò)多的關(guān)于電路的東西就可以開(kāi)始做開(kāi)發(fā),對(duì)于科研人員可能更為有用。
選Verilog還是VHDL學(xué)習(xí),這個(gè)問(wèn)題有很多的爭(zhēng)論。
這個(gè)東西好像蠻重要的,因?yàn)閯傞_(kāi)始就要選定用什么語(yǔ)言,要比較兩種語(yǔ)言的優(yōu)劣,使用的情況等等,以后才能更好的學(xué)習(xí)。我只會(huì)Verilog,所以不敢亂彈兩者之間的優(yōu)劣,想從另外一個(gè)角度來(lái)說(shuō)一下。
這兩種語(yǔ)言都是用于數(shù)字電子系統(tǒng)設(shè)計(jì)的硬件描述語(yǔ)言,而且都已經(jīng)是IEEE的標(biāo)準(zhǔn)。VHDL 1987年成為標(biāo)準(zhǔn),而Verilog是1995年才成為標(biāo)準(zhǔn)的。這個(gè)是因?yàn)閂HDL是美**方組織開(kāi)發(fā)的,而Verilog是一個(gè)公司的私有財(cái)產(chǎn)轉(zhuǎn)化而來(lái)的。為什么Verilog能成為IEEE標(biāo)準(zhǔn)呢?它一定有其優(yōu)越性才行,所以說(shuō)Verilog有更強(qiáng)的生命力。
這兩者有其共同的特點(diǎn):
1.能形式化地抽象表示電路的行為和結(jié)構(gòu);
2.支持邏輯設(shè)計(jì)中層次與范圍地描述;
3.可借用高級(jí)語(yǔ)言地精巧結(jié)構(gòu)來(lái)簡(jiǎn)化電路行為和結(jié)構(gòu);具有電路仿真與驗(yàn)證機(jī)制以保證設(shè)計(jì)的正確性;
4.支持電路描述由高層到低層的綜合轉(zhuǎn)換;
5.硬件描述和實(shí)現(xiàn)工藝無(wú)關(guān);
6.便于文檔管理;
7.易于理解和設(shè)計(jì)重用——這點(diǎn)很重要??!
但是兩者也各有特點(diǎn)。Verilog HDL推出已經(jīng)有20年了,擁有廣泛的設(shè)計(jì)群體,成熟的資源也比VHDL豐富(但是好像我在找資料的時(shí)候都是VHDL的資料多一些,這個(gè)和現(xiàn)在的氛圍有關(guān))。Verilog更大的一個(gè)優(yōu)勢(shì)是:它非常容易掌握,只要有C語(yǔ)言的編程基礎(chǔ),通過(guò)比較短的時(shí)間,經(jīng)過(guò)一些實(shí)際的操作,可以在2~3個(gè)月內(nèi)掌握這種設(shè)計(jì)技術(shù)。而VHDL設(shè)計(jì)相對(duì)要難一點(diǎn),這個(gè)是因?yàn)閂HDL不是很直觀,需要有Ada編程基礎(chǔ)(我都不知道是什么,暈了),一般認(rèn)為至少要半年以上的專(zhuān)業(yè)培訓(xùn)才能掌握。
目前版本的Verilog HDL和VHDL在行為級(jí)抽象建模的覆蓋面范圍方面有所不同。一般認(rèn)為Verilog在系統(tǒng)級(jí)抽象方面要比VHDL略差一些,而在門(mén)級(jí)開(kāi)關(guān)電路描述方面要強(qiáng)的多。
近10年來(lái),EDA界一直在對(duì)數(shù)字邏輯設(shè)計(jì)中究竟用哪一種硬件描述語(yǔ)言爭(zhēng)論不休,目前在美國(guó),高層次數(shù)字系統(tǒng)設(shè)計(jì)領(lǐng)域中,應(yīng)用Verilog和VHDL的比率是80%和20%;日本和***和美國(guó)差不多;而在歐洲VHDL發(fā)展的比較好。在中國(guó)很多集成電路設(shè)計(jì)公司都采用Verilog,但VHDL也有一定的市場(chǎng)。
夏宇聞老師推薦應(yīng)該先學(xué)Verilog,然后再學(xué)習(xí)VHDL。我覺(jué)得也是,只會(huì)一門(mén)語(yǔ)言是不夠的,否則在交流上會(huì)出現(xiàn)問(wèn)題,而且用原理圖的方法設(shè)計(jì)數(shù)字電路也是一個(gè)必備的能力,否則不能軟硬通吃,達(dá)到大牛的水平啊。
大學(xué)里面有的學(xué)校會(huì)講述VHDL,但是并不妨礙學(xué)習(xí)Verilog。
3. 需要一些什么書(shū)?
這個(gè)問(wèn)題,可能不同的人回答有不同的答案,每個(gè)人推薦的書(shū)也不一樣。不過(guò)關(guān)于Verilog,夏宇聞老師絕對(duì)是中國(guó)的泰斗級(jí)人物,我推薦的幾本書(shū)都和他有一定的關(guān)系。這個(gè)不是因?yàn)槲覀€(gè)人和他關(guān)系好,而是確實(shí)這幾本書(shū)不錯(cuò)。我建議大家最好有紙版的書(shū),一個(gè)方面是支持夏老師的辛勤工作,另外一個(gè)方面也是便于閱讀和學(xué)習(xí)。
(1)沒(méi)有學(xué)過(guò)數(shù)字電路的同學(xué),建議首先購(gòu)買(mǎi)一本STEPHEN BROWN編寫(xiě)、夏老師翻譯的《數(shù)字邏輯基礎(chǔ)與VERILOG設(shè)計(jì)(原書(shū)第2版)》。這本書(shū)在【Altera FPGA/CPLD資料專(zhuān)版】有電子書(shū)可以下載。本書(shū)可以作為數(shù)字電路的課本,也講了Verilog的,是一本不可多得的好書(shū)。本來(lái)我這個(gè)學(xué)期準(zhǔn)備在學(xué)校以這本書(shū)為教材開(kāi)全校選修課的,結(jié)果領(lǐng)導(dǎo)不知道什么原因把這個(gè)課給卡擦了……
(2)有沒(méi)有學(xué)過(guò)數(shù)字電路的同學(xué),都應(yīng)該有一本《Verilog HDL數(shù)字設(shè)計(jì)與綜合(第二版) 》,該書(shū)由Samir Palnitkar 編著,夏老師翻譯。該書(shū)的英文原版被視為Verilog的經(jīng)典著作,美國(guó)很多大學(xué)的研究生課程的課本,中文版我也看了一部分,覺(jué)得還是不錯(cuò)的書(shū),【Altera FPGA/CPLD資料專(zhuān)版】有中英文兩個(gè)版本的電子書(shū)。網(wǎng)上有很人攻擊這本書(shū)翻譯的不好,不過(guò)看了那些評(píng)論和書(shū)之后,自然有定論,流言自然會(huì)不攻自破。
(3)第三本是夏老師編著的《VERILOG數(shù)字系統(tǒng)設(shè)計(jì)教程(第2版)》。這本書(shū)在Altera FPGA/CPLD資料專(zhuān)版】有下載,我看過(guò)第一版我沒(méi)看過(guò),現(xiàn)在這本書(shū)還經(jīng)常翻翻,都已經(jīng)被我弄得非常破舊了。這本書(shū)剛出來(lái)的時(shí)候國(guó)內(nèi)還沒(méi)有很好的Verilog方面的書(shū),我是托人在北京幫我買(mǎi)的(那會(huì)兒好像網(wǎng)上書(shū)店還沒(méi)有呢)。書(shū)中對(duì)于語(yǔ)法和實(shí)際應(yīng)用都講的非常非常好,強(qiáng)烈建議大家好好閱讀和學(xué)習(xí)。
書(shū)就推薦這么多,可能還需要一些資料,否則光是語(yǔ)言,沒(méi)有實(shí)戰(zhàn),不容易有實(shí)際的感受。后面我還會(huì)推薦一些資料和某些書(shū)的一些章節(jié),到了具體的地方再說(shuō)。
4. 硬件工具
在學(xué)習(xí)語(yǔ)言的同時(shí),我覺(jué)得應(yīng)該要學(xué)習(xí)硬件的使用,畢竟我們是為了設(shè)計(jì)硬件電路才學(xué)習(xí)語(yǔ)言的。在本站的教程專(zhuān)版有相應(yīng)的硬件工具,可以從本站購(gòu)得PCB自己焊接,也可以自己制作相應(yīng)的電路模塊進(jìn)行學(xué)習(xí)。
硬件上必須要花一些錢(qián),不能總是覺(jué)得有些東西好像很貴,舍不得。其實(shí)現(xiàn)在更多的人寧愿把錢(qián)花在玩游戲、吃吃喝喝,也不肯把錢(qián)花在學(xué)習(xí)上。我很喜歡那種自己去找辦法學(xué)習(xí)知識(shí),自己買(mǎi)硬件或做硬件學(xué)習(xí)的學(xué)生。我遇上這樣的學(xué)生,有時(shí)候還會(huì)主動(dòng)給他們硬件來(lái)學(xué)習(xí)。而對(duì)于那種有惰性的學(xué)生,我覺(jué)得可能沒(méi)幾個(gè)老師會(huì)喜歡的。
5. 軟件
Altera公司的Quartus II,設(shè)計(jì)軟件。
Mentor Graphics公司的ModelSim,仿真軟件,Altera的軟件里面也有相應(yīng)的AE版本。
其它的一些綜合工具、程序編寫(xiě)工具,可以等到學(xué)習(xí)的差不多了再弄。
6. 資料篇
軟件的使用,我覺(jué)得最直接的方法是看廠商的Help,其次就是上面提到的有兩本書(shū)的附錄中也有相應(yīng)的資料。
DE2板子的10個(gè)例子,在【FPGA與SOPC設(shè)計(jì)教程:DE2實(shí)踐 】這本書(shū)的第六章有中文版的翻譯,大家可以到下載區(qū)找這本書(shū)。
其它的學(xué)習(xí)資料或教程——我也準(zhǔn)備寫(xiě)這么個(gè)東西,但是一直在思考是該從編程、硬件應(yīng)用還是數(shù)字邏輯的角度來(lái)進(jìn)行講述,遲遲沒(méi)有動(dòng)筆是因?yàn)榘盐詹缓梅较?,一旦方向錯(cuò)了,會(huì)讓很多人走彎路,我可負(fù)不起這個(gè)責(zé)任。
其實(shí),資料并不在多,關(guān)鍵是精,另外一個(gè)就是找的資料一定要看,不要以自己有多少資料為榮,應(yīng)該是以自己看了多少資料為榮。
7. 學(xué)習(xí)的過(guò)程
學(xué)習(xí)的過(guò)程,每個(gè)人都不太相同。我以個(gè)人經(jīng)驗(yàn)隨便說(shuō)兩句吧。
首先是軟件的使用,比如QuartusII的使用應(yīng)該放在所有的學(xué)習(xí)之前(學(xué)過(guò)數(shù)字電路的同學(xué),如果沒(méi)有學(xué)過(guò)的話,先把一些基本概念學(xué)一下,在學(xué)習(xí)到《數(shù)字邏輯基礎(chǔ)與VERILOG設(shè)計(jì)》的時(shí)候開(kāi)始用原理圖設(shè)計(jì)的方法學(xué)習(xí)使用該軟件),然后就是學(xué)習(xí)Verilog了,建議在學(xué)習(xí)的過(guò)程中把書(shū)中的例子都用軟件做一次,也利用Quartus提供的仿真功能進(jìn)行仿真。
基本的語(yǔ)法知識(shí)學(xué)習(xí)的同時(shí),書(shū)上很多仿真的例子在Quartus里面并不能實(shí)行,這個(gè)時(shí)候就需要學(xué)習(xí)使用ModelSim了。
進(jìn)一步學(xué)習(xí)Verilog的高級(jí)編程知識(shí),利用軟件多做一些例子程序。
上面推薦的后兩本書(shū)看的差不多的時(shí)候(夏老師那本書(shū)的中級(jí)篇CPU設(shè)計(jì)之前的內(nèi)容,另外那本第一部分結(jié)束),就可以到板子上編一些實(shí)際的應(yīng)用程序了。這個(gè)時(shí)候就可以參考DE2那本書(shū)的幾個(gè)例子,或者是參考電路板上的硬件,針對(duì)不同的部件進(jìn)行編程和驗(yàn)證。
然后就是根據(jù)自己的興趣愛(ài)好和專(zhuān)業(yè)方向,找一個(gè)題目用Verilog去實(shí)現(xiàn)(或者找相關(guān)的老師,看他們手上有沒(méi)有這樣的方向,你可以去幫忙做點(diǎn)什么的),這個(gè)過(guò)程中需要學(xué)習(xí)更多其他方面的知識(shí),這樣才能做成真正的應(yīng)用系統(tǒng)。
這個(gè)時(shí)候可能手上的CPLD的資源可能就不那么夠了,也許就該用FPGA來(lái)做了。此外FPGA和CPLD還是有區(qū)別的,兩個(gè)器件應(yīng)用的場(chǎng)合有所不同,這個(gè)在學(xué)習(xí)的過(guò)程中也要逐步積累這些知識(shí)和經(jīng)驗(yàn)。此外,還可以學(xué)習(xí)一些SOC方面的知識(shí),這里不僅僅是指的Nios II。
后面繼續(xù)學(xué)習(xí),不斷學(xué)習(xí),持續(xù)學(xué)習(xí)——學(xué)習(xí)是一輩子的事情,不是花上那么幾個(gè)月你就能把所有的技能學(xué)到手,更多的時(shí)候是通過(guò)實(shí)踐不斷提升自己的能力,這就是所謂的實(shí)踐出真知。我想從大二開(kāi)始學(xué)習(xí)到大三結(jié)束,兩年的時(shí)間基本能掌握這門(mén)技能,大四的畢業(yè)設(shè)計(jì)應(yīng)該可以做出自己的優(yōu)秀設(shè)計(jì)來(lái)。
評(píng)論