學習收集verilog hdl入門教程_第1頁
學習收集verilog hdl入門教程_第2頁
學習收集verilog hdl入門教程_第3頁
學習收集verilog hdl入門教程_第4頁
學習收集verilog hdl入門教程_第5頁
已閱讀5頁,還剩34頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Verilog HDL 入門請輸入文檔目 錄. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 前言2 HDL設計方法學簡介. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.1 數字電路設計方法. . .

2、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2 硬件描述語言. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3 設計方法學. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3、 . . . . . . . . . . . . . . . . . . . . . 62.4 Verilog HDL簡介. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7歷史能力. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7. . . . . .

4、 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Verilog HDL 建模概述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.1 模塊. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5、 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.1.1 簡單事例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.1.2 模塊的結構. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

6、3.1.3 模塊語法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113.2 時延. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113.3 三種建模方式. . . . . . . . . . . . . . . . . . . .

7、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12結構化描述方式數據流描述方式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14行為描述方式混合設計描述. . . .

8、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 Verilog HDL 基本語法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9、. . . . . . . . . 174.1 標識符. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174.1.1 定義4.1.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17. . . . . . . . . . .

10、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174.1.3 書寫規范建議. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17注釋格式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11、. . . . . . . . . . . . . . . 17. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184.4 數字值集合. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18. . . . . . . . . . .

12、 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184.4.1 值集合4.4.2 常量4.5 數據類型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13、. . . . . . . . . . . . . . . . . . . . . . . . 204.5.1 線網類型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204.5.2 寄存器類型運算符和表達式算術運算符關系運算符邏輯運算符. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14、 . . 20. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15、 . . . . . . . . . . . . 22. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.6.4 按位邏輯運算符. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24條件運算符連接運算符. . . . . . . . . . . . . . . . . . . . . . .

16、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25條件語句case 語句. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25. . .

17、 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 結構建模. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282004-08-16第3頁,共41頁,Verilog HDL 入門請輸入文檔5.1 模塊定義結構. . . .

18、 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285.2 模塊端口. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285.3 實例化語句. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19、. . . . . . . . . . . . . . . . . . . . . . . . . 295.4 結構化建模具體實例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 數據流建模. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34連續賦值語句

20、阻塞賦值語句. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346.3 數據流建模具體實例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21、 . . . . . . . . . . . . . . . . . . 34行為建模簡介. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357.2 順

22、序語句塊. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357.3 過程賦值語句. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367.4 行為建模具體實例. . . . . . . . . . . . . . . . . . . . . . . . .

23、. . . . . . . . . . . . . . . . . . . . . . . . . . 378 其他方面. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 習題. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

24、. . . . . . . . . . . 3910附錄AVerilog 保留字. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402004-08-16第4頁,共41頁,Verilog HDL 入門請輸入文檔Verilog HDL 入門:摘 要:本文主要介紹了Verilog HDL 語言的一些基本知識,目的是使初學者能夠迅速掌握HDL設計方法,初步了解并掌握Verilog HDL語言的基本要素,能夠讀懂簡單的設計代碼并能夠進行一些簡單設計的

25、Verilog HDL建模。縮略語 : 對本文所用縮略語進行說明,要求提供每個縮略語的英文全名和中文解釋。參考資料: 請在表格中羅列本文檔所的有關參考文獻名稱、作者、標題、發布日期和等基本信息。1 前言當前業界的硬件描述語言中主要有VHDL 和Verilog HDL。公司根據本身ASIC設計現有的特點、現狀,主推Verilog HDL 語言,逐漸淡化VHDL語言,從而簡化流程。公司的ASIC/FPGA設計,為使新員工在上崗培訓中能迅速掌握ASIC/FPGA 設計的基本技能,中研基礎部ASIC設計中心開發了一系列的培訓Verilog HDL 入門。該套HDL語言培訓系列包括如下:Verilog

