數(shù)字邏輯:第3章 模塊的結(jié)構(gòu)、數(shù)據(jù)類型、變量和基本運算符號_第1頁
數(shù)字邏輯:第3章 模塊的結(jié)構(gòu)、數(shù)據(jù)類型、變量和基本運算符號_第2頁
數(shù)字邏輯:第3章 模塊的結(jié)構(gòu)、數(shù)據(jù)類型、變量和基本運算符號_第3頁
數(shù)字邏輯:第3章 模塊的結(jié)構(gòu)、數(shù)據(jù)類型、變量和基本運算符號_第4頁
數(shù)字邏輯:第3章 模塊的結(jié)構(gòu)、數(shù)據(jù)類型、變量和基本運算符號_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第3章模塊的結(jié)構(gòu)、數(shù)據(jù)類型、變量和基本運算符號13.1模塊的結(jié)構(gòu)Verilog結(jié)構(gòu)位于module和endmodule聲明語句之間,每個Verilog程序包括4個主要部分:端口定義I/O說明內(nèi)部信號聲明功能定義2模塊端口定義格式module模塊名(口1,口2,口3,…)引用模塊的兩種連接方法(1)在引用時嚴(yán)格按模塊定義的端口順序來連接,不用標(biāo)明原模塊定義時規(guī)定的端口名(2)在引用時用“.”符號,標(biāo)明定義時規(guī)定的端口名不必嚴(yán)格按端口順序?qū)?yīng)3I/O說明的格式輸入口input[范圍];輸出口output[范圍];輸入/輸出口inout[范圍];I/O說明也可以寫在端口聲明里。modulemodule_name(inputin_port1,inputin_port2,outputout_port1,outputout_port2);moduletest_width(b,a);input[6:5]a;output[3:2]b;assignb=a;endmodule4內(nèi)部信號說明reg[范圍]變量1,變量2…;wire[范圍]變量1,變量2…;模塊中實現(xiàn)邏輯功能的3種方法assignassignc=a&b;(2)用實例元件and#2u1(q,a,b);(3)用always塊assign語句是描述組合邏輯最常用的方法之一。always塊既可用于描述時序邏輯,又可用于組合邏輯。5Verilog語言要點(1)在Verilog模塊中所有過程塊(如initial塊、always塊)、連續(xù)賦值語句、實例引用都是并行的(2)它們表示的是一種通過變量名互相連接的關(guān)系(3)在同一模塊中這三者出現(xiàn)的先后次序沒有關(guān)系(4)只有連續(xù)賦值語句assign和實例引用語句可以獨立于過程塊而存在于模塊的功能定義部分6D觸發(fā)器modulenew_dff(q,clk,d);inputclk,d;outputq;regq;always@(posedge

clk)q<=d;endmodule

7D觸發(fā)器(帶異步清除端)modulenew_dff2(q,clk,d,clr);inputclk,d,clr;outputq;regq;always@(posedge

clkorposedge

clr)begin

if(clr)q<=0;elseq<=d;endendmodule8D觸發(fā)器(帶異步清除端和使能端)modulenew_dff3(q,clk,d,clr,en);outputq;inputclk,d,clr,en;regq;always@(posedge

clkorposedge

clr)begin

if(clr)q<=0;elseif(en)q<=d;endendmodule9103.2數(shù)據(jù)類型及其常量和變量4種邏輯值01z(高阻)

