打印

设计一个秒表引发的问题

[复制链接]
2125|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
libaizhihun|  楼主 | 2010-4-23 11:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我设计了四个键位,分别对应复位、暂停、置分、置秒。其复位、暂停功能都正常,但置分、置秒不会是加1,而是乱码。为什么呢?
希望高手指点一下。

module SECLOCK(clk,sclk,rundir,key);
input clk,sclk;//clk为系统时钟,sclk为百分秒时钟
input rundir;//计时方向
input[3:0] key;//四个键位
reg[32:0] j;//当前统计百分秒数,以生成分、秒、百分秒
reg[3:0] key0;
reg run;//暂停标志
reg keyclk;
always @(posedge clk)//扫描四个键位值,key0=key,且当key!=0时,keyclk置高电平
begin
key0<=key;
if(key!=0) keyclk<=1;
else keyclk<=0;
end
always @(posedge  keyclk or posedge sclk)
begin
if(keyclk)
begin
  case(key0)
   4'b0001://复位键
   begin
    j<=0;
    run<=0;
   end
   4'b0010://暂停键
   begin
    run<=~run;
   end
   4'b0100://设置分+1
   begin
    j<=j+33'd100;
   end
   4'b1000://设置秒+1
   begin
    j<=j+33'd6000;
   end
   4'b0000:
   begin
    j<=j;
   end
   default:j<=j;
  endcase
end
else
begin
   if(run==1 && rundir==1 ) //正向计时
     j<=j+1;
   else if(run==1 && rundir==0 && j>0) //反向计时
     j<=j-1;
   end

end
endmodule

相关帖子

沙发
kubuco| | 2010-4-23 12:09 | 只看该作者
MARK

使用特权

评论回复
板凳
libaizhihun|  楼主 | 2010-4-23 14:26 | 只看该作者
大哥,你能否说的再清楚一些。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

19

帖子

0

粉丝