用Verilog语言设计一个模可变计数器并仿真
来源:网络收集 点击: 时间:2024-04-08计数器分频,设为200分频,CLK为数码管扫描频率,CLK1为计数频率;sel为数码管选择,代码如下:
always@(posedgeclk)
begincnt=cnt+1;
if(cnt==200)beginclk1=1b1;cnt=0;end
elseclk1=1b0;
if(sel2)sel=sel+1;elsesel=0;end
2/4数码管显示,代码如下:
always@(sel)begin
case(sel)
0:a=bw;//0数码管为百位
1:a=sw;//1数码管为十位
2:a=gw;//2数码管为个位
default:a=0;
endcase
case(a)
0:SG=8b00111111;1:SG=8b00000110;
2:SG=8b01011011;3:SG=8b01001111;
4:SG=8b01100110;5:SG=8b01101101;
6:SG=8b01111101;7:SG=8b00000111;
8:SG=8b01111111;9:SG=8b01101111;//8段译码值
default:SG=8b11111111;
endcaseend
always@(m)
if(m)model=12b000000010110;//0-22模值为23
elsemodel=12b00001110110;//0-118模值119
assigngw=q;
assignsw=q;
assignbw=q;
3/4BCD调整,代码如下:
always@(posedgeclk1,negedgerst)
begin
if(!rst)q=0;
elseif(en)
begin
if(qmodel)
begin
if(gw==9)beginq=q+7;if(sw==9) q=q+96;end
elseq=q+1;
end
elseq=0;
end
end
4/4循环一次,输出一个高电平,代码如下:
always@(q)
if(qmodel)d=0;
elsed=1;
波形仿真1/7在QuartusII中新建工程,并按上述步骤编写Verilog代码生成顶层模块。
2/7编译,通过后,添加波形文件,如下图所示。

保存,点击波形仿真按钮,开始波形仿真,如下图所示。

仿真成功,结果如下图所示。

波形仿真情况1:使能en及m=1时模23计数仿真结果如下图。

波形仿真情况2:循环及m=0时模119计数仿真结果如下图。

波形仿真情况3:m跳变及复位清零仿真结果如下图。

要求读者有一定的Verilog语言基础以及对QuartusII集成开发软件有一定的使用经验,否则要看懂的话有一定的难度。
欢迎EDA学习者有问题向本人留言。
探测器版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_468404.html