26、HDL 代碼書寫規范Verilog 基本電路設計指導書TestBench 編碼技術系列完成得較匆忙,本身尚有許多不完善的地方,同時,可能還需要其他知識方面的培訓但沒有形成培訓善。,希望大家在培訓過程中,多提寶貴意見,以便對它進行修改和完2 HDL設計方法學簡介2004-08-16第5頁,共41頁,參考資料名稱作者發布日期查閱地點或渠道(若不為本公司發布的文獻,請填寫此列)Quisck Referencefor Verilog HDLAMBIT Design SystemVerilog HDL 硬件描述語言J.Bhasker 著等譯2000.7館機械工業社Verilog HDL 入門請輸入文檔數

27、字電路設計方法當前的數字電路設計從層次上分可分成以下幾個層次:算法級設計:利用高級語言如C語言及其他一些系統分析工具(如的算法級方式進行描述。算法級不需要包含時序信息。RTL級設計:用數據流在寄存器間傳輸的模式來對設計進行描述。門級:用邏輯級的與、或、非門等門級之間的連接對設計進行描述。開關級:用晶體管和寄存器及他們之間的連線關系來對設計進行描述。)對設計從系統算法級是高級的建模,一般對特大型設計或有較復雜的算法時使用,特別是通訊方面的一些系統,通過算法級的建模來保證設計的系統性能。在算法級通過后,再把算法級用RTL級進行描述。門級一般對小型設計可適合。開關級一般是在版圖級進行。2.2 硬件描

28、述語言在傳統的設計方法中,當設計工程師設計一個新的硬件、一個新的數字電路或一個數字邏輯系統時,他或許在CAE 工作站上做設計,為了能在CAE工作站做設計,設計者必須為設計畫一張線路圖,通常地,線路圖是由表示信號的線和表示基本設計單元的符號連在一起組成線路圖,符號取自設計者用于構造線路圖的零件庫。若設計者是用標準邏輯器件(如74系列等)做板極設計線路圖,那么路圖中,符號取自標準邏輯零件符號庫;若設計是進行ASIC設計,則這些符號取自ASIC庫的可用的宏單元。這就是傳統的原理圖設計方法。對線路圖的邏輯優化,設計者或許利用一些EDA工具或者人工地進行邏輯的函數邏輯優化。為了能夠對設計進行驗證,設計者

29、必須通過搭個硬件(如電路板),對設計進行驗證。隨著電子設計技術的飛速發展,設計的集成度、復雜度越來越高,傳統的設計方法已滿足不了設計的要求,因此要求能夠借助先進的EDA工具,使用一種描述語言,對數字電路和數字邏輯系統能夠進行形式化的描述,這就是硬件描述語言。硬件描述語言HDL(Hardware Description Language )是一種用形式化方法來描述數字電路和數字邏輯系統的語言。數字邏輯電路設計者可利用這種語言來描述自己的設計,然后利用EDA工具進行仿真,再自動綜合到門級電路,最后用ASIC或FPGA實現其功能。舉個例子,在傳統的設計方法中,對2輸入的與門,可能需到標準器件庫中調個

30、74系列的器件出來,但在硬件描述語言中,“& ”就是一個與門的形式描述,“C = A & B”就是一個2輸入與門的描述。而“and”就是一個與門器件。硬件描述語言發展至今已有二十多年歷史,業界的標準中(IEEE標準)主要有VHDL和Verilog HDL 這兩種硬件描述語言。2.3 設計方法學當前的ASIC設計有多種設計方法,但一般地采用自頂向下的設計方法。隨著技術的發展,一個上往往集成了幾十萬到幾百萬個器件,傳統的自底向上的設計方法已不太現實。因此,一個設計往往從系統級設計開始,把系統劃分成幾個大的基本的功能模塊,每個功能模塊再按一定的規則分成下一個層次的基本單元,如此一直劃分下去。自頂向下

