打印

为啥从0到9显示时间间隔均匀再循环到0时间隔时间变长了?

[复制链接]
1562|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yezhenyu|  楼主 | 2008-1-5 19:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序如下,请大侠帮忙,先谢了。
module led_jing (seg,sl,clk);
output [7:0]seg;
output [4:0]sl;
input clk;
reg[7:0]seg_reg;
reg[4:0]sl_seg;
reg[3:0]disp_dat;
reg[27:0]count;
always@(posedge clk)
   begin
     count=count+1;
   end
always
   begin
     sl_seg=5'b11111;
   end
always 
   begin
     disp_dat=count[27:20];
     if(disp_dat>9)disp_dat=4'b0000;
    end
always@(disp_dat)
   begin
     case (disp_dat)
        4'h0:seg_reg=8'h3f;//显示0
        4'h1:seg_reg=8'h06;//   1
        4'h2:seg_reg=8'h5b; //  2 
        4'h3:seg_reg=8'h4f; //  3 
        4'h4:seg_reg=8'h66;  // 4
        4'h5:seg_reg=8'h6d;
        4'h6:seg_reg=8'h7d;
        4'h7:seg_reg=8'h07;
        4'h8:seg_reg=8'h7f;
        4'h9:seg_reg=8'h6f; //显示9    
     endcase
   end
assign seg=seg_reg;
assign sl=sl_seg;
endmodule

相关帖子

沙发
平常人| | 2008-1-5 20:21 | 只看该作者

count[27:20]为8个二进制位,可以表示0~255

你这8个二进制位是连续计数,每计数一次需要219=524288个时钟周期,但只显示0~9,9之后是10,从10循环到255溢出再回到0,要再计数524288*245个时钟周期,结果可想而知了。

使用特权

评论回复
板凳
yezhenyu|  楼主 | 2008-1-5 22:26 | 只看该作者

3Q,明白了。

使用特权

评论回复
地板
niu9911| | 2008-3-24 18:51 | 只看该作者

Yes

使用特权

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

本版积分规则

29

主题

352

帖子

0

粉丝