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