




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、2021-10-211第九章第九章 硬件描述語言簡介硬件描述語言簡介9.1 概述概述9.2 verilog hdl簡介簡介9.3 用用verilog hdl描述邏輯描述邏輯電路的實例電路的實例 2021-10-2129.1 概述概述硬件描述語言硬件描述語言hdl(hardware description language )是一種用形式化方法來描述數字電路和)是一種用形式化方法來描述數字電路和數字邏輯系統的語言。數字邏輯電路設計者可利用這數字邏輯系統的語言。數字邏輯電路設計者可利用這種語言來描述自己的設計思想,然后利用種語言來描述自己的設計思想,然后利用eda工具進工具進行仿真,再自動綜合到門
2、級電路,最后用行仿真,再自動綜合到門級電路,最后用asic或或fpga實現其功能。實現其功能。2021-10-213舉個例子,在傳統的設計方法中,對舉個例子,在傳統的設計方法中,對2輸入的與輸入的與門,我們可能需到標準器件庫中調個門,我們可能需到標準器件庫中調個74系列的器件系列的器件出來,但在硬件描述語言中,出來,但在硬件描述語言中,“& ”就是一個與門的就是一個與門的形式描述,形式描述,“c = a & b”就是一個就是一個2輸入與門的描述。輸入與門的描述。而而“and”就是一個與門器件。就是一個與門器件。 硬件描述語言發展至今已有二十多年歷史,當硬件描述語言發展至今已有二十多年歷史,當今
3、業界的標準中(今業界的標準中(ieee標準)主要有標準)主要有vhdl和和verilog hdl 這兩種硬件描述語言。這兩種硬件描述語言。2021-10-214 在數字電路設計中,數字電路可簡單歸納為兩種要素:在數字電路設計中,數字電路可簡單歸納為兩種要素:線線和和器件器件。線線是器件管腳之間的物理連線;是器件管腳之間的物理連線;器件器件也可簡單也可簡單歸納為組合邏輯器件(如與或非門等)和時序邏輯器件歸納為組合邏輯器件(如與或非門等)和時序邏輯器件(如寄存器、鎖存器、(如寄存器、鎖存器、ram等)。一個數字系統(硬件)等)。一個數字系統(硬件)就是多個器件通過一定的連線關系組合在一塊的。因此,
4、就是多個器件通過一定的連線關系組合在一塊的。因此,verilog hdl的建模實際上就是如何使用的建模實際上就是如何使用hdl語言對數字電語言對數字電路的兩種基本要素的特性及相互之間的關系進行描述的過路的兩種基本要素的特性及相互之間的關系進行描述的過程。程。9.2 verilog hdl 簡介簡介2021-10-215模塊模塊(module)是)是verilog 的基本描述單位,用于描的基本描述單位,用于描述某個設計的功能或結構及與其他模塊通信的外部端述某個設計的功能或結構及與其他模塊通信的外部端口。口。模塊在概念上可等同一個器件就如我們調用通用器件模塊在概念上可等同一個器件就如我們調用通用器
5、件(與門、三態門等)或通用宏單元(計數器、(與門、三態門等)或通用宏單元(計數器、alu、cpu)等,因此,)等,因此,一個模塊可在另一個模塊中調用一個模塊可在另一個模塊中調用。一個電路設計可由多個模塊組合而成,因此一個模塊一個電路設計可由多個模塊組合而成,因此一個模塊的設計只是一個系統設計中的某個層次設計,的設計只是一個系統設計中的某個層次設計,模塊設模塊設計可采用多種建模方式計可采用多種建模方式。模模 塊塊 (module)2021-10-216三個描述層次三個描述層次 開關級描述:描述電阻、晶體管以及它描述電阻、晶體管以及它們之間的相互連線關系。們之間的相互連線關系。 門級描述:描述基本
6、邏輯門、觸發器以描述基本邏輯門、觸發器以及相互連線關系。及相互連線關系。 寄存器傳輸級(rtl)描述:描述寄存器描述寄存器以及它們之間的數據傳遞關系。以及它們之間的數據傳遞關系。2021-10-217verilog hdl 允許一個設計中每個模塊均在不同設計允許一個設計中每個模塊均在不同設計層次層次上建模。上建模。2021-10-2189.2.1 基本程序結構基本程序結構module ();endmodule2021-10-219幾個簡單事例:幾個簡單事例:例例1 加法器加法器module addr (a, b, cin, cout, sum);input 2:0 a;input 2:0 b;
7、input cin;output cout;output 2:0 sum;assign cout,sum = a +b + cin;endmodule2021-10-2110例例2 比較器比較器module compare (equal,a,b););input 1:0 a,b; / declare the input signal ;output equare ; / declare the output signal;assign equare = (a = b) ? 1:0 ;/ * if a = b , output 1, otherwise 0;*/endmodule幾個簡單事例:幾
8、個簡單事例:2021-10-2111module mytri (din, d_en, d_out);input din;input d_en;output d_out;assign d_out = d_en ? din :bz;endmodulemodule trist (din, d_en, d_out);input din;input d_en;output d_out;mytri u_mytri(din,d_en,d_out);endmodule例例3 三態驅動器三態驅動器幾個簡單事例:幾個簡單事例:2021-10-2112 通過上面的實例可看出,一個設計是由一個個模塊通過上面的實例可看
9、出,一個設計是由一個個模塊(module)構成的。一個模塊的設計如下:)構成的。一個模塊的設計如下:1、模塊內容是嵌在模塊內容是嵌在module 和和endmodule兩個語句之間。兩個語句之間。每個模塊實現特定的功能,模塊可進行層次的嵌套,因此每個模塊實現特定的功能,模塊可進行層次的嵌套,因此可以將大型的數字電路設計分割成大小不一的小模塊來實可以將大型的數字電路設計分割成大小不一的小模塊來實現特定的功能,最后通過由頂層模塊調用子模塊來實現整現特定的功能,最后通過由頂層模塊調用子模塊來實現整體功能,這就是體功能,這就是top-down的設計思想,如例的設計思想,如例3。2、模塊包括模塊包括接口
10、描述部分接口描述部分和和邏輯功能描述部分邏輯功能描述部分。這可以把。這可以把模塊與器件相類比。模塊與器件相類比。模塊的結構:模塊的結構:2021-10-2113模塊的端口定義部分:模塊的端口定義部分:如上例:如上例: module addr (a, b, cin, count, sum); 其中其中module 是模塊的保留字,是模塊的保留字,addr 是模塊的名字,相當于器件名。是模塊的名字,相當于器件名。()內是該模塊的端口聲明,定義了該模塊的管腳名,是()內是該模塊的端口聲明,定義了該模塊的管腳名,是該模塊與其他模塊通訊的外部接口,相當于器件的該模塊與其他模塊通訊的外部接口,相當于器件的
11、pin。模塊的內容,包括模塊的內容,包括i/o說明,內部信號、調用模塊等的聲說明,內部信號、調用模塊等的聲明語句和功能定義語句。明語句和功能定義語句。i/o說明語句如:說明語句如: input 2:0 a; input 2:0 b; input cin; output count; 其中的其中的input 、output、inout 是保留字,定是保留字,定義了管腳信號的流向,義了管腳信號的流向,n:0表示該信號的位寬(總線或表示該信號的位寬(總線或單根信號線)。單根信號線)。2021-10-2114邏輯功能描述部分如:邏輯功能描述部分如: assign d_out = d_en ? din
12、:bz;mytri u_mytri(din,d_en,d_out);功能描述用來產生各種邏輯(主要是組合邏輯和時序功能描述用來產生各種邏輯(主要是組合邏輯和時序邏輯,可用多種方法進行描述。還可用來實例化一個邏輯,可用多種方法進行描述。還可用來實例化一個器件,該器件可以是廠家的器件庫也可以是我們自己器件,該器件可以是廠家的器件庫也可以是我們自己用用hdl設計的模塊(相當于在原理圖輸入時調用一設計的模塊(相當于在原理圖輸入時調用一個庫元件)。在邏輯功能描述中,主要用到個庫元件)。在邏輯功能描述中,主要用到assign 和和always 兩個語句。兩個語句。2021-10-21153、對每個模塊都要
13、進行端口定義,并說明輸入、對每個模塊都要進行端口定義,并說明輸入、輸出口,然后對模塊的功能進行邏輯描述,當然,輸出口,然后對模塊的功能進行邏輯描述,當然,對測試模塊,可以沒有輸入輸出口。對測試模塊,可以沒有輸入輸出口。4、verilog hdl 的書寫格式自由,一行可以寫的書寫格式自由,一行可以寫幾個語句,也可以一個語句分幾行寫。幾個語句,也可以一個語句分幾行寫。5、除除endmodule 語句外,每個語句后面需有分語句外,每個語句后面需有分號表示該語句結束。號表示該語句結束。模塊的結構:模塊的結構:2021-10-21169.2.2 詞法構成詞法構成1、間隔符與注釋符、間隔符與注釋符 在在
14、verilog hdl里有兩種形式的注釋:里有兩種形式的注釋:/ 是單行注釋是單行注釋 /* */ 是多行注釋是多行注釋白空(新行、制表符、空格)沒有特殊意義。白空(新行、制表符、空格)沒有特殊意義。書寫規范建議:書寫規范建議:一個語句一行。一個語句一行。采用空四格的采用空四格的table 鍵進行縮進。鍵進行縮進。2021-10-21172、操作符、操作符 arithmetic: +, - ! * / binary operators: &, |, , , ! shift: relational: , , =, =, != logical: &, |9.2.2 詞法構成詞法構成2021-10-
15、2118examples:549 / 十進制十進制h 8ff / 十六進制十六進制o765 / 八進制八進制4 b11 / 4位二進制數位二進制數 00113 b10 x / 3位二進制數,最低位不確定位二進制數,最低位不確定5 d3 / 5位十進制數位十進制數00003-4b11 / 4位二進制數位二進制數0011的補碼,的補碼,11019.2.2 詞法構成詞法構成3、數值常量、數值常量size base valuesize 定義以位計的常量的位長;定義以位計的常量的位長;base 為為o 或或o(表示八進制),(表示八進制),b 或或b(表示二進制),(表示二進制),d 或或d(表示十進制
16、),(表示十進制),h 或或h (表示十六進制)之一;(表示十六進制)之一;value 是基于是基于base 的值的數字序列。值的值的數字序列。值x 和和z 以及以及十六進制中的十六進制中的a 到到f 不區分大小寫。不區分大小寫。2021-10-2119 verilog hdl中規定了四種基本的值類型:中規定了四種基本的值類型: 0:邏輯:邏輯0或或“假假”; 1:邏輯:邏輯1或或“真真”; x:未知值;:未知值; z:高阻。:高阻。 注意這四種值的解釋都內置于語言中。如一個為注意這四種值的解釋都內置于語言中。如一個為z 的值的值總是意味著高阻抗,一個為總是意味著高阻抗,一個為0 的值通常是指
17、邏輯的值通常是指邏輯0 。 此外,此外,x 值和值和z 值都不分大小寫。值都不分大小寫。9.2.2 詞法構成詞法構成3、數值常量、數值常量2021-10-21209.2.2 詞法構成詞法構成4、字符串、字符串5、標識符、標識符6、關鍵字、關鍵字字符串是雙引號內的字符序列。字符串不能分成多行書寫。字符串是雙引號內的字符序列。字符串不能分成多行書寫。標識符是模塊、寄存器、端口、連線、示例和標識符是模塊、寄存器、端口、連線、示例和begin end 等等元素的名稱,是賦給對象的唯一的名稱。元素的名稱,是賦給對象的唯一的名稱。2021-10-2121數據類型數據類型數據類型有數據類型有 wire 和和
18、 reg 。wire 用于對結構化器件之間的物理連線的建模。如器用于對結構化器件之間的物理連線的建模。如器件的管腳,內部器件如與門的輸出等。件的管腳,內部器件如與門的輸出等。由于線網類型代表的是物理連接線,因此它不存貯邏由于線網類型代表的是物理連接線,因此它不存貯邏輯值。必須由器件所驅動。通常由輯值。必須由器件所驅動。通常由assign進行賦值。進行賦值。如如 assign a = b c;當一個當一個wire 類型的信號沒有被驅動時,缺省值為類型的信號沒有被驅動時,缺省值為z(高阻)。(高阻)。信號沒有定義數據類型時,缺省為信號沒有定義數據類型時,缺省為 wire 類型。類型。2021-10
19、-2122數據類型數據類型數據類型有數據類型有 wire 和和 reg 。reg 是最常用的寄存器類型,寄存器類型通常用于對是最常用的寄存器類型,寄存器類型通常用于對存儲單元的描述,如存儲單元的描述,如d型觸發器、型觸發器、rom等。等。存儲器類型的信號當在某種觸發機制下分配了一個值,存儲器類型的信號當在某種觸發機制下分配了一個值,在分配下一個值之時保留原值。在分配下一個值之時保留原值。但必須注意的是,但必須注意的是,reg 類型的變量,不一定是存儲單類型的變量,不一定是存儲單元,如在元,如在always 語句中進行描述的必須用語句中進行描述的必須用reg 類型的變類型的變量。量。2021-1
20、0-2123簡單事例:簡單事例:reg a;always (b or c) begina = b & c;endalways (b or c) begin x = b & c;endalways (posedge clk) y = b & c; always (negedge clk) z = b & c; “=”用于組合邏輯器件的賦值用于組合邏輯器件的賦值“=”用于時序邏輯器件的賦值用于時序邏輯器件的賦值2021-10-2124簡單事例:簡單事例:/ 與非門模塊與非門模塊module nand(in1, in2, out);input in1, in2;output out;assign o
21、ut = (in1 & in2);endmodule2021-10-2125簡單事例:簡單事例:/ 用兩個與非門構成與門模塊用兩個與非門構成與門模塊module and(in1, in2, out);input in1, in2;output out;wire w1;nand nand1(in1, in2, w1);nand nand2(w1, w1, out);endmodule2021-10-2126更多結構事例:更多結構事例:2021-10-21279.2.3 模塊的描述方式模塊的描述方式1、行為描述方式、行為描述方式行為描述方式是通過行為語句來描述電路要實現的功行為描述方式是通過行為語
22、句來描述電路要實現的功能,表示輸入與輸出間轉換的行為,不涉及具體結構。能,表示輸入與輸出間轉換的行為,不涉及具體結構。從這個意義上講,行為建模是一種從這個意義上講,行為建模是一種“高級高級”的描述方的描述方式。式。例:一位例:一位2選選1的數據選擇器的數據選擇器module mux_2_to_1(a, b, out,outbar,sel);input a, b, sel ;output out,outbar ;assign out = sel? a : b ;assign outbar= out ;endmodule2021-10-2128例:一位全加器的行為建模例:一位全加器的行為建模mod
23、ule fa_behav1(a, b, cin, sum, cout );input a,b,cin;output sum,cout;reg sum, cout;reg t1,t2,t3;always ( a or b or cin )beginsum = (a b) cin ;t1 = a & cin;t2 = b & cin ;t3 = a & b;cout = (t1| t2) | t3;endendmodule2021-10-21292、結構描述方式、結構描述方式結構化的建模方式就是通過對電路結構的描述來建模,結構化的建模方式就是通過對電路結構的描述來建模,即通過對器件的調用(即通過對器件的調用(hdl概念稱為例化),并使用線概念稱為例化),并使用線網來連接各器件的描述方式。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 大棚雇工合同協議書
- 奧電磁流量計協議書
- 婚慶場地承包協議書
- 婚慶公司內部協議書
- 外出美術培訓協議書
- 湖南省三湘名校教育聯盟2023-2024學年高一上學期11月期中聯考化學含解析
- 湖北省武漢市常青聯合體2023-2024學年高二上學期期中考試物理 含解析
- 鋁灰渣綜合利用項目可行性研究報告
- 婚前財物退還協議書
- 婚后夫妻忠誠協議書
- 教師聽課評價記錄表
- 十字頭夾具設計說明書
- 04S202 室內消火栓安裝
- 醫療設備強檢計量目錄(參考)
- 三年級硬筆書法課課件
- 佳發教育考試網上巡查系統(標準版)
- 投融資部面試題本
- 汽車配件名稱大全全
- 新版pep小學英語四年級下冊《unit-5-my-clothes-Part-B-Read-and-write-》課件
- 康復治療-運動療法-課件
- 《學弈》優質課一等獎課件
評論
0/150
提交評論