31、的設計方法可用下面的樹狀結構表示:2004-08-16第6頁,共41頁,Verilog HDL 入門請輸入文檔圖1 TOP-DOWN 設計通過自頂向下的設計方法,可實現設計的結構化,使一個復雜的系統設計可由多個設計者分工合作;還可以實現層次化的管理。2.4 Verilog HDL簡介Verilog HDL 是一種硬件描述語言,用于從算法級、RTL級、門級到開關級的多種抽象設計層次的數字系統建模。被建模的數字系統對象的復雜性可介于簡單的門級和完整的電子數字系統之間。數字系統可按層次描述。2.4.1 歷史Verilog HDL 語言最初是于1983 年由Gateway Design Automat

32、ion 公司為其模擬器產品開發的硬件建模語言。那時它只是一種 語言。由于他們的模擬、仿真器產品的廣泛使用,Verilog HDL作為一種便于使用且實用的語言逐漸為眾多設計者所接受。在一次努力增加語言普及性的活動中, Verilog HDL 語言于1990 年被推向公眾領域。Open VerilogVerilog 發展的國際性組織。1992 年,OVI 決定致力于推廣Veriloernational( O V I )是促進I 標準成為IEEE 標準。這一努力最后獲得成功,Verilog 語言于1995 年成為IEEE 標準,稱為IEEE Std13641995 。完整的標準在Verilog 硬件

33、描述語言參考手冊中有詳細描述。2.4.2 能力對初學者,可先大致了解一下Verilog HDL所提供的能力,掌握Verilog HDL 語言的就可以了。子集1. 概述Verilog HDL 語言具有下述描述能力:設計的行為特性、設計的數據流特性、設計的結構組成以及包含響應和設計驗證方面的時延和波形產生機制。所有這些都使用同一種建模語言。此外,Verilog HDL 語言提供了編程語言接口,通過該接口可以在模擬、驗證期間從設計外部計,包括模擬的具體控制和運行。設Verilog HDL 語言不僅定義了語法,而且對每個語法結構都定義了清晰的模擬、仿真語義。因此,用這種語言編寫的模型能夠使用Veril

34、og 仿真器進行驗證。語言從C 編程語言中繼承了多種操作符和結構。Verilog HDL 提供了擴展的建模能力,其中許多擴展最初很難理解。但是,Verilog2004-08-16第7頁,共41頁,系 統 級 的 頂 層 模 塊 C模 塊 C1模 塊 B1模 塊 B2模 塊 模 塊 B模 塊 AVerilog HDL 入門請輸入文檔HDL 語言的子集非常易于學習和使用,這對大多數建模應用來說已經足夠。當然,完整的硬件描述語言足以對從最復雜的到完整的電子系統進行描述。2. 主要功能list基本邏輯門,例如and 、or 和nand 等都內置在語言中。開關級基本結構模型,例如pmos 和nmos 等

35、也被內置在語言中。可采用三種不同方式或混合方式對設計建模。這些方式包括:行為描述方式使用過程化結構建模;數據流方式使用連續賦值語句方式建模;結構化方式使用門和模塊實例語句描述建模。Verilog HDL 中有兩類數據類型:線網數據類型和寄存器數據類型。線網類型表示構件間的物理連線,而寄存器類型表示抽象的數據元件。能夠描述層次設計,可使用模塊實例結構描述任何層次。設計的規模可以是任意的;語言不對設計的規模(大小)施加任何限制。Verilog HDL 不再是某些公司的專有語言而是I E E E 標準。人和機器都可閱讀Verilog 語言,因此它可作為E D A 的工具和設計者之間的交互語言。設計能

36、夠在多個層次上加以描述,從開關級、門級、寄存器傳送級(RT L )到算法級。能夠使用內置開關級原語在開關級對設計完整建模。同一語言可用于生成模擬激勵和指定測試的驗證約束條件,例如輸入值的指定。Verilog HDL 能夠模擬驗證的執行,即模擬驗證執行過程中設計的值能夠被和顯示。這些值也能夠用于與期望值比較,在不匹配的情況下,打印消息。在行為級描述中,Verilog HDL 不僅能夠在RT L 級上進行設計描述,而且能夠在體系結構級描述及其算法級行為上進行設計描述。能夠使用門和模塊實例化語句在結構級進行結構描述。對高級編程語言結構,例如條件語句、情況語句和循環語句,語言中都可以使用。下圖顯示了V

