明德?lián)PFPGA連載課程第一階段第三章VERILOG(1)

發(fā)布時(shí)間:2018-11-5 20:22    發(fā)布者:luckyb1
1.1 傳統的數字系統設計方式—原理圖設計
       在傳統的設計方法中,當設計工程師設計一個(gè)新的硬件、一個(gè)新的數字電路或一個(gè)數字邏輯系統時(shí),他或許在CAE 工作站上做設計,為了能在CAE工作站做設計,設計者必須為設計畫(huà)一張線(xiàn)路圖,通常地,線(xiàn)路圖是由表示信號的線(xiàn)和表示基本設計單元的符號連在一起組成線(xiàn)路圖,符號取自設計者用于構造線(xiàn)路圖的零件庫。若設計者是用標準邏輯器件(如74系列等)做板極設計線(xiàn)路圖,那么在線(xiàn)路圖中,符號取自標準邏輯零件符號庫;若設計是進(jìn)行ASIC設計,則這些符號取自ASIC庫的可用的專(zhuān)用宏單元。這就是傳統的原理圖設計方法。對線(xiàn)路圖的邏輯優(yōu)化,設計者或許利用一些EDA工具或者人工地進(jìn)行邏輯的布爾函數邏輯優(yōu)化。為了能夠對設計進(jìn)行驗證,設計者必須通過(guò)搭個(gè)硬件平臺(如電路板),對設計進(jìn)行驗證。
1.2 硬件語(yǔ)言描述方式—verilog
       隨著(zhù)電子設計技術(shù)的飛速發(fā)展,設計的集成度、復雜度越來(lái)越高,傳統的設計方法已滿(mǎn)足不了設計的要求,因此要求能夠借助當今先進(jìn)的EDA工具,使用一種描述語(yǔ)言,對數字電路和數字邏輯系統能夠進(jìn)行形式化的描述,這就是硬件描述語(yǔ)言。硬件描述語(yǔ)言HDL(Hardware  Description Language )是一種用形式化方法來(lái)描述數字電路和數字邏輯系統的語(yǔ)言。數字邏輯電路設計者可利用這種語(yǔ)言來(lái)描述自己的設計思想,然后利用EDA工具進(jìn)行仿真,再自動(dòng)綜合到門(mén)級電路,最后用ASIC或FPGA實(shí)現其功能。舉個(gè)例子,在傳統的設計方法中,對2輸入的與門(mén),我們可能需到標準器件庫中調個(gè)74系列的器件出來(lái),但在硬件描述語(yǔ)言中,“&”就是一個(gè)與門(mén)的形式描述,“C = A & B”就是一個(gè)2輸入與門(mén)的描述。而“and ”就是一個(gè)與門(mén)器件。硬件描述語(yǔ)言發(fā)展至今已有二十多年歷史,當今業(yè)界的標準中(IEEE標準)主要有VHDLVerilog HDL 這兩種硬件描述語(yǔ)言。
       Verilog HDL 語(yǔ)言最初是于1983 年由Gateway DesignAutomation 公司為其模擬器產(chǎn)品開(kāi)發(fā)的硬件建模語(yǔ)言。那時(shí)它只是一種專(zhuān)用語(yǔ)言。由于他們的模擬、仿真器產(chǎn)品的廣泛使用,Verilog HDL 作為一種便于使用且實(shí)用的語(yǔ)言逐漸為眾多設計者所接受。在一次努力增加語(yǔ)言普及性的活動(dòng)中,Verilog HDL 語(yǔ)言于1990 年被推向公眾領(lǐng)域。Open Verilog International(O V I )是促進(jìn) Verilog 發(fā)展的國際性組織。1992 年,OVI 決定致力于推廣Verilog OVI 標準成為IEEE 標準。這一努力最后獲得成功,Verilog 語(yǔ)言于1995 年成為IEEE 標準,稱(chēng)為IEEE Std1364-1995 。完整的標準在Verilog 硬件描述語(yǔ)言參考手冊中有詳細描述。
       Verilog HDL即verilog硬件硬件描述語(yǔ)言,它主要應用于數字電路和系統設計、數字電路和系統仿真等,即利用計算機和相關(guān)軟件對VERILOG HDL等硬件語(yǔ)言建模的復雜數字電路設計進(jìn)行仿真驗證,再利用綜合軟件將設計的數字電路自動(dòng)綜合,以得到符合功能需求并且在相應的硬件結構止可以映射實(shí)現的數字邏輯網(wǎng)表,然后布局布線(xiàn),根據網(wǎng)表和選定的實(shí)現器件工藝特性自動(dòng)生成具體電路,同時(shí)軟件生成選定器件的延時(shí)模型,經(jīng)過(guò)仿真驗證確定無(wú)誤后,用來(lái)制造ASIC芯片或者寫(xiě)入FPGA和CPLD器件中,最終實(shí)現電路設計。

       Verilog HDL 語(yǔ)言具有下述描述能力:設計的行為特性、設計的數據流特性、設計的結構組成以及包含響應監控和設計驗證方面的時(shí)延和波形產(chǎn)生機制。所有這些都使用同一種建模語(yǔ)言。此外,Verilog HDL 語(yǔ)言提供了編程語(yǔ)言接口,通過(guò)該接口可以在模擬、驗證期間從設計外部訪(fǎng)問(wèn)設計,包括模擬的具體控制和運行。 Verilog HDL 語(yǔ)言不僅定義了語(yǔ)法,而且對每個(gè)語(yǔ)法結構都定義了清晰的模擬、仿真語(yǔ)義。因此,用這種語(yǔ)言編寫(xiě)的模型能夠使用Verilog 仿真器進(jìn)行驗證。語(yǔ)言從C 編程語(yǔ)言中繼承了多種操作符和結構。Verilog HDL 提供了擴展的建模能力,其中許多擴展最初很難理解。但是,Verilog HDL 語(yǔ)言的核心子集非常易于學(xué)習和使用,這對大多數建模應用來(lái)說(shuō)已經(jīng)足夠。當然,完整的硬件描述語(yǔ)言足以對從最復雜的芯片到完整的電子系統進(jìn)行描述。
