




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、工程學(xué)院工程學(xué)院 信息技術(shù)教研室信息技術(shù)教研室Verilog HDL與與FPGA數(shù)字系統(tǒng)設(shè)計(jì)數(shù)字系統(tǒng)設(shè)計(jì)3.1 Verilog HDL基本語(yǔ)法規(guī)則基本語(yǔ)法規(guī)則3.2 Verilog HDL門(mén)級(jí)建模門(mén)級(jí)建模3.3 Verilog HDL數(shù)據(jù)流建模與運(yùn)算符數(shù)據(jù)流建模與運(yùn)算符3.4 組合電路的行為級(jí)建模組合電路的行為級(jí)建模3.5分層次的電路設(shè)計(jì)方法分層次的電路設(shè)計(jì)方法3.1 Verilog HDL基本語(yǔ)法規(guī)則基本語(yǔ)法規(guī)則3.1.1 詞法規(guī)定詞法規(guī)定 3.1.2 邏輯值集合邏輯值集合3.1.3 常量及其表示常量及其表示3.1.4 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型33.1.1 詞法規(guī)定詞法規(guī)定 為對(duì)數(shù)字電路進(jìn)行描述為對(duì)
2、數(shù)字電路進(jìn)行描述, ,Verilog語(yǔ)言規(guī)定了一套完整的語(yǔ)法結(jié)語(yǔ)言規(guī)定了一套完整的語(yǔ)法結(jié)構(gòu)。構(gòu)。1間隔符間隔符: Verilog 的間隔符主要起分隔文本的作用,可以使的間隔符主要起分隔文本的作用,可以使文本錯(cuò)落有致,便于閱讀與修改。文本錯(cuò)落有致,便于閱讀與修改。間隔符包括空格符(間隔符包括空格符(b)、)、TAB 鍵(鍵(t)、換行符()、換行符(n)及換)及換頁(yè)符。頁(yè)符。2注釋符注釋符:注釋只是為了改善程序可讀性,編譯時(shí)不起作用。注釋只是為了改善程序可讀性,編譯時(shí)不起作用。多行注釋符多行注釋符(用于寫(xiě)多行注釋用于寫(xiě)多行注釋): /* - */;單行注釋符單行注釋符 :以以/開(kāi)始到行尾結(jié)束為注
3、釋文字。開(kāi)始到行尾結(jié)束為注釋文字。4標(biāo)識(shí)符標(biāo)識(shí)符: :給對(duì)象(如模塊名、電路的輸入與輸出端口、變量等)給對(duì)象(如模塊名、電路的輸入與輸出端口、變量等)取名所用的字符串。以英文字母或下劃線(xiàn)開(kāi)始取名所用的字符串。以英文字母或下劃線(xiàn)開(kāi)始如如,clk、counter8、_net、bus_A 。關(guān)鍵詞關(guān)鍵詞: :用用Verilog語(yǔ)言本身規(guī)定的特殊字符串定義語(yǔ)言的結(jié)構(gòu)。語(yǔ)言本身規(guī)定的特殊字符串定義語(yǔ)言的結(jié)構(gòu)。例如,例如,module、endmodule、input、output、wire、reg、and等都是關(guān)鍵詞。等都是關(guān)鍵詞。關(guān)鍵詞都是小寫(xiě),關(guān)鍵詞都是小寫(xiě),關(guān)鍵詞不能作為標(biāo)識(shí)符使用關(guān)鍵詞不能作為標(biāo)識(shí)
4、符使用 。3標(biāo)識(shí)符和關(guān)鍵詞標(biāo)識(shí)符和關(guān)鍵詞5為了表示數(shù)字邏輯電路的邏輯狀態(tài),為了表示數(shù)字邏輯電路的邏輯狀態(tài),Verilog語(yǔ)言規(guī)定了語(yǔ)言規(guī)定了4 4種基本的邏輯值。種基本的邏輯值。 0邏輯邏輯0、邏輯假邏輯假 1邏輯邏輯1、邏輯真邏輯真 x或或X不確定的值(未知狀態(tài))不確定的值(未知狀態(tài)) z或或Z高阻態(tài)高阻態(tài)3.1.2 邏輯值集合邏輯值集合63.1.3 常量及其表示常量及其表示三種類(lèi)型的常量三種類(lèi)型的常量整數(shù)型常量整數(shù)型常量實(shí)數(shù)型常量實(shí)數(shù)型常量字符串型常量字符串型常量實(shí)數(shù)型常量實(shí)數(shù)型常量十進(jìn)制記數(shù)法十進(jìn)制記數(shù)法 如:如: 0.10.1、2.02.0、5.675.67科學(xué)記數(shù)法科學(xué)記數(shù)法 如如:
5、 : 23_5.1e2、5E4 23510.0、 0.0005十進(jìn)制數(shù)形式的表示方法十進(jìn)制數(shù)形式的表示方法: :表示有符號(hào)表示有符號(hào)常量常量例如:例如:3030、2 2帶基數(shù)形式的表示方法帶基數(shù)形式的表示方法: :格式為:格式為: 整數(shù)型整數(shù)型常量常量例如:例如:3b101、5o37、8he3,8b1001_0011 73.1.3 常量及其表示常量及其表示;Verilog 允許用參數(shù)定義語(yǔ)句定義一個(gè)標(biāo)識(shí)符來(lái)代表一個(gè)常量,允許用參數(shù)定義語(yǔ)句定義一個(gè)標(biāo)識(shí)符來(lái)代表一個(gè)常量,稱(chēng)為稱(chēng)為符號(hào)常量符號(hào)常量。定義的格式為:。定義的格式為: parameter 參數(shù)名參數(shù)名1 1常量表達(dá)式常量表達(dá)式1 1,參數(shù)
6、名,參數(shù)名2 2常量表達(dá)式常量表達(dá)式2 2如如 parameter BIT=1, BYTE=8, PI=3.14;字符串常量字符串常量字符串是用雙撇號(hào)括起來(lái)的字符序列,它必須包含在同一行字符串是用雙撇號(hào)括起來(lái)的字符序列,它必須包含在同一行中,不能分成多行書(shū)寫(xiě)。例如:中,不能分成多行書(shū)寫(xiě)。例如: this is a string hello world!符號(hào)常量符號(hào)常量83.1.4 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型變量的數(shù)據(jù)類(lèi)型變量的數(shù)據(jù)類(lèi)型寄存器型寄存器型線(xiàn)網(wǎng)型線(xiàn)網(wǎng)型線(xiàn)網(wǎng)類(lèi)線(xiàn)網(wǎng)類(lèi): :是指輸出始終根據(jù)輸入的變化而更新其值的變量是指輸出始終根據(jù)輸入的變化而更新其值的變量, ,它一般指的是硬件電路中的各種物理連接
7、它一般指的是硬件電路中的各種物理連接. . 常用的網(wǎng)絡(luò)類(lèi)型由關(guān)鍵詞常用的網(wǎng)絡(luò)類(lèi)型由關(guān)鍵詞wire定義定義, ,格式如下:格式如下:wire n-1:0 變量名變量名1,變量名,變量名2,變量名,變量名n;變量寬度變量寬度例例:網(wǎng)絡(luò)型變量網(wǎng)絡(luò)型變量L的值由與門(mén)的驅(qū)動(dòng)的值由與門(mén)的驅(qū)動(dòng)信號(hào)信號(hào)A和和B所所決定,即決定,即LA&B。A、B的的值值發(fā)生變化,線(xiàn)網(wǎng)發(fā)生變化,線(xiàn)網(wǎng)L的值會(huì)立即跟著變化。的值會(huì)立即跟著變化。 B A L G1 9表3.1.3 線(xiàn)網(wǎng)類(lèi)型變量及其說(shuō)明線(xiàn)網(wǎng)類(lèi)型線(xiàn)網(wǎng)類(lèi)型功能說(shuō)明功能說(shuō)明wire, tri用于表示單元(元件)之間的連線(xiàn),wire為一般連線(xiàn);tri用于描述由多個(gè)信號(hào)源驅(qū)動(dòng)的
8、線(xiàn)網(wǎng),并沒(méi)有其他特殊意義,兩者的功能完全相同。wor, trior具有線(xiàn)或特性的線(xiàn)網(wǎng),用于一個(gè)線(xiàn)網(wǎng)被多個(gè)信號(hào)驅(qū)動(dòng)的情況wand, riand具有線(xiàn)與特性的線(xiàn)網(wǎng),用于一個(gè)線(xiàn)網(wǎng)被多個(gè)信號(hào)驅(qū)動(dòng)的情況trireg具有電荷保持特性的線(xiàn)網(wǎng)類(lèi)型,用于開(kāi)關(guān)級(jí)建模tri1上拉電阻,用于開(kāi)關(guān)級(jí)建模tri0下拉電阻,用于開(kāi)關(guān)級(jí)建模supply1用于對(duì)電源建模,高電平1 supply0用于對(duì)地建模,低電平0 10關(guān)于關(guān)于“多重驅(qū)動(dòng)多重驅(qū)動(dòng)”o 在寫(xiě)可綜合的在寫(xiě)可綜合的Verilog代碼時(shí),建議不要對(duì)同一個(gè)變量代碼時(shí),建議不要對(duì)同一個(gè)變量進(jìn)行多次賦值(簡(jiǎn)稱(chēng)多重驅(qū)動(dòng)),以避免出現(xiàn)多個(gè)信號(hào)進(jìn)行多次賦值(簡(jiǎn)稱(chēng)多重驅(qū)動(dòng)),以避
9、免出現(xiàn)多個(gè)信號(hào)同時(shí)驅(qū)動(dòng)一個(gè)輸出變量的情況。同時(shí)驅(qū)動(dòng)一個(gè)輸出變量的情況。BLAC圖圖3.13.1.2 .2多重驅(qū)動(dòng)示意圖多重驅(qū)動(dòng)示意圖o 例如,例如,A、B、C三個(gè)內(nèi)部信號(hào)同時(shí)三個(gè)內(nèi)部信號(hào)同時(shí)接到(驅(qū)動(dòng))一個(gè)輸出端接到(驅(qū)動(dòng))一個(gè)輸出端L。 或者說(shuō),輸出或者說(shuō),輸出L同時(shí)被三個(gè)內(nèi)部信同時(shí)被三個(gè)內(nèi)部信號(hào)所驅(qū)動(dòng)。號(hào)所驅(qū)動(dòng)。 此時(shí)此時(shí)L的邏輯值可能無(wú)法確定。的邏輯值可能無(wú)法確定。113.1.4 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型變量的數(shù)據(jù)類(lèi)型變量的數(shù)據(jù)類(lèi)型寄存器型寄存器型線(xiàn)網(wǎng)型線(xiàn)網(wǎng)型寄存器型變量對(duì)應(yīng)的是具有狀態(tài)保持作用的電路等元件寄存器型變量對(duì)應(yīng)的是具有狀態(tài)保持作用的電路等元件, ,如觸如觸發(fā)器寄存器。寄存器型變量只能
10、在發(fā)器寄存器。寄存器型變量只能在initial或或always內(nèi)部被賦值。內(nèi)部被賦值。12寄存器變量類(lèi)型寄存器變量類(lèi)型寄存器類(lèi)型功能說(shuō)明reg常用的寄存器型變量integer32位帶符號(hào)的整數(shù)型變量real/realtime64位帶符號(hào)的實(shí)數(shù)型變量time64位無(wú)符號(hào)的時(shí)間變量表表3.1.5 寄存器變量類(lèi)型及其說(shuō)明寄存器變量類(lèi)型及其說(shuō)明例:例: reg clock; /一個(gè)一個(gè)1位寄存器變量的聲明位寄存器變量的聲明 reg 3:0 counter; /一個(gè)一個(gè)4位位寄存器變量的聲明寄存器變量的聲明抽象描述抽象描述, ,不對(duì)應(yīng)具不對(duì)應(yīng)具體硬件體硬件end13o 硬件模型的區(qū)別硬件模型的區(qū)別o 仿
11、真過(guò)程的區(qū)別仿真過(guò)程的區(qū)別14線(xiàn)網(wǎng)變量和寄存器線(xiàn)網(wǎng)變量和寄存器變量變量類(lèi)型的區(qū)別類(lèi)型的區(qū)別3.2 Verilog HDL門(mén)級(jí)建模門(mén)級(jí)建模3.2.1 多輸入門(mén)多輸入門(mén)3.2.4 門(mén)級(jí)建模舉例門(mén)級(jí)建模舉例3.2.2 多輸出門(mén)多輸出門(mén)3.2.3 三態(tài)門(mén)三態(tài)門(mén)15基本概念:基本概念:o 結(jié)構(gòu)級(jí)建模結(jié)構(gòu)級(jí)建模: 就是根據(jù)邏輯電路的結(jié)構(gòu)(邏輯就是根據(jù)邏輯電路的結(jié)構(gòu)(邏輯圖),實(shí)例引用圖),實(shí)例引用Verilog HDL中內(nèi)置的基本門(mén)級(jí)中內(nèi)置的基本門(mén)級(jí)元件或者用戶(hù)定義的元件或其他模塊,來(lái)描述結(jié)元件或者用戶(hù)定義的元件或其他模塊,來(lái)描述結(jié)構(gòu)圖中的元件以及元件之間的連接關(guān)系。構(gòu)圖中的元件以及元件之間的連接關(guān)系。o
12、 門(mén)級(jí)建模門(mén)級(jí)建模: Verilog HDL中內(nèi)置了中內(nèi)置了12個(gè)基本門(mén)級(jí)元個(gè)基本門(mén)級(jí)元件(件(Primitive,有的翻譯為,有的翻譯為“原語(yǔ)原語(yǔ)”)模型,引)模型,引用這些基本門(mén)級(jí)元件對(duì)邏輯圖進(jìn)行描述,也稱(chēng)為用這些基本門(mén)級(jí)元件對(duì)邏輯圖進(jìn)行描述,也稱(chēng)為門(mén)級(jí)建模門(mén)級(jí)建模。 16原原語(yǔ)語(yǔ) 多輸入門(mén):多輸入門(mén):and、nand、or、nor、xor、xnor 只有單個(gè)輸出只有單個(gè)輸出,1個(gè)或多個(gè)輸入個(gè)或多個(gè)輸入多輸出門(mén):多輸出門(mén):not、buf 允許有多個(gè)輸出允許有多個(gè)輸出,但只有一個(gè)輸入但只有一個(gè)輸入三態(tài)門(mén):三態(tài)門(mén):bufif0、bufif1、notif0、notif1 有一個(gè)輸出有一個(gè)輸出,一
13、個(gè)數(shù)據(jù)輸入和一個(gè)控制輸入一個(gè)數(shù)據(jù)輸入和一個(gè)控制輸入上拉電阻上拉電阻pullup、下拉電阻、下拉電阻pulldown176.4.1 多輸入門(mén)多輸入門(mén)原語(yǔ)名稱(chēng)原語(yǔ)名稱(chēng)圖形符號(hào)圖形符號(hào)邏輯表達(dá)式邏輯表達(dá)式and(與門(mén))(與門(mén))L = A & Bnand(與非門(mén))(與非門(mén))L = (A & B)or(或門(mén))(或門(mén))L = A | Bnor(或非門(mén))(或非門(mén))L =( A | B)xor(異或門(mén))(異或門(mén))L = A Bxnor(同或門(mén))(同或門(mén))L = A Bp 共共6個(gè):個(gè): and、nand、or、nor、xor、xnorp 特點(diǎn):只有特點(diǎn):只有1個(gè)輸出個(gè)輸出, 有多個(gè)輸入有多個(gè)輸入多輸入門(mén)的一般
14、引用格式為:多輸入門(mén)的一般引用格式為:Gate_ name (OutputA, Input1, Input2, InputN);18若同一個(gè)基本門(mén)在當(dāng)前模塊中被調(diào)用多次,可在一條調(diào)若同一個(gè)基本門(mén)在當(dāng)前模塊中被調(diào)用多次,可在一條調(diào)用語(yǔ)句中加以說(shuō)明,用語(yǔ)句中加以說(shuō)明,中間以逗號(hào)相隔中間以逗號(hào)相隔。 and A1(out,in1,in2,in3););xnor NX1(out,in1,in2,in3,in4);); 對(duì)基本門(mén)級(jí)元件,調(diào)用名對(duì)基本門(mén)級(jí)元件,調(diào)用名A1A1、NX1NX1可以省略。可以省略。 19真值表舉例真值表舉例表表3.2.2 and、nand真值表真值表and輸入輸入1nand輸入輸
15、入101xz01xz輸輸入入200000輸輸入入201111101xx110 xxx0 xxxx1xxxz0 xxxz1xxx203.2.2 多輸出門(mén)多輸出門(mén)允許有多個(gè)輸出,但只有一個(gè)輸入。允許有多個(gè)輸出,但只有一個(gè)輸入。 not N1(out1,out2,in););xx10zx10輸輸 入入buf輸輸 出出 buf真值表真值表 輸輸 出出xx01zx10輸輸 入入notnot真值表真值表 buf B1(out1,out2,in););out1inout2outN213.2.3 三態(tài)門(mén)三態(tài)門(mén)有一個(gè)輸出、一個(gè)數(shù)據(jù)輸入和一個(gè)輸入控制。有一個(gè)輸出、一個(gè)數(shù)據(jù)輸入和一個(gè)輸入控制。如果輸入控制信號(hào)無(wú)效,
16、則三態(tài)門(mén)的輸出為高阻態(tài)如果輸入控制信號(hào)無(wú)效,則三態(tài)門(mén)的輸出為高阻態(tài)z。 (a)bufif1 (b)notif1 in out ctrl in out ctrl 22boutasel/Gate-level descriptionmodule _2to1muxtri (a,b,sel,out); input a,b,sel; output out; tri out; bufif1 (out,b,sel); bufif0 (out,a,sel); endmodule 2選選1數(shù)據(jù)選擇器數(shù)據(jù)選擇器一些一些Verilog原型原型(Primitive)小結(jié):小結(jié):門(mén)級(jí)建模就是列出電路圖結(jié)構(gòu)中的元件,并按網(wǎng)
17、表連接門(mén)級(jí)建模就是列出電路圖結(jié)構(gòu)中的元件,并按網(wǎng)表連接 。3.2.4 門(mén)級(jí)建模舉例門(mén)級(jí)建模舉例23module addbit (a, b, ci, sum, co); input a, b, ci; output sum, co; wire a, b, ci, sum, co, n1, n2, n3; xor u0(n1, a, b,), u1(sum, n1, ci); and u2(n2, a, b), u3(n3, n1, ci); or (co, n2, n3); endmodule 1位全加器位全加器3.2.4 門(mén)級(jí)建模舉例門(mén)級(jí)建模舉例24門(mén)級(jí)描述小結(jié):門(mén)級(jí)描述小結(jié):1. 1.給電路
18、圖中的每個(gè)輸入輸出引腳給電路圖中的每個(gè)輸入輸出引腳 賦以賦以 端口名端口名. .2. 2.給電路圖中每條給電路圖中每條內(nèi)部連線(xiàn)內(nèi)部連線(xiàn) 取上各自的連線(xiàn)名取上各自的連線(xiàn)名. .3. 3.給電路圖中的每個(gè)邏輯元件取一個(gè)編號(hào)給電路圖中的每個(gè)邏輯元件取一個(gè)編號(hào) ( (即即“調(diào)用名調(diào)用名”). ).4. 4.給所要描述的這個(gè)電路模塊確定一個(gè)給所要描述的這個(gè)電路模塊確定一個(gè)模塊名模塊名. .5. 5.用用modulemodule定義相應(yīng)模塊名的結(jié)構(gòu)描述定義相應(yīng)模塊名的結(jié)構(gòu)描述, ,并將邏輯圖中所有的并將邏輯圖中所有的輸入輸入輸出端口名列入端口名表項(xiàng)輸出端口名列入端口名表項(xiàng)中中, ,再完成對(duì)各端口的再完成對(duì)
19、各端口的輸入輸出類(lèi)型輸入輸出類(lèi)型說(shuō)明說(shuō)明. .6. 6.依照電路圖中的依照電路圖中的連接關(guān)系連接關(guān)系, ,確定各單元之間端口信號(hào)的連接確定各單元之間端口信號(hào)的連接, ,完完成對(duì)電路圖內(nèi)部的結(jié)構(gòu)描述成對(duì)電路圖內(nèi)部的結(jié)構(gòu)描述. .7. 7.最后用最后用endmoduleendmodule結(jié)束模塊描述全過(guò)程結(jié)束模塊描述全過(guò)程. .end253.3 Verilog HDL數(shù)據(jù)流建模與運(yùn)算符數(shù)據(jù)流建模與運(yùn)算符3.3.1 數(shù)據(jù)流建模數(shù)據(jù)流建模3.3.2 運(yùn)算符及其優(yōu)先級(jí)運(yùn)算符及其優(yōu)先級(jí)263.3 Verilog HDL數(shù)據(jù)流建模與運(yùn)算符數(shù)據(jù)流建模與運(yùn)算符對(duì)于基本單元邏輯電路,使用對(duì)于基本單元邏輯電路,使用
20、Verilog語(yǔ)言提供的門(mén)級(jí)元件語(yǔ)言提供的門(mén)級(jí)元件模型描述電路非常方便。模型描述電路非常方便。 但隨著電路復(fù)雜性的增加,使用的邏輯門(mén)較多時(shí),使用但隨著電路復(fù)雜性的增加,使用的邏輯門(mén)較多時(shí),使用HDL門(mén)級(jí)描述的工作效率就很低。門(mén)級(jí)描述的工作效率就很低。本節(jié)介紹的本節(jié)介紹的數(shù)據(jù)流建模數(shù)據(jù)流建模能夠在較高的抽象級(jí)別描述電路的邏能夠在較高的抽象級(jí)別描述電路的邏輯功能,并且通過(guò)輯功能,并且通過(guò)邏輯綜合邏輯綜合軟件,能夠自動(dòng)地將數(shù)據(jù)流描述軟件,能夠自動(dòng)地將數(shù)據(jù)流描述轉(zhuǎn)換成為門(mén)級(jí)電路。轉(zhuǎn)換成為門(mén)級(jí)電路。 數(shù)據(jù)流建模主要使用邏輯表達(dá)式,所以要了解各種運(yùn)算符和數(shù)據(jù)流建模主要使用邏輯表達(dá)式,所以要了解各種運(yùn)算符和
21、表達(dá)式。表達(dá)式。273.3.1 數(shù)據(jù)流建模數(shù)據(jù)流建模p 數(shù)據(jù)流建模使用的連續(xù)賦值語(yǔ)句,由關(guān)鍵詞數(shù)據(jù)流建模使用的連續(xù)賦值語(yǔ)句,由關(guān)鍵詞assign開(kāi)始,后面跟著由開(kāi)始,后面跟著由操作數(shù)操作數(shù)和和運(yùn)算符運(yùn)算符等組成的等組成的邏輯表達(dá)邏輯表達(dá)式式。p一般用法如下:一般用法如下: wire 位寬說(shuō)明位寬說(shuō)明 變量名變量名1,變量名,變量名2,變量名,變量名n; assign 變量名表達(dá)式;變量名表達(dá)式;p注意,注意,assign 語(yǔ)句只能對(duì)語(yǔ)句只能對(duì)wire型變量進(jìn)行賦值,所以等號(hào)型變量進(jìn)行賦值,所以等號(hào)左邊變量名的數(shù)據(jù)類(lèi)型必須是左邊變量名的數(shù)據(jù)類(lèi)型必須是wire型。型。28module mux2to
22、1_dataflow(D0, D1, S, Y ); input D0, D1, S; output Y; wire Y ; /下面是邏輯功能描述下面是邏輯功能描述 assign Y = (S & D0) | (S & D1); /表達(dá)式左邊表達(dá)式左邊Y必須是必須是wire型型endmodule 端口類(lèi)型說(shuō)明端口類(lèi)型說(shuō)明電路結(jié)構(gòu)描述電路結(jié)構(gòu)描述數(shù)據(jù)類(lèi)型說(shuō)明數(shù)據(jù)類(lèi)型說(shuō)明例例 用數(shù)據(jù)流描述方式建立模型用數(shù)據(jù)流描述方式建立模型SDSDY1029module mux2x1_df (D0,D1,S,L); input D0,D1,S; output L; assign L = S ? D1 : D0;e
23、ndmodule 例:用條件運(yùn)算符描述了一個(gè)例:用條件運(yùn)算符描述了一個(gè)2選選1的數(shù)據(jù)選擇器。的數(shù)據(jù)選擇器。條件運(yùn)算符:如果條件運(yùn)算符:如果S1,則輸出,則輸出LD1;否則否則LD0。30module decoder_df (A1,A0,E,Y); input A1,A0,E; output 3:0 Y; assign Y0 = (A1 & A0 & E); assign Y1 = (A1 & A0 & E); assign Y2 = (A1 & A0 & E); assign Y3 = (A1 & A0 & E);endmodule Y2 A1 A0 Y1 Y0 Y3 E 例:用數(shù)據(jù)流建模方法
24、對(duì)例:用數(shù)據(jù)流建模方法對(duì)2線(xiàn)線(xiàn)-4線(xiàn)譯碼器的行為進(jìn)行描述。線(xiàn)譯碼器的行為進(jìn)行描述。 313.3.2 運(yùn)算符及其優(yōu)先級(jí)運(yùn)算符及其優(yōu)先級(jí)1.運(yùn)算符運(yùn)算符 (9類(lèi)類(lèi))?:條件運(yùn)算符條件運(yùn)算符 連接運(yùn)算符連接運(yùn)算符邏輯移位運(yùn)算符邏輯移位運(yùn)算符=, !=, =, !=相等與全等運(yùn)算符相等與全等運(yùn)算符, =關(guān)系運(yùn)算符(雙目)關(guān)系運(yùn)算符(雙目)!, &, |邏輯運(yùn)算符邏輯運(yùn)算符&, &, |,|, , or 縮位運(yùn)算符縮位運(yùn)算符(單目單目),&,|,or位運(yùn)算符位運(yùn)算符+, -, *, /, %算術(shù)運(yùn)算符算術(shù)運(yùn)算符所含運(yùn)算符所含運(yùn)算符運(yùn)算符分類(lèi)運(yùn)算符分類(lèi)32對(duì)同一個(gè)操作數(shù)的重復(fù)拼接還可以雙重大括號(hào)構(gòu)成的運(yùn)算
25、符對(duì)同一個(gè)操作數(shù)的重復(fù)拼接還可以雙重大括號(hào)構(gòu)成的運(yùn)算符例如例如4A=4b1111,2A,2B,C=8b11101000。作用是將兩個(gè)或多個(gè)信號(hào)的某些位拼接起來(lái)成為一個(gè)新的操作用是將兩個(gè)或多個(gè)信號(hào)的某些位拼接起來(lái)成為一個(gè)新的操作數(shù),進(jìn)行運(yùn)算操作。作數(shù),進(jìn)行運(yùn)算操作。位拼接運(yùn)算符位拼接運(yùn)算符設(shè)設(shè)A=1b1,B=2b10,C=2b00則則B,C4b1000A,B1,C03b110A,B,C,3b101=8b11000101。33位運(yùn)算符與縮位運(yùn)算的比較位運(yùn)算符與縮位運(yùn)算的比較 A:4b1010 、B:4b1111,AB= 1010 AB= 0101A|B= 1111 A&B= 1010A = 010
26、1B = 0000 位運(yùn)算位運(yùn)算A=1B=1A=0B=0|A=1|B=0&A=1&B=1&A=1&0&1&0=0 縮位運(yùn)算縮位運(yùn)算34a、b的初值同為的初值同為4b0100,c和和d的初值同為的初值同為4b10 x0a= =ba!=ba= = =ba!= =b1010c= =dc!=dc= = =dc!= =dxx10相等與全等運(yùn)算符相等與全等運(yùn)算符(邏輯相等),(邏輯相等), ! !(邏輯不等)(邏輯不等)(條件全等),(條件全等),! !(條件不全等)(條件不全等) 35一般用法:一般用法: condition_expr?expr1:expr2;條件運(yùn)算符條件運(yùn)算符是三目運(yùn)算符,運(yùn)算時(shí)根據(jù)
27、條件表達(dá)式的值選擇表達(dá)式。是三目運(yùn)算符,運(yùn)算時(shí)根據(jù)條件表達(dá)式的值選擇表達(dá)式。首先計(jì)算第一個(gè)操作數(shù)首先計(jì)算第一個(gè)操作數(shù)condition_expr的值,如果結(jié)果為邏輯的值,如果結(jié)果為邏輯1,則選擇第二個(gè)操作數(shù)則選擇第二個(gè)操作數(shù)expr1的值作為結(jié)果返回,結(jié)果為邏輯的值作為結(jié)果返回,結(jié)果為邏輯0,選擇第三個(gè)操作數(shù)選擇第三個(gè)操作數(shù)expr2的值作為結(jié)果返回。的值作為結(jié)果返回。362. 運(yùn)算符的優(yōu)先級(jí)運(yùn)算符的優(yōu)先級(jí)優(yōu)先級(jí)的順序從下向上依次增加。優(yōu)先級(jí)的順序從下向上依次增加。類(lèi)型類(lèi)型符號(hào)符號(hào)優(yōu)先級(jí)別優(yōu)先級(jí)別取反取反! -(求求2的補(bǔ)碼的補(bǔ)碼)最高優(yōu)先級(jí)最高優(yōu)先級(jí)算術(shù)算術(shù)* /+ -最低優(yōu)先級(jí)最低優(yōu)先級(jí)移
28、位移位 關(guān)系關(guān)系 =等于等于= !=縮位縮位& & | |邏輯邏輯&|條件條件?:end373.4 組合電路的行為級(jí)建模組合電路的行為級(jí)建模3.4 Verilog HDL行為級(jí)建模行為級(jí)建模行為級(jí)建模就是描述數(shù)字邏輯電路的行為級(jí)建模就是描述數(shù)字邏輯電路的功能和算法功能和算法。在在Verilog中,行為級(jí)描述主要使用由關(guān)鍵詞中,行為級(jí)描述主要使用由關(guān)鍵詞initial或或always定定義的兩種結(jié)構(gòu)類(lèi)型的語(yǔ)句。一個(gè)模塊的內(nèi)部可以包含多個(gè)義的兩種結(jié)構(gòu)類(lèi)型的語(yǔ)句。一個(gè)模塊的內(nèi)部可以包含多個(gè)initial或或always語(yǔ)句語(yǔ)句。 initial語(yǔ)句是一條初始化語(yǔ)句,僅執(zhí)行一次,經(jīng)常用于測(cè)試模語(yǔ)句是一
29、條初始化語(yǔ)句,僅執(zhí)行一次,經(jīng)常用于測(cè)試模塊中,對(duì)激勵(lì)信號(hào)進(jìn)行描述,在硬件電路的行為描述中,有塊中,對(duì)激勵(lì)信號(hào)進(jìn)行描述,在硬件電路的行為描述中,有時(shí)為了仿真的需要,也用時(shí)為了仿真的需要,也用initial語(yǔ)句給寄存器變量賦初值。語(yǔ)句給寄存器變量賦初值。initial語(yǔ)句主要是一條面向語(yǔ)句主要是一條面向仿真仿真的過(guò)程語(yǔ)句,不能用于邏輯的過(guò)程語(yǔ)句,不能用于邏輯綜合綜合 。這里不介紹它的用法。這里不介紹它的用法。在在always結(jié)構(gòu)型語(yǔ)句內(nèi)部有一系列過(guò)程性賦值語(yǔ)句,用來(lái)描結(jié)構(gòu)型語(yǔ)句內(nèi)部有一系列過(guò)程性賦值語(yǔ)句,用來(lái)描述電路的功能(行為)。述電路的功能(行為)。393.4.1 行為級(jí)建模基礎(chǔ)行為級(jí)建模基礎(chǔ)
30、下面介紹行為級(jí)建模中經(jīng)常使用的語(yǔ)句:下面介紹行為級(jí)建模中經(jīng)常使用的語(yǔ)句:1. always語(yǔ)句結(jié)構(gòu)及過(guò)程賦值語(yǔ)句語(yǔ)句結(jié)構(gòu)及過(guò)程賦值語(yǔ)句2. 條件語(yǔ)句(條件語(yǔ)句(if-else)3. 多路分支語(yǔ)句(多路分支語(yǔ)句(case-endcase)4. for循環(huán)語(yǔ)句(例如循環(huán)語(yǔ)句(例如 for等)等)401. always語(yǔ)句的一般用法:語(yǔ)句的一般用法:always (事件控制表達(dá)式事件控制表達(dá)式)begin:塊名:塊名 塊內(nèi)局部變量的定義;塊內(nèi)局部變量的定義; 過(guò)程賦值語(yǔ)句過(guò)程賦值語(yǔ)句(包括高級(jí)語(yǔ)句)(包括高級(jí)語(yǔ)句);endbeginend 之間只有一條語(yǔ)句時(shí),關(guān)鍵詞可以省略;之間只有一條語(yǔ)句時(shí),關(guān)鍵
31、詞可以省略;beginend 之間的多條語(yǔ)句被稱(chēng)為之間的多條語(yǔ)句被稱(chēng)為順序語(yǔ)句塊。順序語(yǔ)句塊。可以給可以給語(yǔ)句語(yǔ)句塊塊取一個(gè)名字,稱(chēng)為取一個(gè)名字,稱(chēng)為有名塊有名塊。 “”稱(chēng)為事件控制運(yùn)算符,稱(chēng)為事件控制運(yùn)算符,用于掛起某個(gè)動(dòng)作,直到事件用于掛起某個(gè)動(dòng)作,直到事件發(fā)生發(fā)生。“事件控制表達(dá)式事件控制表達(dá)式”也稱(chēng)為敏感事件表也稱(chēng)為敏感事件表,它是后面,它是后面begin和和end之間的語(yǔ)句執(zhí)行的條件。當(dāng)事件發(fā)生或某一特定之間的語(yǔ)句執(zhí)行的條件。當(dāng)事件發(fā)生或某一特定的條件變?yōu)榈臈l件變?yōu)椤罢嬲妗睍r(shí),后面的過(guò)程賦值語(yǔ)句就會(huì)被執(zhí)行。時(shí),后面的過(guò)程賦值語(yǔ)句就會(huì)被執(zhí)行。41(3) if (condition_ex
32、pr1) true_statement1; else if (condition_expr2) true_statement2; else if (condition_expr3) true_statement3; else default_statement;2、條件語(yǔ)句(、條件語(yǔ)句( if語(yǔ)句)語(yǔ)句)條件語(yǔ)句就是根據(jù)判斷條件是否成立,確定下一步的運(yùn)算。條件語(yǔ)句就是根據(jù)判斷條件是否成立,確定下一步的運(yùn)算。(1) if (condition_expr) true_statement;(2) if (condition_expr)true_statement; else fale_ statem
33、ent;Verilog語(yǔ)言中有語(yǔ)言中有3種形式的種形式的if語(yǔ)句:語(yǔ)句:if后面的條件表達(dá)式一般為邏輯表達(dá)式或關(guān)系表達(dá)式。執(zhí)行后面的條件表達(dá)式一般為邏輯表達(dá)式或關(guān)系表達(dá)式。執(zhí)行if語(yǔ)句時(shí),首先計(jì)算表達(dá)式的值,若結(jié)果為語(yǔ)句時(shí),首先計(jì)算表達(dá)式的值,若結(jié)果為0、x或或z,按,按“假假”處理;若結(jié)果為處理;若結(jié)果為1,按,按“真真”處理,并執(zhí)行相應(yīng)的語(yǔ)句。處理,并執(zhí)行相應(yīng)的語(yǔ)句。 42例:使用例:使用if-else語(yǔ)句對(duì)語(yǔ)句對(duì)4選選1數(shù)據(jù)選擇器的行為進(jìn)行描述數(shù)據(jù)選擇器的行為進(jìn)行描述注意,過(guò)程賦值語(yǔ)句只能給寄存器型變量賦值,因此,輸出注意,過(guò)程賦值語(yǔ)句只能給寄存器型變量賦值,因此,輸出變量變量Y的數(shù)據(jù)類(lèi)
34、型定義為的數(shù)據(jù)類(lèi)型定義為reg。 D0 D1 0 1 Y D2 D3 0 1 S1 0 1 S0 Y0 Y1 module mux4to1_bh(D, S, Y); input 3:0 D; /輸入端口輸入端口 input 1:0 S; /輸入端口輸入端口 output reg Y; /輸出端口及變量數(shù)據(jù)類(lèi)型輸出端口及變量數(shù)據(jù)類(lèi)型 always (D, S) /電路功能描述電路功能描述 if (S = 2b00) Y = D0; else if (S= 2b01) Y = D1; else if (S= 2b10) Y = D2; else Y = D3;endmodule 43是一種多分支條
35、件選擇語(yǔ)句,一般形式如下是一種多分支條件選擇語(yǔ)句,一般形式如下case (case_expr) item_expr1: statement1; item_expr2: statement2; default: default_statement; /default語(yǔ)句可以省略語(yǔ)句可以省略endcase注意:當(dāng)分支項(xiàng)中的語(yǔ)句是多條語(yǔ)句,必須在最前面寫(xiě)上注意:當(dāng)分支項(xiàng)中的語(yǔ)句是多條語(yǔ)句,必須在最前面寫(xiě)上關(guān)鍵詞關(guān)鍵詞begin,在最后寫(xiě)上關(guān)鍵詞,在最后寫(xiě)上關(guān)鍵詞end,成為順序語(yǔ)句塊。,成為順序語(yǔ)句塊。另外,用關(guān)鍵詞另外,用關(guān)鍵詞casex和和casez表示含有無(wú)關(guān)項(xiàng)表示含有無(wú)關(guān)項(xiàng)x和高阻和高阻z的
36、的情況。情況。 3、多路分支語(yǔ)句(、多路分支語(yǔ)句(case語(yǔ)句)語(yǔ)句)44例:對(duì)具有使能端例:對(duì)具有使能端En 的的4選選1數(shù)據(jù)選擇器的行為進(jìn)行數(shù)據(jù)選擇器的行為進(jìn)行Verilog描述。描述。當(dāng)當(dāng)En=0時(shí),數(shù)據(jù)選擇器工作,時(shí),數(shù)據(jù)選擇器工作,En=1時(shí),禁止工作,輸出為時(shí),禁止工作,輸出為0。 module mux4to1_bh (D, S, Y,En); input 3:0 D,1:0 S; input En; output reg Y; always (D, S, En) /2001, 2005 syntax begin if (En=1) Y = 0; /En=1時(shí),輸出為時(shí),輸出為0
37、else /En=0時(shí),選擇器工作時(shí),選擇器工作 case (S) 2d0: Y = D0; 2d1: Y = D1; 2d2: Y = D2; 2d3: Y = D3; endcase endendmodule 45一般形式如下一般形式如下for (initial_assignment; condition; step_assignment) statement;pinitial_assignment 為循環(huán)變量的初始值。為循環(huán)變量的初始值。pcondition為循環(huán)的條件,為循環(huán)的條件,若為真,執(zhí)行過(guò)程賦值語(yǔ)句若為真,執(zhí)行過(guò)程賦值語(yǔ)句statement,若不成立,循環(huán)結(jié)束,執(zhí)行若不成立,循
38、環(huán)結(jié)束,執(zhí)行for后面的語(yǔ)句。后面的語(yǔ)句。pstep_assignment為循環(huán)變量的步長(zhǎng),每次迭代后,循環(huán)變量為循環(huán)變量的步長(zhǎng),每次迭代后,循環(huán)變量將增加或減少一個(gè)步長(zhǎng)。將增加或減少一個(gè)步長(zhǎng)。4、for循環(huán)語(yǔ)句循環(huán)語(yǔ)句46module ecoder3to8_bh(A,En,Y); input 2:0 A,En; output reg 7:0Y; integer k; /聲明一個(gè)整型變量聲明一個(gè)整型變量k always (A, En) / begin Y = 8b1111_1111; /設(shè)譯碼器輸出的默認(rèn)值設(shè)譯碼器輸出的默認(rèn)值 for(k = 0; k = 7; k = k+1) /下面的下面
39、的if-else語(yǔ)句循環(huán)語(yǔ)句循環(huán)8次次 if (En=1) & (A= k) ) Yk = 0; /當(dāng)當(dāng)En=1時(shí),根據(jù)時(shí),根據(jù)A進(jìn)行譯碼進(jìn)行譯碼 else Yk = 1; /處理使能無(wú)效或輸入無(wú)效的情況處理使能無(wú)效或輸入無(wú)效的情況 end endmodule 試用試用Verilog語(yǔ)言語(yǔ)言描述具有高電平使能的描述具有高電平使能的3線(xiàn)線(xiàn)-8線(xiàn)譯碼器線(xiàn)譯碼器. . 循環(huán)循環(huán)8次次47 3.5.1 設(shè)計(jì)方法設(shè)計(jì)方法 3.5.2 模塊實(shí)例引用語(yǔ)句模塊實(shí)例引用語(yǔ)句 3.5 分層次的電路設(shè)計(jì)方法分層次的電路設(shè)計(jì)方法3.5.1 設(shè)計(jì)方法設(shè)計(jì)方法p 分層次建模就是將一個(gè)比較復(fù)雜數(shù)字電路劃分為多個(gè)組成分層次建
40、模就是將一個(gè)比較復(fù)雜數(shù)字電路劃分為多個(gè)組成模塊,分別對(duì)每個(gè)模塊建模,然后將這些模塊組合成一個(gè)總模塊,分別對(duì)每個(gè)模塊建模,然后將這些模塊組合成一個(gè)總模塊,完成所需的功能。模塊,完成所需的功能。p 通常有自頂向下(通常有自頂向下(top-down)和自底向上()和自底向上(bottom-up)p自頂向下自頂向下:先將最終設(shè)計(jì)目標(biāo)定義成頂層模塊,再按一定方先將最終設(shè)計(jì)目標(biāo)定義成頂層模塊,再按一定方法將頂層模塊劃分成各個(gè)子模塊,然后對(duì)子模塊進(jìn)行邏輯設(shè)法將頂層模塊劃分成各個(gè)子模塊,然后對(duì)子模塊進(jìn)行邏輯設(shè)計(jì)。計(jì)。p自底向上自底向上: 由基本元件構(gòu)成的各個(gè)子模塊首先被確定下來(lái),由基本元件構(gòu)成的各個(gè)子模塊首先
41、被確定下來(lái),然后將這些子模塊組合起來(lái)構(gòu)成頂層模塊,最后得到所要求然后將這些子模塊組合起來(lái)構(gòu)成頂層模塊,最后得到所要求的電路。的電路。493.5.1 設(shè)計(jì)方法設(shè)計(jì)方法 子模塊1 子模塊2 子模塊2 子模塊4 基本元件 基本元件 基本元件 基本元件 基本元件 基本元件 基本元件 基本元件 頂層模塊 (最終設(shè)計(jì)目標(biāo)) 50全加器電路設(shè)計(jì)舉例全加器電路設(shè)計(jì)舉例使用自下而上的方法:使用自下而上的方法: p實(shí)例引用基本門(mén)級(jí)元件實(shí)例引用基本門(mén)級(jí)元件xor、and定義底層的半加器模塊定義底層的半加器模塊halfadder;p實(shí)例引用兩個(gè)半加器模塊實(shí)例引用兩個(gè)半加器模塊halfadder和一個(gè)基本或門(mén)元件和一個(gè)
42、基本或門(mén)元件or組合成為組合成為全加器模塊全加器模塊fulladder;p實(shí)例引用實(shí)例引用4個(gè)個(gè)1位的全加器模塊位的全加器模塊fulladder構(gòu)成構(gòu)成4位全加器的頂層模塊。位全加器的頂層模塊。 51/* 一位半加器的描述一位半加器的描述(參考圖參考圖3.4.26) *module halfadder (S,C,A,B); /IEEE 13641995 Syntax input A,B; /輸入端口聲明輸入端口聲明 output S,C; /輸出端口聲明輸出端口聲明 xor (S,A,B); /實(shí)例引用邏輯門(mén)原語(yǔ)實(shí)例引用邏輯門(mén)原語(yǔ) and (C,A,B);endmodule /* 一位全加器的描述一位全加器的描述(參考圖參考圖3.4.28) *module fulladder (Sum,Co,A,B,Ci); input A,B,Ci; output Sum,Co; wire S1,D1,D2; /內(nèi)部節(jié)點(diǎn)信號(hào)聲明內(nèi)部節(jié)點(diǎn)信號(hào)聲明 halfadder HA1 (.B(B),.S(S1),.C(D1),.
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 計(jì)算機(jī)四級(jí)考試題庫(kù)含答案
- 設(shè)備維修保養(yǎng)管理制度
- 自動(dòng)控制元件及線(xiàn)路試題及答案
- 財(cái)務(wù)會(huì)計(jì)實(shí)習(xí)日記9篇
- 2025年安徽省初中學(xué)業(yè)水平考試歷史沖刺試卷(二) (含答案)
- 2024-2025學(xué)年峨邊彝族自治縣教學(xué)質(zhì)量檢測(cè)七年級(jí)生物試題2025.01
- 打造微電影市場(chǎng)的新趨勢(shì)網(wǎng)絡(luò)劇行業(yè)公司的轉(zhuǎn)型方向
- 2024年中考押題預(yù)測(cè)卷02(天津卷)-道德與法治(考試版)A3
- 【高中語(yǔ)文】《論語(yǔ)》《大學(xué)》《人皆有不忍人之心》聯(lián)讀課件+統(tǒng)編版高二語(yǔ)文選擇性必修上冊(cè)
- 牛津樹(shù)自然拼讀 第一級(jí) Level 1 L1-U2-lesson1
- 《重癥醫(yī)學(xué)科建設(shè)與管理指南(試行)》
- 醫(yī)用耗材一次性使用申請(qǐng)表
- GB/T 42068-2022農(nóng)村產(chǎn)權(quán)流轉(zhuǎn)交易市場(chǎng)建設(shè)和管理規(guī)范
- 第五課古典芭蕾(芭蕾舞鼎盛時(shí)期)
- 中小學(xué)生肥胖調(diào)查表
- 胃癌HER2判讀及評(píng)分課件
- 學(xué)校機(jī)房網(wǎng)絡(luò)規(guī)劃與設(shè)計(jì)
- 中儲(chǔ)糧警示教育心得體會(huì)三篇
- 船用空調(diào)電氣控制系統(tǒng)簡(jiǎn)介課件
- 2009-2022歷年河北省公安廳高速交警總隊(duì)招聘考試真題含答案帶詳解2022-2023上岸資料匯編3
- 遙控器檢驗(yàn)作業(yè)指導(dǎo)書(shū)
評(píng)論
0/150
提交評(píng)論