華中科技大學數字電子技術第六版第二章第5節課件_第1頁
華中科技大學數字電子技術第六版第二章第5節課件_第2頁
華中科技大學數字電子技術第六版第二章第5節課件_第3頁
華中科技大學數字電子技術第六版第二章第5節課件_第4頁
華中科技大學數字電子技術第六版第二章第5節課件_第5頁
已閱讀5頁,還剩19頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

2.5.1

Verilog語言的基本語法規則

2.5.2變量的數據類型

2.5.3運算符及其優先級

2.5.4

Verilog內部的基本門級元件

2.5.5

Verilog程序的基本結構

2.5.6邏輯功能的仿真與測試2.5硬件描述語言VerilogHDL基礎硬件描述語言HDL(HardwareDescriptionLanguag)類似于高級程序設計語言.它是一種以文本形式來描述數字系統硬件的結構和行為的語言,用它可以表示邏輯電路圖、邏輯表達式,復雜數字邏輯系統完成的邏輯功能。HDL是高層次自動化設計的起點和基礎.2.5硬件描述語言VerilogHDL基礎計算機對HDL的處理:邏輯綜合

是指從HDL描述的數字邏輯電路模型中導出電路基本元件列表以及元件之間的連接關系(常稱為門級網表)的過程。類似對高級程序語言設計進行編譯產生目標代碼的過程.產生門級元件及其連接關系的數據庫,根據這個數據庫可以制作出集成電路或印刷電路板PCB。邏輯仿真是指用計算機仿真軟件對數字邏輯電路的結構和行為進行預測.仿真器對HDL描述進行解釋,以文本形式或時序波形圖形式給出電路的輸出。在仿真期間如發現設計中存在錯誤,就再要對HDL描述進行及時的修改。2.5.1Verilog語言的基本語法規則為對數字電路進行描述(常稱為建模),Verilog語言規定了一套完整的語法結構。1.間隔符:

Verilog的間隔符主要起分隔文本的作用,可以使文本錯落有致,便于閱讀與修改。間隔符包括空格符(\b)、TAB鍵(\t)、換行符(\n)及換頁符。2.注釋符:注釋只是為了改善程序的可讀性,在編譯時不起作用。多行注釋符(用于寫多行注釋):/*---*/;單行注釋符:以//開始到行尾結束為注釋文字。為了表示數字邏輯電路的邏輯狀態,Verilog語言規定了4種基本的邏輯值。0邏輯0、邏輯假1邏輯1、邏輯真x或X不確定的值(未知狀態)z或Z高阻態標識符:給對象(如模塊名、電路的輸入與輸出端口、變量等)取名所用的字符串。以英文字母或下劃線開始如,clk、counter8、_net、bus_A。關鍵詞:是Verilog語言本身規定的特殊字符串,用來定義語言的結構。例如,module、endmodule、input、output、wire、reg、and等都是關鍵詞。關鍵詞都是小寫,關鍵詞不能作為標識符使用。4.邏輯值集合3.標識符和關鍵詞5.常量及其表示實數型常量十進制記數法如:0.1、2.0、5.67科學記數法如:23_5.1e2、5E-423510.0、0.0005Verilog允許用參數定義語句定義一個標識符來代表一個常量,稱為符號常量。定義的格式為:parameter參數名1=常量表達式1,參數名2=常量表達式2,……;如parameterBIT=1,BYTE=8,PI=3.14;6.字符串:字符串是雙撇號內的字符序列常量十進制數的形式的表示方法:表示有符號常量例如:30、-2帶基數的形式的表示方法:表示常量格式為:<+/-><位寬>’<基數符號><數值>整數型例如:3’b101、5’o37、8’he3,8’b1001_0011