2 綜合器和仿真器



       Verilg是硬件描述語(yǔ)言,顧名思義,就是用代碼的形式描述硬件的功能。而我們最終是要在電路上實(shí)現該功能的。當Verilog描述出硬件功能后,我們需要綜合器對Verilog代碼進(jìn)行解釋?zhuān)瑢⒋a轉化成實(shí)際的電路來(lái)表示,最終實(shí)際的電路,我們稱(chēng)之為網(wǎng)表。這種將Verilog代碼轉成網(wǎng)表的工具,就是綜合器。上圖左上角是一份verilog代碼,該代碼描述了一個(gè)加法器功能。該代碼經(jīng)過(guò)綜合器解釋后,轉化成一個(gè)加法器電路。QUARTUS、ISE和VIVADO都是綜合器,集成電路常用的綜合器是DC。
       我們在FPGA設計的過(guò)程中,不可避免會(huì )出現各種BUG。如果我們編寫(xiě)好代碼,綜合成電路,燒寫(xiě)到FPGA后,才看到問(wèn)題,此時(shí)去定位問(wèn)題就會(huì )非常地困難了。在綜合前,我們可以在電腦里對代碼進(jìn)行仿真測試一下,把BUG找出來(lái)解決,最后才燒寫(xiě)進(jìn)FPGA。我們可以認為,沒(méi)有經(jīng)過(guò)仿真驗證的代碼,一定是存在BUG的。
       為了模擬真實(shí)的情況,我們需要編寫(xiě)測試文件。該文件也是用verilog編寫(xiě)的,描述了仿真對象的輸入激勵情況。該激勵力求模仿最真實(shí)的情況,產(chǎn)生最將近的激勵信號,將該信號的波形輸入給仿真對象,查看仿真對象的輸出是否與預期一致。
       為了做仿真驗證,我們編寫(xiě)了測試文件。將測試文件和被測試對象加入到仿真器中。仿真器對測試文件和被測試對象的代碼進(jìn)行解釋。根據測試文件,產(chǎn)生測試激勵,輸入給被測試對象;根據補測試對象的代碼,產(chǎn)生被測試對象的輸出。需要注意的是,在仿真過(guò)程中,沒(méi)有將代碼轉成電路,仿真器只是對代碼進(jìn)行仿真驗證。至于該電路是否可轉成電路,仿真器是不關(guān)心的。
常用的仿真器是MODELSIM和VCS等。

       由此可見(jiàn),verilog的代碼不僅可以描述電路,還可以用于測試。事實(shí)上,Verilog定義的語(yǔ)法非常之多,但絕大部分都是為了仿真測試來(lái)使用的。只有少部分才是用于電路設計,詳細可以參考本書(shū)的“可綜合邏輯設計”一節。
       Verilog中用于設計的語(yǔ)法,才是學(xué)習的重點(diǎn)。掌握好設計的語(yǔ)法,熟練應用于各種復雜的項目,這是技能的核心。其他測試用的語(yǔ)法,需要時(shí)查找和參考就已經(jīng)足夠了。
本書(shū)著(zhù)重點(diǎn),是用于本科、研究生的教學(xué)用途,因此將重點(diǎn)講解設計用的語(yǔ)法。


3 Verilog HDL 基本語(yǔ)法
      本節介紹Verilog HDL 語(yǔ)言的一些基本要素,包括標識符、注釋、格式、數字值集合、兩種數據類(lèi)型、運算符和表達式和一些基本的語(yǔ)句如IF語(yǔ)句等。
