資源描述:
《蔡覺平老師-verilog上機作業(yè).docx》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、上機作業(yè)題目2:簡述begin-end語句塊和fork-join語句塊的區(qū)別,并寫出下面信號對應(yīng)的程序代碼begin-end語句塊和fork-join語句塊的區(qū)別:1、執(zhí)行順序:begin-end語句塊按照語句順序執(zhí)行,fork-join語句塊所有語句均在同一時刻執(zhí)行;2、語句前面延遲時間的意義:begin-end語句塊為相對于前一條語句執(zhí)行結(jié)束的時間,fork-join語句塊為相對于并行語句塊啟動的時間;3、起始時間:begin-end語句塊為首句開始執(zhí)行的時間,fork-join語句塊為轉(zhuǎn)入并行語句塊的時間;4、結(jié)束時間:begin-end語句塊為最后一
2、條語句執(zhí)行結(jié)束的時間,fork-join語句塊為執(zhí)行時間最長的那條語句執(zhí)行結(jié)束的時間;5、行為描述的意義:begin-end語句塊為電路中的數(shù)據(jù)在時鐘及控制信號的作用下,沿數(shù)據(jù)通道中各級寄存器之間的傳送過程。fork-join語句塊為電路上電后,各電路模塊同時開始工作的過程。程序如下:moduleb(a,b);outputa,b;rega,b;initialbegina=0;b=1;#10a=1;forkb=0;#10b=1;#20a=0;join#10b=0;#10a=1;b=1;endendmodule題目3.分別用阻塞和非阻塞賦值語句描述如下圖所示移位
3、寄存器的電路圖。程序如下:moduleblock1(din,clk,out0,out1,out2,out3);inputdin,clk;outputout0,out1,out2,out3;regout0,out1,out2,out3;always@(posedgeclk)beginout3=out2;out2=out1;out1=out0;out0=din;endendmodulemodulenon_block1(din,clk,out0,out1,out2,out3);inputdin,clk;outputout0,out1,out2,out3;regou
4、t0,out1,out2,out3;always@(posedgeclk)beginout0<=din;out1<=out0;out2<=out1;out3<=out2;endendmodule題目4:設(shè)計16位同步計數(shù)器要求:(1)分析16位同步計數(shù)器結(jié)構(gòu)和電路特點;(2)用硬件描述語言進行設(shè)計;(3)編寫測試仿真并進行仿真。程序如下:moduleb;regclk;regreset;wire[3:0]count,result;always#5clk=~clk;initialbeginclk=0;reset=0;#20reset=1;endaU1(.clk(
5、clk),.reset(reset),.result(result),.count(count));endmodulemodulea(count,clk,reset,result);outputcount,result;inputclk,reset;reg[3:0]count;always@(posedgeclk)beginif(!reset)count=4'b0000;elsecount=count+1;endassignresult=count[0]
6、
7、count[1]
8、
9、count[2]
10、
11、count[3];endmodule題目5.試用Verilog
12、HDL門級描述方式描述如下圖所示的電路。程序如下:modulediwuti(D0,D1,D2,D3,S1,S2,Z);outputZ;inputD0,D1,D2,D3,S1,S2;wirewi1,wi2,w3,w4,w5,w6;notU1(w1,S1),U2(w2,S2);andU3(w6,D3,S2),U4(w5,D2,S1,w2),U5(w4,D1,S1,w1),U6(w3,D0,w1,w2);orU7(Z,w3,w4,w5,w6);endmodule題目6.試用查找真值表的方式實現(xiàn)真值表中的加法器,寫出VerilogHDL代碼:Cinainbinsum
13、Cout0000000110010100110110010101011100111111程序如下:modulefulladder(SUM,C_OUT,A,B,C_IN);outputSUM,C_OUT;inputA,B,C_IN;regSUM,C_OUT;always@(AorBorC_IN)case({A,B,C_IN})3'b000:SUM<=0;3'b000:C_OUT<=0;3'b001:SUM<=1;3'b001:C_OUT<=0;3'b010:SUM<=1;3'b010:C_OUT<=0;3'b011:SUM<=0;3'b011:C_OUT<=1
14、;3'b100:SUM<=1;3'b100:C_OU