verilog硬件描述语言 上机

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

《硬件描述语言》上机作业西电微电子

\

第一题:用Verilog语言的结构描述和行为描述分别设计下面的电路。

A[0] Array B[0]

A[1]

B[1]

A[2]

B[2]

结构描述:

电路设计:

module hw1(A,B,Y); input[2:0] A,B;

output Y;

wire w1,w2,w3;

xor U1(w1,A[0],B[0]);

xor U2(w2,A[1],B[1]);

xor U3(w3,A[2],B[2]);

nor U4(Y,w1,w2,w3);

endmodule

仿真测试:

module test_hw1;

reg[2:0] A,B;

wire Y;

hw1 U1(A,B,Y);

initial

begin

A=3'b000;B=3'b000;

#50 A=3'b000;B=3'b000;

#50 A=3'b111;B=3'b111;

#50 A=3'b000;B=3'b110;

#50 A=3'b111;B=3'b000;

#50 A=3'b110;B=3'b110;

#50 A=3'b011;B=3'b010;

#50 A=3'b001;B=3'b011;

#50 A=3'b111;B=3'b010;

#50 $stop;

end

initial $monitor($time,"\tA=%d\tB=%d\tY=%d",A,B,Y); Endmodule

行为描述:

电路设计:

module hw2(A,B,Y);

input[2:0] A,B;

output Y;

wire Y;

assign Y=~((A[0]^B[0])||(A[1]^B[1])||(A[2]^B[2])); endmodule

仿真测试:

module test_hw2;

reg[2:0] A,B;

wire Y;

hw2 U1(A,B,Y);

initial

begin

A=3'b000;B=3'b000;

#50 A=3'b000;B=3'b000;

#50 A=3'b111;B=3'b111;

#50 A=3'b000;B=3'b110;

#50 A=3'b111;B=3'b000;

#50 A=3'b110;B=3'b110;

#50 A=3'b011;B=3'b010;

#50 A=3'b001;B=3'b011;

#50 A=3'b111;B=3'b010;

#50 $stop;

end

initial $monitor($time,"\tA=%b\tB=%b\tY=%b",A,B,Y); endmodule

第二题:参数化电路设计

1. 用行为描述方式实现下图所示的具有“one -hot”(独热)状态的环形计数器。要求使用参数化的模块。 parameter SIZE =3; input clock, reset;

output [SIZE -1:0]counter;

说明:低电平同步复位,此时counter 最低位为“1”,其余位均为“0”。

clk ]res et

]]

2. 编写测试程序来验证该模块的正确性,要求测试对象是一个5位的独热状态环形计数器。 电路设计:

module hw3(counter,clock,reset); parameter SIZE =3; input clock,reset; output[SIZE-1:0]counter; reg[SIZE-1:0]counter;

always@(posedge clock)

if(reset)

counter<=1;

else

counter<={ counter[0],counter[SIZE-1:1]};

endmodule

仿真测试代码:

module test_hw3;

reg clock,reset;

wire counter;

hw3 U1(counter,clock,reset);

always

#50 clock=~clock;

initial

begin

clock=0;

#20 reset=1;

#40 reset=0;

#500 $stop;

end

initial

begin

$monitor($time,"\tclock=%b\treset=%b\tcounter=%b",clock,reset,counter );

end

endmodule

第三题:计数器设计

1.用DFF实现二分频;

要求:

(1)画出数字电路原理图;

(2)采用行为描述方式实现DFF,其中DFF具有异步清零功能;

电路设计:

module hw4(Q,clk,reset);

output Q;

input clk,reset;

reg Q;

always@(posedge clk or reset)

if(!reset)

Q<=1'b0;

else

Q=~Q;

endmodule

仿真测试:

module test_hw4;

wire Q;

reg clk,reset;

hw4 U1(Q,clk,reset);

always #50 clk=~clk;

initial

begin

reset=0; clk=0;

#10 reset=1;

#30 reset=0;

#10 reset=1;

#500 $finish;

end

initial

$monitor($time,"\treset=%b\tclk=%b\tQ=%b",reset,clk,Q); endmodule

相关文档
最新文档