3.1 標識符
       verilog HDL的源文本文件是由一串詞法標識符構成的,一個(gè)詞法標識符包含一個(gè)或若干個(gè)字符。源文件中這些標識符的排放格式很自由,也就是說(shuō),在句法上間隔和換行只是將這些標識符分隔開(kāi)來(lái)并不具有重要意義,轉意標識符除外。

       verilog HDL語(yǔ)言中詞法標識符的類(lèi)型有以下幾種:間隔符、注釋符、算子、數值、字符串、標識符、關(guān)鍵詞。
      接下來(lái)對這些標識符一一進(jìn)行說(shuō)明

3.1.1間隔符
      間隔符包括空格字符,制表符,換行以及換頁(yè)符。這些字符除了起到與其它詞法標識符相分隔的作用外可以被忽略。
      注意的是,在“字符串”中的空白和制表符會(huì )被認為是有意義的字符。

3.1.2注釋符
       Verilog HDL 中有兩種注釋的方式:?jiǎn)涡凶⑨尯投巫⑨專(zhuān)ǘ嘈校?/font>
      單行注釋以?xún)蓚(gè)字符“//”起始,以新的一行作為結束。也就是注釋一行。
      段注釋是以“”結束,在兩個(gè)符號之間的語(yǔ)句都是注釋語(yǔ)句,因此可擴展到多行。如:
以上n個(gè)語(yǔ)句都是注釋語(yǔ)句。
      段注釋不允許嵌套,在段注釋中單行注釋標識符“//”沒(méi)有任何特殊意義。

3.1.3算子
      算子是由單個(gè)、兩個(gè)或三個(gè)字符組成的序列串,分別稱(chēng)之為一元算子、二元算子和條件算子。它用在表達式中。
      例如“|a”等都是一元算子。該例子是“a的所有比特相或”。假如a是三位信號并且值為011,則“|a”就是“0|1|1”等于1。
      例如“a & b”、“a|b等是二元算子。該兩個(gè)例子分別是a與b按位相與、a與b按位相或。
      例如“a==1?b:c”,則是條件算子。該例子是說(shuō)“當a等于1時(shí),選擇b,否則選擇c”。

3.1.4標識符
      標識符是用戶(hù)在描述時(shí)給Verilog對象起的名字,用這個(gè)標識符來(lái)提及相應的對象。
      標識符可以是字母、數字、$符和下劃線(xiàn)_字符的任意組合序列,但它必須以字母(a-z,A-Z)或下劃線(xiàn)(_)開(kāi)頭,不能是數字或$符。后面可以是字母、數字或者_。例如abc_123,_abc等。非法命名如下_abc,24abc。
標識符最長(cháng)可以是1023個(gè)字符。
      標識符是區分大小寫(xiě)的。例如sel和SEL是不同的標識符。

3.1.5關(guān)鍵字
      Verilog HDL 定義了一系列保留字,叫做關(guān)鍵詞。這些關(guān)鍵字都有一定的用途。
a.   下表列出了語(yǔ)言中的所有保留字。
b.   注意只有小寫(xiě)的關(guān)鍵詞才是保留字。例如,標識符always (這是個(gè)關(guān)鍵詞)與標識符ALWAYS(非關(guān)鍵詞)是不同的。
c.   在給信號命名時(shí),不要用關(guān)鍵字。



3.1.6系統任務(wù)標識符
      系統任務(wù)標識符:$,其中$表示引入一個(gè)語(yǔ)言結構,其后所跟的標識符是系統任務(wù)或系統函數的名稱(chēng)。
      系統功能可以執行不同的操作:
---實(shí)時(shí)顯示當前仿真時(shí)間($time)
---顯示/監視信號的值($display,$monitor)
---暫停仿真($stop)
---結束仿真($finish)
例: $monitor($time,”a=%b,b=%h”,a,b)
      每次a或b信號的值發(fā)生變化,這一系統任務(wù)的調用負責顯示當前仿真時(shí)間,二進(jìn)制格式的a信號和十六進(jìn)制格式的b信號。

      注意,系統任務(wù)還有很多,在此不一一列出。但系統任務(wù)一般用于仿真測試用途,讀者沒(méi)必要重點(diǎn)學(xué)習,在學(xué)習工作過(guò)程中,如果需要用到時(shí),再查找一下就可以了。
      注:(本博客連載的內容將出版成圖書(shū),并將錄制視頻,免費公開(kāi)學(xué)習,歡迎大家留意。本連載前面是基礎部分,與一般教材無(wú)異,后面是項目實(shí)踐,是本連載的特色。如果你有一定的基礎(能看懂verilog代碼即可),那么可跳過(guò)前面部分,直接學(xué)習后面的項目實(shí)踐。
      項目實(shí)踐將有16個(gè),從基礎的閃爍燈開(kāi)始,到最后是信號處理的項目,如信號發(fā)生器、FIR濾波器、插值濾波器和AD采集等。
      本連載學(xué)習效果:不難看能懂代碼,還能知道每一行代碼怎么寫(xiě),怎么設計)

本文地址:http://selenalain.com/thread-549576-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
xoznh 發(fā)表于 2019-5-5 23:00:32
學(xué)習學(xué)習~~
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页