一个错误的程序 请高手指点 两位计数器 新手 实在找不到错误地方了 谢谢

2019-03-25 09:15发布

module  sec (clk,seg,dig);
input clk ;
output[7:0]seg,dig;
reg [7:0]seg,dig,date;
reg [32:0]count ;
reg clk1k;
reg[3:0]s_1,s_2,cnt;



always@(clk)
begin
if (count=='d10000)
begin  count<=0;
clk1k<=~clk1k;
end
else  
count<=count+1;
end


always@(clk1k)
if (s_1==4'd9)
begin
s_1<=0;
if (s_2==4'd5)
s_2<=0;
else
begin
cnt<='d1;
s_2<=s_2+1;
end
end
else begin
s_1<=s_1+1;
cnt<='d0;
end
always@(clk1k)
begin
case(cnt)
4'd0:begin dig<=8'b011111111;date<=s_1;end
4'd1:begin dig<=8'b101111111;date<=s_2;end
endcase
end
always@(date)
begin
case(date)
4'd0:seg=8'hc0;
4'd1:seg=8'hf9;
4'd2:seg=8'ha4;
4'd3:seg=8'hb0;
4'd4:seg=8'h99;
4'd5:seg=8'h92;
4'd6:seg=8'h82;
4'd7:seg=8'hf8;
4'd8:seg=8'h80;
4'd9:seg=8'h90;
endcase
end  
endmodule 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
eeleader
1楼-- · 2019-03-25 14:27
< /

从你的程序看,在数码管上显示0~9的数字。

 

从你的程序上看,思路基本正确。一些写法和细节有问题。

 

人眼看到数码管不闪烁,刷新频率多少要考虑一下。你的程序中不时全同步设计,用门控时钟驱动的!

lishiliang
2楼-- · 2019-03-25 16:01
always@(clk)等关于时钟的换成电平触发试试,如always@(posedge clk)
还有,你的FPGA的时钟是多少???
eeleader
3楼-- · 2019-03-25 19:01

你错误的功能性错误,不是语法错误!

eeleader
4楼-- · 2019-03-25 23:24
 精彩回答 2  元偷偷看……

一周热门 更多>