一、前言
- 用Verilog HDL设计一个数字跑表,其引脚和功能如下图:
二、实操
module biao(clk,reset,pause,msh,msl,sh,sl,minh,minl);
input clk,reset,pause;
output [3:0] msh,msl,sh,sl,minh,minl;
reg [3:0] msh,msl,sh,sl,minh,minl;
reg count1,count2;
always @(posedge clk or posedge reset)
begin
if(reset)
begin
{msh,msl}<=0;
count1<=0;
end
else if(!pause)
begin
if(msl==9)
begin
msl<=0;
if(msh==9)
begin
msh<=0;
count1<=1;
end
else
msh<=msh+1;
end
else
begin
msl<=msl+1;
count1<=0;
end
end
end
always @(posedge count1 or posedge reset)
begin
if(reset)
begin
{sh,sl}<=0;
count2<=0;
end
else if(sl==9)
begin
sl<=0;
if(sh==5)
begin
sh<=0;
count2<=1;
end
else
sh<=sh+1;
end
else
begin
sl<=sl+1;
count2<=0;
end
end
always@(posedge count2 or posedge reset)
begin
if(reset)
begin
minh<=0;
minl<=0;
end
else if(minl==9)
begin
minl<=0;
if(minh==5)
minh<=0;
else
minh<=minh+1;
end
else
minl<=minl+1;
end
endmodule
编译到0 error。
- 新建一个仿真文件vwf
调出输入输出,
设置仿真波形图
全部修改后,编译运行可以看到波形
可以看到当msl完成0-9的一个循环时msh加一,当msh完成0-9的一个循环时sl加一,当sl完成0-9的一个循环时sh加一,从而实现秒表功能。
三、小结
了解了Verilog语言的编写,希望能在板子上实现此功能。