PLD/FPGA硬件語(yǔ)言設計verilog HDL
HDL概述
本文引用地址:http://dyxdggzs.com/article/150962.htm隨著(zhù)EDA技術(shù)的發(fā)展,使用硬件語(yǔ)言設計PLD/FPGA成為一種趨勢。目前最主要的硬件描述語(yǔ)言是VHDL和verilog HDL及System Verilog。 VHDL發(fā)展的較早,語(yǔ)法嚴格;而Verilog HDL是在C語(yǔ)言的基礎上發(fā)展起來(lái)的一種硬件描述語(yǔ)言,語(yǔ)法較自由;System Verilog可以看做是Verilog HDL的升級版本,她更接近C語(yǔ)言且支持多維數組。 VHDL和Verilog HDL兩者相比,VHDL的書(shū)寫(xiě)規則和語(yǔ)法要求很?chē)栏?,比如不同的數據?lèi)型之間不容許相互賦值而需要轉換,初學(xué)者寫(xiě)的不規范代碼一般編譯會(huì )報錯;而 Verilog則比較靈活,而靈活在某些時(shí)候綜合的結果可能不是程序員想要的結果。 System Verilog由于資料不是很多,目前懂得人較少。據調查在我國使用Verilog HDL的公司比使用VHDL的公司多。從EDA技術(shù)的發(fā)展上看,已出現用于CPLD/FPGA設計的硬件C語(yǔ)言編譯軟件,雖然還不成熟,應用極少,但它有可能會(huì )成為繼VHDL和Verilog之后,設計大規模CPLD/FPGA的又一種手段。
選擇VHDL或者verilog HDL還是System Verilog?
這是一個(gè)初學(xué)者最常見(jiàn)的問(wèn)題。其實(shí)這三種語(yǔ)言的差別并不大,他們的描述能力也是類(lèi)似的。掌握其中一種語(yǔ)言以后,可以通過(guò)短期的學(xué)習,較快的學(xué)會(huì )另一種語(yǔ)言,掌握了verilog HDL學(xué)System Verilog則更是簡(jiǎn)單。選擇何種語(yǔ)言主要還是看周?chē)巳旱氖褂昧晳T,這樣可以方便日后的學(xué)習交流。 當然,如果您是集成電路(ASIC)設計人員,則必須首先掌握verilog,因為在IC設計領(lǐng)域,90%以上的公司都是采用verilog進(jìn)行IC設計。對于PLD/FPGA設計者而言,三種語(yǔ)言可以自由選擇。如果你熟悉C語(yǔ)言,則建議你學(xué)習verilog HDL,你會(huì )發(fā)現verilog HDL的許多語(yǔ)法和關(guān)鍵字和C語(yǔ)言中的相同,使你能夠很快突破語(yǔ)言障礙,快速入門(mén)。
學(xué)習HDL的幾點(diǎn)重要提示
1.了解HDL的可綜合性問(wèn)題:
HDL有兩種用途:系統仿真和硬件實(shí)現。 如果程序只用于仿真,那么幾乎所有的語(yǔ)法和編程方法都可以使用。 但如果我們的程序是用于硬件實(shí)現(例如:用于FPGA設計),那么我們就必須保證程序“可綜合”(程序的功能可以用硬件電路實(shí)現)。 不可綜合的HDL語(yǔ)句在軟件綜合時(shí)將被忽略或者報錯。 我們應當牢記一點(diǎn): “所有的HDL描述都可以用于仿真,但不是所有的HDL描述都能用硬件實(shí)現。”
2. 用硬件電路設計思想來(lái)編寫(xiě)HDL:
學(xué)好HDL的關(guān)鍵是充分理解HDL語(yǔ)句和硬件電路的關(guān)系。 編寫(xiě)HDL,就是在描述一個(gè)電路,我們寫(xiě)完一段程序以后,應當對生成的電路有一些大體上的了解, 而不能用純軟件的設計思路來(lái)編寫(xiě)硬件描述語(yǔ)言。 要做到這一點(diǎn),需要我們多實(shí)踐,多思考,多總結。
3.語(yǔ)法掌握貴在精,不在多
20%的基本HDL語(yǔ)句就可以完成80%以上的電路設計,30%的基本HDL語(yǔ)句就可以完成95%以上的電路設計,很多生僻的語(yǔ)句并不能被所有的綜合軟件所支持,在程序移植或者更換軟件平臺時(shí),容易產(chǎn)生兼容性問(wèn)題,也不利于其他人閱讀和修改。建議多用心鉆研常用語(yǔ)句,理解這些語(yǔ)句的硬件含義,這比多掌握幾個(gè)新語(yǔ)法要有用的多。
HDL與原理圖輸入法的關(guān)系
HDL和傳統的原理圖輸入方法的關(guān)系就好比是高級語(yǔ)言和匯編語(yǔ)言的關(guān)系。HDL的可移植性好,使用方便,但效率不如原理圖;原理圖輸入的可控性好,效率高,比較直觀(guān),但設計大規模CPLD/FPGA時(shí)顯得很煩瑣,移植性差。在真正的PLD/FPGA設計中,通常建議采用原理圖和HDL結合的方法來(lái)設計,適合用原理圖的地方就用原理圖,適合用HDL的地方就用HDL,并沒(méi)有強制的規定。在最短的時(shí)間內,用自己最熟悉的工具設計出高效,穩定,符合設計要求的電路才是我們的最終目的。
HDL開(kāi)發(fā)流程
用VHDL/VerilogHD語(yǔ)言開(kāi)發(fā)PLD/FPGA的完整流程為:
1.文本編輯:用任何文本編輯器都可以進(jìn)行,也可以用專(zhuān)用的HDL編輯環(huán)境。通常VHDL文件保存為.vhd文件,Verilog文件保存為.v文件
2.功能仿真:將文件調入HDL仿真軟件進(jìn)行功能仿真,檢查邏輯功能是否正確(也叫前仿真,對簡(jiǎn)單的設計可以跳過(guò)這一步,只在布線(xiàn)完成以后,進(jìn)行時(shí)序仿真)
3.邏輯綜合:將源文件調入邏輯綜合軟件進(jìn)行綜合,即把語(yǔ)言綜合成最簡(jiǎn)的布爾表達式和信號的連接關(guān)系。邏輯綜合軟件會(huì )生成.edf(edif)的EDA工業(yè)標準文件。
4.布局布線(xiàn):將.edf文件調入PLD廠(chǎng)家提供的軟件中進(jìn)行布線(xiàn),即把設計好的邏輯安放到PLD/FPGA內
5.時(shí)序仿真:需要利用在布局布線(xiàn)中獲得的精確參數,用仿真軟件驗證電路的時(shí)序。(也叫后仿真)
6.編程下載:確認仿真無(wú)誤后,將文件下載到芯片中
通常以上過(guò)程可以都在PLD/FPGA廠(chǎng)家提供的開(kāi)發(fā)工具(如QuartusII,ISP,ISE)中完成,但許多集成的PLD開(kāi)發(fā)軟件只支持VHDL /Verilog的子集,可能造成少數語(yǔ)法不能編譯,如果采用專(zhuān)用HDL工具分開(kāi)執行,效果會(huì )更好,否則這么多出售專(zhuān)用HDL開(kāi)發(fā)工具的公司就沒(méi)有存在的理由了。
評論