x(不定值)常量在程序運行過程中,其值不能被改變的量稱為常量。111數(shù)字(1)整數(shù)二進(jìn)制整數(shù)b或B十進(jìn)制整數(shù)d或D十六進(jìn)制整數(shù)h或H八進(jìn)制整數(shù)o或O3.2.1常量12數(shù)字表達(dá)方式<位寬>’<進(jìn)制><數(shù)字>4’b1110//4位二進(jìn)制數(shù)12’habc//12位十六進(jìn)制數(shù)16’d255//16位十進(jìn)制數(shù)’<進(jìn)制><數(shù)字>采用默認(rèn)位寬,與仿真器和使用的計算機(jī)有關(guān)(最小為32位)‘hc3//32位16進(jìn)制數(shù)‘o21//32位8進(jìn)制數(shù)13<數(shù)字>默認(rèn)為十進(jìn)制數(shù)采用默認(rèn)位寬,與仿真器和使用的計算機(jī)有關(guān)(最小為32位)//32位十進(jìn)制數(shù)(2)x和z值一個x可以用來定義十六進(jìn)制數(shù)的四位二進(jìn)制數(shù)的狀態(tài),八進(jìn)制數(shù)的三位,二進(jìn)制數(shù)的一位。z的表示方式同x類似。z還有一種表達(dá)方式是可以寫作?。在使用case表達(dá)式時建議使用這種寫法,以提高程序的可讀性。4'b10x0//位寬為4的二進(jìn)制數(shù)從低位數(shù)起第二位為不定值4'b101z//位寬為4的二進(jìn)制數(shù)從低位數(shù)起第一位為高阻值12'dz//位寬為12的十進(jìn)制數(shù)其值為高阻值12'd?//位寬為12的十進(jìn)制數(shù)其值為高阻值8'h4x//位寬為8的十六進(jìn)制數(shù)其低四位值為不定值14(3)負(fù)數(shù)一個數(shù)字可以被定義為負(fù)數(shù),只需在位寬表達(dá)式前加一個減號,減號必須寫在數(shù)字定義表達(dá)式的最前面。注意減號不可以放在位寬和進(jìn)制之間也不可以放在進(jìn)制和具體的數(shù)之間。見下例:-8'd5//這個表達(dá)式代表5的補數(shù)(用八位二進(jìn)制數(shù)表示)8‘d-5//非法格式15(4)下劃線(underscore_)下劃線可以用來分隔開數(shù)的表達(dá)以提高程序可讀性。但不可以用在位寬和進(jìn)制處,只能用在具體的數(shù)字之間。16'b1010_1011_1111_1010//合法格式8'b_0011_1010//非法格式當(dāng)常量不說明位數(shù)時,默認(rèn)值是32位,每個字母用8位的ASCII值表示。例:10=32’d10=32’b10101=32’d1=32’b1-1=-32’d1=32’hFFFFFFFF‘BX=32’BX=32’BXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX“AB”=16’B01000001_01000010//字符串AB,

//為十六進(jìn)制數(shù)16’h4142162參數(shù)(Parameter)型在VerilogHDL中用parameter來定義常量,即用parameter來定義一個標(biāo)識符代表一個常量,稱為符號常量,即標(biāo)識符形式的常量,采用標(biāo)識符代表一個常量可提高程序的可讀性和可維護(hù)性。parameter型數(shù)據(jù)是一種常數(shù)型的數(shù)據(jù),其說明格式如下:parameter參數(shù)名1=表達(dá)式,參數(shù)名2=表達(dá)式,…,參數(shù)名n=表達(dá)式;parameter是參數(shù)型數(shù)據(jù)的確認(rèn)符,確認(rèn)符后跟著一個用逗號分隔開的賦值語句表。在每一個賦值語句的右邊必須是一個常數(shù)表達(dá)式。也就是說,該表達(dá)式只能包含數(shù)字或先前已定義過的參數(shù)。17parametermsb=7;//定義參數(shù)msb為常量7parametere=25,f=29;//定義二個常數(shù)參數(shù)parameterr=5.7;//聲明r為一個實型參數(shù)parameterbyte_size=8,byte_msb=byte_size-1;//用常數(shù)表達(dá)式賦值parameteraverage_delay=(r+f)/2;//用常數(shù)表達(dá)式賦值參數(shù)型常數(shù)經(jīng)常用于定義延遲時間和變量寬度。在實例引用時可通過參數(shù)傳遞改變在被引用模塊中已定義的參數(shù)18moduletwo_delay(a,b,c,d);outputc,d;inputa,b;reg

c,d;parameterdelay1=2,delay2=2;always@(a)c<=#delay1a;

always@(b)d<=#delay2b;

endmodule

19moduletop_delay2(a1,b1,c1,d1);inputa1,b1;outputc1,d1;

two_delay#(5,10)u1(.a(a1),.b(b1),.c(c1),.d(d1));

endmodulemoduletop_delay(a1,b1,c1,d1);inputa1,b1;outputc1,d1;

