版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Verilog Verilog HDLHDL數(shù)據(jù)類型包括數(shù)據(jù)類型包括:p值值的的集合集合p網(wǎng)絡(luò)網(wǎng)絡(luò)和和變量變量p向量向量p強(qiáng)度強(qiáng)度p隱含聲明隱含聲明p網(wǎng)絡(luò)類型網(wǎng)絡(luò)類型p寄存器類型寄存器類型p整數(shù)整數(shù)/ /實(shí)數(shù)實(shí)數(shù)/ /時(shí)間時(shí)間p數(shù)組數(shù)組p參數(shù)參數(shù)pVerilogVerilog名字名字空間空間Verilog Verilog HDLHDL有下列四種基本的值:有下列四種基本的值:p 0 邏輯邏輯0或或“假假”狀態(tài)。狀態(tài)。p 1 邏輯邏輯1或或“真真”狀態(tài)。狀態(tài)。p x(X) 未知未知狀態(tài),對(duì)大小寫不敏感。狀態(tài),對(duì)大小寫不敏感。p z(Z) 高高阻狀態(tài),對(duì)大小寫不敏感。阻狀態(tài),對(duì)大小寫不敏感。 在在V
2、erilog HDLVerilog HDL中,根據(jù)中,根據(jù)賦值賦值和和對(duì)值的保持方式對(duì)值的保持方式不同,不同,可將數(shù)據(jù)類型主要分為兩大類可將數(shù)據(jù)類型主要分為兩大類:p網(wǎng)絡(luò)型網(wǎng)絡(luò)型:表示表示器件之間的物理連接,需要器件之間的物理連接,需要門和模塊的驅(qū)動(dòng)門和模塊的驅(qū)動(dòng)。p變量型變量型:變量是對(duì)數(shù)據(jù)存儲(chǔ)元件的抽象。變量是對(duì)數(shù)據(jù)存儲(chǔ)元件的抽象。 聲明聲明網(wǎng)絡(luò)網(wǎng)絡(luò)類型類型的語(yǔ)法的語(yǔ)法格式如下格式如下:net_typenet_type range delay range delay net_namenet_name ,net_namenet_name;其中:其中:p net_type net_type 表
3、示表示網(wǎng)絡(luò)網(wǎng)絡(luò)類類型數(shù)據(jù)。型數(shù)據(jù)。p range range 用來用來表示表示數(shù)據(jù)數(shù)據(jù)為標(biāo)量或矢量。若沒有聲明范圍,則表為標(biāo)量或矢量。若沒有聲明范圍,則表示示數(shù)據(jù)為數(shù)據(jù)為1 1位的標(biāo)量。否則,由該項(xiàng)指定數(shù)據(jù)的矢量形式位的標(biāo)量。否則,由該項(xiàng)指定數(shù)據(jù)的矢量形式。p delay delay 指定仿真延遲時(shí)間。指定仿真延遲時(shí)間。p net_name net_name 網(wǎng)絡(luò)名字??梢砸痪W(wǎng)絡(luò)名字??梢砸淮味x次定義多個(gè)網(wǎng)絡(luò)多個(gè)網(wǎng)絡(luò),多個(gè)網(wǎng)絡(luò)之間多個(gè)網(wǎng)絡(luò)之間用用逗號(hào)逗號(hào)隔隔開開。聲明聲明網(wǎng)絡(luò)網(wǎng)絡(luò)類型類型的的Verilog HDLVerilog HDL描述的描述的例子例子 wand wand w; w; /
4、/ 一個(gè)標(biāo)一個(gè)標(biāo)量量wandwand網(wǎng)絡(luò)網(wǎng)絡(luò)類型類型 tri tri 15: 0 bus; 15: 0 bus; / / 1616位三位三態(tài)態(tài)總線總線網(wǎng)絡(luò)類型網(wǎng)絡(luò)類型 wire 0: 31 w1, w2; / wire 0: 31 w1, w2; / 兩個(gè)兩個(gè)3232位位網(wǎng)絡(luò)網(wǎng)絡(luò)類型類型,MSBMSB為為bit0bit0變量變量是對(duì)數(shù)據(jù)存儲(chǔ)元件的抽象是對(duì)數(shù)據(jù)存儲(chǔ)元件的抽象。p從從當(dāng)前當(dāng)前賦值賦值到下一次賦值之前,變量應(yīng)當(dāng)?shù)较乱淮钨x值之前,變量應(yīng)當(dāng)保持保持當(dāng)前的當(dāng)前的值值不不變變。注注:p對(duì)于對(duì)于regreg,timetime和和integerinteger這些這些變量變量類類型數(shù)據(jù),型數(shù)據(jù),它
5、們的初始值應(yīng)當(dāng)它們的初始值應(yīng)當(dāng)是是x x。p對(duì)于對(duì)于realreal和和realtimerealtime變量變量類類型數(shù)據(jù),型數(shù)據(jù),默認(rèn)的初始值是默認(rèn)的初始值是0.00.0。p在在變量數(shù)據(jù)類型中,只有變量數(shù)據(jù)類型中,只有regreg和和integerinteger變量型數(shù)據(jù)類型是可綜合的,變量型數(shù)據(jù)類型是可綜合的,其它是不可綜合的。其它是不可綜合的。p驅(qū)動(dòng)強(qiáng)度驅(qū)動(dòng)強(qiáng)度u在在一個(gè)網(wǎng)絡(luò)型數(shù)據(jù)的聲明語(yǔ)句一個(gè)網(wǎng)絡(luò)型數(shù)據(jù)的聲明語(yǔ)句中,如果中,如果對(duì)數(shù)據(jù)對(duì)象對(duì)數(shù)據(jù)對(duì)象進(jìn)行了連續(xù)賦值,就可以為聲明的數(shù)據(jù)對(duì)象指定驅(qū)進(jìn)行了連續(xù)賦值,就可以為聲明的數(shù)據(jù)對(duì)象指定驅(qū)動(dòng)強(qiáng)度動(dòng)強(qiáng)度。u門門級(jí)元件的聲明只能指定驅(qū)動(dòng)強(qiáng)度級(jí)元
6、件的聲明只能指定驅(qū)動(dòng)強(qiáng)度。根據(jù)。根據(jù)驅(qū)動(dòng)源的驅(qū)動(dòng)源的強(qiáng)度,其驅(qū)動(dòng)強(qiáng)度可以強(qiáng)度,其驅(qū)動(dòng)強(qiáng)度可以是:是:SupplyStrongpull/weak 如果如果沒有顯示聲明網(wǎng)絡(luò)或者變量,則在下面的情況沒有顯示聲明網(wǎng)絡(luò)或者變量,則在下面的情況中,默中,默認(rèn)認(rèn)將其指定為網(wǎng)絡(luò)類型:將其指定為網(wǎng)絡(luò)類型:p在在一個(gè)端口表達(dá)式的聲明中,如果沒有對(duì)端口的數(shù)據(jù)類型進(jìn)行顯式說一個(gè)端口表達(dá)式的聲明中,如果沒有對(duì)端口的數(shù)據(jù)類型進(jìn)行顯式說明,則默認(rèn)的端口數(shù)據(jù)類型就為明,則默認(rèn)的端口數(shù)據(jù)類型就為wirewire型型。input a,b;input a,b;p模塊模塊例化的端口列表中,如果先前沒有對(duì)端口的數(shù)據(jù)類型進(jìn)行顯式說例化的
7、端口列表中,如果先前沒有對(duì)端口的數(shù)據(jù)類型進(jìn)行顯式說明,那么默認(rèn)的端口數(shù)據(jù)類型為網(wǎng)絡(luò)型標(biāo)量明,那么默認(rèn)的端口數(shù)據(jù)類型為網(wǎng)絡(luò)型標(biāo)量。 FADD fadd1(a,b,cout,sum) FADD fadd1(a,b,cout,sum)p如果一個(gè)標(biāo)識(shí)符出現(xiàn)在如果一個(gè)標(biāo)識(shí)符出現(xiàn)在連續(xù)賦值語(yǔ)句連續(xù)賦值語(yǔ)句的左側(cè),而該標(biāo)識(shí)符先前未曾被的左側(cè),而該標(biāo)識(shí)符先前未曾被聲明,那么該標(biāo)識(shí)符的數(shù)據(jù)類型就被隱式聲明為網(wǎng)絡(luò)型標(biāo)量聲明,那么該標(biāo)識(shí)符的數(shù)據(jù)類型就被隱式聲明為網(wǎng)絡(luò)型標(biāo)量。 assign A=B; assign A=B;下下表表給給出了這些常用的不同網(wǎng)絡(luò)類型的功能及其可綜合性。出了這些常用的不同網(wǎng)絡(luò)類型的功能及其可
8、綜合性。類型類型功能功能可可綜合性綜合性wire,tri標(biāo)準(zhǔn)標(biāo)準(zhǔn)內(nèi)部連接線內(nèi)部連接線supply1,supply0電源電源和地和地wor,trior多多驅(qū)動(dòng)源線或驅(qū)動(dòng)源線或wand,triand多多驅(qū)動(dòng)源線與驅(qū)動(dòng)源線與trireg能能保存電荷的保存電荷的nettri1,tri0無無驅(qū)動(dòng)時(shí)上拉驅(qū)動(dòng)時(shí)上拉/下拉下拉簡(jiǎn)單的網(wǎng)絡(luò)類型說明格式為簡(jiǎn)單的網(wǎng)絡(luò)類型說明格式為: net_kindmsb:lsbnet1,net2, . . . , netN;其中:其中:p net_kind 是是上述網(wǎng)絡(luò)類型的一種。上述網(wǎng)絡(luò)類型的一種。p msb和和lsb 用于用于定義網(wǎng)絡(luò)范圍的常量表達(dá)式。其范圍定義是可選的。定義
9、網(wǎng)絡(luò)范圍的常量表達(dá)式。其范圍定義是可選的。如果沒有定義范圍,默認(rèn)的網(wǎng)絡(luò)類型為如果沒有定義范圍,默認(rèn)的網(wǎng)絡(luò)類型為1位。位。wirewire和和tritri網(wǎng)絡(luò)類型網(wǎng)絡(luò)類型p 用于用于連接單元的連線是最常見的網(wǎng)絡(luò)類型。連線(連接單元的連線是最常見的網(wǎng)絡(luò)類型。連線(wire)網(wǎng)絡(luò)網(wǎng)絡(luò)與與 三態(tài)三態(tài)(tri)網(wǎng)絡(luò)語(yǔ)法和語(yǔ)義一致)網(wǎng)絡(luò)語(yǔ)法和語(yǔ)義一致。p 三態(tài)網(wǎng)絡(luò)可以用于描述多個(gè)驅(qū)動(dòng)源驅(qū)動(dòng)同一根線的網(wǎng)絡(luò)三態(tài)網(wǎng)絡(luò)可以用于描述多個(gè)驅(qū)動(dòng)源驅(qū)動(dòng)同一根線的網(wǎng)絡(luò)類型類型, 并且并且沒有其他特殊的意義沒有其他特殊的意義。p 如果如果多個(gè)驅(qū)動(dòng)源驅(qū)動(dòng)一個(gè)連線(或三態(tài)網(wǎng)絡(luò))由多個(gè)驅(qū)動(dòng)源驅(qū)動(dòng)一個(gè)連線(或三態(tài)網(wǎng)絡(luò))由下表下表確確
10、定定網(wǎng)絡(luò)網(wǎng)絡(luò) 的有效值的有效值。Wire/tri01xz00 xx01x1x1xxxxxz01xz由由關(guān)鍵詞關(guān)鍵詞wirewire定義常用的網(wǎng)絡(luò)類型。定義常用的網(wǎng)絡(luò)類型。wirewire型型網(wǎng)絡(luò)網(wǎng)絡(luò)的的語(yǔ)法語(yǔ)法格式格式如下如下:wire n-1:0 ,;其中其中: name1,namen表示表示wire型型網(wǎng)絡(luò)的網(wǎng)絡(luò)的名字。名字。wire型變量的說明型變量的說明 wire L; /將上述電路的輸出信號(hào)將上述電路的輸出信號(hào)L 聲明為聲明為網(wǎng)絡(luò)網(wǎng)絡(luò)類類型型 wire 7:0 data_bus; /聲明一個(gè)聲明一個(gè)8位寬的網(wǎng)絡(luò)位寬的網(wǎng)絡(luò) 類類型總線型總線tri0tri0和和tri1tri1網(wǎng)絡(luò)網(wǎng)絡(luò)類
11、型類型p 這這類網(wǎng)絡(luò)類型可用類網(wǎng)絡(luò)類型可用于于帶有上拉或下拉電阻網(wǎng)絡(luò)的建模。帶有上拉或下拉電阻網(wǎng)絡(luò)的建模。ptri0/tri1tri0/tri1網(wǎng)絡(luò)的特征是網(wǎng)絡(luò)的特征是:u無無驅(qū)動(dòng)源驅(qū)動(dòng)源驅(qū)動(dòng)驅(qū)動(dòng)該網(wǎng)絡(luò)時(shí)該網(wǎng)絡(luò)時(shí),它的值為它的值為0 0(tri1tri1的值為的值為1 1)。u網(wǎng)絡(luò)網(wǎng)絡(luò)值的驅(qū)動(dòng)強(qiáng)度都為值的驅(qū)動(dòng)強(qiáng)度都為pullpull。p tri0 tri0相當(dāng)于這樣一相當(dāng)于這樣一個(gè)網(wǎng)絡(luò)個(gè)網(wǎng)絡(luò):有一個(gè)強(qiáng)度為:有一個(gè)強(qiáng)度為pullpull的的0 0值連續(xù)驅(qū)動(dòng)值連續(xù)驅(qū)動(dòng)該該網(wǎng)絡(luò)網(wǎng)絡(luò)。p tri1tri1相當(dāng)于這樣一相當(dāng)于這樣一個(gè)網(wǎng)絡(luò)個(gè)網(wǎng)絡(luò):有一個(gè)強(qiáng)度為:有一個(gè)強(qiáng)度為pullpull的的1 1值連續(xù)驅(qū)
12、動(dòng)值連續(xù)驅(qū)動(dòng)該該網(wǎng)絡(luò)網(wǎng)絡(luò)。下下表給表給出在多個(gè)驅(qū)動(dòng)源情況下出在多個(gè)驅(qū)動(dòng)源情況下tri0tri0或或tri1tri1網(wǎng)的有效值。網(wǎng)的有效值。Tri0/tri101xz00 xx01x1x1xxxxxz01x0/1supply0supply0和和supply1supply1網(wǎng)絡(luò)類型網(wǎng)絡(luò)類型p supply0 supply0用于對(duì)用于對(duì)“地地”建模,即低電平建模,即低電平0.0.p supply1 supply1網(wǎng)用于對(duì)電源建模,即高電平網(wǎng)用于對(duì)電源建模,即高電平1 1。supply0和和supply1網(wǎng)絡(luò)類型網(wǎng)絡(luò)類型描述描述 supply0 Gnd,ClkGnd; supply1 2:0 Vcc;
13、未未說明的網(wǎng)絡(luò)說明的網(wǎng)絡(luò)p在在Verilog HDLVerilog HDL中,有可能不必聲明某種網(wǎng)絡(luò)類型。在這樣的中,有可能不必聲明某種網(wǎng)絡(luò)類型。在這樣的情況下,網(wǎng)絡(luò)類型為情況下,網(wǎng)絡(luò)類型為1 1位網(wǎng)絡(luò)。可以使用位網(wǎng)絡(luò)??梢允褂胐efault_nettypedefault_nettype編編譯器指令改變這一隱式網(wǎng)絡(luò)說明方式。使用方法如下譯器指令改變這一隱式網(wǎng)絡(luò)說明方式。使用方法如下: default_nettype net_kind帶有帶有下列編譯器指令:下列編譯器指令:default_nettype wanddefault_nettype wand任何未被說明的網(wǎng)默認(rèn)為任何未被說明的網(wǎng)默認(rèn)為
14、1 1位線與網(wǎng)。位線與網(wǎng)。 通過通過過程分配語(yǔ)句給寄存器類型變量分配值。過程分配語(yǔ)句給寄存器類型變量分配值。在在每個(gè)每個(gè)分配分配的過程中間,的過程中間,寄存器寄存器保持保持上次分配的上次分配的值。值。p它用于對(duì)硬件寄存器進(jìn)行建模??梢詫?duì)邊沿敏感(比如:觸發(fā)器)它用于對(duì)硬件寄存器進(jìn)行建模??梢詫?duì)邊沿敏感(比如:觸發(fā)器)和電平敏感(比如:置位和電平敏感(比如:置位/ /復(fù)位和鎖存器)復(fù)位和鎖存器)的的存儲(chǔ)元件存儲(chǔ)元件進(jìn)行進(jìn)行建模。建模。注:注: 一一個(gè)寄存器變量不一定代表一個(gè)硬件保存元素,這是因?yàn)樗材軅€(gè)寄存器變量不一定代表一個(gè)硬件保存元素,這是因?yàn)樗材苡糜诒硎疽粋€(gè)組合邏輯。用于表示一個(gè)組合邏輯
15、。寄存器寄存器型變量型變量與網(wǎng)絡(luò)類型的區(qū)別主要在于:與網(wǎng)絡(luò)類型的區(qū)別主要在于:p寄存器寄存器型變量保持最后一次的賦值。只能在型變量保持最后一次的賦值。只能在initial或或always內(nèi)部對(duì)內(nèi)部對(duì)寄存器型變量進(jìn)行寄存器型變量進(jìn)行賦值賦值操作操作。p網(wǎng)絡(luò)網(wǎng)絡(luò)型型數(shù)據(jù)需要有連續(xù)的數(shù)據(jù)需要有連續(xù)的驅(qū)動(dòng)驅(qū)動(dòng)源源。寄存器型變量聲明的格式如下:寄存器型變量聲明的格式如下: reg_type range reg_name, reg_name; 其中:其中:preg_type為寄存器類型。為寄存器類型。prange為矢量范圍,為矢量范圍,MSB:LSB格式,只對(duì)格式,只對(duì)reg類型有效。類型有效。preg_
16、name為為reg型變量的名字,一次可定義多個(gè)型變量的名字,一次可定義多個(gè)reg型變型變量,使用逗號(hào)分開。量,使用逗號(hào)分開。例例: : 寄存器型變量的寄存器型變量的Verilog HDLVerilog HDL描述例子描述例子module ff( input clk, input rst, input A_IN, output reg B_OUT );initialbegin B_OUT=1b0;endalways (posedge clk or posedge rst)begin if(rst) B_OUT=1b1; else B_OUT = =關(guān)系關(guān)系操作符操作符!邏輯邏輯非非&邏輯邏輯與與
17、|邏輯邏輯或或=邏輯邏輯相等相等!=邏輯邏輯不相等不相等=條件條件(case)相等相等!=條件條件(case)不相等不相等按按位取反位取反&按按位與位與|按按位或位或按按位異或位異或或者或者按按位異或非位異或非&規(guī)約規(guī)約與與&規(guī)約規(guī)約與非與非 |規(guī)約規(guī)約或或|規(guī)約規(guī)約或非或非規(guī)約規(guī)約異或異或或者或者規(guī)約規(guī)約異或非異或非 邏輯邏輯右移右移 算術(shù)算術(shù)右移右移?:條件條件實(shí)數(shù)實(shí)數(shù)支持的操作符支持的操作符一元一元+和和一元一元-一一元操作符元操作符+ - * / *算術(shù)運(yùn)算算術(shù)運(yùn)算符符 = =關(guān)系關(guān)系操作符操作符! & |邏輯邏輯= !=邏輯邏輯相等相等?:條件條件同同一行內(nèi)的操作符具有相同的優(yōu)先級(jí)一
18、行內(nèi)的操作符具有相同的優(yōu)先級(jí)。+ - ! & & | | (一元一元)最高最高優(yōu)先級(jí)優(yōu)先級(jí)* / %+ - (二元二元) = != = !=&(二元)(二元) (二元)(二元) |(二元)(二元)&|?:(條件操作符)(條件操作符) 最低最低優(yōu)先級(jí)優(yōu)先級(jí)算術(shù)操作符算術(shù)操作符 下下表表給給出了二元操作符的定義出了二元操作符的定義列表列表a+ba加加ba-ba減減ba*ba乘乘ba/ba除除ba%ba模模ba*ba的的b次冪乘次冪乘p 整數(shù)除法截?cái)嗳魏涡?shù)部分。例如:整數(shù)除法截?cái)嗳魏涡?shù)部分。例如:7/47/4結(jié)果為結(jié)果為1 1。p 對(duì)于除法和取模運(yùn)算,如果第二個(gè)操作數(shù)為對(duì)于除法和取模運(yùn)算,如果第
19、二個(gè)操作數(shù)為0 0,則整個(gè),則整個(gè)結(jié)果的值為結(jié)果的值為x x。p取取模操作符求出與第一個(gè)操作符符號(hào)相同的余數(shù)。模操作符求出與第一個(gè)操作符符號(hào)相同的余數(shù)。7%47%4結(jié)果結(jié)果為為3 3,而:,而:-7%4 -7%4 結(jié)果為結(jié)果為-3-3。冪乘操作符規(guī)則冪乘操作符規(guī)則op1op2負(fù)數(shù)負(fù)數(shù)1正數(shù)正數(shù)op1*op2op2是奇數(shù)是奇數(shù)-1op2是偶數(shù)是偶數(shù)-101op1*op2零零11111負(fù)數(shù)負(fù)數(shù)0op2是奇數(shù)是奇數(shù)-1op2是偶數(shù)是偶數(shù)-1x10如果冪乘的第一個(gè)操作數(shù)為如果冪乘的第一個(gè)操作數(shù)為0 0,并且第二個(gè)操作數(shù)不是正數(shù);或者第一,并且第二個(gè)操作數(shù)不是正數(shù);或者第一個(gè)操作數(shù)實(shí)負(fù)數(shù),第二個(gè)操作數(shù)不
20、是整數(shù),則沒有個(gè)操作數(shù)實(shí)負(fù)數(shù),第二個(gè)操作數(shù)不是整數(shù),則沒有定義定義其結(jié)果。其結(jié)果。p 對(duì)于一元操作,其優(yōu)先級(jí)大于二元操作對(duì)于一元操作,其優(yōu)先級(jí)大于二元操作。 下表給出了一元下表給出了一元操作符操作符p 在在算術(shù)算術(shù)操作符操作符中中,如果,如果任任何何操作數(shù)操作數(shù)的位值的位值是是x x或或z z,那么,那么整個(gè)整個(gè)結(jié)果結(jié)果為為x x。p 算術(shù)表達(dá)式結(jié)果的長(zhǎng)度由最長(zhǎng)的操作數(shù)決定。在算術(shù)表達(dá)式結(jié)果的長(zhǎng)度由最長(zhǎng)的操作數(shù)決定。在賦值語(yǔ)賦值語(yǔ)句句中中, , 算術(shù)算術(shù)操作結(jié)果的長(zhǎng)度由操作符左端目標(biāo)操作結(jié)果的長(zhǎng)度由操作符左端目標(biāo)長(zhǎng)度決定長(zhǎng)度決定。+m一一元加元加m(和(和m一樣)一樣)-m一一元減元減m算術(shù)算
21、術(shù)操作的操作的Verilog HDL描述描述例子例子 10%3=1 11%3=2 12%3=0 -10%3=-1 11%-3=2 -4d12%3=1 3*2=9 2*3=8 2*0=1 0*0=1 2.0*-3sb1=0.5 2*-3sb1=0 0*-1=x 9*0.5=3.0 9.0*(1/2)=1.0 -3.0*2.0=9.0在表達(dá)式中使用整數(shù)和寄存器數(shù)據(jù)類型的在表達(dá)式中使用整數(shù)和寄存器數(shù)據(jù)類型的Verilog Verilog HDLHDL描述的例子描述的例子 integer intA; reg 15:0 regA; reg signed 15:0 regS; intA = -4d12;
22、regA = intA / 3; /表達(dá)式是表達(dá)式是-4, intA是整數(shù)數(shù)據(jù)類型是整數(shù)數(shù)據(jù)類型,regA的值的值是是65532regal = -4d12; / regA是是65524intA = regA / 3; / 表達(dá)式的值為表達(dá)式的值為21841,regA是是寄存器寄存器類型數(shù)據(jù)類型數(shù)據(jù)intA = -4d12 / 3; / 表達(dá)式的結(jié)果為表達(dá)式的結(jié)果為1431655761,是,是一一個(gè)個(gè)32位的位的 寄存器寄存器數(shù)據(jù)數(shù)據(jù)regA = -12 / 3; / 表達(dá)式結(jié)果表達(dá)式結(jié)果-4,一個(gè)整數(shù)類型,一個(gè)整數(shù)類型,regA 是是 65532regS = -12 / 3; / 表達(dá)式結(jié)果表
23、達(dá)式結(jié)果-4。regS是有符號(hào)寄存器是有符號(hào)寄存器regS = -4sd12 / 3; / 表達(dá)式結(jié)果表達(dá)式結(jié)果1。-4sd12為為4關(guān)系操作符關(guān)系操作符關(guān)系關(guān)系操作符列表操作符列表aba大于大于ba=ba大于等于大于等于b關(guān)系關(guān)系操作符有下面特點(diǎn):操作符有下面特點(diǎn):p 關(guān)系關(guān)系操作符的結(jié)果為真(操作符的結(jié)果為真(1)或假()或假(0)。)。p 如果如果操作數(shù)中有一位為操作數(shù)中有一位為X或或Z,那么結(jié)果為,那么結(jié)果為X。p 如果如果關(guān)系運(yùn)算存在無符號(hào)關(guān)系運(yùn)算存在無符號(hào)數(shù)時(shí),將表達(dá)式看作是無符號(hào)數(shù)時(shí),將表達(dá)式看作是無符號(hào)數(shù)。當(dāng)操作數(shù)長(zhǎng)度不數(shù)。當(dāng)操作數(shù)長(zhǎng)度不同時(shí)同時(shí),位寬較,位寬較短的操作數(shù)將短的
24、操作數(shù)將0擴(kuò)展到擴(kuò)展到寬度較大的操作數(shù)寬度較大的操作數(shù)的位寬范圍。的位寬范圍。p如果如果關(guān)系運(yùn)算都是有符號(hào)關(guān)系運(yùn)算都是有符號(hào)數(shù)時(shí),將表達(dá)式看作是有符號(hào)數(shù)時(shí),將表達(dá)式看作是有符號(hào)的。當(dāng)?shù)摹.?dāng)操作數(shù)長(zhǎng)度不同時(shí)操作數(shù)長(zhǎng)度不同時(shí),位寬,位寬較短的操作數(shù)將符號(hào)擴(kuò)較短的操作數(shù)將符號(hào)擴(kuò)展到寬度較大的操作數(shù)的寬度范圍展到寬度較大的操作數(shù)的寬度范圍。 p 所所有關(guān)系運(yùn)算符的優(yōu)先級(jí)相同,但是比算數(shù)運(yùn)算符有關(guān)系運(yùn)算符的優(yōu)先級(jí)相同,但是比算數(shù)運(yùn)算符的優(yōu)先級(jí)的優(yōu)先級(jí)要低要低。p 如果如果操作數(shù)操作數(shù)中有實(shí)數(shù)中有實(shí)數(shù),則將所有操作數(shù)轉(zhuǎn)換則將所有操作數(shù)轉(zhuǎn)換為實(shí)數(shù)。為實(shí)數(shù)。然后進(jìn)行關(guān)系運(yùn)算然后進(jìn)行關(guān)系運(yùn)算。關(guān)系關(guān)系操作符的操
25、作符的Verilog HDL描述例子描述例子 a foo 1等價(jià)于等價(jià)于a (foo - 1) foo - (1 a)不等價(jià)于不等價(jià)于foo - 1 a 相等操作符相等操作符 下表給下表給出了相等關(guān)系操作符列表出了相等關(guān)系操作符列表a=ba等于等于b,包含,包含x和和za!=ba不等于不等于b,包含,包含x和和za=ba等于等于b,結(jié)果可能未知(比較不包括,結(jié)果可能未知(比較不包括x和和z)a!=ba不等于不等于b,結(jié)果可能未知(比較不包括,結(jié)果可能未知(比較不包括x和和z)相等關(guān)系操作符有下面相等關(guān)系操作符有下面特點(diǎn):特點(diǎn):p 相等相等操作符有相同的優(yōu)先級(jí)。操作符有相同的優(yōu)先級(jí)。p 如果如果
26、相等操作中存在無符號(hào)數(shù),當(dāng)操作數(shù)長(zhǎng)度不同時(shí),相等操作中存在無符號(hào)數(shù),當(dāng)操作數(shù)長(zhǎng)度不同時(shí),長(zhǎng)度長(zhǎng)度較短較短的操作數(shù)將的操作數(shù)將0擴(kuò)展到擴(kuò)展到寬度寬度較大較大的操作數(shù)的范圍。的操作數(shù)的范圍。p 如果如果相等操作中都是有符號(hào)數(shù),當(dāng)操作數(shù)長(zhǎng)度不同時(shí),相等操作中都是有符號(hào)數(shù),當(dāng)操作數(shù)長(zhǎng)度不同時(shí),長(zhǎng)度較短長(zhǎng)度較短的操作數(shù)將的操作數(shù)將符號(hào)符號(hào)擴(kuò)展擴(kuò)展到到寬度寬度較大較大的操作數(shù)的范的操作數(shù)的范圍。圍。p如果操作數(shù)中間有實(shí)數(shù),如果操作數(shù)中間有實(shí)數(shù),則則將所有操作數(shù)將所有操作數(shù)都都轉(zhuǎn)換為實(shí)數(shù)。轉(zhuǎn)換為實(shí)數(shù)。然后進(jìn)行相等運(yùn)算。然后進(jìn)行相等運(yùn)算。p 如果如果比較結(jié)果為假,則結(jié)果為比較結(jié)果為假,則結(jié)果為0;否則結(jié)果為;
27、否則結(jié)果為1。l 在在=和和!=比較中,值比較中,值x和和z嚴(yán)格按位比較。也就是說,嚴(yán)格按位比較。也就是說,不進(jìn)行解釋,并且結(jié)果一定可知。不進(jìn)行解釋,并且結(jié)果一定可知。這個(gè)這個(gè)比較可比較可用于用于case語(yǔ)語(yǔ)句描述中。句描述中。l 在在=和和!=比較中,值比較中,值x和和z具有通常的意義,且結(jié)果可以不具有通常的意義,且結(jié)果可以不為為x。也就是說,在邏輯比較中,如果兩個(gè)操作數(shù)之一包。也就是說,在邏輯比較中,如果兩個(gè)操作數(shù)之一包含含x或或z,結(jié)果為未知的值(,結(jié)果為未知的值(x)。)。這個(gè)用于邏輯比較中。這個(gè)用于邏輯比較中。相等相等關(guān)系操作符關(guān)系操作符Verilog HDLVerilog HDL描
28、述的例子描述的例子Data= b11x0;Addr= b11x0; 那么:那么:Data=Addr不定,也就是說值為不定,也就是說值為x;但;但Data=Addr比較結(jié)果為比較結(jié)果為真,也就是說值為真,也就是說值為1。p 如果如果操作數(shù)的長(zhǎng)度不相等,長(zhǎng)度較小的操作數(shù)在左側(cè)操作數(shù)的長(zhǎng)度不相等,長(zhǎng)度較小的操作數(shù)在左側(cè)添添0補(bǔ)位,例如:補(bǔ)位,例如:2b10 = = 4b0010,與后面的表達(dá)式相,與后面的表達(dá)式相同:同:4b0010 = = 4b0010,結(jié)果為真(,結(jié)果為真(1)。)。邏輯操作符邏輯操作符p 符號(hào)符號(hào)&(邏輯與)(邏輯與)和符號(hào)和符號(hào)|(邏輯或)(邏輯或)用于邏輯的連接。用于邏輯的
29、連接。p 邏輯比較邏輯比較的結(jié)果為的結(jié)果為1(真)或者(真)或者0(假)(假)。當(dāng)結(jié)果模糊的。當(dāng)結(jié)果模糊的時(shí)候,為時(shí)候,為x。&(邏輯與)(邏輯與)的優(yōu)先級(jí)大于的優(yōu)先級(jí)大于|(邏輯或)(邏輯或)。邏輯操作的優(yōu)先級(jí)低于邏輯操作的優(yōu)先級(jí)低于關(guān)系操作和關(guān)系操作和相等操作。相等操作。p符號(hào)符號(hào)?。ㄟ壿嫹牵┦且辉僮鞣?。(邏輯非)是一元操作符。p這些操作符在邏輯值這些操作符在邏輯值0/1上操作。邏輯操作的結(jié)構(gòu)為上操作。邏輯操作的結(jié)構(gòu)為0或或1邏輯邏輯關(guān)系操作的關(guān)系操作的Verilog HDLVerilog HDL描述例子描述例子1 1 假設(shè)假設(shè)alpha=237,beta=0 regA = alpha
30、& beta; / regA設(shè)置為設(shè)置為0 regB = alpha | beta; / regB設(shè)置為設(shè)置為1邏輯邏輯關(guān)系操作的關(guān)系操作的Verilog HDLVerilog HDL描述例子描述例子2 2 a size-1 & b != c & index != lastone 為了為了便于理解和查看設(shè)計(jì),推薦使用下面的方法描述便于理解和查看設(shè)計(jì),推薦使用下面的方法描述上上面面給出給出的的邏輯操作邏輯操作 (a size-1) & (b != c) & (index != lastone)邏輯關(guān)系操作的邏輯關(guān)系操作的Verilog HDLVerilog HDL描述例子描述例子3 3 if (
31、!inword) 也也可以表示為可以表示為: if (inword = 0)按按位位操作符操作符下表給出對(duì)于不同操作符按位操作的結(jié)果下表給出對(duì)于不同操作符按位操作的結(jié)果&(二元按位與)(二元按位與)0 1 x z01xz0 0 0 00 1 x x0 x x x0 x x x(二元按位異或)(二元按位異或)0 1 x z01xz0 1 x x1 0 x xx x x xx x x x(一元非一元非)1 0 x x|(二元按位或)(二元按位或)0 1 x z01xz0 1 x x1 1 1 1x 1 x xx 1 x x(二元按位異或非)(二元按位異或非)0 1 x z01xz1 0 x x0
32、1 x xx x x xx x x x 如果如果操作數(shù)長(zhǎng)度不相等操作數(shù)長(zhǎng)度不相等, , 長(zhǎng)度較小的操作數(shù)在最左側(cè)添長(zhǎng)度較小的操作數(shù)在最左側(cè)添0 0補(bǔ)位。補(bǔ)位。例如:例如:b0110b10000b0110b10000,與如下式的操作相同:,與如下式的操作相同:b00110b10000b00110b10000,結(jié)果為結(jié)果為b10110b10110。歸約操作符歸約操作符p 歸約歸約操作符在單一操作數(shù)的所有位上操作,并產(chǎn)生操作符在單一操作數(shù)的所有位上操作,并產(chǎn)生1 1位結(jié)位結(jié)果。歸約操作符有:果。歸約操作符有:u & (歸約與歸約與)l 如果如果存在位值為存在位值為0, 那么結(jié)果為那么結(jié)果為0。l 否
33、則否則如果如果存在位值為存在位值為x或或z,結(jié)果為,結(jié)果為x。l 否則否則結(jié)果為結(jié)果為1。u & ( 歸約與非歸約與非)l與與歸約操作符歸約操作符&相反。相反。u | ( 歸約或歸約或)l 如果如果存在位值為存在位值為1,那么結(jié)果為,那么結(jié)果為1。l 否則否則如果如果存在位存在位x或或z,結(jié)果為,結(jié)果為x。l 否則否則結(jié)果為結(jié)果為0。u | ( 歸約或非歸約或非)l與與歸約操作符歸約操作符|相反。相反。u ( 歸約異或歸約異或)p (歸約異或非歸約異或非)l 與與歸約操作符歸約操作符正好相反。正好相反。l 如果如果存在位值為存在位值為x或或z,那么結(jié)果為,那么結(jié)果為x。l 否則否則如果操作數(shù)中
34、有偶數(shù)個(gè)如果操作數(shù)中有偶數(shù)個(gè)1, 結(jié)果為結(jié)果為0。l 否則否則結(jié)果為結(jié)果為1。歸約歸約異或操作符用于決定向量中是否有位為異或操作符用于決定向量中是否有位為x x。下表給下表給出了一元規(guī)約操作結(jié)果的列表。出了一元規(guī)約操作結(jié)果的列表。操作數(shù)操作數(shù)&|4b00000101014b11111010014b01100110014b1000011010歸約歸約異或操作符的異或操作符的Verilog HDLVerilog HDL描述的例子描述的例子 假定假定: MyReg=4b01x0; 則則: MyReg結(jié)果為結(jié)果為x 上述上述功能使用如下的功能使用如下的if語(yǔ)句檢測(cè):語(yǔ)句檢測(cè): if (MyReg=1b
35、x) $display(There is an unknown in the vector MyReg !)注:注: 邏輯相等邏輯相等(=)操作符不能用于比較操作,這是因?yàn)檫壿嬒嗟炔僮鞣荒苡糜诒容^操作,這是因?yàn)檫壿嬒嗟炔僮鞣容^操作將只會(huì)產(chǎn)生結(jié)果操作符比較操作將只會(huì)產(chǎn)生結(jié)果x。全等操作符期望的結(jié)果為值。全等操作符期望的結(jié)果為值1。移位操作符移位操作符 移位移位操作符包括:操作符包括:p (邏輯右移)(邏輯右移)p (算術(shù)右移)(算術(shù)右移) 移位移位操作符操作符左側(cè)左側(cè)的的操作數(shù)操作數(shù)將將移動(dòng)移動(dòng)右側(cè)右側(cè)操作數(shù)操作數(shù)所指定的所指定的位數(shù)位數(shù),它是一個(gè)邏輯移位??臻e它是一個(gè)邏輯移位??臻e位位補(bǔ)補(bǔ)
36、0。如果右側(cè)操作數(shù)的如果右側(cè)操作數(shù)的值為值為x或或z,則則移位移位操作的結(jié)果為操作的結(jié)果為x。移位移位操作符的操作符的Verilog HDLVerilog HDL描述描述 例例: : 假設(shè)假設(shè)start的值為的值為4b0001。 module ashift; reg 3:0 start, result; initial begin start = 1; result = (start 2); /結(jié)果是結(jié)果是1110 end endmodule條件操作符條件操作符條件條件操作符操作符將將根據(jù)根據(jù)條件表達(dá)式的條件表達(dá)式的值值來來選擇選擇表達(dá)式表達(dá)式,格式格式如下:如下: cond_expr con
37、d_expr ? expr1:expr2? expr1:expr2p 如果如果cond_expr為真為真(即值為即值為1),選擇,選擇expr1。p 如果如果cond_expr為假為假(值為值為0),選擇,選擇expr2。p 如果如果cond_expr為為x或或z,結(jié)果將是按以下邏輯,結(jié)果將是按以下邏輯expr1和和expr2按位操作的值:按位操作的值:0與與0得得0,1與與1得得1,其余情況為,其余情況為x。條件條件操作符的操作符的Verilog HDLVerilog HDL描述例子描述例子1 1 wire0:2Student=Marks18 ? Grade_A:Grade_C; 計(jì)算計(jì)算表
38、達(dá)式表達(dá)式Marks18的值:的值: (1)如果如果結(jié)果為真結(jié)果為真,則將則將Grade_A賦值賦值給給Student。 (2)如果如果結(jié)果為假結(jié)果為假,則將則將Grade_C賦值賦值給給Student。條件條件操作符的操作符的Verilog HDLVerilog HDL描述例子描述例子2 2 always#5 Ctr=(Ctr!=25)?(Ctr+1):5; 過程過程賦值中的表達(dá)式表明:賦值中的表達(dá)式表明: (1)如果如果Ctr不等于不等于25,則則將將Ctr的值的值加加1賦給賦給Ctr。 (2)如果如果Ctr等于等于為為25,則將,則將Ctr值重新置為值重新置為5連接連接和復(fù)制和復(fù)制操作操
39、作 連接連接操作是操作是將位寬較小的表達(dá)式將位寬較小的表達(dá)式合并合并形成位形成位寬較大的表達(dá)式的一種操作寬較大的表達(dá)式的一種操作。其描述格式如下:。其描述格式如下:expr1,expr2,.,exprNexpr1,expr2,.,exprN 由于由于非定長(zhǎng)常數(shù)非定長(zhǎng)常數(shù)的的位寬位寬未知未知, ,所以不所以不允許連接非定長(zhǎng)允許連接非定長(zhǎng)常數(shù)。常數(shù)。復(fù)制操作就是將一復(fù)制操作就是將一個(gè)表達(dá)式復(fù)制多次的個(gè)表達(dá)式復(fù)制多次的操作,其描操作,其描述格式述格式如下:如下: replication_constant expr replication_constant expr其中其中:p replication
40、_constant 為為非負(fù)數(shù)、非非負(fù)數(shù)、非z和非和非x的常數(shù),表示復(fù)制的次數(shù)。的常數(shù),表示復(fù)制的次數(shù)。p expr 為為需要復(fù)制的表達(dá)式需要復(fù)制的表達(dá)式。注:注: 包含有復(fù)制的連接表達(dá)式,不能出現(xiàn)在分配的左側(cè)操作數(shù),包含有復(fù)制的連接表達(dá)式,不能出現(xiàn)在分配的左側(cè)操作數(shù),也不能連接到也不能連接到output或者或者input端口上。端口上。連接連接操作的操作的Verilog HDLVerilog HDL描述的例子描述的例子 a, b3:0, w, 3b101 等效等效于于 a, b3, b2, b1, b0, w, 1b1, 1b0, 1b1復(fù)制復(fù)制操作的操作的Verilog HDLVerilo
41、g HDL描述的例子描述的例子 4w 等效等效于于 w, w, w, w復(fù)制復(fù)制和連接操作的和連接操作的Verilog HDLVerilog HDL描述描述的的例子例子 b, 3a, b 等效于等效于 b, a, b, a, b, a, b 復(fù)制復(fù)制操作可以復(fù)制值為操作可以復(fù)制值為0 0的常數(shù)的常數(shù)。在。在參數(shù)化參數(shù)化代碼時(shí)代碼時(shí),這這是非是非常有用的常有用的。 帶有帶有0 0復(fù)制常數(shù)的復(fù)制,被認(rèn)為是大小為復(fù)制常數(shù)的復(fù)制,被認(rèn)為是大小為0 0,并且被忽略。這樣一個(gè)復(fù)制,并且被忽略。這樣一個(gè)復(fù)制,只能只能在在至少至少有一個(gè)有一個(gè)連接操作數(shù)是連接操作數(shù)是正數(shù)正數(shù)的連接中的連接中。復(fù)制復(fù)制和連接操作
42、分配限制的和連接操作分配限制的Verilog HDLVerilog HDL描述描述的的例例子子parameter P = 32;/ 下面對(duì)于下面對(duì)于1到到32是是合法合法的的。assign b31:0 = 32-P1b1, aP-1:0 ;/ 對(duì)于對(duì)于P=32來說,下面來說,下面是是非法非法的的。因?yàn)椤R驗(yàn)?復(fù)制單獨(dú)出現(xiàn)在一復(fù)制單獨(dú)出現(xiàn)在一個(gè)連接中。個(gè)連接中。assign c31:0 = 32-P1b1, aP-1:0 / 對(duì)對(duì)P=32來說來說,下面下面是是非法非法的的。initial$displayb(32-P1b1, aP-1:0);復(fù)制操作復(fù)制操作Verilog Verilog HDLH
43、DL描述的例子描述的例子 result = 4func(w) ; 等效為:等效為: y = func(w) ; result = y, y, y, y ; 在在表達(dá)式中需要指定一些類型的操作數(shù)。最簡(jiǎn)表達(dá)式中需要指定一些類型的操作數(shù)。最簡(jiǎn)單的操作數(shù)包括:網(wǎng)絡(luò)、變量、單的操作數(shù)包括:網(wǎng)絡(luò)、變量、參數(shù),還包括參數(shù),還包括以下:以下:p如果如果要求一個(gè)向量網(wǎng)絡(luò)、向量寄存器、整數(shù)或者時(shí)間變量要求一個(gè)向量網(wǎng)絡(luò)、向量寄存器、整數(shù)或者時(shí)間變量或者參數(shù)的單個(gè)比特或者參數(shù)的單個(gè)比特位時(shí),則位時(shí),則需要使用位選擇操作數(shù)。需要使用位選擇操作數(shù)。p如果如果要求一個(gè)向量網(wǎng)絡(luò)、向量寄存器、整數(shù)或者時(shí)間變量要求一個(gè)向量網(wǎng)絡(luò)、
44、向量寄存器、整數(shù)或者時(shí)間變量或者參數(shù)的某些相鄰的或者參數(shù)的某些相鄰的比特比特位,則需要使用部分選擇操作位,則需要使用部分選擇操作數(shù)。數(shù)。p可以可以引用數(shù)組元素或者一個(gè)數(shù)組元素的位選擇引用數(shù)組元素或者一個(gè)數(shù)組元素的位選擇/部分,部分,作為一個(gè)操作數(shù)作為一個(gè)操作數(shù)。p其它其它操作數(shù)的一個(gè)連接也可以指定為一個(gè)操作數(shù)操作數(shù)的一個(gè)連接也可以指定為一個(gè)操作數(shù)。p一一個(gè)函數(shù)調(diào)用也是一個(gè)操作數(shù)。個(gè)函數(shù)調(diào)用也是一個(gè)操作數(shù)。向量向量位選擇和部分選擇位選擇和部分選擇尋址尋址 如果如果位選擇位選擇/ /部分選擇超出地址范圍,或者位部分選擇超出地址范圍,或者位選擇為選擇為x/zx/z,則返回的結(jié)果為,則返回的結(jié)果為x
45、x。 一一個(gè)標(biāo)量,或者一個(gè)類型為實(shí)數(shù)或者實(shí)時(shí)時(shí)間個(gè)標(biāo)量,或者一個(gè)類型為實(shí)數(shù)或者實(shí)時(shí)時(shí)間的變量或者參數(shù),位選擇或者部分選擇是無效的。的變量或者參數(shù),位選擇或者部分選擇是無效的。對(duì)于部分選擇,有兩種類型:對(duì)于部分選擇,有兩種類型:p 常數(shù)常數(shù)部分選擇。部分選擇。 表示表示為:為: vectmsb_expr:lsb_expr 其中其中: msb_expr和和lsb_expr為常數(shù)的整數(shù)表達(dá)式。為常數(shù)的整數(shù)表達(dá)式。p索引部分選擇。索引部分選擇。表示為:表示為: reg 15:0 big_vect; reg 0:15 little_vect; big_vectlsb_base_expr +: width
46、_expr little_vectmsb_base_expr +: width_expr big_vectmsb_base_expr -: width_expr little_vectlsb_base_expr -: width_expr 其中:其中:umsb_expr和和lsb_expr為常數(shù)的整數(shù)為常數(shù)的整數(shù)表達(dá)式,可以表達(dá)式,可以在運(yùn)行在運(yùn)行的時(shí)候改變。的時(shí)候改變。uwidth_expr為正常數(shù)表達(dá)式。為正常數(shù)表達(dá)式。數(shù)組數(shù)組部分選擇的部分選擇的Verilog HDLVerilog HDL描述例子描述例子reg 31: 0 big_vect;reg 0 :31 little_vect;i
47、nteger sel;big_vect 0 +: 8 / = big_vect 7 : 0big_vect15 -: 8 / = big_vect15 : 8little_vect 0 +: 8 / = little_vect0 : 7little_vect15 -: 8 / = little_vect8 :15dword8*sel +: 8 / 帶有固定寬度的變量部分選擇帶有固定寬度的變量部分選擇數(shù)組數(shù)組和存儲(chǔ)器和存儲(chǔ)器尋址尋址 對(duì)于對(duì)于 reg 7:0 mem_name0:1023; 存儲(chǔ)器地址表示為:存儲(chǔ)器地址表示為: mem_nameaddr_expr 其中其中:p addr_expr
48、為任意整數(shù)表達(dá)式為任意整數(shù)表達(dá)式。pmem_namemem_name3表示表示存儲(chǔ)器的間接尋址。存儲(chǔ)器的間接尋址。存儲(chǔ)器尋址存儲(chǔ)器尋址Verilog Verilog HDLHDL描述的例子描述的例子 reg 7:0 twod_array0:2550:255; wire threed_array0:2550:2550:7; twod_array1413:0 /訪問字的低四位訪問字的低四位 twod_array136 /訪問字的第訪問字的第6位位 twod_array13sel / 使用可變的位選擇使用可變的位選擇 threed_array1413:0 / 非法非法延遲表達(dá)式延遲表達(dá)式 Veril
49、og Verilog HDLHDL中,延遲表達(dá)式的格中,延遲表達(dá)式的格式為用圓括號(hào)括起來的三個(gè)表達(dá)式,這三個(gè)表達(dá)式為用圓括號(hào)括起來的三個(gè)表達(dá)式,這三個(gè)表達(dá)式之間用冒號(hào)分隔開式之間用冒號(hào)分隔開。 三三個(gè)表達(dá)式依次代表最小、典型、最大延遲時(shí)間個(gè)表達(dá)式依次代表最小、典型、最大延遲時(shí)間值。值。延遲延遲表達(dá)式的表達(dá)式的Verilog HDLVerilog HDL描述例子。描述例子。(a:b:c)+(d:e:f) 表示表示:p 最小最小延遲值為延遲值為a+d的和的和。p典型典型延遲值為延遲值為b+e的和的和。p 最大最大延遲值為延遲值為c+f的和。的和。分配分配min:typ:maxmin:typ:max
50、格式值的格式值的Verilog HDLVerilog HDL描述例子描述例子val - (32d 50: 32d 75: 32d 100) 為了為了對(duì)表達(dá)式求對(duì)表達(dá)式求值時(shí)得到值時(shí)得到可靠的結(jié)果,控制表達(dá)可靠的結(jié)果,控制表達(dá)式的位寬是非常重要式的位寬是非常重要。p 在某些在某些情況下采取最簡(jiǎn)單的解決情況下采取最簡(jiǎn)單的解決方法方法。u比如比如:如果指定了兩個(gè):如果指定了兩個(gè)16位的寄存器矢量的位排序位的寄存器矢量的位排序方式和操作,那么結(jié)果就是一個(gè)方式和操作,那么結(jié)果就是一個(gè)16位的值位的值。 p 然而然而,在某些情況下,究竟有多少位參與表達(dá)式求值或者結(jié)果,在某些情況下,究竟有多少位參與表達(dá)式求
51、值或者結(jié)果有多少位,并不容易看出來。有多少位,并不容易看出來。u 例如例如:兩個(gè):兩個(gè)16位操作數(shù)之間的算術(shù)加法,是應(yīng)該使位操作數(shù)之間的算術(shù)加法,是應(yīng)該使用用16位求值還是該使用位求值還是該使用17位(允許進(jìn)位位溢出)求值位(允許進(jìn)位位溢出)求值? 答案答案取決于取決于被被建模器件的類型以及那個(gè)設(shè)備是否建模器件的類型以及那個(gè)設(shè)備是否處理進(jìn)位位溢出來決定處理進(jìn)位位溢出來決定。 Verilog HDL利用操作數(shù)的位寬來決定有多少位參利用操作數(shù)的位寬來決定有多少位參與表達(dá)式的求值。與表達(dá)式的求值。表達(dá)式表達(dá)式長(zhǎng)度長(zhǎng)度Veriog HDLVeriog HDL描述的例子描述的例子 reg 15:0 a,
52、 b; / 16位寄存器類型位寄存器類型 reg 15:0 sumA; / 16位寄存器類型位寄存器類型 reg 16:0 sumB; / 17位寄存器位寄存器類型類型 sumA = a + b; / 結(jié)果結(jié)果16位位 sumB = a + b; / 結(jié)果結(jié)果17位位控制控制表達(dá)式位寬的規(guī)則已經(jīng)公式化,因此在大多數(shù)表達(dá)式位寬的規(guī)則已經(jīng)公式化,因此在大多數(shù)實(shí)際情況下,都有一個(gè)簡(jiǎn)單的解決方法。實(shí)際情況下,都有一個(gè)簡(jiǎn)單的解決方法。p表達(dá)式位寬是由包含在表達(dá)式內(nèi)的操作數(shù)和表達(dá)式所處的表達(dá)式位寬是由包含在表達(dá)式內(nèi)的操作數(shù)和表達(dá)式所處的環(huán)境決定的環(huán)境決定的。p自主自主表達(dá)式的位寬由它自身單獨(dú)決定,比如延遲
53、表達(dá)式表達(dá)式的位寬由它自身單獨(dú)決定,比如延遲表達(dá)式。p環(huán)境環(huán)境決定型表達(dá)式的位寬由該表達(dá)式自己的位寬和它所處決定型表達(dá)式的位寬由該表達(dá)式自己的位寬和它所處的環(huán)境來決定,的環(huán)境來決定,比如比如:一一個(gè)賦值操作中右側(cè)表達(dá)式的位寬個(gè)賦值操作中右側(cè)表達(dá)式的位寬由它自己的位寬和賦值符左側(cè)的位寬來決定。由它自己的位寬和賦值符左側(cè)的位寬來決定。 下表說下表說明了表達(dá)式的形式如何決定表達(dá)式結(jié)果的位寬。表中明了表達(dá)式的形式如何決定表達(dá)式結(jié)果的位寬。表中i i、j j、k k都表都表示單操作數(shù)的示單操作數(shù)的表達(dá)式,而表達(dá)式,而L L(i i)代表表達(dá)式)代表表達(dá)式i i的位寬,的位寬,opop代表操作符。代表操作
54、符。表達(dá)式表達(dá)式結(jié)果結(jié)果值位寬值位寬說明說明不定不定長(zhǎng)常數(shù)長(zhǎng)常數(shù)與與整數(shù)相同整數(shù)相同 定定長(zhǎng)常數(shù)長(zhǎng)常數(shù)與與給定的位寬相同給定的位寬相同 i op j,操作符,操作符op為:為:+ - * / % & | or max(L(i),L(j)) op i,操作符,操作符op為:為:+ - L(i) i op j,操作符,操作符op為:為:=!= = != & | = 1; /不能正常操作不能正常操作 自主自主表達(dá)式的表達(dá)式的Veriog HDLVeriog HDL描述的描述的例子例子 reg 3:0 a; reg 5:0 b; reg 15:0 c; initial begin a = 4hF; b = 6hA;$display(a*b=%h, a*b);c = a*b; $display(a*b=%h, c);c = a*b; $display(c=%h, c);end仿真器的輸出結(jié)果:仿真器的輸出結(jié)果: a*b=16 / 由于長(zhǎng)度為由于長(zhǎng)度為6,所以,所以h96被截?cái)嗟奖唤財(cái)嗟絟16。 a*b=1 / 表達(dá)式的長(zhǎng)度為表達(dá)式的長(zhǎng)度為4 c=ac61 / 表達(dá)式的長(zhǎng)度為表達(dá)式
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024屆貴港市重點(diǎn)中學(xué)高三年級(jí)四月考數(shù)學(xué)試題
- 采購(gòu)合同維保內(nèi)容
- 編制合同心得體會(huì)
- 防汛應(yīng)急演練
- 銀行會(huì)計(jì)主管述職報(bào)告
- 遼寧省丹東市七校協(xié)作體2024-2025學(xué)年高一上學(xué)期11月期中地理試題
- 高考班考題昌黎文匯學(xué)校2024-2025學(xué)年第一學(xué)期期中考試高二化學(xué)試題
- 放射性示蹤在醫(yī)學(xué)影像中的作用
- 風(fēng)電電纜相關(guān)行業(yè)投資規(guī)劃報(bào)告范本
- 基礎(chǔ)地質(zhì)勘查服務(wù)相關(guān)項(xiàng)目投資計(jì)劃書
- 2024年技術(shù)授權(quán)與股權(quán)互換協(xié)議
- 2024-2030年中國(guó)油套管行業(yè)產(chǎn)銷現(xiàn)狀分析及投資可行性研究報(bào)告
- 職業(yè)教育教師聘用制度
- 江蘇省南京市鼓樓區(qū)2024-2025學(xué)年八年級(jí)上學(xué)期期中英語(yǔ)試卷(含答案解析)
- (人教版2024)七年級(jí)英語(yǔ)上冊(cè)Unit 5 綜合復(fù)習(xí)課件
- 2024年中級(jí)司泵工職業(yè)鑒定考試題庫(kù)(精練500題)
- GB/T 19963.2-2024風(fēng)電場(chǎng)接入電力系統(tǒng)技術(shù)規(guī)定第2部分:海上風(fēng)電
- 期中 (試題) -2024-2025學(xué)年外研版(三起)英語(yǔ)六年級(jí)上冊(cè)
- 蒂升技能等級(jí)考試復(fù)習(xí)試題及答案
- 2024新信息科技四年級(jí)《第二單元 用編碼描繪世界》大單元整體教學(xué)設(shè)計(jì)
- 小學(xué)生防性侵安全教育主題班會(huì)課件
評(píng)論
0/150
提交評(píng)論