verilog數(shù)字系統(tǒng)設(shè)計教程著課后習(xí)題答案航空航天第6章例題_第1頁
verilog數(shù)字系統(tǒng)設(shè)計教程著課后習(xí)題答案航空航天第6章例題_第2頁
verilog數(shù)字系統(tǒng)設(shè)計教程著課后習(xí)題答案航空航天第6章例題_第3頁
verilog數(shù)字系統(tǒng)設(shè)計教程著課后習(xí)題答案航空航天第6章例題_第4頁
verilog數(shù)字系統(tǒng)設(shè)計教程著課后習(xí)題答案航空航天第6章例題_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第六章例題[例1]:用initial塊對器變量賦初始areg=0初始化寄存器areg //初始化一個[2]initial語句來生成激勵波形inputs='b000000初始時刻為#10inputs='b011001;(’是英文輸入法中的標(biāo)號)#10inputs='b011011;#10inputs='b011000;#10inputs=//always語句由于其不斷活動的特性,只有和一定的時序控制結(jié)合在一起才有用。//如果一個always語句沒有時序控制,則這個always語句將會使仿真器產(chǎn)生死鎖。//見下例:[例 areg=//但如果加上時序控制,則這個always語句將變?yōu)橐粭l非常有用的描述語句。見下例:[例4]:always areg=//這個例子生成了一個周期為:period(=2*half_period)的無限延續(xù)的信號波形,//常用這種方法來描述時鐘信號,作為激勵信號來測試所設(shè)計的電路。[例5]:reg[7:0]counter;regtick;always@(posedgeareg)tick=counter=counter+1; OR控制(敏感列表always@(reset d)//reset或時鐘信號clockdif(reset //resetqq=1'b0 if(clock) //clockdq=d;/*Verilog1364-2001版本的語法中,對于原來的規(guī)定作了補(bǔ)充:“or”也可以使用[7]always@(reset,clock,d)//resetclockdif(reset //若resetqq=1'b0 if(clock) //clockdq=d;//reset異步下降沿復(fù)位,clkDalways@(posedgeclk,negedgereset) if(!reset)q<=0q<=d @*操作符的使//用oralways@aorborcordoreorforgorhorpormout1=a? b+c : d+e;out2=f g+ p+m//@(*)always@(*)out1=a? b+c : d+e;out2=f g+ p+m

wait #20count=count+new_word= inputa,b; outputd,e;…<語句 //執(zhí)行任務(wù)工作相應(yīng)的語…c=foo1;//賦初始值d=foo2;//對任務(wù)的輸出變量賦值e=foo3;任務(wù)調(diào)用:[9]Verilogmodule clock,red,amber,green; on=1,off=0,red_tics=350,//交通燈初始化 //交通燈控制時序 //開紅燈light(red,red_tics);//調(diào)用等待任務(wù) //開綠燈light(green,green_tics);//等待 //開黃燈 //等待//定義交通燈開啟時間的任務(wù) input[31:0]tics;@(posedgeclock);//等待tics個時鐘的上升沿color=off;//關(guān)燈//產(chǎn)生時鐘脈沖的always#100#100clock=1;//用例子說明:function[7:0]input[15:0]address;<說明語句 //從地址字中提取低字節(jié)的程getbyte=result_expression;//把結(jié)果賦予函數(shù)的返回字節(jié)word=control?{getbyte(msbyte),getbyte(lsbyte)}://下面的例子中定義了一個可進(jìn)行階乘運(yùn)算的名為factorial的函數(shù),//該函數(shù)返回一個32位的寄存器類型的值,該函數(shù)可后向調(diào)用自身,//并且打印出部分結(jié)果值。[10] //函數(shù)的定義factorial=1; 01,1的階乘也為1for(index=2;index<=operand;index=index+1)factorial=index*factorial;//函數(shù)的測試$disy("Partialresultn=%dresult=%d",n,result);result=n*factorial(n)/((n*2)+1);endmodule//模塊結(jié)束//11calc_parity 偶校驗(yàn)位的計moduleparity;reg[31:0]addr;regparity;addr=32'h3456_789a;#10addr=32'hc4c6_78ff;#10addr=32'hff56_ff9a;#10addr=32'h3faa_aaaa;always@(addr)parity //$disy("Paritycalculated=%b",calc_parity(addr)//functioncalc_parity;input[31:0]address;

calc_parity [例12]使用C風(fēng)格進(jìn)行變量的函數(shù)定//ANSIC風(fēng)格的變量 calc_parity(input[31:0]address);

calc_parity=^address; 左/右移位寄存//module//左/`define `defineRIGHT_SHIFT reg[31:0]addr,left_addr,right_addr;regcontrol;always@(addr)left_addr=shift(addr,`LEFT_SHIFT);right_addrshift(addr`RIGHT_SHIFT);//32function[31:0]input[31:0]address;inputcontrol;

shift=(control==`LEFT_SHIFT)?(address<<1):(address>>14[14]遞歸(自動)moduletop;//定義自動(遞歸)函 factorial; [31:0] oper; i;if(operand>=2factorial=factorial(oper-1)*oper; factorial=1integerresultresultfactorial4);//4$disy("Factorialof4is%0d",result); //顯示24 常量函moduleram ) RAM_DEPTH=256 [clog2(RAM_DEPTH)-1:0 addr_bus ............functionintegerclogb2(input integerdepth);for(clogb2=0;depth>0;clogb2=clogb2+1)depth=depth>>1;......[16]moduletop... signed[63:0 compute_signed input[63:0 vector)......if(compute_signed(vector) -3)...... 輸出結(jié)果為//從上面的這個例子中可以看到一些特殊字符的輸出形式(八進(jìn)制數(shù)123就是字符S)[18]:modulereg[31:0]rval;$disy("rval=%hhex%ddecimal",rval,$disy("rval=%ootal%bbinary",rval,$disy("rvalhas%casciicharacter$disy("pdstrengthvalueis$disy("currentscopeis$disy("%sisasciivaluefor$disy("simulationtimeis%t",$time);其輸出結(jié)果為: hex101rval=00000000145octal00000000000000000000000001100101rvalhaseasciicharactervaluepdstrengthvalueisStXcurrentscopeisdispeisasciivaluefor101simulationtimeis0$disy("d=%0h[19]:module輸出結(jié)果為:

$disy("Printing um$disy("PrintingwithminimumPrintingwithumprintingwithminimum[20] handle1,handle2, //32//標(biāo)準(zhǔn)輸出是打開的;descriptor=32'h0000_0001 (第0位置1)handle1=$fopen("file1.out");//handle1=32'h0000_0002(bit1set1)handle2=$fopen("file2.out");//handle2=32'h0000_0004(bit2set1)handle3=$fopen("file3.out");//handle3=32'h0000_0008(bit3set//18integerdesc1,desc2,desc3;//desc1=handle1| desc1=$fdisy(desc1,"Disy1");//寫到文件file1.out和標(biāo)準(zhǔn)輸出desc2=handle2| //desc2=32$fdisy(desc2,"Disy //寫到文件file1.out和

desc3=handle3 //desc3=$fdisy(desc3,"Disy [21] $disy("Disyingin%m");moduletop; m1( m2( m3(Disyingintop.m1Disyingintop.m2Disyingin[22]//always@(posedgeclock)a=b;c=dalways@(posedge$strobe(“Disyinga= c=%b”,a,c //22ab和cd//如果使用$disy,$disy可能在語句a=

溫馨提示

  • 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

提交評論