版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章VerilogHDL語(yǔ)言簡(jiǎn)介5.1VerilogHDL程序的基本構(gòu)成 5.2VerilogHDL語(yǔ)言的數(shù)據(jù)類(lèi)型 5.3詞匯規(guī)定 5.4模塊和端口 5.5行為描述 5.6VerilogHDL語(yǔ)言編程練習(xí)
VerilogHDL是一種硬件描述語(yǔ)言,用于從算法級(jí)、門(mén)級(jí)到開(kāi)關(guān)級(jí)的多種抽象設(shè)計(jì)層次的數(shù)字系統(tǒng)建模。被建模的數(shù)字系統(tǒng)對(duì)象的復(fù)雜性可以介于簡(jiǎn)單的門(mén)和完整的電子數(shù)字系統(tǒng)之間。數(shù)字系統(tǒng)能夠按層次描述,并可在相同描述中顯式地進(jìn)行時(shí)序建模。VerilogHDL語(yǔ)言具有下述描述能力:設(shè)計(jì)的行為特性、設(shè)計(jì)的數(shù)據(jù)流特性、設(shè)計(jì)的結(jié)構(gòu)組成以及包含響應(yīng)監(jiān)控與設(shè)計(jì)驗(yàn)證方面的時(shí)延和波形產(chǎn)生機(jī)制。
VerilogHDL語(yǔ)言是于1983年由GatewayDesignAutomation公司為其模擬器產(chǎn)品開(kāi)發(fā)的硬件建模語(yǔ)言。最初它只是一種專(zhuān)用語(yǔ)言,后來(lái)由于模擬、仿真器產(chǎn)品的廣泛使用,VerilogHDL作為一種方便且實(shí)用的語(yǔ)言逐漸為眾多設(shè)計(jì)者所接受。VerilogHDL語(yǔ)言于1990年被推向公眾領(lǐng)域。OpenVerilogInternational(OVI)是促進(jìn)Verilog發(fā)展的國(guó)際性組織。1992年,OVI決定致力將VerilogOVI標(biāo)準(zhǔn)推廣成為IEEE標(biāo)準(zhǔn)。這一努力最后獲得成功,Verilog語(yǔ)言于1995年成為IEEE標(biāo)準(zhǔn),稱(chēng)為IEEEStd1364-1995。Verilog硬件描述語(yǔ)言參考手冊(cè)中詳細(xì)描述了該標(biāo)準(zhǔn)。本章主要對(duì)VerilogHDL語(yǔ)言作一簡(jiǎn)介,詳細(xì)的編程使用請(qǐng)參考夏宇聞編寫(xiě)的《Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程》一書(shū)。
VerilogHDL程序設(shè)計(jì)的基本單元是模塊(module)。一個(gè)模塊由兩部分組成,一部分描述接口,另一部分描述邏輯功能,即定義輸入是如何影響輸出的。Verilog模塊設(shè)計(jì)描述了一個(gè)模塊的對(duì)外特性和內(nèi)部功能,包括模塊端口定義、I/O說(shuō)明、內(nèi)部信號(hào)聲明和功能定義等四部分,如圖5-1所示。5.1VerilogHDL程序的基本構(gòu)成
圖5-1VerilogHDL程序模塊結(jié)構(gòu)圖模塊是Verilog的基本描述單位,用于描述某個(gè)設(shè)計(jì)的功能或結(jié)構(gòu)及與其它模塊通信的外部端口。一個(gè)設(shè)計(jì)的結(jié)構(gòu)可使用開(kāi)關(guān)級(jí)原語(yǔ)、門(mén)級(jí)原語(yǔ)和用戶定義的原語(yǔ)方式描述;設(shè)計(jì)的數(shù)據(jù)流行為使用連續(xù)賦值語(yǔ)句進(jìn)行描述;時(shí)序行為使用過(guò)程結(jié)構(gòu)進(jìn)行描述。一個(gè)模塊可以在另一個(gè)模塊中使用,進(jìn)行層次嵌套。正因?yàn)槿绱?,才可以將大型的?shù)字電路設(shè)計(jì)分割成不同的子模塊來(lái)實(shí)現(xiàn)特定的功能,最后通過(guò)頂層模塊調(diào)用子模塊來(lái)實(shí)現(xiàn)整體功能。
1.模塊端口的定義
模塊端口定義聲明了輸入/輸出口,其格式如下:
Module模塊名(口1,口2,口3,…)
端口定義的圓括弧中的內(nèi)容,是設(shè)計(jì)電路模塊與外界聯(lián)系的全部輸入/輸出端口信號(hào)或引腳,它是設(shè)計(jì)實(shí)體對(duì)外的一個(gè)通信界面,是外界可以看到的部分(不包含電源和接地端),多個(gè)端口名之間用“,”分隔。例如:
moduleadder(sum,cont,ina,inb,cin);
2.I/O說(shuō)明
模塊的I/O說(shuō)明用來(lái)聲明模塊端口定義中各端口數(shù)據(jù)的流動(dòng)方向,包括輸入(input)、輸出(output)和雙向(inout)。其格式如下:
輸入:input[信號(hào)位寬-1:0]端口名
輸出:out[信號(hào)位寬-1:0]端口名
輸入輸出:inout[信號(hào)位寬-1:0]端口名
3.內(nèi)部信號(hào)聲明
內(nèi)部信號(hào)聲明用來(lái)說(shuō)明設(shè)計(jì)電路的功能描述中所用信號(hào)的數(shù)據(jù)類(lèi)型以及函數(shù)聲明。其格式如下:
reg[width-1:0]變量1,變量2
wire[width-1:0]變量1,變量2
4.功能定義
功能定義是VerilogHDL程序設(shè)計(jì)中最主要的部分,用來(lái)描述設(shè)計(jì)模塊的內(nèi)部結(jié)構(gòu)和模塊端口間的邏輯關(guān)系,在電路上相當(dāng)于器件的內(nèi)部電路結(jié)構(gòu)。功能定義采用三種方法產(chǎn)生邏輯,其格式如下:
(1)使用assign聲明語(yǔ)句。
如:assigna=b&c;
(2)用實(shí)例元件(instantiate)。
如:and#2u1(q,a,b);
(3)使用always塊。
如:always@(posedgeclkorposedgeclr)
begin……
end
在每個(gè)模塊中,可用四種方式描述一個(gè)設(shè)計(jì):數(shù)據(jù)流方式、行為方式、結(jié)構(gòu)方式、上述描述方式的混合。
1)數(shù)據(jù)流方式
用數(shù)據(jù)流方式描述一個(gè)設(shè)計(jì)建模的最基本的機(jī)制就是使用連續(xù)賦值語(yǔ)句。在連續(xù)賦值語(yǔ)句中,某個(gè)值被指派給線網(wǎng)變量。連續(xù)賦值語(yǔ)句的語(yǔ)法如下:
assign[delay]LHS_net=RHS_expression;
其中,右邊表達(dá)式使用的操作數(shù)無(wú)論何時(shí)發(fā)生變化,表達(dá)式值都會(huì)重新計(jì)算,并且在指定時(shí)延后被賦予左邊的線網(wǎng)變量。時(shí)延定義了右邊表達(dá)式操作數(shù)變化與賦值給左邊表達(dá)式之間的持續(xù)時(shí)間。如果沒(méi)有定義時(shí)延值delay,則缺省時(shí)延為0。連續(xù)賦值語(yǔ)句對(duì)電路的數(shù)據(jù)流行為采用的建模方式是隱式而非顯式的。此外,連續(xù)賦值語(yǔ)句是并發(fā)執(zhí)行的,也就是說(shuō)各語(yǔ)句的執(zhí)行順序與其在描述中出現(xiàn)的順序無(wú)關(guān)。
2)行為方式
設(shè)計(jì)的行為功能采用下述過(guò)程語(yǔ)句結(jié)構(gòu)描述:
(1)
initial語(yǔ)句:此語(yǔ)句只執(zhí)行一次。
(2)
always語(yǔ)句:此語(yǔ)句總是循環(huán)執(zhí)行,或者說(shuō)此語(yǔ)句重復(fù)執(zhí)行。
只有寄存器類(lèi)型的數(shù)據(jù)能夠在這兩種語(yǔ)句中被賦值。寄存器類(lèi)型的數(shù)據(jù)在被賦新值前保持原有值不變。所有的初始化語(yǔ)句和always語(yǔ)句在0時(shí)刻并發(fā)執(zhí)行。
3)結(jié)構(gòu)方式
在VerilogHDL語(yǔ)言中可使用四種方式描述結(jié)構(gòu):內(nèi)置門(mén)原語(yǔ)(在門(mén)級(jí));開(kāi)關(guān)級(jí)原語(yǔ)(在晶體管級(jí));用戶定義的原語(yǔ)(在門(mén)級(jí));模塊實(shí)例(創(chuàng)建層次結(jié)構(gòu))。
(1)內(nèi)置門(mén)原語(yǔ)(在門(mén)級(jí))。VerilogHDL語(yǔ)言中提供下列內(nèi)置基本門(mén):
●多輸入門(mén):and,nand,or,nor,xor,xnor。
●多輸出門(mén):buf,not。
●三態(tài)門(mén):bufif0,bufif1,notif0,notif1。
●上拉、下拉電阻:pullup,pulldown。
(2)開(kāi)關(guān)級(jí)原語(yǔ)(在晶體管級(jí))。
●
MOS開(kāi)關(guān):cmos,nmos,pmos,rcmos,rnmos,rpmos。
●雙向開(kāi)關(guān):tran,tranif0,tranif1,rtran,rtranif0,rtranif1。
門(mén)級(jí)邏輯設(shè)計(jì)描述中可使用具體的門(mén)實(shí)例語(yǔ)句。下面是簡(jiǎn)單的門(mén)實(shí)例語(yǔ)句格式:
gate_type[instance_name](term1,term2,…,term);N
注意,instance_name是可選的;gate_type為前面列出的某種門(mén)類(lèi)型。各term用于表示與門(mén)的輸入/輸出端口相連的線網(wǎng)或寄存器。同一門(mén)類(lèi)型的多個(gè)實(shí)例能夠在一個(gè)結(jié)構(gòu)形式中定義。語(yǔ)法如下:
gate_type
[instance_name1](term11,term12,…,term)1,N
[instance_name2](term21,term22,…,term)2,N
[instance_nameM](termM1,termM2,…,term)M;N
(3)用戶定義的原語(yǔ)(UDP,在門(mén)級(jí))。
以下語(yǔ)法的UDP說(shuō)明可用來(lái)定義UDP:
PrimitiveUDP_name(OutputName,List_of_inpu)ts
Output_declaration
List_of_input_declarations
[Reg_declaration]
[Initial_statement]
table
List_of_tabel_entries
endtable
endprimitive
UDP的定義不依賴(lài)于模塊定義,因此出現(xiàn)在模塊定義以外,也可以在單獨(dú)的文本文件中定義UDP。
UDP只能有一個(gè)輸出和一個(gè)或多個(gè)輸入。第一個(gè)端口必須是輸出端口。此外,輸出
可以取值0、1或x(不允許取z值)。輸入中出現(xiàn)z值時(shí)以x處理。UDP的行為以表的形式描述。在UDP中可以描述下面兩類(lèi)行為:
●組合電路。在組合電路UDP中,規(guī)定了不同的輸入組合和相對(duì)應(yīng)的輸出值。沒(méi)有指定的任意組合輸出為x。
●時(shí)序電路(邊沿觸發(fā)和電平觸發(fā))。在時(shí)序電路UDP中,使用1位寄存器描述內(nèi)部狀態(tài)。該寄存器的值是時(shí)序電路UDP的輸出值。共有兩種不同類(lèi)型的時(shí)序電路UDP:一種模擬電平觸發(fā)行為;另一種模擬邊沿觸發(fā)行為。時(shí)序電路UDP使用寄存器的當(dāng)前值和輸入值來(lái)決定寄存器的下一狀態(tài)(和后繼的輸出)。
(4)模塊實(shí)例(創(chuàng)建層次結(jié)構(gòu))。
首先構(gòu)建基本模塊,再逐層實(shí)例化,構(gòu)成高級(jí)模塊。
moduleDFF(d,clk,clr,q,qb);
....//定義各種邏輯
endmodule//構(gòu)建基本模塊DEF
moduleREG4(d,clk,clr,q,qb);
output[3:0]q,qb;
input[3:0]d;
inputclk,clr;
DFFd0(d[0],clk,clr,q[0],qb[0]);
DFFd1(d[1],clk,clr,q[1],qb[1]);
DFFd2(d[2],clk,clr,q[2],qb[2]);
DFFd3(d[3],clk,clr,q[3],qb[3]);
endmodule//在REG4模塊內(nèi),通過(guò)實(shí)例化基本模塊DEF構(gòu)建高層模塊
4)上述描述方式的混合
在模塊中,結(jié)構(gòu)方式和行為方式的描述可以自由混合。也就是說(shuō),模塊描述中可以包含實(shí)例化的門(mén)、模塊實(shí)例化語(yǔ)句、連續(xù)賦值語(yǔ)句以及always語(yǔ)句和initial語(yǔ)句的混合。它們之間也可以相互包含。來(lái)自always語(yǔ)句和initial語(yǔ)句(切記只有寄存器類(lèi)型的數(shù)據(jù)才可以在這兩種語(yǔ)句中被賦值)的值能夠驅(qū)動(dòng)門(mén)或開(kāi)關(guān),而來(lái)自于門(mén)或連續(xù)賦值語(yǔ)句(只能驅(qū)動(dòng)線網(wǎng))的值能夠反過(guò)來(lái)用于觸發(fā)always語(yǔ)句和initial語(yǔ)句。
VerilogHDL語(yǔ)言有兩種數(shù)據(jù)類(lèi)型。
(1)線網(wǎng)類(lèi)型(nettype):表示Verilog結(jié)構(gòu)化元件間的物理連線。它的值由驅(qū)動(dòng)元件的值決定,例如連續(xù)賦值或門(mén)的輸出。如果沒(méi)有驅(qū)動(dòng)元件連接到線網(wǎng),則線網(wǎng)的缺省值為z。
5.2VerilogHDL語(yǔ)言的數(shù)據(jù)類(lèi)型
(2)寄存器類(lèi)型(registertype):表示一個(gè)抽象的數(shù)據(jù)存儲(chǔ)單元,它只能在always語(yǔ)句和initial語(yǔ)句中被賦值,并且它的值從一個(gè)賦值到另一個(gè)賦值被保存下來(lái)。寄存器類(lèi)型的變量具有x的缺省值。5.2.1線網(wǎng)類(lèi)型
線網(wǎng)數(shù)據(jù)包含以下不同的線網(wǎng)子類(lèi)型:wire、tri、wor、trior、wand、triand、trireg、tri1、tri0、supply0、supply1。
通用的線網(wǎng)類(lèi)型說(shuō)明語(yǔ)法如下:
net_kind[msb:lsb]net1,net2,...,netN;
線網(wǎng)子類(lèi)型描述如表5-1所示。
表5-1線網(wǎng)子類(lèi)型描述
1.wire和tri線網(wǎng)
用于連接單元的連線(wire)是最常見(jiàn)的線網(wǎng)類(lèi)型。三態(tài)線(tri)與連線的語(yǔ)法和語(yǔ)義一致。三態(tài)線可以用于描述多個(gè)驅(qū)動(dòng)源驅(qū)動(dòng)同一根線的線網(wǎng)類(lèi)型,并且沒(méi)有其它特殊的意義。
2.wor和trior線網(wǎng)
線或(wor)指如果某個(gè)驅(qū)動(dòng)源為1,那么線網(wǎng)的值也為1。三態(tài)線或(trior)與線或在語(yǔ)法和功能上是一致的。
3.wand和triand線網(wǎng)
線與(wand)指如果某個(gè)驅(qū)動(dòng)源為0,那么線網(wǎng)的值為0。三態(tài)線與(triand)和線與在語(yǔ)法和功能上是一致的。
4.trireg線網(wǎng)
三態(tài)寄存器(trieg)線網(wǎng)用于存儲(chǔ)數(shù)值(類(lèi)似于寄存器)及電容節(jié)點(diǎn)的建模。當(dāng)三態(tài)寄存器線網(wǎng)的所有驅(qū)動(dòng)源都處于高阻態(tài)時(shí),也就是說(shuō),當(dāng)值為z時(shí),三態(tài)寄存器線網(wǎng)保存作用在線網(wǎng)上的最后一個(gè)值。此外,三態(tài)寄存器線網(wǎng)的缺省初始值為x。例如:
trireg[1:8]Dbus,Abus;
5.tri0和tri1線網(wǎng)
這類(lèi)線網(wǎng)可用于線邏輯的建模,即線網(wǎng)有多于一個(gè)的驅(qū)動(dòng)源。tri0(tri1)線網(wǎng)的特征是,若無(wú)驅(qū)動(dòng)源驅(qū)動(dòng),則它的值為0(tri1的值為1)。
6.supply0和supply1線網(wǎng)
supply0用于對(duì)“地”建模,即低電平0;supply1用于對(duì)電源建模,即高電平1。例如:
supply0Gnd,ClkGnd;
supply1[2:0]Vcc;5.2.2寄存器類(lèi)型
VerilogHDL語(yǔ)言中有五種不同的寄存器類(lèi)型:reg、integer、time、real、realtime。
1.reg寄存器類(lèi)型
reg寄存器類(lèi)型是最常見(jiàn)的數(shù)據(jù)類(lèi)型。簡(jiǎn)單的寄存器類(lèi)型說(shuō)明如下:
reg[msb:lsb]reg1,reg2,…,regN;其中,msb和lsb定義了范圍,并且均為常數(shù)值表達(dá)式。范圍定義是可選的,如果沒(méi)有定義范圍,則缺省值為1位寄存器。該寄存器可以取任意長(zhǎng)度。寄存器中的值通常被解釋為無(wú)符號(hào)數(shù)。例如:
reg[3:0]Sat; //Sat為4位寄存器
regCnt; //1位寄存器
reg[1:32]Kisp,Pisp,Lisp; //32位寄存器
2.存儲(chǔ)器類(lèi)型
存儲(chǔ)器是一個(gè)寄存器數(shù)組。在賦值語(yǔ)句中需要注意如下區(qū)別:存儲(chǔ)器賦值不能在一條賦值語(yǔ)句中完成,但是寄存器可以。因此在存儲(chǔ)器被賦值時(shí),需要定義一個(gè)索引。
存儲(chǔ)器使用如下說(shuō)明方式:
reg[msb:lsb]memory1[upper1:lower1], //msb、lsb分別表示寄存器的最高位、
memory2[upper2:lower2],...; //最低位,upper1、lower1分別表示
//存儲(chǔ)器包含的最高寄存器編號(hào)、最低
//寄存器編號(hào)
例如:
reg[0:3]MyMem[0:63] //MyMem為64個(gè)4位寄存器的數(shù)組
regBog[1:5] //Bog為5個(gè)1位寄存器的數(shù)組
3.integer寄存器類(lèi)型
integer(整數(shù))寄存器的值為整數(shù)值。整數(shù)寄存器可以作為普通寄存器使用,其典型應(yīng)用為高層次行為建模。
使用整數(shù)型的說(shuō)明如下:
integerinteger1,integer2,...,intergerN[msb:lsb];
其中,msb和lsb是定義整數(shù)數(shù)組界限的常量表達(dá)式,數(shù)組界限的定義是可選的。
4.time寄存器類(lèi)型
time(時(shí)間)類(lèi)型的寄存器用于存儲(chǔ)和處理時(shí)間。
5.real和realtime寄存器類(lèi)型
real(實(shí)數(shù))寄存器類(lèi)型和realtime(實(shí)數(shù)時(shí)間)寄存器類(lèi)型中的參數(shù)是常量。該參數(shù)經(jīng)常用于定義時(shí)延和變量的寬度。
real類(lèi)型說(shuō)明的變量的缺省值為0。
real類(lèi)型寄存器說(shuō)明如下:
realreal_reg1,real_reg2,…,real_regN;
realtime類(lèi)型寄存器說(shuō)明如下:
realtimerealtime_reg1,realtime_reg2,...,realtime_regN;
realtime與real類(lèi)型完全相同。例如:
realSwing,Top;
realtimeCurrTime;5.2.3常量
常量是一個(gè)恒定不變的值數(shù),一般在程序前部定義。常量定義格式如下:
parameter常量名1=表達(dá)式,常量名2=表達(dá)式,…,常量名n=表達(dá)式;
parameter是常量定義關(guān)鍵字,常量名是用戶定義的標(biāo)識(shí)符,表達(dá)式是為常量賦的值。例如:
parameterVcc=5,fbus=8'b11010001;
使用參數(shù)說(shuō)明的參數(shù)只被賦值一次。參數(shù)說(shuō)明如下:
parameterparam1=const_expr1,param2=const_expr2,...,paramN=const_exprN;
1.空白符和注釋
VerilogHDL語(yǔ)言中的空白符包括空格、tab符號(hào)、換行和換頁(yè)。空白符如果不是出現(xiàn)在字符串中,則在編譯源程序時(shí)將被忽略。
注釋分為行注釋和塊注釋兩種方式。行注釋用符號(hào)//(兩個(gè)斜杠)開(kāi)始,注釋到本行結(jié)束。塊注釋用/*開(kāi)始,用*/結(jié)束。塊注釋可以跨越多行,但它們不能被嵌套。5.3詞匯規(guī)定
2.常數(shù)
VerilogHDL語(yǔ)言中的常數(shù)包括數(shù)字、未知x和高阻z三種。數(shù)字可以用二進(jìn)制、十進(jìn)制、八進(jìn)制和十六進(jìn)制等4種不同數(shù)制來(lái)表示,完整的數(shù)字格式如下:
<位寬>'<進(jìn)制符號(hào)><數(shù)字>
其中,位寬表示數(shù)字對(duì)應(yīng)的二進(jìn)制數(shù)的位數(shù)寬度;進(jìn)制符號(hào)包括b或B(表示二進(jìn)制數(shù)),d或D(表示十進(jìn)制數(shù)),h或H(表示十六進(jìn)制數(shù)),o或O(表示八進(jìn)制數(shù))。例如:
8'b10110001 //表示位寬為8位的二進(jìn)制數(shù)
8'hf5 //表示位寬為8位的十六進(jìn)制數(shù)
十進(jìn)制數(shù)的位寬和進(jìn)制符號(hào)可以缺省,例如:
125 //表示十進(jìn)制數(shù)125
8'b1111xxxx //等價(jià)于8'hfx
8'b1101zzzz //等價(jià)于8'hdz
3.字符串
字符串是用雙引號(hào)括起來(lái)的可打印字符序列,它必須包含在同一行中。例如,"ABC"、"ABOY."、"A"、"1234"都是字符串。
4.標(biāo)識(shí)符
標(biāo)識(shí)符是用戶編程時(shí)為常量、變量、模塊、寄存器、端口、連線、示例和begin-end塊等元素定義的名稱(chēng)。標(biāo)識(shí)符可以是字母、數(shù)字和下劃線“_”等符號(hào)組成的任意序列。定義標(biāo)識(shí)符時(shí)應(yīng)遵循如下規(guī)則:
(1)首字符不能是數(shù)字。
(2)字符數(shù)不能多于1024個(gè)。
(3)大小寫(xiě)字母是不同的。
(4)不要與關(guān)鍵字同名。
5.關(guān)鍵字
關(guān)鍵字是VerilogHDL預(yù)先定義的單詞,它們?cè)诔绦蛑杏胁煌氖褂媚康摹@纾胢odule和endmodule來(lái)指出源程序模塊的開(kāi)始和結(jié)束;用assign來(lái)描述一個(gè)邏輯表達(dá)式等。VerilogHDL的關(guān)鍵字有97個(gè)。
6.操作符
操作符也稱(chēng)為運(yùn)算符,是VerilogHDL預(yù)先定義的函數(shù)名字,這些函數(shù)對(duì)被操作的對(duì)象(即操作數(shù))進(jìn)行規(guī)定的運(yùn)算,得到一個(gè)結(jié)果。
操作符通常由1~3個(gè)字符組成,例如,“+”表示加操作,“==”(兩個(gè)
=
字符)表示邏輯等操作,“=
=
=”(3個(gè)
=
字符)表示全等操作。有些操作符的操作數(shù)只有1個(gè),稱(chēng)為單目操作;有些操作符的操作數(shù)有2個(gè),稱(chēng)為雙目操作;有些操作符的操作數(shù)有3個(gè),稱(chēng)為三目操作。
1)算術(shù)操作符(Arithmeticoperators)
常用的算術(shù)操作符包括:+
(加)、-
(減)、*
(乘)、/
(除)、%(求余)。其中%是求余操作符,在兩個(gè)整數(shù)相除的基礎(chǔ)上,取出其余數(shù)。例如,5%6的值為5,13%5的值是3。
2)邏輯操作符(Logicaloperators)
邏輯操作符包括:&&(邏輯與)、||
(邏輯或)、!(邏輯非)。
3)位運(yùn)算(Bitwiseoperators)
位運(yùn)算是將兩個(gè)操作數(shù)按對(duì)應(yīng)位進(jìn)行邏輯操作。位運(yùn)算操作符包括:~
(按位取反)、&
(按位與)、|
(按位或)、^
(按位異或)、^~
或
~^
(按位同或)。
在進(jìn)行位運(yùn)算時(shí),當(dāng)兩個(gè)操作數(shù)的位寬不同時(shí),計(jì)算機(jī)會(huì)自動(dòng)將兩個(gè)操作數(shù)按右端對(duì)齊,位數(shù)少的操作數(shù)會(huì)在高位用0補(bǔ)齊。
4)關(guān)系操作符(Pelationaloperators)
關(guān)系操作符包括:<
(小于)、<=
(小于等于)、>
(大于)、>=
(大于等于)。其中,<=
也是賦值運(yùn)算的賦值符號(hào)。
關(guān)系運(yùn)算的結(jié)果是1位邏輯值。在進(jìn)行關(guān)系運(yùn)算時(shí),如果關(guān)系是真,則計(jì)算結(jié)果為1;如果關(guān)系是假,則計(jì)算結(jié)果為0;如果某個(gè)操作數(shù)的值不定,則計(jì)算結(jié)果不定(未知),表示結(jié)果是模糊的。
5)等式操作符(Equalityoperators)
等值操作符包括:==
(等于)、!=
(不等于)、===
(全等)、!==
(不全等)。
等值運(yùn)算的結(jié)果也是1位邏輯值,當(dāng)運(yùn)算結(jié)果為真時(shí),返回值1;為假則返回值0。
相等操作符(==)與全等操作符(===)的區(qū)別是:相等運(yùn)算時(shí),兩個(gè)操作數(shù)必須逐位相等,其比較結(jié)果的值才為1(真);如果某些位是不定或高阻狀態(tài),其相等比較的結(jié)果就會(huì)是不定值。
全等運(yùn)算時(shí),對(duì)不定或高阻狀態(tài)位也進(jìn)行比較,當(dāng)兩個(gè)操作數(shù)完全一致時(shí),其結(jié)果的值才為1(真),否則結(jié)果為0(假)。
6)縮減操作符(Reductionoperators)
縮減操作符包括:&(與)、~&(與非)、|
(或)、~|
(或非)、^
(異或)、^~
或~^
(同或)。
運(yùn)算結(jié)果有1位:1或0。
例如,A=8'b11010001,則&A=0(在與縮減運(yùn)算中,只有A中的數(shù)字全為1時(shí),結(jié)果才為1);|A=1(在或縮減運(yùn)算中,只有A中的數(shù)字全為0時(shí),結(jié)果才為0)。
7)轉(zhuǎn)移操作符(Shiftoperators)
轉(zhuǎn)移操作符包括:>>(右移)、<<(左移)。
操作數(shù)>>n;//將操作數(shù)的內(nèi)容右移n位,同時(shí)從左邊開(kāi)始用0來(lái)填補(bǔ)移出的位數(shù)
操作數(shù)<<n;//將操作數(shù)的內(nèi)容左移n位,同時(shí)從右邊開(kāi)始用0來(lái)填補(bǔ)移出的位數(shù)
例:設(shè)A=8'b11010001,則A>>4的結(jié)果是A=8'b00001101;而A<<4的結(jié)果是A=8'b00010000。
8)條件操作符(Conditionaloperators)
條件操作符的操作數(shù)有3個(gè),其使用格式如下:
操作數(shù)=條件?表達(dá)式1:表達(dá)式2;
當(dāng)條件為真(條件結(jié)果值為1)時(shí),操作數(shù)=表達(dá)式1;為假(條件結(jié)果值為0)時(shí),操作數(shù)=表達(dá)式2。
9)并接操作符(Concatenationoperators)
并接操作符為{}。
并接操作符的使用格式如下:
{操作數(shù)1,操作數(shù)2,…,操作數(shù)n}; //將操作數(shù)1、操作數(shù)2…操作數(shù)n
//并接在一起
例如,將1位全加器進(jìn)位cout與和sum并接在一起使用,它們的結(jié)果由兩個(gè)加數(shù)ina、inb及低位進(jìn)位cin相加決定,表達(dá)式如下:
{cout,sum}=ina+inb+cin;
下面通過(guò)一個(gè)實(shí)例來(lái)說(shuō)明模塊的說(shuō)明,圖5-2(a)是邏輯功能模塊,圖5-2(b)是用Verilo
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度寧波勞動(dòng)合同模板:包含員工勞動(dòng)合同變更條款
- 二零二五年度外匯借款合同風(fēng)險(xiǎn)防范與應(yīng)對(duì)策略
- 2025年度個(gè)人一手房買(mǎi)賣(mài)合同社區(qū)配套服務(wù)范本2篇
- 二零二五年度培訓(xùn)協(xié)議與勞動(dòng)合同整合方案協(xié)議
- 2025版電子政務(wù)項(xiàng)目勞務(wù)分包合同補(bǔ)充協(xié)議書(shū)范本3篇
- 2025年度智能家居床品定制采購(gòu)合同3篇
- 二零二五年度樂(lè)器行業(yè)市場(chǎng)調(diào)研與咨詢(xún)服務(wù)合同
- 2025年節(jié)假日花卉租賃及促銷(xiāo)活動(dòng)合同3篇
- 二零二五年度家庭財(cái)產(chǎn)分割與老人贍養(yǎng)責(zé)任合同
- 2025年度車(chē)輛抵押登記與汽車(chē)租賃及保險(xiǎn)服務(wù)合同
- 2024年資格考試-對(duì)外漢語(yǔ)教師資格證筆試參考題庫(kù)含答案
- 軟件研發(fā)安全管理制度
- 三位數(shù)除以?xún)晌粩?shù)-豎式運(yùn)算300題
- 寺院消防安全培訓(xùn)課件
- 比摩阻-管徑-流量計(jì)算公式
- GB/T 42430-2023血液、尿液中乙醇、甲醇、正丙醇、丙酮、異丙醇和正丁醇檢驗(yàn)
- 五年級(jí)數(shù)學(xué)應(yīng)用題100道
- 西方經(jīng)濟(jì)學(xué)(第二版)完整整套課件(馬工程)
- 高三開(kāi)學(xué)收心班會(huì)課件
- GB/T 33688-2017選煤磁選設(shè)備工藝效果評(píng)定方法
- 科技計(jì)劃項(xiàng)目申報(bào)培訓(xùn)
評(píng)論
0/150
提交評(píng)論