2.5.2變量的數據類型1線網類型:是指輸出始終根據輸入的變化而更新其值的變量,它一般指的是硬件電路中的各種物理連接.例:wireL;//將上述電路的輸出信號L聲明為網絡型變量wire[7:0]databus;//聲明一個8-bit寬的網絡型總線變量常用的網絡類型由關鍵詞wire定義wire型變量的定義格式如下:wire[n-1:0]變量名1,變量名2,…,變量名n;變量寬度例:網絡型變量L的值由與門的驅動信號a和b所決定,即L=a&b。a、b的值發生變化,線網L的值會立即跟著變化。寄存器型變量對應的是具有狀態保持作用的電等路元件,如觸發器寄存器。寄存器型變量只能在initial或always內部被賦值。2、寄存器類型寄存器類型功能說明reg常用的寄存器型變量integer32位帶符號的整數型變量real64位帶符號的實數型變量,time64位無符號的時間變量4種寄存器類型的變量例:regclock;//定義一個1位寄存器變量reg[3:0]counter;//定義一個4位寄存器變量抽象描述,不對應具體硬件1.運算符2.5.3運算符及其優先級類型符號功能說明類型符號功能說明算術運算符+--*/二進制加二進制減2的補碼二進制乘二進制除關系運算符(雙目運算符)><>=<===!=大于小于大于或等于小于或等于相等不相等位運算符(雙目運算符)~&|^^~或~^按位取反按位與按位或按位異或按位同或縮位運算符(單目運算符)&~&|~|^^~或~^縮位與縮位與非縮位或縮位或非縮位異或縮位同或邏輯運算符(雙目運算符)!&&||邏輯非邏輯與邏輯或移位運算符(雙目運算符)>><<右移左移位拼接運算符{,}{{}}將多個操作數拼接成為一個操作數條件運算符(三目運算符)?:根據條件表達式是否成立,選擇表達式運算符分為算術運算符、邏輯運算符、關系運算符、移位運算符等對同一個操作數的重復拼接還可以雙重大括號構成的運算符{{}}例如{4{A}}=4’b1111,{2{A},2{B},C}=8’b11101000。作用是將兩個或多個信號的某些位拼接起來成為一個新的操作數,進行運算操作。位拼接運算符設A=1’b1,B=2’b10,C=2’b00則{B,C}=4’b1000{A,B[1],C[0]}=3’b110{A,B,C,3’b101}=8’b11000101。位運算符與縮位運算的比較A:4’b1010、B:4’b1111,A~^B=1010A^B=0101A|B=1111A&B=1010~A=0101~B=0000位運算~^A=1~^B=1^A=0^B=0|A=1~|B=0~&A=1&B=1&A=1&0&1&0=0縮位運算2.運算符的優先級優先級的順序從下向上依次增加。類型符號優先級別取反!~-(求2的補碼)最高優先級算術*/+-移位>><<關系<<=>>=等于==!=縮位&~&^^~|~|邏輯&&||條件?:最低優先級一般用法:condition_expr?expr1:expr2;條件運算符是三目運算符,運算時根據條件表達式的值選擇表達式。首先計算第一個操作數condition_expr的值,如果結果為邏輯1,則選擇第二個操作數expr1的值作為結果返回,結果為邏輯0,選擇第三個操作數expr2的值作為結果返回?;鹃T級元件模型元件符號功能說明元件符號功能說明and多輸入端的與門nand多輸入端的與非門or多輸入端的或門nor多輸入端的或非門xor多輸入端的異或門xnor多輸入端的異或非門buf多輸出端的緩沖器not多輸出端的反相器bufif1控制信號高電平有效的三態緩沖器notif1控制信號高電平有效的三態反相器bufif0控制信號低電平有效的三態緩沖器notif0控制信號低電平有效的三態反相器多輸入門多輸出門三態門2.5.4Verilog內部的基本門級元件門級建模:將邏輯電路圖用HDL規定的文本語言表示出來。1、多輸入門只允許有一個輸出,但可以有多個輸入。andA1(out,in1,in2,in3);X-不確定狀態Z-高阻態

and真值表x0zx0xx10100000zX10輸入1and輸入2xxxxx調用名XX1XZXX1XX11111XX100ZX10輸入1or輸入2

or真值表輸入2XXXXZXXXXXXX011XX100ZX10輸入1xorxor真值表2、多輸出門允許有多個輸出,但只有一個輸入。notN1(out1,out2,…,in);xx10zx10輸入buf輸出buf真值表輸出xx01zx10輸入notnot真值表bufB1(out1,out2,…,in);out1inout2outN…out1inout2outN…bufif1真值表xxxzzxxxzx1/z1/z1z10/z0/z0z0zx10控制輸入bufif1數據輸入xxxzzxxxzx0/z0/z0z11/z1/z10zzx10控制輸入notif1數據輸入notif1真值表3、三態門有一個輸出、一個數據輸入和一個輸入控制。如果輸入控制信號無效,則三態門的輸出為高阻態z。2、每個模塊先要進行端口的定義,并說明輸入(input)和輸出(output),然后對模塊功能進行描述。2.5.5Verilog程序的基本結構模塊是Verilog描述電路的基本單元。對數字電路建模時,用一個或多個模塊。不同模塊之間通過端口進行連接。1、每個模塊以關鍵詞module開始,以endmodule結束。3、除了endmodule語句外,每個語句后必須有分號。4、可以用/*---*/和//…..對程序的任何部分做注釋。5、邏輯功能的描述方式有三種不同風格:結構描述方式(門級描述方式)數據流描述方式,行為描述方式。模塊定義的一般語法結構如下:端口類型說明電路結構描述模塊名數據類型說明例用結構描述方式建立門電路Verilog模型modulemux2to1(D0,D1,S,Y

);

inputD0,D1,S;//定義輸入信號outputY;//定義輸出信號wireSnot,A,B;//定義內部節點信號數據類型//下面對電路的邏輯功能進行描述notU1(Snot,Sl);

andU2(A,D0,Snot);

andU3(B,D1,S);

orU4(Y,A,B);endmodule

modulemux2to1_dataflow(D0,D1,S,Y

);

inputD0,D1,S;outputY;wireY;//下面是邏輯功能描述assignY=(~S&D0)|(S&D1);//表達式左邊Y必須是wire型endmodule

端口類型說明電路結構描述數據類型說明例用數據流描述方式建立模型注意,在assign語句中,左邊變量的數據類型必須是wire型。數據類型說明例用行為描述方式建立模型modulemux2to1_bh(D0,D1,S,Y

);

inputD0,D1,S;outputY;regY;//邏輯功能描述always@(S

溫馨提示

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

評論

0/150

提交評論