十进制加减法计数器1.实验要求(1)在Modelsim环境中编写十进制加减法计数器程序;(2)编译无误后编写配套的测试程序;(3)仿真后添加信号,观察输出结果。2.设计程序如下moduledecade_counter#(parameterSIZE=4)(inputclock,load_n,clear_n,updown,input[SIZE-1:0]load_data,outputreg[SIZE-1:0]q);always@(negedgeload_n,negedgeclear_n,posedgeclock)if(!load_n)q=load_data;elseif(!clear_n)q=0;else//clock???if(updown)q=(q+1)%10;elsebeginif(q==0)q=9;elseq=q-1;endendmodule3.测试程序如下`timescale1ns/1nsmoduletest_decade_counte;regclock,load_n,clear_n,updown;reg[3:0]load_data;wire[3:0]q;decade_counterT1(clock,load_n,clear_n,updown,load_data,q);initialbeginclock=0;clear_n=0;#30clear_n=1;load_n=0;load_data=7;#30load_n=1;updown=0;#300updown=1;#300updown=0;#300updown=1;#300$stop;endalways#10clock=~clock;always@(q)$display(Attime%t,q=%d,$time,q);endmodule4.波形如下5.测试结果如下#Attime0,q=0#Attime30,q=7#Attime70,q=6#Attime90,q=5#Attime110,q=4#Attime130,q=3#Attime150,q=2#Attime170,q=1#Attime190,q=0#Attime210,q=9#Attime230,q=8#Attime250,q=7#Attime270,q=6#Attime290,q=5#Attime310,q=4#Attime330,q=3#Attime350,q=2#Attime370,q=3#Attime390,q=4#Attime410,q=5#Attime430,q=6#Attime450,q=7#Attime470,q=8#Attime490,q=9#Attime510,q=0#Attime530,q=1#Attime550,q=2#Attime570,q=3#Attime590,q=4#Attime610,q=5#Attime630,q=6#Attime650,q=7#Attime670,q=6#Attime690,q=5#Attime710,q=4#Attime730,q=3#Attime750,q=2#Attime770,q=1#Attime790,q=0#Attime810,q=9#Attime830,q=8#Attime850,q=7#Attime870,q=6#Attime890,q=5#Attime910,q=4#Attime930,q=3#Attime950,q=2#Attime970,q=3#Attime990,q=4#Attime1010,q=5#Attime1030,q=6#Attime1050,q=7#Attime1070,q=8#Attime1090,q=9#Attime1110,q=0#Attime1130,q=1#Attime1150,q=2#Attime1170,q=3#Attime1190,q=4#Attime1210,q=5#Attime1230,q=6#Attime1250,q=7