verilog HDL十进制加减法计数器报告

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

十进制加减法计数器

1.实验要求

(1)在Modelsim环境中编写十进制加减法计数器程序;

(2)编译无误后编写配套的测试程序;

(3)仿真后添加信号,观察输出结果。

2.设计程序如下

module decade_counter

#(parameter SIZE=4)

(input clock,load_n,clear_n,updown,

input [SIZE-1:0]load_data,

output reg [SIZE-1:0]q

);

always

@(negedge load_n,negedge clear_n,posedge clock)

if (!load_n)

q<=load_data;

else if (!clear_n)

q<=0;

else //clock

if(updown)

q<=(q+1)%10;

else

begin

if(q==0)

q<=9;

else

q<=q-1;

end

endmodule

3.测试程序如下

`timescale 1ns/1ns

module test_decade_counte;

reg clock,load_n,clear_n,updown;

reg [3:0]load_data;

wire [3:0]q;

decade_counter T1(clock,load_n,clear_n,updown,load_data,q);

initial

begin

clock=0;clear_n=0;

#30 clear_n=1;load_n=0;load_data=7;

#30 load_n=1;updown=0;

#300 updown=1;

#300 updown=0;

#300 updown=1;

#300 $stop;

end

always

#10 clock=~clock;

always

@(q)

$display("At time%t,q=%d",$time,q);

endmodule

4.波形如下

5.测试结果如下

# At time 0,q= 0

# At time 30,q= 7

# At time 70,q= 6

# At time 90,q= 5

# At time 110,q= 4

# At time 130,q= 3

# At time 150,q= 2

# At time 170,q= 1

# At time 190,q= 0

# At time 210,q= 9

# At time 230,q= 8

# At time 250,q= 7

# At time 270,q= 6

# At time 290,q= 5

# At time 310,q= 4

# At time 330,q= 3

# At time 370,q= 3 # At time 390,q= 4 # At time 410,q= 5 # At time 430,q= 6 # At time 450,q= 7 # At time 470,q= 8 # At time 490,q= 9 # At time 510,q= 0 # At time 530,q= 1 # At time 550,q= 2 # At time 570,q= 3 # At time 590,q= 4 # At time 610,q= 5 # At time 630,q= 6 # At time 650,q= 7 # At time 670,q= 6 # At time 690,q= 5 # At time 710,q= 4 # At time 730,q= 3 # At time 750,q= 2 # At time 770,q= 1 # At time 790,q= 0 # At time 810,q= 9 # At time 830,q= 8 # At time 850,q= 7 # At time 870,q= 6 # At time 890,q= 5 # At time 910,q= 4 # At time 930,q= 3 # At time 950,q= 2 # At time 970,q= 3 # At time 990,q= 4 # At time 1010,q= 5 # At time 1030,q= 6 # At time 1050,q= 7 # At time 1070,q= 8 # At time 1090,q= 9 # At time 1110,q= 0 # At time 1130,q= 1 # At time 1150,q= 2 # At time 1170,q= 3 # At time 1190,q= 4 # At time 1210,q= 5

# At time 1250,q= 7

相关文档
最新文档