37、erilog HDL 的混合方式建模能力,即在一個設計中每個模塊均可以在不同設計層次上建模。圖2 混合設計層次建模示意圖2004-08-16第8頁,共41頁,開 關算 法開 關門門RTLVerilog HDL 入門請輸入文檔3 Verilog HDL 建模概述在數字電路設計中,數字電路可簡單歸納為兩種要素:線和器件。線是器件管腳之間的物理連線;器件也可簡單歸納為組合邏輯器件(如與或非門等)和時序邏輯器件(如寄存器、鎖存器、RAM等)。一個數字系統(硬件)就是多個器件通過一定的連線關系組合在一塊的。因此, Verilog HDL的建模實際上就是如何使用HDL語言對數字電路的兩種基本要素的特性及相

38、互之間的關系進行描述的過程。下面通過一些實例,以便對Verilog HDL 的設計建模有個大概的印象。3.1 模塊模塊(module)是Verilog 的基本描述,用于描述某個設計的功能或結構及與其他模塊通信的外部端口。模塊在概念上可等同一個器件就如調用通用器件(與門、三態門等)或通用宏單元(計數器、ALU、CPU)等,因此,一個模塊可在另一個模塊中調用。一個電路設計可由多個模塊組合而成,因此一個模塊的設計只是一個系統設計中的某個層次設計,模塊設計可采用多種建模方式。3.1.1 簡單事例下面先介紹幾個簡單的Verilog HDL程序。例1 加法器module addr (a, b, cin,

39、count, sum); input 2:0 a;input 2:0 b;inpin;outpount;output 2:0 sum;assign count,sum = a +b + cin; endmodule該例描述一個3位加法器,從例子可看出整個模塊是以module 開始,endmodule 結束。例2 比較器module compare (equal,a,b);inputoutput1:0 a,b;/ declare the input signal ;equare ;/ declare the output signal;assignequare = (a = b) ? 1:0 ;

40、/ * if a = b , output 1, otherwise 0;*/endmodule2004-08-16第9頁,共41頁,Verilog HDL 入門請輸入文檔該例描述一個比較器, 從上可看到,/*讀懂代碼,對編譯并不起作用。. */ 和 / . 表示注釋部分。注釋只是為了方便設計者例3 三態驅動器module mytri (din, d_en, d_out); input din;input d_en;output d_out;/ - Enter your sements here - / assign d_out = d_en ? din :bz;endmodulemodule

41、 trist (din, d_en, d_out); input din;input d_en;output d_out;/ - sements here - /mytri u_mytri(din,d_en,d_out); endmodule該例描述了一個三態驅動器。其中三態驅動門在模塊 mytri 中描述,而在模塊trist 中調用了模塊mytri 。模塊mytri 對trist 而言相當于一個已存在的器件,在trist 模塊中對該器件進行實例化,實例化名 u_mytri 。3.1.2 模塊的結構通過上面的實例可看出,一個設計是由一個個模塊(module)下:的。一個模塊的設計如1、模塊內容

42、是嵌在module 和endmodule兩個語句之間。每個模塊實現特定的功能,模塊可進行層次的嵌套,因此可以將大型的數字電路設計分割成大小不一的小模塊來實現特定的功能,最后通過由頂層模塊調用子模塊來實現整體功能,這就是Top-Down的設計,如 3.3.1的例3。2、模塊包括接口描述部分和邏輯功能描述部分。這可以把模塊與器件模塊的端口定義部分:。如上例: module addr (a, b, cin, count, sum); 其中module 是模塊的保留字,addr 是模塊的名字,相當于器件名。()內是該模塊的端口通訊的外部接口,相當于器件的pin 。,定義了該模塊的管腳名,是該模塊與其他

