蔡觉平老师,verilog上机作业

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

上机作业

题目2:简述begin-end 语句块和fork-join 语句块的区别,并写出下面信号对应的程序代码

begin-end 语句块和fork-join 语句块的区别:

1、执行顺序:begin-end 语句块按照语句顺序执行,fork-join 语句块所有语句均在同一时刻执行;

2、语句前面延迟时间的意义:begin-end 语句块为相对于前一条语句执行结束的时间,fork-join 语句块为相对于并行语句块启动的时间;

3、起始时间:begin-end 语句块为首句开始执行的时间,fork-join 语句块为转入并行语句块的时间;

4、结束时间:begin-end 语句块为最后一条语句执行结束的时间,fork-join 语句块为执行时间最长的那条语句执行结束的时间;

5、行为描述的意义:begin-end 语句块为电路中的数据在时钟及控制信号的作用下,沿数据通道中各级寄存器之间的传送过程。fork-join 语句块为电路上电后,各电路模块同时开始工作的过程。 程序如下: module b(a,b); output a,b; reg a,b; initial begin a=0; b=1; #10 a=1; fork b=0; #10 b=1; #20 a=0; join

#10 b=0; #10 a=1; b=1; end

endmodule

A B

题目3.分别用阻塞和非阻塞赋值语句描述如下图所示移位寄存器的电路图。

程序如下:

module block1(din,clk,out0,out1,out2,out3);

input din,clk;

output out0,out1,out2,out3;

reg out0,out1,out2,out3;

always@(posedge clk)

begin

out3=out2;

out2=out1;

out1=out0;

out0=din;

end

endmodule

module non_block1(din,clk,out0,out1,out2,out3); input din,clk;

output out0,out1,out2,out3;

reg out0,out1,out2,out3;

always@(posedge clk)

begin

out0<=din;

out1<=out0;

out2<=out1;

out3<=out2;

end

endmodule

题目4:设计16位同步计数器

要求:(1)分析16位同步计数器结构和电路特点;

(2)用硬件描述语言进行设计;

(3)编写测试仿真并进行仿真。

程序如下:

module b;

reg clk;

reg reset;

wire [3:0]count,result;

always #5 clk=~clk;

initial begin clk=0;reset=0; #20 reset=1;end

a U1(.clk(clk),.reset(reset),.result(result),.count(count)); endmodule

module a(count,clk,reset,result);

output count,result;

input clk,reset;

reg [3:0]count;

always@(posedge clk)

begin

if(!reset) count=4'b0000;

else count=count+1;

end

assign result=count[0]||count[1]||count[2]||count[3]; endmodule

题目5.试用Verilog HDL门级描述方式描述如下图所示的电路。

Z

程序如下:

module diwuti(D0,D1,D2,D3,S1,S2,Z);

output Z;

input D0,D1,D2,D3,S1,S2;

wire wi1,wi2,w3,w4,w5,w6;

not U1(w1,S1),

U2(w2,S2);

and U3(w6,D3,S2),

U4(w5,D2,S1,w2),

U5(w4,D1,S1,w1),

U6(w3,D0,w1,w2); or U7(Z,w3,w4,w5,w6); endmodule

output SUM,C_OUT; input A,B,C_IN;

reg SUM,C_OUT; always@(A or B or C_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;

3'b100:SUM<=1;

3'b100:C_OUT<=0;

3'b101:SUM<=0;

3'b101:C_OUT<=1;

3'b110:SUM<=0;

3'b110:C_OUT<=1;

3'b111:SUM<=1;

3'b111: C_OUT<=1;

endcase

endmodule

题目7:设计16位同步加法器和乘法器

要求:(1)分析16位同步加法器和乘法器结构和电路特

点;

(2)用硬件描述语言进行设计;

(3)编写测试仿真并进行仿真。

程序如下:

module c;

parameter adder16_width=16;

reg [adder16_width-1:0]ain,bin;

reg Cin;

wire [adder16_width-1:0]sum;

wire Cout;

initial

begin

ain=10;bin=10;Cin=1;

end

initial

begin

#5 ain=16'b1111111111111111;#10 bin=1;

end

a U1(.ain(ain),.bin(bin),.Cin(Cin),.Cout(Cout),.sum(sum)); endmodule

module d;

parameter width=16;

reg [width-1:0]ain,din;

wire [width*2-1:0]mul;

initial begin ain=2;din=2; end

initial begin #10 ain=100;#15 din=100; end

b U1(.ain(ain),.din(din),.mul(mul));

endmodule

module a(bin,ain,sum,Cout,Cin);

相关文档
最新文档