two_delay#(.delay1(5),.delay2(10))u1(.a(a1),.b(b1),.c(c1),.d(d1));

endmodule20moduletop_delay3(a1,b1,c1,d1);inputa1,b1;outputc1,d1;

two_delay#(.delay2(10))u1(.a(a1),.b(b1),.c(c1),.d(d1));

endmodulemoduletop_delay4(a1,b1,c1,d1);inputa1,b1;outputc1,d1;

two_delay#(10)//參數(shù)被傳給了delay1u1(.a(a1),.b(b1),.c(c1),.d(d1));

endmodule21defparam

可以在一個模塊中改變另外一個模塊的參數(shù)。moduleblock(b,a);

inputa;outputb;regb;parameterdelay=0;always@(a)b<=#delaya;

endmodule

22moduleblock_up(a,b,c,d);inputa,b;outputc,d;wiretemp1,temp2;assigntemp1=a&b;assigntemp2=a;blocku1(.b(c),.a(temp1));blocku2(.b(d),.a(temp2));

endmodule

23moduletest_block_up2;

reg

a_in,b_in;wirec_out,d_out;

defparamtest_block_up2.test_u.u1.delay=5,test_block_up2.test_u.u2.delay=10;

block_up

test_u(.a(a_in),.b(b_in),.c(c_out),.d(d_out));initialbegin

a_in=0;

b_in=0;#20a_in=1;#100b_in=1;#100a_in=0;endendmodule

24moduleAnnotate;

defparamtest_block_up.test_u.u1.delay=5,test_block_up.test_u.u2.delay=10;endmodule

25moduletest_block_up;

reg

a_in,b_in;wirec_out,d_out;

Annotateu123();

block_up

test_u(.a(a_in),.b(b_in),.c(c_out),.d(d_out));

initialbegin

a_in=0;

b_in=0;#20a_in=1;#100b_in=1;#100a_in=0;endendmodule

263.2.2變量網(wǎng)絡(luò)型(線網(wǎng),net)表示硬件單元之間的連接。net不是關(guān)鍵字,代表了一組數(shù)據(jù)類型,包括wire,wand,wor,tri,triand,trior,trireg等。線網(wǎng)的默認(rèn)值為z(trireg例外,默認(rèn)值為x)本課程主要討論wirewire型數(shù)據(jù)常用來表示用于以assign關(guān)鍵字指定的組合邏輯信號。

Verilog程序模塊中輸入輸出信號類型缺省時自動定義為wire型。wire型信號可以用作任何方程式的輸入,也可以用作“assign”語句或?qū)嵗妮敵觥?7格式:wire[n-1:0]數(shù)據(jù)名1,數(shù)據(jù)名2,…數(shù)據(jù)名i;//共有i條總線,每條總線內(nèi)有n條線路wire[n:1]數(shù)據(jù)名1,數(shù)據(jù)名2,…數(shù)據(jù)名i;wirea;//定義了一個一位的wire型數(shù)據(jù)wire[7:0]b;//定義了一個八位的wire型數(shù)據(jù)wire[4:1]c,d;//定義了二個四位的wire型數(shù)據(jù)282寄存器型通常表示一個存儲數(shù)據(jù)的空間。reg是最常用的寄存器型數(shù)據(jù)。reg型變量并不嚴(yán)格對應(yīng)于電路上的存儲單元。Verilog還支持integer,real和time寄存器數(shù)據(jù)類型。reg的默認(rèn)初始值是x。格式:reg[n-1:0]數(shù)據(jù)名1,數(shù)據(jù)名2,…數(shù)據(jù)名i;

reg[n:1]數(shù)據(jù)名1,數(shù)據(jù)名2,…數(shù)據(jù)名i;29reg

rega;//定義了一個一位的名為rega的reg型數(shù)據(jù)reg[3:0]regb;//定義了一個四位的名為regb的reg型數(shù)據(jù)reg[4:1]regc,regd;//定義了兩個四位的名為regc和regd的reg型數(shù)據(jù)303memory型VerilogHDL通過對reg型變量建立數(shù)組來對存儲器建模,可以描述RAM型存儲器,ROM存儲器和reg文件。數(shù)組中

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論