43、模塊模塊的內容,包括I/O說明,內部信號、調用模塊等的語句和功能定義語句。I/O說明語句如: input 2:0 a;input 2:0 b;input cin; output count;其中的input 、output、inout 是保留字,定義了管腳信號的流向,n:0表示該信號的位寬(總線或單根信號線)。2004-08-16第10頁,共41頁,Verilog HDL 入門請輸入文檔邏輯功能描述部分如: assignmytri u_mytri(din,d_en,d_out);d_out = d_en ? din :bz;功能描述用來產生各種邏輯(主要是組合邏輯和時序邏輯,可用多種方法進行描

44、述,具體的用法下面章節有介紹),還可用來實例化一個器件,該器件可以是廠家的器件庫也可以是自己用HDL設計的模塊(相當于在原理圖輸入時調用一個庫元件)。在邏輯功能描述中,主要用到assign 和always 兩個語句。3、對每個模塊都要進行端口定義,并說明輸入、輸出口,然后對模塊的功能進行邏輯描述,當然,對測試模塊,可以沒有輸入輸出口。4、Verilog HDL 的書寫格式代碼書寫規范約束。,一行可以寫幾個語句,也可以一個語句分幾行寫。具體由5、除endmodule 語句外,每個語句后面需有分號表示該語句結束。3.1.3 模塊語法1. 一個模塊的基本語法如下:一個模塊的基本語法如下:module

45、 module_name (port1, port2,) ;/ D e c l a r a t i o n s : input, output, inout, reg, wire, parameter, function, task, . . ./Se m e n t s : Initial sement Always sement Module instantiation Gate instantiationContinuous assignmentendmodule模塊的結構需按上面的順序進行,區用來對信號方向、信號數據類型、函數、任務、參數等進行描述。語句區用來對功能進行描述如:器件調用

46、 (Module instantiation )等。2. 書寫語法建議一個模塊用一個文件; 模塊名與文件名要同名;一行一句語句。信號方向按輸入、輸出、雙向順序描述。設計模塊時可盡量考慮采用參數化,提高設計的重用。以上是初學者的建議,具體的或深入的方面可看相關的文檔。下面的有關語法建議類似。3.2 時延2004-08-16第11頁,共41頁,Verilog HDL 入門請輸入文檔信號在電路中傳輸會有延時等,如線延時、器件延時。時延就是對延時特性的HDL描述。舉例如下:assign # 2B = A;表示 B信號在2個時間后得到A信號的值。如下圖:圖3在Verilog HDL中,所有時延都必須根據

47、時間進行定義,定義方式為在文件頭添加如下語句:timescale 1ns /100ps其中timescale 是Verilog HDL 提供的預編譯處理命令, 1ns 表示時間時間精度是100ps。根據該命令,編譯工具才可以認知 #2 為2ns。是1ns ,100ps表示在Verilog HDL 的IEEE標準中沒有規定時間碼時必須確定。的缺省值,由各模擬工具確定。因此,在寫代3.3 三種建模方式在HDL的建模中,主要有結構化描述方式、數據流描述方式和行為描述方式,下面分別舉例說明三者之間的區別。3.3.1 結構化描述方式結構化的建模方式就是通過對電路結構的描述來建模,即通過對器件的調用(HD

48、L概念稱為例化),并使用線網來連接各器件的描述方式。這里的器件包括Verilog HDL的內置門如與門and,異或門xor等,也可以是用戶的一個設計。結構化的描述方式反映了一個設計的層次結構。例1:一位全加器圖4 一位全加器的結構圖代碼:module FA_struct (A, B, Cin, Sum, Count); input A;input B;inpin;2004-08-16第12頁,共41頁,A:B:2Verilog HDL 入門請輸入文檔output Sum;outpount;wire S1, T1, T2, T3;/ - sements - / xor x1 (S1, A, B)

