




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精品文檔 Verilog HDL 語言基礎(chǔ)知識 先來看兩個(gè)Verilog HDL程序。 例6.1 一個(gè)8位全加器的Verilog HDL 源代碼 module adder8(cout,sum,i na,i nb,c in); output7:0 sum; output cout; in put7:0 in a,i nb; in put cin; assign cout,sum=ina+inb+cin;/ 全力口 en dmodule 【例6.2】一個(gè)8位計(jì)數(shù)器的Verilog HDL源代碼 module coun ter8(out,cout,data,load,ci n, clk); outp
2、ut7:0 out; output cout; in put7:0 data; input load,ci n,clk; reg7:0 out; always (posedge clk) begin if(load) out=data; else out=out+ci n; end assig n cout= en dmodule 從上面的例子可以看出: VerilogHDL程序是由模塊構(gòu)成的。每個(gè)模塊的內(nèi)容都是嵌在module和endmodule 兩個(gè)語句之間,每個(gè)模塊實(shí)現(xiàn)特定的功能,模塊是可以進(jìn)行層次嵌套的。 每個(gè)模塊首先要進(jìn)行端口定義,并說明輸入(input)和輸出(output),然后
3、對模塊 的功能進(jìn)行邏輯描述。 Verilog HDL程序的書寫格式自由,一行可以寫幾個(gè)語句,一個(gè)語句也可以分多行 寫。 除了 endmodule語句外,每個(gè)語句的最后必須有分號。 可以用/*/和/ 對Verilog HDL 程序的任何部分作注釋。 6.1.2 Verilog HDL 模塊的結(jié)構(gòu) VerilogHDL的基本設(shè)計(jì)單元是”模塊(block)。一個(gè)模塊是由兩部分組成的,一部分 描述接口 ;另一部分描述邏輯功能, 即定義輸入是如何影響輸出的。 下面舉例說明,圖6.1 示出了一個(gè)與-或-非門電路。 圖6.1與-或-非電路 該電路表示的邏輯函數(shù)可以寫為: F = AB + CD 用Verlo
4、g HDL語言對該電路進(jìn)行描述如下: 【例6.3】與-或-非門電路 module AOI(A,B, C, D, F);/模塊名為 AOI(端口列表 A, B, C, D, F) input A , B, C, D: output F; assig n F= (A /定義模塊的輸入端口 定義模塊的輸出端口 /模塊內(nèi)的邏輯描述 A, B, C, D F 從上面的例子可知, 電路圖符號 的引腳也就是程序模塊的端口, 在程序模塊內(nèi)描述了 電路圖符號所實(shí)現(xiàn)的邏輯功能。在上面的Verilog HDL設(shè)計(jì)中,模塊中的第2、第3行說 明接口的信號流向,第4行說明了模塊的邏輯功能。 VerilogHDL結(jié)構(gòu)完全
5、嵌在 module和endmodule聲明語句之間,每個(gè)Verilog 程序包 括4個(gè)主要部分:端口定義,I/O說明,信號類型聲明和功能描述。 1. 模塊的端口定義 模塊的端口聲明了模塊的輸人和輸出口。其格式如下: module 模塊名(口 1,口 2,口 3, 口 4,); 2 模塊內(nèi)容 模塊內(nèi)容包括I/O說明,信號類型聲明和功能定義。 (1) I/O說明的格式如下: 輸人口 : in put 端口名1,端口名2,端口名 N; 輸出口 : output 端口名I,端口名2,端口名 N; I/O說明也可以寫在端口聲明語句里。其格式如下: module module_ name(i nput p
6、ortl , in put port2 , output portl , output port2 ,); (2) 信號類型聲明: 它是說明邏輯描述中所用信號的數(shù)據(jù)類型及函數(shù)聲明。如 reg7:0 out; /定義out的數(shù)據(jù)類型為reg(寄存器)型 對于端口信號的缺省定義類型為wire(連線)型。 6.1.3邏輯功能定義 模塊中最重要的部分是邏輯功能定義。有3種方法可在模塊中描述邏輯。 1. 用assign語句 女口: assign F = (A 這種方法的句法很簡單,只須寫一個(gè)“assign ”,后面再加一個(gè)方程式即可。 assign語句一般適合于對組合邏輯進(jìn)行賦值,稱為連續(xù)賦值方式。 2
7、. 用元件例化(instantiate) 如:and myand3(f, a , b, c); 這個(gè)語句利用 Verilog HDL提供的與門庫,定義了一個(gè)三輸人的與門。采用實(shí)例元件 的方法同在電路圖輸入方式下調(diào)入庫元件一樣,鍵入元件的名字和引腳的名字即可。要求 每個(gè)實(shí)例元件的名字必須是唯一的。 3. 用always塊語句 在【例6.2】的計(jì)數(shù)器模塊中 always_(posedge_clk) /每當(dāng)時(shí)鐘上升沿到來時(shí)執(zhí)行一遍塊內(nèi)語句 begin if(load) out=data; else out=out+ci n; end always塊可用于產(chǎn)生各種邏輯,常用于描述時(shí)序邏輯。這個(gè)例子用a
8、lways塊生成了 一個(gè)帶有同步置數(shù)的計(jì)數(shù)器。always塊可用很多種描述手段來表達(dá)邏輯,如此例中就用了 if-else 語句來表達(dá)邏輯關(guān)系。 綜上所述,可給出 Verilog HDL模塊的模板如下: Verilog HDL模塊的模板(僅考慮用于邏輯綜合的部分,不考慮用于邏輯模擬的部分)。 module 頂層模塊名 ,(輸入輸出端口列表); output輸出端口列表;/輸出端口聲明 in put輸入端口列表;/輸入端口聲明 /*定義數(shù)據(jù),信號的類型,函數(shù)聲明,用關(guān)鍵字wire , reg , funtion 等定義*/ /使用assig n語句定義邏輯功能 wire結(jié)果信號名; assign
9、= ; /使用always塊描述邏輯功能 always () begin /過程賦值 /if 語句, / case 語句 / while , for,repeat循環(huán)語句 / fun ctio n調(diào)用 end /模塊元件例化 ,(); /門元件例化 gate_type_keyword (); en dmodule 6.2數(shù)據(jù)類型及常量、變量 Verilog HDL中共有19種數(shù)據(jù)類型。數(shù)據(jù)類型是用來表示數(shù)字電路中的數(shù)據(jù)存儲和傳 送單元的。在此介紹 4個(gè)最基本的數(shù)據(jù)類型:integer 型、parameter型、reg型和wire 型。 Verilog HDL中也有常量和變量之分,他們分屬以上這
10、些類型。 6.2.1 常量 在程序運(yùn)行過程中,其值不能被改變的量稱為常量。 1. 數(shù)字 (1)整數(shù) 在Verilog HDL中,整數(shù)型常量(即整常數(shù))有以下4種進(jìn)制表示形式: 二進(jìn)制整數(shù)(b或B); 十進(jìn)制整數(shù)(d或D); 十六進(jìn)制整數(shù)(h或H); 八進(jìn)制整數(shù)(o或O)。 完整的數(shù)字表達(dá)式為: , 位寬為對應(yīng)二迸制數(shù)的寬度,如: 8b11000101/ 位寬為8位的二進(jìn)制數(shù) 11000101 ; 8hc5/位寬為8位的十六進(jìn)制數(shù)C5; 十進(jìn)制的數(shù)可以缺省位寬和進(jìn)制說明,如: 197/代表十進(jìn)制數(shù)197 (2)x 和z值 x 表示不定值,z表示高阻值。每個(gè)字符代表的寬度取決于所用的進(jìn)制,例如:
11、8b1001xxxx;等價(jià)于 8h9x; 8b1010zzzz;等價(jià)于 8haz; 當(dāng)常量不說明位數(shù)時(shí),默認(rèn)值為32位。此外,“ ?”是高阻態(tài)的z的另一種表示符號。 2常量 在Verilog HDL 中,用parameter來定義常量,即用 parameter來定義一個(gè)標(biāo)志符, 代表一個(gè)常量,稱為符號常量。其定義格式如下: parameter參數(shù)名1=表達(dá)式,參數(shù)名2=表達(dá)式,參數(shù)名 3=表達(dá)式 ; 例如: parameter sel=8 , code=8ha3; /分別定義參數(shù)sel為常數(shù)8(十進(jìn)制),參數(shù)code為常數(shù)a3(十六進(jìn)制) 6.2.2變量 變量是在程序運(yùn)行過程中其值可以改變的量
12、。變量分為兩種:一種為網(wǎng)絡(luò)型(nets type),另一種為寄存器型(register type) 。 1. nets 型變量 wire nets型變量指輸出始終根據(jù)輸入的變化而更新其值的變量,它一般指的是硬件電路中 的各種物理連接。Verilog HDL中提供了多種nets型變量,具體見表 6.1。 表6.1 常用的nets型變量及說明 類型 功能說明 wire,tri 連線類型(wire和tri功能完全相同) wor,trior 具有線或特性的連線(兩者功能一致) wand,triand 具有線與特性的連線(兩者功能一致) tri1,tri0 分別為上拉電阻和下拉電阻 supply1,su
13、pplyO 分別為電源(邏輯1)和地(邏輯0) 這里著重介紹 wire型變量。wire是一種常用的nets型變量,wire型數(shù)據(jù)常用來表 示assign語句賦值的組合邏輯信號。Verilog HDL模塊中的輸入/輸出信號類型缺省時(shí)自 動定義為wire型。Wire型信號可以用作任何方程式的輸入,也可以用作assign語句和實(shí) 例元件的輸出,其取值為0,1,x,z 。 wire型變量格式如下: .定義寬度為1位的變量: wire數(shù)據(jù)名1,數(shù)據(jù)名2,數(shù)據(jù)名n; 例如: wire a,b;II定義了兩個(gè)寬度為1位wire型變量a,b .定義寬度位 n位的向量(vectors ): wiren-1:0數(shù)
14、據(jù)名1,數(shù)據(jù)名2,數(shù)據(jù)名 n; 或 wiren:1 數(shù)據(jù)名1,數(shù)據(jù)名2,數(shù)據(jù)名n; 例如:wire7:0 databus;II定義一個(gè) 8位wire 型向量 或wire8:1 databus; wire型向量可按以下方式使用: wire7:0 in,out;II 定義兩個(gè) 8位 wire 型向量 in,out assig n out=in; 若只使用其中某幾位,可直接指明,注意寬度要一致。如: wire7:0 out; wire3:0 in; assign out5:2=in;IIout 向量的第二位到第5位與in向量相等 2. register 型變量 reg register型變量對應(yīng)的是
15、具有狀態(tài)保持作用的電路元件,如觸發(fā)器、寄存器等。 register 型變量與nets變量的根本區(qū)別在于:register需要被明確地賦值,并在被重新 賦值前一直保持原值。在設(shè)計(jì)中必須將寄存器型變量放在過程塊語句(如initial, always) 中,通過過程賦值語句賦值。另外,在always過程塊內(nèi)被賦值的每一個(gè)信號都必須定義 成寄存器型。 Verilog HDL中,有4種寄存器型變量,見表6.2 表6.2常用的register 型變量及說明 類型 功能說明 reg 常用的寄存器型變量 integer 32位帶符號整數(shù)型變量 real 64位帶符號整數(shù)型變量 time 無符號時(shí)間變量 Int
16、eger、real、time等3種寄存器型變量都是純數(shù)學(xué)的抽象描述,不對應(yīng)任何具體 的硬件電路。reg型變量是最常用的一種寄存器型變量,下面介紹reg型變量。 reg型變量格式如下: reg數(shù)據(jù)名1,數(shù)據(jù)名2,數(shù)據(jù)名n; 例如:reg a , b; II定義了兩個(gè)寬度為1位的reg型變量a,b 若定義一個(gè)向量,則按以下格式: regn-1:0數(shù)據(jù)名1,數(shù)據(jù)名2,數(shù)據(jù)名n; 或 regn:l數(shù)據(jù)名1,數(shù)據(jù)名2,數(shù)據(jù)名n; 它們定義了數(shù)據(jù)的寬度為n位。如下面的語句定義了8位寬的數(shù)據(jù) 例如: reg7:0 data;/定義data為8位寬的reg型向量 或: reg8:1 data; 3. 數(shù)組 若
17、干個(gè)相同寬度的向量構(gòu)成數(shù)組, reg型數(shù)組變量即為memory型變量,即可定義存儲 器型數(shù)據(jù)。如: reg7:0 mymeml023:0; 上面的語句定義了一個(gè)1024個(gè)字節(jié)、每個(gè)字節(jié)寬度為8位的存儲器。通常,存儲器 采用如下方式定義: parameter wordwidth=8 , memsize = l024; regwordwidth-l:0 mymemmemsize-l:0; 上面的語句定義了一個(gè)寬度為8位、1024個(gè)存儲單元的存儲器,該存儲器的名字是 mymem若對該存儲器中的某一單元賦值的話,采用如下方式 : mymem8=1; /mymem 存儲器中的第 8個(gè)單元賦值為 1 注意
18、:Verilog HDL中的變量名、參數(shù)名等標(biāo)記符是對大小寫字母敏感的。 6.3運(yùn)算符及表達(dá)式 6.3.1運(yùn)算符 1. 算術(shù)運(yùn)算符 +加 -減 *乘 /除 %求模 算術(shù)運(yùn)算符都是雙目運(yùn)算符。 2. 邏輯運(yùn)算符 b=/ 等效于 b=(a0 例:若 A=5b11001,貝U: /只有A的各位都為1時(shí),其與縮減運(yùn)算的值才為I。 |A=I;/只有A的各位都為0時(shí),其或縮減運(yùn)算的值才為0。 7. 移位運(yùn)算符 右移 n 或 A n 表示把操作數(shù)A右移或左移n位,并用0填補(bǔ)移出位。 8. 條件運(yùn)算符(三目運(yùn)算符) ?: 格式: 信號=條件?表達(dá)式1 :表達(dá)式2; 當(dāng)條件成立時(shí),信號取表達(dá)式1的值,反之取表達(dá)
19、式2的值. 9.位拼接運(yùn)算符 / 將兩個(gè)或多個(gè)信號的某些位拼接起來。 用法: 信號1的某幾位,信號 2的某幾位, ,信號n的某幾位 例如,在進(jìn)行加法運(yùn)算時(shí), 可將輸出與和拼接在一起使用。 output3:0 sum; /sum 代表和 output cout;/cout 為進(jìn)位輸出 in put3:0 in a,i nb; in put cin; assig n cout,sum=ina+in b+ci n; /進(jìn)位與和拼接在一起 位拼接可以嵌套使用,還可以用重復(fù)法來減化書寫,如: 3a,b等同于a,b,a,b,a,b,也等同于a,b,a,b,a,b 6.3.2.運(yùn)算符的優(yōu)先級 以上運(yùn)算符的優(yōu)
20、先級如下: 高優(yōu)先級 *,/,% + - , , = =!= = = = ! 555 在上面的賦值中,a和b信號的任何變化,都將隨時(shí)反映到c上來,因此稱為連續(xù)賦 值方式。 2. 過程賦值語句 過程賦值語句用于對寄存器類型(reg)的變量進(jìn)行賦值。過程賦值有以下兩種方式。 (1)非阻塞(non_blocking)賦值方式 賦值號為 =,如b=a; b的值并不是立刻就改變的。 非阻塞賦值在塊結(jié)束時(shí)才完成賦值操作,即 (2)阻塞(blocking)賦值方式 賦值號為=,如b=a; 阻塞賦值在該語句結(jié)束時(shí)就完成賦值操作,即b的值在該賦值語句結(jié)束后立刻改變。 如果在一個(gè)塊語句中,有多條阻塞賦值語句,那么
21、在前面的賦值語句沒有完成之前,后面 的語句就不能執(zhí)行,就像被阻塞(block in g)一樣,因此稱為阻塞賦值方式 (3) 阻塞賦值方式和非阻塞賦值方式的區(qū)別 阻塞賦值方式和非阻塞賦值方式的區(qū)別常給設(shè)計(jì)人員帶來問題。問題主要是對 “ always ”模塊內(nèi)的reg型變量得賦值不易把握。為區(qū)分阻塞賦值與非阻塞賦值的不同, 可看下面兩例。 【例6.4】非阻塞賦值【例6.5】阻塞賦值 module non _block(c,b,a,clk);module block(c,b,a,clk); output c,b;output c,b; in put clk,a;in put clk,a; reg c
22、,b;reg c,b; always (posedge clk) always (posedge clk) 13歡迎下載 b=a; c=b; end en dmodule en dmodule beg inbeg in b=a; c=b; end 將上面兩段代碼用 MAX+PLUS進(jìn)行綜合,并進(jìn)行仿真,可看到二者的區(qū)別: 對于非阻塞賦值,c的值落后b的值一個(gè)時(shí)鐘周期,這是因?yàn)樵摗?always ”塊每一個(gè) 時(shí)鐘周期執(zhí)行一次,因此信號的值每一個(gè)時(shí)鐘周期更新一次,c的值是上一時(shí)鐘周期的 b 值。 對于阻塞賦值,c的值和b的值一樣,這是因?yàn)閎的值是立即更新的。 為避免對這兩種賦值語句的應(yīng)用錯(cuò)誤,建議
23、在初學(xué)時(shí)刻只是用一種,比如采用阻塞賦 值“=”,因?yàn)樗愃艭語言的賦值方式。為避免出錯(cuò),在同一塊內(nèi),不要將輸出重新作為 輸入使用。而為實(shí)現(xiàn)上述非阻塞賦值功能,可采用兩個(gè)“always ”塊來實(shí)現(xiàn),代碼如下: module non _block(c,b,a,clk); output c,b; in put clk,a; reg c,b; always (posedge clk) begin b=a; end always (posedge clk) begin c=b; end en dmodule 642條件語句 條件語句是順序語句,應(yīng)放在always ”塊內(nèi)。 1. if-else 語句 使
24、用方法有以下3種 if(表達(dá)式)語句; if( 表達(dá)式1)語句1; else語句2 ; if(表達(dá)式1)語句1; else if(表達(dá)式2)語句2; else if(表達(dá)式3)語句3; else if( 表達(dá)式n)語句n; else 語句 n+1; 這三種方式中,表達(dá)式”一般為邏輯表達(dá)式或關(guān)系表達(dá)式,也可能是一位變量。若 表達(dá)式的值為0,x,z,視為“假”;若為1,視為“真”。語句可以是單句,也可以是多句, 多句時(shí)用begin-end ”括起來。 2. case 語句 多用于多條件譯碼電路,如描述譯碼器、數(shù)據(jù)選擇器、狀態(tài)機(jī)及微處理器的指令譯 碼等。 .case 語句 格式: case (敏感表
25、達(dá)式) 值1 :語句1; 值2 :語句2; 值n :語句n; default:語句 n+1; endcase .casez 禾口 casex 語句 case語句中,敏感表達(dá)式與值1值n之間的比較是一種全等比較,必須保證兩者的 對應(yīng)位全等。casez與casex語 句是case語句的兩種變體,三者的表示形式中唯一的 區(qū)別是3個(gè)關(guān)鍵詞case,casez,casex 的不同。在casez語句中,如果分支表達(dá)式某些位的 值為高阻z,那么對這些位的比較就不予考慮,因此,只需關(guān)注其他位的比較結(jié)果。而在 casex語句中,則把這種處理方式進(jìn)一步擴(kuò)展到對x的處理,即如果比較的雙方有一方的 精品文檔 某些位的
26、值是x或乙那么這些位的比較就不予考慮。 此外,還有另外一種標(biāo)識 x或z的方式,即用表示無關(guān)值的“ ?”來表示。 643循環(huán)語句 Verilog HDL中存在4種類型的循環(huán)語句,用來控制語句的執(zhí)行次數(shù)。這4種語句分 別為: foreve連續(xù)地執(zhí)行語句,多用在initial塊中,以生成周期性輸入波形。 repeat連續(xù)執(zhí)行一條語句 n次。 while執(zhí)行一條語句,直到循環(huán)條件不滿足。 for語句 由于MAX+PLU件不支持repeat語句。forever 語句一般用在initial語句塊中, 而MAX+PLUS件不支持initial語句塊,因此這里只介紹for和while兩種語句。 1. for語
27、句 格式: for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語句; 即:for (循環(huán)變量初值;循環(huán)結(jié)束條件;循環(huán)變量增值 )執(zhí)行語句; 2. while 語句 格式: while(循環(huán)執(zhí)行條件表達(dá)式)語句; while語句執(zhí)行時(shí),首先判斷循環(huán)執(zhí)行表達(dá)式是否為真,若為真,執(zhí)行循環(huán)體中語句, 然后,再判斷循環(huán)執(zhí)行條件表達(dá)式是否為真,直至條件表達(dá)式不為真為止。循環(huán)體 中語句可以是單句,也可以是多句,多句時(shí)用“begin-end ”括起來。 6.4.4結(jié)構(gòu)說明語句 Verilog HDL中的任何過程模塊都從屬于以下4種結(jié)構(gòu)說明語句: in itial always task function inital說明
28、語句一般用于仿真中的初始化,僅執(zhí)行一次;always塊內(nèi)的語句則是不斷 重復(fù)執(zhí)行的;task和function 語句可以在程序模塊中的一處或多處調(diào)用。 由于MAX+PLUS件不支持task,initial語句,因此這里只介紹 always和function 兩種結(jié)構(gòu)說明語句 1. always塊語句 always塊語句模板如下: always(敏感信號表達(dá)式) begin /過程賦值 /if 語句 /case 語句 while,repeat,for循環(huán) task,fu nctio n調(diào)用 end 在一個(gè)模塊(module)中,使用always語句的次數(shù)是不受限制的。always塊內(nèi)的語句 是不
29、斷重復(fù)執(zhí)行的。 說明: 敏感信號表達(dá)式 敏感信號表達(dá)式又稱事件表達(dá)式或敏感表,當(dāng)該表達(dá)式的值改變時(shí), 就會執(zhí)行一遍塊 內(nèi)語句。因此在敏感信號表達(dá)式中應(yīng)列出影響塊內(nèi)取值的所有信號(一般為所有輸入信 號)。若有兩個(gè)或兩個(gè)以上信號時(shí),它們之間用or連接。 例如,下面用case語句描述的4選1數(shù)據(jù)選擇器,只要輸入信號inO,inl ,in2 , in3 或選擇信號sel1:0改變則輸出改變,所以敏感信號表達(dá)式寫為: in0 or in1 or in2 or in3 or sel 【例6.6】用case語句描述的4選1數(shù)據(jù)選擇器 module mux4_1(out, in 0,i n1,i n2,i n
30、3,sel); output out; input in 0,i n1,i n2,i n3; in put1:0 sel; reg out; always (in0 or in1 or in2 or in3 or sel) case(sel) 2 b00: out=in0; 2 b01: out=in1; 2 b10: out=in2; 2 b11: out=in3; default: out=2 bx; endcase en dmodule posedge 與 negedge關(guān)鍵字 對于時(shí)序電路,事件是由時(shí)鐘邊沿觸發(fā)的。為表達(dá)邊沿這個(gè)概念,Verilog HDL提供 了 posedge和ne
31、gedge兩個(gè)關(guān)鍵字來描述。比如在例6.2的8位計(jì)數(shù)器中有塊語句: always (posedge clk) /上升沿時(shí)刻計(jì)數(shù) posedge clk表示時(shí)鐘信號 clk的上升沿,negedge clk表示時(shí)鐘信號clk的下降沿。 2. 函數(shù) function 函數(shù)的目的是返回一個(gè)用于表達(dá)式的值。函數(shù)的定義格式為: function 函數(shù)名; 端口聲明; 局部變量定義; 其他語句; endfun cti on 【例6.7】函數(shù)舉例 function 7:0 gefu n; in put7:0 x; reg7:0 count; in teger i; begin coun t=0; for(i=
32、0;i=7;i=i+1) if(xi=1 b0) count=count+1; gefu n=count; end endfun cti on 上面的gefun函數(shù)循環(huán)核對輸人的每一位,計(jì)算出0的個(gè)數(shù),并返回一個(gè)適當(dāng)?shù)闹怠?是一個(gè)可選項(xiàng),如果缺省,則返回值為一位關(guān)于寄存器類型 的數(shù)據(jù)。 函數(shù)的定義中蘊(yùn)含了一個(gè)與函數(shù)同名的、函數(shù)內(nèi)部的寄存器。在函數(shù)定義時(shí),將函數(shù) 返回值所使用的寄存器設(shè)為與函數(shù)同名的內(nèi)部變量,因此函數(shù)名被賦予的值就是函數(shù)的返 回值。例如在上例中,gefun最終賦予的值即為函數(shù)的返回值。 函數(shù)的調(diào)用是通過將函數(shù)作為表達(dá)式中的操作數(shù)來實(shí)現(xiàn)的。調(diào)用格式如下: ,( ); 比如使用連續(xù)賦
33、值語句調(diào)用函數(shù)gefun時(shí),可以采用如下語句: assig n out=is_legal ? gefu n(i n) : 1b0; 注意,在函數(shù)中不能包含有任何的時(shí)間控制語句,并且定義函數(shù)時(shí)至少要有一個(gè)輸人 15迎下載 精品文檔 6.5語句的順序執(zhí)行和并行執(zhí)行 用Verilog HDL模塊來設(shè)計(jì)電路,首先應(yīng)該清楚哪些操作是同時(shí)發(fā)生的,哪些是順序 發(fā)生的。在“ always ”模塊內(nèi),邏輯是按照指定的順序執(zhí)行的,always塊內(nèi)的語句稱為 順序語句因?yàn)檫@些語句完全按照書寫的順序來執(zhí)行。always模塊之間,是同時(shí)執(zhí)行的, 或者說是并行執(zhí)行的。兩個(gè)或更多個(gè)always模塊、“ assign ”語句、實(shí)例元件等都是同 時(shí)執(zhí)行的。通過下面的例子,可以清楚地看到always模塊內(nèi)的語句是順序執(zhí)行的,而 always模塊之間是并仃執(zhí)仃的。 【例6.8】順序執(zhí)行模塊1 【例
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子支付系統(tǒng)開發(fā)合作合同
- 電工承包合同
- 2025年MTBE項(xiàng)目建設(shè)方案
- 企業(yè)內(nèi)訓(xùn)教師送教上門方案
- 蘇教版三年級數(shù)學(xué)教學(xué)計(jì)劃的教師培訓(xùn)方案
- 建筑工程質(zhì)量管理措施與實(shí)施方案
- 技術(shù)承包簡易版合同書
- 國際技術(shù)許可與設(shè)備采購合同
- 采購合作協(xié)議合同
- 人工智能應(yīng)用合作開發(fā)合同
- 急診預(yù)檢分診培訓(xùn)
- 建筑垃圾商業(yè)計(jì)劃書
- 2024年蘭州市高三診斷考試(一診)地理試卷(含答案)
- 小學(xué)中高年級語文整本書閱讀教學(xué)策略
- ?;愤\(yùn)輸安全應(yīng)急救援演練
- 2024年青島版數(shù)學(xué)五年級下冊第一單元、第二單元測試題及答案(各一套)
- 自行車的力學(xué)知識研究報(bào)告
- 《高危藥品管理》課件
- 腦梗動脈取栓護(hù)理查房課件
- 泊松過程與應(yīng)用
- 密閉取芯完整
評論
0/150
提交評論