版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 Verilog HDL基礎(chǔ)語法第1頁,共51頁。本章主要內(nèi)容Verilog HDL語言的特點Verilog HDL語言的描述方式模塊與端口注釋常量,變量與邏輯值操作符操作數(shù)參數(shù)編譯指令系統(tǒng)任務(wù)和函數(shù)程序?qū)嵗?頁,共51頁。3.1 Verilog HDL的特點并行性:所謂的并行性就是說可以同時做幾件事情。Verilog語言不會顧及代碼順序問題,幾個代碼塊可以同時執(zhí)行;而軟件語言必須按順序執(zhí)行,上一句執(zhí)行不成功,就不能執(zhí)行下一句。時序性:Verilog語言可以用來描述過去的時間和相應(yīng)發(fā)生的事件;而軟件語言則做不到?;ミB:互連是硬件系統(tǒng)中的一個基本概念,Verilog語言中的wire變量可以很好
2、地表達這樣的功能;而軟件語言并沒有這樣的描述。第3頁,共51頁。3.2 Verilog HDL的描述方式Verilog HDL采用三種描述方式來進行設(shè)計:數(shù)據(jù)流描述:采用assign語句,連續(xù)賦值,數(shù)據(jù)實時變化,賦值對象一般定義為wire型。行為級描述:使用always或者initial語句,過程賦值,賦值對象一般定義為reg型,不一定會形成寄存器。結(jié)構(gòu)化模型:通過實例化已有的功能模塊來建模。在一個設(shè)計中我們往往會混合使用這三種描述方式。Verilog HDL是對大小寫敏感的語言,同樣的詞匯,大寫和小寫是不同的符號。第4頁,共51頁。圖 31 典型的Verilog設(shè)計描述示意圖第5頁,共51頁
3、。3.3模塊和端口模塊是Verilog的基本描述單元,可大可小,大到一個復(fù)雜的系統(tǒng),小到一些基本的邏輯門單元,主要用來描述某個設(shè)計的功能或結(jié)構(gòu)及其與其他功能模塊通信的外部端口。對于模塊而言,需要有一個模塊名稱來標示模塊,在端口列表的括號后面一定要以 “;”結(jié)束。模塊一般都有端口列表,端口與端口之間用 “,”隔開。但是仿真語言沒有端口列表,因為仿真是一個封閉的系統(tǒng),端口已經(jīng)實例化在內(nèi)部。端口聲明部分需要聲明端口的方向和位寬。第6頁,共51頁。module 模塊名稱(端口列表); /端口定義聲明; input, output, inout /內(nèi)部變量及參數(shù)聲明 wire, reg, functio
4、ion, task, parameter, define, etc /模塊功能實現(xiàn) 數(shù)據(jù)流描述: assign 行為級描述:initial, always 結(jié)構(gòu)化描述: module例化 其他用戶原語endmodule第7頁,共51頁。例 31 端口聲明/Port Declaration input 4:0 a; / 信號名為a的5輸入信號 inout b; / 雙向信號b output 6:0 c; / 信號名為c的7輸出總線信號第8頁,共51頁。有些設(shè)計會把端口的聲明部分和端口列表寫在一起,在端口中可以對每個信號進行注釋。例 32 Verilog HDL 2001端口聲明module co
5、unter( input clk, /全局時鐘信號 input reset_l, /全局復(fù)位信號 output 7:0 cnt /八位數(shù)據(jù)總線 );第9頁,共51頁。模塊內(nèi)部變量聲明中,wire型的線網(wǎng)是不具備數(shù)據(jù)存取功能的,一般而言,input的缺省定義就是wire型,output信號可以是wire型,也可以reg型。定義為wire型的線網(wǎng)是不能夠在always語句中被賦值的,只能被連續(xù)賦值。而reg型的則可以存取最后一次賦給它的值,定義為reg型的線網(wǎng)只能在always和initial語句中被賦值,不能被連續(xù)賦值。注意:所有的關(guān)鍵字都必須小寫。定義為reg型的線網(wǎng)不一定會生成寄存器。第10
6、頁,共51頁。盡管信號和內(nèi)部變量定義聲明只要出現(xiàn)在被調(diào)用的語句之前就行,可是代碼風格一般要求在執(zhí)行語句之前就定義好,這樣可以提高代碼的可讀性。在聲明后,便是功能執(zhí)行語句,功能執(zhí)行語句包括always語句、initial語句、assign語句、task、function、模塊例化等等??梢曰旌厦枋?,沒有先后順序,但是要注意的是initial語句只能用于仿真程序中,不能生成實際的電路。任何一個模塊都要以 “endmodule”結(jié)束。第11頁,共51頁。3.4注釋Verilog HDL提供了兩種注釋的方式:一種以“/”開始,注釋的是一行中的余下部分。例 33 以“/”開始的注釋 assign a =
7、 b ? c : d; /輸出為a的兩輸入的選擇器第12頁,共51頁。例 34 以/*/表示的注釋 assign a = b ? c : d; /注釋下面的功能語句 /*always (*) begin if(b) a=c; else a=d; end */第13頁,共51頁。3.5 常量、變量與邏輯值常量就是不變的數(shù)值,比如說4d8,表示的是一個4位寬的十進制整數(shù)8。在Verilog中,有三種不同類型的常量:整數(shù)型、實數(shù)型以及字符串型。整數(shù)型常量可以直接使用十進制的數(shù)字表示?;鶖?shù)表示法的格式如下: 長度+數(shù)制簡寫+數(shù)字當設(shè)定的位寬比實際數(shù)字的位寬少,則自動截去左邊超出的位數(shù),反之則在左邊不夠
8、的位置補足0。如果長度不顯示,那么數(shù)字的位寬則取決于本身的長度。如果遇到的是x或者z時,如4hx,位寬大于實際數(shù)字的位寬,這個時候在左邊不是補0,而是補x第14頁,共51頁。變量分為線網(wǎng)型和寄存器型兩種。線網(wǎng)型表示電路之間的互連,沒有存取功能。它有許多子類型: wire、tri、tri0、tri1、wor、wand、trireg、supply1、supply0等等。wire可用于可綜合的邏輯設(shè)計中,而其他的一般用于仿真程序中。另外除了trireg型的變量在未初始化的狀態(tài)為x態(tài),其它時候都是z態(tài)。寄存器型表示數(shù)據(jù)的存取,在仿真器中會占據(jù)一個內(nèi)存空間。寄存器型也有許多子類型,包括reg、integ
9、er、time、real、realtime等等。用reg可以表示一位或者多位的寄存器,也可以表示存取器。第15頁,共51頁。例 35 采用reg表示的寄存器和存取器reg a; /1位寄存器a reg 4:0 b; /5位寄存器b reg 7:0 c 10:1;/10*8的存取器寄存器可以按位來存取,可是存取器必須按地址來存取。一般采用for語句來給存取器來賦值。定義為reg型的變量可以生成寄存器,也可以生成MUX,所以需要視具體的功能執(zhí)行而定。x狀態(tài)是一種未定的狀態(tài),描述信號未被初始化的情形,在casex和casez語句中表示不關(guān)心。z狀態(tài)表示高阻狀況,用來表示三態(tài)建模。在真實的電子世界中以
10、及在綜合軟件中,都不會出現(xiàn)x狀態(tài),只有亞穩(wěn)態(tài)的狀況。第16頁,共51頁。Verilog 的四種邏輯值0、低、偽、邏輯低、地、VSS、負插入01XZ0bufbufbufbufif11、高、真、邏輯高、電源、VDD、正插入X、不確定:邏輯沖突無法確定其邏輯值HiZ、高阻抗、三態(tài)、無驅(qū)動源 第17頁,共51頁。3.6 操作符第18頁,共51頁。按位操作符是對操作數(shù)中的每一位分別進行操作,得出一個新的操作數(shù),其具體的操作符如下所示。表 31 按位操作符操作符表達式描述B將B中的每一位取反&A & B將A中的每位與B中對應(yīng)的位相與|A | B將A中的每位與B中對應(yīng)的位相或A B將A中的每位與B中對應(yīng)的位
11、異或A B將A中的每位與B中對應(yīng)的位相異或非AB第19頁,共51頁。例 36 按位操作符示例A = 4b1011 B = 4b1101 C = 4b10 x1A =4b0100 A&B =4b1001A|B =4b1111AB =4b0110AB=AB=4b1001A&C =4b10 x1第20頁,共51頁。歸約操作符是一元操作符,它的表現(xiàn)方式與按位操作符相似或者相同,但是它的操作數(shù)只有一個,并且是對操作數(shù)中的每一比特分別進行操作,得出一個新的一位寬的操作數(shù)表 32 歸約操作符操作符表達式描述&B將B中的每一位相與得出一位的結(jié)果& B將B中的每個比特相與非得出一比特的結(jié)果| B將B中的每一位相
12、或得出一比特的結(jié)果| B將B中的每個比特相或非得出一比特的結(jié)果B將B中的每一位相異或非得出一比特的結(jié)果BB將B中的每一位相異或得出一比特的結(jié)果第21頁,共51頁。例 37 歸約操作符示例B = 4b1101&B = 1&1&0&1 = 1b0|B = 1|1|0|1 = 1b1B = 1101 = 1b1第22頁,共51頁。邏輯操作符是二元操作符,它類似于按位操作符和歸約操作符,但是又不同于它們兩者,它是對表達式中的操作數(shù)整體進行操作,得出一個新的一位寬的操作數(shù)。邏輯操作符用于條件判斷語句中,而按位操作符,歸約操作符用于賦值語句中表 33 邏輯操作符操作符表達式描述&A&BA,B是否都為真?|
13、A | BA,B任意一個是否為真?! B是否為假第23頁,共51頁。例 38 邏輯操作符示例A = 3; /參數(shù)AB = 0; /參數(shù)BC = 2b0 x; /參數(shù)CD = 2b10; /參數(shù)D A&B = 0A|B = 1!A = 0C&D = X第24頁,共51頁。連接復(fù)制操作符是一類特殊的操作符,它是將兩組或者兩組以上的操作數(shù)連接成一個操作數(shù),所得結(jié)果的位寬將是所有操作數(shù)位寬之和表 34 連接復(fù)制操作符操作符表達式描述A,B將和連接起來,產(chǎn)生更大的向量BA將重復(fù)次第25頁,共51頁。例 39 連接復(fù)制操作符示例A = 2b00; /參數(shù)AB = 2b10; /參數(shù)BA,B = 4b001
14、02A,3B = 10b00_0010_1010第26頁,共51頁。不同操作符之間的地位不一樣,數(shù)值運算必須遵循優(yōu)先級由高到低的順序,為了避免這樣的混淆和錯誤,增加代碼的可讀性,最好用“( )”來區(qū)分表 35 優(yōu)先級別表操作符級別+,-, !,(一元)最高級*,/,%二元的加減+,-, , =, =, !=, !=&, &, , , , |, |&, |?:最低級第27頁,共51頁。例 310 簡單的操作符運算a = 4b1000 b = 4b0111(1) !(a b) = !(TRUE) = FALSE (a b) | (a = b) = TRUE | FALSE = TRUE(2) a
15、| b = (1 | 0 | 0 | 0)|(0 | 1 | 1 | 1)= TRUE | TRUE = TRUE(3) a & b = (1 | 0 | 0 | 0)&(0 | 1 | 1 | 1)= TRUE & TRUE = TRUE(4) !a | b = !(1 | 0 | 0 | 0)|(0 | 1 | 1 | 1)= FALSE | FALSE = FALSE(5) !a & &b = !(1 | 0 | 0 | 0)& (0 | 1 | 1 | 1)= FALSE & FALSE = FALSE第28頁,共51頁。3.7 操作數(shù)操作數(shù)有許多種,包括常數(shù)、參數(shù)、線網(wǎng)變量、寄存器變
16、量、向量、存取器單元以及函數(shù)的返回值等等。采用操作數(shù)進行運算時需要考慮操作數(shù)的極性。線網(wǎng)和一般寄存器類型是無符號的,而十進制整數(shù)變量則有符號。當無符號數(shù)和有符號數(shù)一起進行運算時需要考慮極性。第29頁,共51頁。3.8 參數(shù)指令參數(shù)指令(parameter)在Verilog中是一個很重要的概念,通常出現(xiàn)在module里面。有時候在一個系統(tǒng)設(shè)計中,把所有的全局參數(shù)定義在一個文本文件中,通過include來調(diào)用。常用于定義狀態(tài)機的狀態(tài)、數(shù)據(jù)位寬、延時大小等等。全局定義變量define,它是用來進行全局定義的,一旦定義就不能改變例 311 參數(shù)定義示例parameter CURRENT_STATE =
17、 4b1001;第30頁,共51頁。3.9編譯指令Verilog語言采用了一些編譯指令來實現(xiàn)某些特定的編譯。它們主要有:定義宏(define、 undef)、條件編譯指令(ifdef、else、endif)、文件包含(include)、時間單位和精度定義(timescale)等等。在每個模塊前面加一個timescale編譯指令,可以確保在仿真時候延時信息按照timescale所制定的時間單位和精度進行編譯,直到遇到下一個timescale或者resetall指令為止。timescale的格式: timescale 1ns/100ps 表示時延單位為1ns,精度為100ps 。第31頁,共51頁
18、。define表示定義宏。是一個全局變量,可以被多個文件采用,直到運到undef為止。例 312 采用define定義一個總線寬度為8的總線第32頁,共51頁。條件編譯指令的格式一般如下: ifdef NORMAL parameter A = B; else parameter A =C; endif如果宏NORMAL事先已經(jīng)被定義好,則編譯器會執(zhí)行parameter A = B;語句,否則執(zhí)行parameter A =C;語句。第33頁,共51頁。3.10 系統(tǒng)任務(wù)和系統(tǒng)函數(shù)顯示任務(wù)( display task)顯示任務(wù)用于信息的顯示和輸出,它將特定信息輸出到標準輸出設(shè)備,其基本語法結(jié)構(gòu)如下
19、:task_name (format_specification,argument_list1);表 36 顯示任務(wù)編譯指令基本信息表編譯指令類型編譯指令顯示任務(wù)編譯指令$display $displayb $displayh $displayo寫入任務(wù)編譯指令$write $writeb $writeh $writeo探測任務(wù)編譯指令$strobe $strobeb $strobeh $strobeo監(jiān)視任務(wù)編譯指令$monitor $monitorb $monitorh $monitoro第34頁,共51頁。$display用來顯示變量值、字符串等信息,常用于Verilog HDL斷言,其
20、基本格式如下:$display(“At time = %t, System is OK/n”, $time);當系統(tǒng)運行到這個語句時,會顯示當時的實時時間如下(假設(shè)為50.002ns):At time = 50.002ns, System is OK第35頁,共51頁。文件輸入/輸出任務(wù)(File I/O task)文件的輸入輸出任務(wù)主要分為三部分:文件的打開和關(guān)閉,文件的數(shù)據(jù)讀取以及文件的輸出。文件的打開和關(guān)閉常采用$fopen和$fclose兩個關(guān)鍵字來表示。$fopen和$fclose是一起配合使用的,表示打開一個文件和關(guān)閉一個文件,其基本格式如下:/打開一個文件integer file
21、_point = $fopen(file_name);/關(guān)閉一個文件$fclose(file_point);第36頁,共51頁。打開一個文件,就需要對文件進行操作,一般有兩種方式:一種是把監(jiān)視探測到的信息寫入文件,另外一種是從文件中讀取數(shù)據(jù),數(shù)據(jù)一般從文本文件中讀取并將數(shù)據(jù)保存到存取器中。第一種方式與顯示任務(wù)相似,它也分為顯示、寫入、探測和監(jiān)控系統(tǒng)任務(wù),只是這些任務(wù)最終會把數(shù)據(jù)顯示到文件中去,因此需要一個文件指針表 37 文件輸入指令基本信息表系統(tǒng)任務(wù)編譯指令類型系統(tǒng)任務(wù)編譯指令文件顯示任務(wù)$fdisplay $fdisplayb $fdisplayh $fdisplayo文件寫入任務(wù)$fwr
22、ite $fwriteb $fwriteh $fwriteo文件探測任務(wù)$fstrobe $fstrobeb $fstrobeh $sfstrobeo文件監(jiān)控任務(wù)$fmonitor $fmonitorb $fmonitorh $fmonitoro第37頁,共51頁。$readmemb和$readmemh用來從文件中讀取數(shù)據(jù)。文本文件包含空白空間、注釋和二進制或十六進制數(shù)字。數(shù)字與數(shù)字之間用空白空間隔離。開始地址對應(yīng)于存取器最左邊的索引。例 313 文件的輸入輸出任務(wù)操作示例integer Data_OUT; Data_OUT = $fopen(“Data_OUT.txt”); $fdispla
23、y(Data_OUT,”At time %t, System is off/n”, $time); $fclose(Data_out);第38頁,共51頁。時間標度任務(wù)(timescale task)時間標度任務(wù)$printtimescale用來給出指定模塊的時間單位和時間精度,基本格式如下。$printtimescale(模塊路徑);$printtimescale(模塊路徑);時間標度任務(wù)$timeformat則用來指明%t格式定義如何報告時間信息,其基本格式如下。$timeformat(unit_number,perision,suffix,numeric_field_width);第39
24、頁,共51頁。模擬控制任務(wù)(simulation control task)模擬控制任務(wù)主要有兩個系統(tǒng)任務(wù):$finish和$stop。它們之間主要的不同在于$finish是強迫模擬器退出,并將控制權(quán)返回給操作系統(tǒng),而$stop僅僅是模擬被掛起,模擬器不會被強迫退出,交互命令可以被送往模擬器。第40頁,共51頁。時序驗證任務(wù)(timing check task)時序驗證任務(wù)主要用來檢測并報告信號的各種時序是否滿足系統(tǒng)要求,包括建立時間、保持時間、時鐘周期等。表 38 時序驗證任務(wù)基本信息表任務(wù)類型系統(tǒng)任務(wù)實例建立時間$setup$setup(D, posedge clk, 1,0);保持時間$
25、hold$hold(posedge clk, D , 0.1);建立保持時間$setuphold$setuphold(posedge clk,D,1,0,0.1);脈寬限制$width$width(negedge clk, 0.0, 0);周期檢查$period$period(negedge clk, 1.2);偏斜$skew$skew(negedge clk, D, 0.1);時鐘與置、復(fù)位信號之間的時序約束$recovery$recovery(posedge clk,reset, 0.1);基準事件區(qū)間數(shù)據(jù)變化檢測$nochange$nochange(negedge rst, dat,0,
26、0);第41頁,共51頁。實數(shù)變換函數(shù)(conversion functions for real)表 39 實數(shù)變換函數(shù)基本信息表實數(shù)變換函數(shù)說明$rtoi截斷小數(shù)值將實數(shù)變換為整數(shù)$itor將整數(shù)變換為實數(shù)$realtobits將實數(shù)變?yōu)?4位的實數(shù)向量表示法$bitstoreal將位模式變?yōu)閷崝?shù)第42頁,共51頁。概率分布函數(shù)(probabilistic distribution function)概率分布函數(shù)一般用來產(chǎn)生一系列隨機數(shù)來驗證系統(tǒng)的功能是否正確。概率分布函數(shù)一般采用$random(seed)。根據(jù)種子變量seed的取值按32位的有符號整數(shù)形式返回一個隨機數(shù)。第43頁,共51頁。3.11實例: 數(shù)據(jù)選擇器數(shù)據(jù)選擇器的功能是:根據(jù)選擇信號,決定哪路輸入信號送到輸出信號.輸出信號不僅與輸入信號有關(guān),還與選擇信號有關(guān),數(shù)據(jù)選擇器的Verilog HDL語言代碼如下:module dataselector( /模塊的開始 a, /輸入 b, /輸入 c, /輸入 d, /輸入第44頁,共51頁。 sel, /輸入 en, /輸入 y /輸出 );input a;input b;input c;input d;input1:0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度金融信息服務(wù)臨時工勞動合同書
- 2025年度商鋪租賃合同范本:現(xiàn)代商業(yè)綜合體租賃管理細則3篇
- 個性化私人合作協(xié)議模板2024版B版
- 2025年度個人與個人草原保護管理服務(wù)合同范本3篇
- 2025年字畫裝裱作品定制與售后服務(wù)合同3篇
- 2025年度美甲行業(yè)品牌形象設(shè)計與承包合同
- 2025年精裝房裝修材料運輸與儲存合同3篇
- 土地登記相關(guān)法律知識-土地登記代理人《土地登記相關(guān)法律》押題密卷1
- 2025年度生態(tài)環(huán)保技術(shù)引進承包合同規(guī)范范本4篇
- 2025版文化創(chuàng)意設(shè)計師專屬聘用協(xié)議3篇
- 《社會工作實務(wù)》全冊配套完整課件3
- 單位違反會風會書檢討書
- 2024年4月自考00832英語詞匯學(xué)試題
- 《電力用直流電源系統(tǒng)蓄電池組遠程充放電技術(shù)規(guī)范》
- 《哪吒之魔童降世》中的哪吒形象分析
- 信息化運維服務(wù)信息化運維方案
- 汽車修理廠員工守則
- 公安交通管理行政處罰決定書式樣
- 10.《運動技能學(xué)習(xí)與控制》李強
- 冀教版數(shù)學(xué)七年級下冊綜合訓(xùn)練100題含答案
- 1神經(jīng)外科分級護理制度
評論
0/150
提交評論