49、;xor x2 (Sum, S1, Cin);and A1 (T3, A, B );and A2 (T2, B, Cin);and A3 (T1, A, Cin);or O1 (Cout, T1, T2, T3 );endmodule該實例顯示了一個全加器由兩個異或門、三個與門、一個或門。S1、T1、T2、T3則是門與門之間的連線。代碼顯示了用純結構的建模方式,其中xor 、and、or 是Verilog HDL 內置的門器件。以 xor x1 (S1, A, B) 該例化語句為例:xor 表明調用一個內置的異或門,器件名稱xor ,代碼實例化名x1(類似原理圖輸入方式)。括號內的S1,A,B

50、 表明該器件管腳的實際連接線(信號)的名稱 ,其中 A、B是輸入,S1是輸出。其他同。例2:兩位的全加器兩位的全加器可通過調用兩個一位的全加器來實現。該設計的設計層次示意圖和結構圖如下:圖5 兩位全加器的結構示意圖代碼:module Four_bit_FA (FA, FB, FCin, FSum, FCout ) ; parameter SIZE = 2;input SIZE:1 FA;2004-08-16第13頁,共41頁,Four_bit_FAFAASumFSumBFA_structFCinCinCountFA_structFA_structASumFBBFA_structFCountCi

51、nCountFour_bit_FAVerilog HDL 入門請輸入文檔input SIZE:1 FB;input FCin;output SIZE:1 FSum;output FCout;wire FTemp;FA_struct FA1(.A (FA1),.B (FB1),.Cin (FCin) ,.Sum (FSum1),.Cout (Ftemp);FA_structFA2(.A (FA2),.B (FB2),.Cin (FTemp) ,.Sum (FSum2),.Cout (FCount );endmodule該實例用結構化建模方式進行一個兩位的全加器的設計,頂層模塊Four_bit_F

52、A 調用了兩個一位的全加器 FA_struct 。在這里,以前的設計模塊FA_struct 對頂層而言是一個現成的器件,頂層模塊只要進行例化就可以了。注意這里的例化中,端口(管腳的連線)采用名字關聯,如 .A (FA2) ,其中.A 表示調用器件的管腳A,括號中的信號表示接到該管腳A的電路中的具體信號。wire 保留字表明信號Ftemp 是屬線網類型(下面有具體描述)。另外,在設計中,盡量考慮參數化的問題。器件的端口必須采用名字關聯。3.3.2 數據流描述方式數據流的建模方式就是通過對數據流在設計中的具體行為的描述的來建模。最基本的機制就是用連續賦值語句。在連續賦值語句中,某個值被賦給某個線網

53、變量(信號),語法如下:assign delay net_name = expres如:assign #2 A = B;;2004-08-16第14頁,共41頁,Verilog HDL 入門請輸入文檔在數據流描述方式中,還必須借助于HDL提供的一些運算符,如按位邏輯運算符 :邏輯與(&),邏輯或(|)等。以上面的全加器為例,可用如下的建模方式:圖6 一位全加器的結構圖timescale 1ns/100psmodule FA_flow(A,B,Cin,Sum,Count) input A,B,Cin;output Sum, Count;wire S1,T1,T2,T3;assign assign

54、 assignassign# 2 S1 = A B;# 2 Sum = S1 Cin;#2#2T3 = A & B;T1 = A & Cin; T2 = B & Cin ;assign #2endmodule注意在各assign 語句之間,是并行執行的,即各語句的執行與語句之間的順序無關。如上,當A有個變化時,S1、T3、T1 將同時變化,S1的變化又會造成Sum的變化。3.3.3 行為描述方式行為方式的建模是指采用對信號行為級的描述(不是結構級的描述)的方法來建模。在表示方面,類似數據流的建模方式,但一般是把用initial 塊語句或always 塊語句描述的歸為行為建模方式。行為建模方式通

55、常需要借助一些行為級的運算符如加法運算符(+),減法運算符(-)等。以下舉個例子,對initial 和always 語句的具體應用可看相關章節的介紹,這里,先對行為建模方式有個概念。例1 一位全加器的行為建模module FA_behav1(A, B, Cin, Sum, Cout ); input A,B,Cin;output Sum,Cout;2004-08-16第15頁,共41頁,Verilog HDL 入門請輸入文檔reg Sum, Cout;reg T1,T2,T3;always ( A or B or Cin ) beginSum = (A B) Cin ; T1 = A & Ci

56、n;T2 = B & Cin ; T3 = A & B;Cout = (T1| T2) | T3;end endmodule需要先建立以下概念:1、只有寄存器類型的信號才可以在always和initial 語句中進行賦值,類型定義通過reg語句實現。2、always 語句是一直重復執行,由敏感表(always 語句括號內的變量)中的變量觸發。3、always 語句從0 時刻開始。4、在begin 和end 之間的語句是順序執行,屬于串行語句。例2:一位全加器的行為建模module FA_behav2(A, B, Cin, Sum, Cout ); input A,B,Cin;output Su

57、m,Cout;reg Sum, Cout;always ( A or B or Cin ) beginCount ,Sum = A + B + Cin ;end endmodule在例2 中,采用更加高級(更趨于行為級)描述方式, 即直接采用 “ +” 來描述加法。Count,Sum表示對位數的擴展,因為兩個1bit 相加,和有兩位,低位放在Sum 變量中,進位放在Count 中。3.3.4 混合設計描述2004-08-16第16頁,共41頁,Verilog HDL 入門請輸入文檔在實際的設計中,往往是多種設計模型的混合。一般地,對頂層設計,采用結構描述方式,對低層模塊, 可采用數據流、行為級

58、或兩者的結合。如上面的兩bit 全加器, 對頂層模塊(Four_bit_FA)采用結構描述方式對低層進行例化,對低層模塊(FA)可采用結構描述、數據流描述或行為級描述。4 Verilog HDL 基本語法本節介紹Verilog HDL 語言的一些基本要素,包括標識符、注釋、格式、數字值集合、兩種數據類型、運算符和表達式和一些基本的語句如IF語句等。4.1 標識符4.1.1 定義標識符( identifier)用于定義模塊名、端口名、信號名等。 Verilog HDL 中的標識符( identifier)可以是任意一組字母、數字、$符號和_(下劃線)符號的組合,但標識符的第一個字符必須是字母或者

59、下劃線。另外,標識符是區分大小寫的。以下是標識符的幾個例子:CountCOUNT R56_68FIVE$/與Count 不同。4.1.2Verilog HDL 定義了一系列保留字,叫做,附錄A 列出了語言中的所有保留字。注意只才是保留字。例如,標識符always (這是個)與標識符ALWAYS(非)是有小寫的不同的。4.1.3 書寫規范建議以下是一些書寫規范的要求,可參考公司的Verilog 代碼書寫規范。1、用有意義的有效的名字如 Sum 、CPU_addr等。2、用下劃線區分詞。3、采用一些前綴或后綴,如時鐘采用Clk 前綴:Clk_50,Clk_CPU;低電平采用_n 后綴:Enable

60、_n;4、一定的縮寫 如全局復位信號 Rst。5、同一信號在不同層次保持一致性,如同一時鐘信號必須在各模塊保持一致。6、自定義的標識符不能與保留字同名。7、參數采用大寫,如SIZE 。4.2注釋Verilog HDL 中有兩種注釋的方式,一種是以“/*”符號開始,“*/” 結束,在兩個符號之間的語句都是注釋語句,因此可擴展到多行。如:2004-08-16第17頁,共41頁,Verilog HDL 入門請輸入文檔/* sement1 ,sement2,. .sementn */以上n個語句都是注釋語句。另一種是以 / 開頭的語句,它表示以 / 開始到本行結束都屬于注釋語句。4.3格式Verilo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論