集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 974|回复: 1

流水灯问题

[复制链接]
18761489033 发表于 2015-3-15 12:50:09 | 显示全部楼层 |阅读模式
小弟刚学,第一个流水灯就遇到问题,请教各位大神。
程序如下,我也知道这不能实现流水灯,但是对于我打//的位置的语句我不能理解,
我觉得一开始是led=4'b1111,计数器cnt=4999时,led=4'b1110,然后led=4'b0111,
但是我仿真的结果却显示在cnt=4999的时候,led=4'b1111,并没有编程4’b1110或者4'b0111
module        liushuideng_1        (
                        input        wire                sclk,
                        input        wire                s_rst_n,
                       
                        output        reg[3:0]        led
                        );
                       
        reg[25:0]        cnt;
        reg                flag;
       
        parameter        CNT        =                49_99;
                       
        always@(posedge        sclk        or        negedge        s_rst_n)
                if(s_rst_n == 1'b0)
                        cnt        <=        26'd0;
                else if(cnt ==        CNT)
                        cnt        <=        26'd0;
                else
                        cnt        <=        cnt        +        26'd1;
                       
        always@(posedge sclk or negedge s_rst_n)
                if(s_rst_n==1'b0)
                        led        <=        4'b1111;
                else if(cnt==CNT)
                        begin
//                        led        <=        4'b1110;
//                        led        <=        {led[0],led[3:1]};
                        end
                else
                        led        <=        led;

endmodule
               
逢缘合 发表于 2015-3-19 11:11:54 | 显示全部楼层
led        <=        {led[0],led[3:1]};这句是利用位拼接符产生移位寄存器,,,,每次计数完成后都把新的变量led的最低位放到最高位,拼接成一个新的寄存器变量,每个计数周期进行重新拼接一次,即移位一次,
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-6-21 18:55 , Processed in 0.076403 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表