《EDAVerilog語(yǔ)言》PPT課件.ppt
《《EDAVerilog語(yǔ)言》PPT課件.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《《EDAVerilog語(yǔ)言》PPT課件.ppt(81頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
sl,1)Net(網(wǎng)絡(luò)連線):由模塊或門驅(qū)動(dòng)的連線。驅(qū)動(dòng)端信號(hào)的改變會(huì)立刻傳遞到輸出的連線上。例如:右圖上,selb的改變,會(huì)自動(dòng)地立刻影響或門的輸出。,,nets,,,,,,,,a,b,,,,,,,selb,sela,,nsl,out,如果不明確地說(shuō)明連接是何種類型,應(yīng)該是指wire類型。,Verilog語(yǔ)言,,2)寄存器(reg)類型數(shù)據(jù)儲(chǔ)存單元的抽象。默認(rèn)初始值為X常用行為語(yǔ)句結(jié)構(gòu)來(lái)給寄存器類型的變量賦值。用來(lái)表示always塊內(nèi)的指定信號(hào),,,,a,b,sl,,,,,,,selb,,nsl,out,,reg_a,reg_sel,reg_b,,,,常為寄存器或觸發(fā)器的輸出,Verilog語(yǔ)言,(在always塊內(nèi)被賦值的每個(gè)信號(hào)都必須定義成reg型),sela,格式: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;例:regrega;reg[3:0]regb,regc;可以賦正值也可以賦負(fù)值,但當(dāng)一個(gè)reg型數(shù)據(jù)是一個(gè)表達(dá)式中的操作數(shù)時(shí),它的值被當(dāng)作無(wú)符號(hào)值,即正值。如regb被賦值為-1,在表達(dá)式中被認(rèn)為是??,Verilog語(yǔ)言,例:寄存器的聲明和使用regreset;initialbeginreset=1`b1;#100reset=1`b0;end,regsigned[63:0]m;integeri;,Verilog語(yǔ)言,3)整數(shù)、實(shí)數(shù)和時(shí)間寄存器類型integer(通用寄存器數(shù)據(jù)類型,用于對(duì)數(shù)量進(jìn)行操作)例:integercounter;//一般用途,做為計(jì)數(shù)器initalcounter=-1;real實(shí)常量和實(shí)寄存器數(shù)據(jù)類型使用,默認(rèn)值為0例:realdelta;initialbegindelta=4e10;delta=2.13;endintegeri;initiali=delta;//i的值為2,Verilog語(yǔ)言,time保存仿真時(shí)間,通過(guò)系統(tǒng)函數(shù)$time可以得到當(dāng)前的仿真時(shí)間,例:timesve_sim_time;initialsave_sim_time=$time;,4)向量,線網(wǎng)和寄存器類型的數(shù)據(jù)均可聲明為向量(位寬大于1)。若沒(méi)有指定位寬,則默認(rèn)為標(biāo)量(1位)。,例:wirea;wire[7:0]bus;wire[31:0]busA,busB,busC;regclock;reg[0:40]virtual_addr;//最高有效位為第0位,Verilog語(yǔ)言,向量域選擇對(duì)上例中向量,可以指定它的某一位或若干個(gè)相鄰位,,busA[7]bus[2:0]//不可以寫成bus[0:2],高位應(yīng)寫在范圍說(shuō)明的左側(cè)virtual_addr[0:1],可變的向量域選擇,[+:width]從起始位開始遞增,位寬為width[-:width]從起始位開始遞減,位寬為width,Verilog語(yǔ)言,Verilog語(yǔ)言,reg[255:0]data1;reg[0:255]data2;reg[7:0]byte;byte=data1[31-:8];從第31位算起,寬度為8位,相當(dāng)于data1[31:24]byte=data1[24+:8];byte=data2[31-:8];從第31位算起,寬度為8位,相當(dāng)于data1[24:31]byte=data2[24+:8];//起始位可以是變量,但寬度必須為常數(shù)for(j=0;j3;//num=00_0000_0001#20regb>3;//regb=0000_0001#30num>2;//rega=1111_1100#50num1>2;//num1=00_1111_1100joinendmodule,>>邏輯右移(非循環(huán))>>算術(shù)右移<<>>3);//結(jié)果為-2,由于算術(shù)運(yùn)算,右移三位,空缺位補(bǔ)1,數(shù)據(jù)流級(jí)建模,,modulerelationals();reg[3:0]rega,regb,regc;regval;initialbeginrega=4b0011;regb=4b1010;regc=4b0 x10;endinitialfork#10val=regc>rega;//val=x#20val=regb=rega;//val=1#40val=regb>regc;//val=1#50$finish;joinendmodule,>大于=大于等于regc,rega和regc的關(guān)系取決于x,,,關(guān)系操作符,數(shù)據(jù)流級(jí)建模,注意邏輯等與case等的差別2‘b1x==2’b0 x值為0,因?yàn)椴幌嗟?‘b1x==2’b1x值為x,因?yàn)榭赡懿幌嗟?,也可能相?‘b1x===2’b0 x值為0,因?yàn)椴幌嗤?‘b1x==2’b1x值為1,因?yàn)橄嗤?=賦值操作符,將等式右邊表達(dá)式的值拷貝到左邊。,==邏輯等,===case等,a=2b1x;b=2b1x;if(a==b)$display("aisequaltob");else$display("aisnotequaltob");,a=2b1x;b=2b1x;if(a===b)$display("aisidenticaltob");else$display("aisnotidenticaltob");,Case等只能用于行為描述,不能用于RTL描述。,相等操作符,數(shù)據(jù)流級(jí)建模,!=邏輯不等,moduleequalities1();reg[3:0]rega,regb,regc;regval;initialbeginrega=4b0011;regb=4b1010;regc=4b1x10;endinitialfork#10val=rega==regb;//val=0#20val=rega!=regc;//val=1#30val=regb!=regc;//val=x#40val=regc==regc;//val=x#50$finish;joinendmodule,其結(jié)果是1’b1、1’b0或1’bx。如果左邊及右邊為確定值并且不相等,則結(jié)果為1。如果左邊及右邊為確定值并且相等,則結(jié)果為0。如果左邊及右邊有值不能確定的位,但值確定的位相等,則結(jié)果為x。!=的結(jié)果與==相反,,數(shù)據(jù)流級(jí)建模,!==不相同(case不等),moduleequalities2();reg[3:0]rega,regb,regc;regval;initialbeginrega=4b0011;regb=4b1010;regc=4b1x10;endinitialfork#10val=rega===regb;//val=0#20val=rega!==regc;//val=1#30val=regb===regc;//val=0#40val=regc===regc;//val=1#50$finish;joinendmodule,其結(jié)果是1’b1、1’b0或1’bx。如果左邊及右邊的值相同(包括x、z),則結(jié)果為0。如果左邊及右邊的值不相同,則結(jié)果為1。!==的結(jié)果與===相反,綜合工具不支持,數(shù)據(jù)流級(jí)建模,?:條件,modulelikebufif(in,en,out);inputin;inputen;outputout;assignout=(en==1)?in:bz;endmodulemodulelike4to1(a,b,c,d,sel,out);inputa,b,c,d;input[1:0]sel;outputout;assignout=sel==2b00?a:sel==2b01?b:sel==2b10?c:d;endmodule,條件操作符,數(shù)據(jù)流級(jí)建模,registger=condition?true_value:false_value;,,每個(gè)條件操作符必須有三個(gè)參數(shù),缺少任何一個(gè)都會(huì)產(chǎn)生錯(cuò)誤。最后一個(gè)操作數(shù)作為缺省值。,若condition為真,則register=true_value;若condition為假,則register=false_value;如果條件值不確定,則對(duì)兩個(gè)結(jié)果逐位比較,true_value=false_value則該位值為操作數(shù)中該位值,true_value≠false_value,則取x。,例如:assignout=(sel==0)?a:b;,若sel為0則out=a;若sel為1則out=b。如果sel為x或z,若a=b=0,則out=0;若a≠b,則out值不確定。,數(shù)據(jù)流級(jí)建模,{}級(jí)聯(lián),從不同矢量中選擇位并用它們組成一個(gè)新的矢量。,moduleconcatenation;reg[7:0]rega,regb,regc,regd;reg[7:0]new;initialbeginrega=8b0000_0011;regb=8b0000_0100;regc=8b0001_1000;regd=8b1110_0000;endinitialfork#10new={regc[4:3],regd[7:5],regb[2],rega[1:0]};//new=8b11111111#20$finish;joinendmodule,每個(gè)操作數(shù)必須有確定位寬類似錯(cuò)誤的例子:a[7:0]={4{b10}};b[7:0]={2{5}};c[3:0]={3b011,b0};級(jí)聯(lián)時(shí)不限定操作數(shù)的數(shù)目。在操作符符號(hào){}中,用逗號(hào)將操作數(shù)分開。例如:{A,B,C,D},級(jí)聯(lián)操作符,數(shù)據(jù)流級(jí)建模,{{}}復(fù)制,復(fù)制一個(gè)變量或在{}中的值,前兩個(gè){符號(hào)之間的正整數(shù)指定復(fù)制次數(shù)。,復(fù)制,數(shù)據(jù)流級(jí)建模,modulereplicate();reg[3:0]rega;reg[1:0]regb,regc;reg[7:0]bus;initialbeginrega=4’b1001;regb=2b11;regc=2b00;endinitialfork#10bus<={4{regb}};//bus=11111111//regbisreplicated4times.#20bus<={{2{regb}},{2{regc}}};//bus=11110000.regcandregbareeach//replicated,andtheresultingvectors//areconcatenatedtogether#30bus<={{4{rega[1]}},rega};//bus=00001001.regaissign-extended#40$finish;joinendmodule,數(shù)據(jù)流級(jí)建模,用邏輯方程描述四選一多路選擇器,數(shù)據(jù)流級(jí)建模,用條件操作語(yǔ)句描述四選一多路選擇器,四選一激勵(lì)模塊,- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- EDAVerilog語(yǔ)言 EDAVerilog 語(yǔ)言 PPT 課件
鏈接地址:http://www.820124.com/p-11550623.html