




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第二章Verilog語法的基本概念VerilogHDL是一種用于數(shù)字系統(tǒng)設(shè)計(jì)的語言。用VerilogHDL描述的電路設(shè)計(jì)就是該電路的VerilogHDL模型(模塊)。Verilog模型可以是實(shí)際電路的不同級(jí)別的抽象。行為描述:系統(tǒng)級(jí)、算法級(jí)、RTL級(jí)結(jié)構(gòu)描述:門級(jí)、開關(guān)級(jí)2/4/20231Verilog的應(yīng)用系統(tǒng)級(jí)(system):用高級(jí)語言結(jié)構(gòu)實(shí)現(xiàn)設(shè)計(jì)模塊的外部性能的模型。算法級(jí)(algorithmic):用高級(jí)語言結(jié)構(gòu)實(shí)現(xiàn)設(shè)計(jì)算法的模型。RTL級(jí)(RegisterTransferLevel):描述數(shù)據(jù)在寄存器之間流動(dòng)和如何處理這些數(shù)據(jù)的模型。門級(jí)(gate-level):描述邏輯門以及邏輯門之間的連接的模型。開關(guān)級(jí)(switch-level):描述器件中三極管和儲(chǔ)存節(jié)點(diǎn)以及它們之間連接的模型。行為級(jí)描述modulemuxtwo(out,a,b,sl);input
a,b,sl;output
out;
regout;
always@(sloraorb)
if(!sl)out=a;
elseout=b;endmoduleabslout門級(jí)描述modulemuxtwo(out,a,b,sl);input
a,b,sl;output
out;
notu1(ns1,sl);and#1u2(sela,a,nsl);
and#1u3(selb,b,sl);
or#2u4(out,sela,selb);endmoduleoutabslselbselanslu2u3
u4
u1RTL級(jí)描述modulemuxtwo(out,a,b,sl,clk);input
a,b,sl;output
out;
regout,s;
always@(posedgeclk) out<=s;
always@(sloraorb)
if(!sl)s=a;
elses=b;endmoduleabsloutclk行為級(jí)和RTL級(jí)RTL模塊的數(shù)據(jù)流動(dòng)必須基于時(shí)鐘。RTL模塊在每個(gè)時(shí)鐘的沿時(shí)刻,其變量的值必定是精確的。RTL模塊是可綜合的,它是行為模塊的一個(gè)子集合。該行為描述并沒有說明如果輸入a或b是三態(tài)的(高阻時(shí))輸出應(yīng)該是什么,但有實(shí)際電路是有一定的輸出的。abslout簡(jiǎn)單的VerilogHDL模塊例:moduleadder(count,sum,a,b,cin);
input[2:0]a,b;
inputcin;
outputcount;
output[2:0]sum;
assign{count,sum}=a+b+cin;
endmodule
簡(jiǎn)單的VerilogHDL模塊modulecompare(equal,a,b);outputequal;//聲明輸出信號(hào)equalinput[1:0]a,b;//聲明輸入信號(hào)a,b
assignequal=(a==b)?1:0;
/*如果兩個(gè)輸入信號(hào)相等,輸出為1。否則為0*/endmodule/*........*/和//.........表示注釋部分一個(gè)復(fù)雜電路的完整VerilogHDL模型是由若個(gè)VerilogHDL模塊構(gòu)成的,每一個(gè)模塊又可以由若干個(gè)子模塊構(gòu)成。
利用VerilogHDL語言結(jié)構(gòu)所提供的這種功能就可以構(gòu)造一個(gè)模塊間的清晰層次結(jié)構(gòu)來描述極其復(fù)雜的大型設(shè)計(jì)。VerilogHDL行為描述語言作為一種結(jié)構(gòu)化和過程性的語言,其語法結(jié)構(gòu)非常適合于算法級(jí)和RTL級(jí)的模型設(shè)計(jì)。這種行為描述語言具有以下八項(xiàng)功能:Verilog的應(yīng)用可描述順序執(zhí)行或并行執(zhí)行的程序結(jié)構(gòu)。用延遲表達(dá)式或事件表達(dá)式來明確地控制過程的啟動(dòng)時(shí)間。通過命名的事件來觸發(fā)其它過程里的激活行為或停止行為。提供了條件、if-else、case、循環(huán)程序結(jié)構(gòu)。提供了可帶參數(shù)且非零延續(xù)時(shí)間的任務(wù)(task)程序結(jié)構(gòu)。提供了可定義新的操作符的函數(shù)結(jié)構(gòu)(function)。Verilog的應(yīng)用提供了用于建立表達(dá)式的算術(shù)運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符。VerilogHDL語言作為一種結(jié)構(gòu)化的語言也非常適合于門級(jí)和開關(guān)級(jí)的模型設(shè)計(jì)。VerilogHDL的構(gòu)造性語句可以精確地建立信號(hào)的模型。這是因?yàn)樵赩erilogHDL中,提供了延遲和輸出強(qiáng)度的原語來建立精確程度很高的信號(hào)模型。信號(hào)值可以有不同的的強(qiáng)度,可以通過設(shè)定寬范圍的模糊值來降低不確定條件的影響。Verilog的應(yīng)用第三章常用Verilog語法之一模塊結(jié)構(gòu)數(shù)據(jù)類型變量、基本的運(yùn)算符號(hào)2/4/202314模塊的結(jié)構(gòu)Verilog的基本設(shè)計(jì)單元是“模塊”(block)。一個(gè)模塊是由兩部分組成的:描述接口;描述邏輯功能,即定義輸入是如何影響輸出的。從上面的例子可以看出:-Verilog模塊結(jié)構(gòu)完全嵌在module和endmodule聲明語句之間;每個(gè)Verilog程序包括四個(gè)主要部分:端口定義I/O說明內(nèi)部信號(hào)聲明功能定義模塊的結(jié)構(gòu)模塊的端口定義module模塊名(口1,口2,口3,…
)模塊的端口表示的是模塊的輸入輸出口名,它與別的模塊聯(lián)系端口的標(biāo)識(shí)。2/4/202317modulecompare(equal,a,b);
。。。。endmodule模塊內(nèi)容輸入口:input[信號(hào)位寬-1:0]端口名1;input[信號(hào)位寬-1:0]端口名2;輸出口:output[信號(hào)位寬-1:0]端口名1;output[信號(hào)位寬-1:0]端口名2;輸入/輸出口: inout[信號(hào)位寬-1:0]端口名1;inout[信號(hào)位寬-1:0]端口名2;2/4/202318I/O說明I/O說明也可以寫在端口聲明語句里modulemodule_name(inputport1,…,outputport1,….)
2/4/202319模塊內(nèi)容I/O說明模塊內(nèi)容模塊內(nèi)部用到的與端口有關(guān)的wire和reg類型變量的聲明reg[width-1:0]R1,R2;wire[width-1:0]W1,W2;
2/4/202320內(nèi)部信號(hào)聲明模塊內(nèi)容功能定義:定義邏輯功能
用assign聲明語句 assigna=b&c;
用實(shí)例元件 and#2ul(q,a,b);ul為與門,輸入a,b,輸出q,輸出延遲2個(gè)時(shí)間單位2/4/202321模塊內(nèi)容功能定義:定義邏輯功能用always塊(過程塊,proceduralblock)always@(posedgeclkorposedgeclr)beginif(clr)q<=0;elseif(en)q<=d;end;2/4/202322模塊內(nèi)容功能定義:定義邏輯功能assign語句是描述組合邏輯常用方法;always可用于描述組合邏輯和時(shí)序邏輯;assign,always,實(shí)例化描述的邏輯功能是同時(shí)(并行)執(zhí)行;在always模塊內(nèi),邏輯是順序執(zhí)行的。但是不同的always模塊式并行執(zhí)行的。2/4/202323modulemu1(a,q,q2,b,c);inputb,c;outputq,q2,a;
assigna=b&c;
and#2ul(q,c,b);
always@(b,c)beginq2<=b&c;end;
endmodule模塊的引用嚴(yán)格按照模塊定義的端口順序來連接,不用標(biāo)明原模塊定義時(shí)的端口名:
模塊名(連接端口1信號(hào)名,連接端口2信號(hào)名,….)在引用時(shí)用“.”符號(hào),標(biāo)明原模塊定義時(shí)規(guī)定的端口名.模塊名(.端口1名(連接信號(hào)1名),.端口2名(連接信號(hào)2名,….)2/4/202325要點(diǎn)總結(jié)Verilog模塊中所有過程塊(如initial,always)、連續(xù)賦值語句、實(shí)例引用都是并行的;它們表示的是一種通過變量名互相連接的關(guān)系;
在同一模塊中這三者出現(xiàn)的先后順序沒有關(guān)系;只有連續(xù)賦值語句和實(shí)例引用語句可以獨(dú)立于過程塊(always,initial)而存在于模塊的功能定義部分。2/4/2023263.2數(shù)據(jù)類型及其常量和變量VerilogHDL中總共有19種數(shù)據(jù)類型。數(shù)據(jù)類型是表示數(shù)字電路中的數(shù)據(jù)存儲(chǔ)和傳送元素的。2/4/202329常量數(shù)字——整數(shù)
二進(jìn)制(b,B),十進(jìn)制(d,D),十六進(jìn)制(h,H),八進(jìn)制(o,O)表示方法:<位寬>’<進(jìn)制><數(shù)字>
<進(jìn)制><數(shù)字>,默認(rèn)32位
<數(shù)字>,默認(rèn)32位,十進(jìn)制8’b10101100,8’ha2,2/4/202330常量數(shù)字——x和z
x——不定值;z——高阻值,也可用?表示4’b10x0,4’b101z,12’dz,12’d?,8’h4x2/4/202331常量數(shù)字——負(fù)數(shù)在數(shù)字表達(dá)式的前面加‘-’-8’d52/4/202332常量數(shù)字——下劃線(underscore_)用來分割數(shù)的表達(dá)以提高程序可讀性,但不可以用在位寬和進(jìn)制處,只能用在具體的數(shù)字之間16’b1010_1011_1111_10102/4/202333常量當(dāng)常量不說明位數(shù)時(shí),默認(rèn)值是32位,10=32’d10,-1=-32’d1=32’hFFFF_FFFF
’BX=32’BX=32’BXXXX…X每個(gè)字母用8位的ASCII值表示
“AB”=16’B01000001_010000102/4/202334參數(shù)型(parameter)常量可以用parameter來定義常量,即用parameter定義一個(gè)標(biāo)識(shí)符代表一個(gè)常量,稱為符號(hào)常量,即標(biāo)識(shí)符形式的常量parameter參數(shù)名1=表達(dá)式,參數(shù)名2=表達(dá)式;
注意:表達(dá)式必須是常數(shù)表達(dá)式,只能包含數(shù)字或先前已定義過的參數(shù)parametermsb=7,e=25;parameterbyte_size=8,byte_msb=byte_size-1;2/4/202335參數(shù)型(parameter)參數(shù)型常數(shù)用來定義延遲時(shí)間和變量寬度。在模塊或?qū)嵗脮r(shí),可通過參數(shù)傳遞改變?cè)诒灰媚K或者實(shí)例中已定義的參數(shù)。2/4/202336參數(shù)型(parameter)例:moduleDecode(A,F);parameterWidth=1,Polarity=1;
……endmodulemoduleTopwire[3:0]A4;wire[15:0]F16;Decode#(4,0)D1(A4,F16);Decode#(5)
D2(A4,F16);endmodule2/4/202337變量在程序運(yùn)行過程中其值可以改變的量。變量數(shù)據(jù)類型(variabledatatype),用來暫存數(shù)據(jù),在過程中被賦值的變量??稍趇nitialprocedure,alwaysprocedure,task,function中被賦值。未被初始化時(shí),默認(rèn)值為X。默認(rèn)為unsigned類型,除非指定為signed類型。默認(rèn)位寬為1bit。變量網(wǎng)絡(luò)數(shù)據(jù)類型(netdatatype)表示結(jié)構(gòu)實(shí)體之間的物理連接,不能儲(chǔ)存值,而且必須受到驅(qū)動(dòng)器的驅(qū)動(dòng)。如果沒有驅(qū)動(dòng)器連接到網(wǎng)絡(luò)類型的變量上,則該變量就是高阻值z(mì)。Wire:表示單個(gè)門驅(qū)動(dòng)或者連續(xù)賦值語句驅(qū)動(dòng)的網(wǎng)絡(luò)類型數(shù)據(jù)。Tri:表示多驅(qū)動(dòng)源(器)驅(qū)動(dòng)的網(wǎng)絡(luò)類型數(shù)據(jù)。變量Wire:常用來表示以assign關(guān)鍵字指定的組合邏輯信號(hào)。Verilog中輸入、輸出信號(hào)類型默認(rèn)時(shí)自動(dòng)定義為wire型。Wire信號(hào)可以用作任何方程式的輸入可用作assign語句或?qū)嵗妮敵觥?/p>
wire[n-1:0]b,a;定義了兩條總線b、a,每條總線寬度為nbits;變量reg型:寄存器數(shù)據(jù)類型,默認(rèn)初始值為不定值x。reg型數(shù)據(jù)常用來表示always模塊內(nèi)的指定信號(hào),代表觸發(fā)器。在always內(nèi)被賦值的每一個(gè)信號(hào)都必須定義成reg型。
reg[n-1:0]數(shù)據(jù)名1,數(shù)據(jù)名2;
reg[n:1]數(shù)據(jù)名1,數(shù)據(jù)名2;reg[3:0]regb;reg[4:1]regc,regd;變量reg型數(shù)據(jù),其賦值語句的作用就如同改變一組觸發(fā)器的存儲(chǔ)單元的值;reg型數(shù)據(jù)的默認(rèn)值是x,reg型數(shù)據(jù)可以賦正值、負(fù)值,若為表達(dá)式的操作數(shù),其值被當(dāng)作是無符號(hào)值。
reg只表示被定義的信號(hào)將用在always塊內(nèi)。memory型:Verilog通過對(duì)reg型變量建立數(shù)組來對(duì)存儲(chǔ)器建模,RAM型存儲(chǔ)器ROM存儲(chǔ)器reg文件。Memory型數(shù)據(jù)通過擴(kuò)展reg型數(shù)據(jù)的地址范圍來生成。
reg[n-1:0]存儲(chǔ)器名[m-1:0];
reg[n-1:0]存儲(chǔ)器名[m:1];reg[7:0]mema[255:0];變量對(duì)存儲(chǔ)器進(jìn)行地址索引的表達(dá)式必須為常數(shù)表達(dá)式,m必須為常數(shù)在同一個(gè)數(shù)據(jù)類型聲明語句里,可以同時(shí)定義存儲(chǔ)器型數(shù)據(jù)和reg型數(shù)據(jù)。
parameterwordsize=16,memsize=256;reg[wordsize-1:0]mem[memsize-1:0],writereg,readreg;變量注意memory型數(shù)據(jù)與reg型數(shù)據(jù)的不同
reg[n-1:0]rega;定義一個(gè)n位的寄存器,regmema[n-1:0];定義一個(gè)由n個(gè)1位寄存器構(gòu)成的存儲(chǔ)器組。
rega=0;合法
mema=0;錯(cuò)誤
mema[2]=0;正確變量3.3運(yùn)算符及表達(dá)式按功能分類:算術(shù)運(yùn)算符(+,-,x,/,%);位運(yùn)算符(~,&,|,^,^~);邏輯運(yùn)算符(&&,||,!);關(guān)系運(yùn)算符(>,<,>=,<=);移位運(yùn)算符(<<,>>);拼接運(yùn)算符({});條件運(yùn)算符(?:);賦值運(yùn)算符(=,<=);
3.3運(yùn)算符及表達(dá)式按運(yùn)算符所帶的操作數(shù)不同:
單目運(yùn)算符(unaryoperator):可以帶一個(gè)操作數(shù),操作數(shù)放在運(yùn)算符的右邊;
雙目運(yùn)算符(binaryoperator):可以帶兩個(gè)操作數(shù),操作數(shù)放在運(yùn)算符的兩邊;三目運(yùn)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年國家開放大學(xué)(電大)-金融學(xué)(本科)歷年參考題庫含答案解析(5套典型考題)
- 2025年衛(wèi)生資格(中初級(jí))-腫瘤內(nèi)科主治醫(yī)師歷年參考題庫含答案解析(5套典型題)
- 2025年醫(yī)藥衛(wèi)生考試-醫(yī)療器械考試歷年參考題庫含答案解析(5套典型題)
- 2025年醫(yī)學(xué)繼續(xù)教育-駐店藥師繼續(xù)教育歷年參考題庫含答案解析(5套典型考題)
- 2025年企業(yè)文化企業(yè)建設(shè)知識(shí)競(jìng)賽-錦江之星服務(wù)知識(shí)競(jìng)賽歷年參考題庫含答案解析(5套典型考題)
- 2025年企業(yè)培訓(xùn)師考試-高級(jí)企業(yè)培訓(xùn)師(一級(jí))歷年參考題庫含答案解析(5套典型考題)
- 2025年專業(yè)技術(shù)人員繼續(xù)教育公需科目-突發(fā)事件應(yīng)急處理繼續(xù)教育歷年參考題庫含答案解析(5套典型考題)
- 2025年專業(yè)技術(shù)人員繼續(xù)教育公需科目-互聯(lián)網(wǎng)監(jiān)管與網(wǎng)絡(luò)道德建設(shè)歷年參考題庫含答案解析(5套典型考題)
- 產(chǎn)業(yè)轉(zhuǎn)移協(xié)議書
- 事故簡(jiǎn)易協(xié)議書
- 15D502 等電位聯(lián)結(jié)安裝
- 人教版高中物理必修二(全冊(cè)知識(shí)點(diǎn)考點(diǎn)梳理、重點(diǎn)題型分類鞏固練習(xí))(基礎(chǔ)版)(家教、補(bǔ)習(xí)、復(fù)習(xí)用)
- 酒店水電工程施工驗(yàn)收標(biāo)準(zhǔn)
- 鋼城新苑小區(qū)景觀設(shè)計(jì)方案說明
- 湖南2022長沙銀行春季校園招聘線上初面上岸提分題庫3套【500題帶答案含詳解】
- GB/T 20000.6-2006標(biāo)準(zhǔn)化工作指南第6部分:標(biāo)準(zhǔn)化良好行為規(guī)范
- 藥品基礎(chǔ)知識(shí)培訓(xùn)培訓(xùn)課件
- 非線性振動(dòng)1講解課件
- 玻璃鱗片施工方案
- 最新3C認(rèn)證全套程序文件
- 無軌膠輪車運(yùn)輸設(shè)計(jì)及設(shè)備選型計(jì)算
評(píng)論
0/150
提交評(píng)論