suxilong 发表于 2010-10-18 10:28:17

怎样编写约翰逊计数器

这是参照例程,自己写的代码!但发现很不稳定,尤其是按键的检测!
有时要按很久才能检测到按键,有时根本就检测不了!
module johncount(
                                clk,rst_n,
                                key,led);
input clk,rst_n;
input key;
outputled;

reg cnt;
always @(posedge clk or negedge rst_n)//计数
        if(!rst_n)        cnt <= 24'b0;
                else cnt <= cnt +1'b1;

reg key_low;
always @(posedge clk or negedge rst_n)//第一个时钟周期锁存一次key的值
        if(!rst_n)        key_low <= 3'b111;
                else if(cnt == 24'hfffff)
                                key_low <= key;
               
reg        key_low_r;
always @(posedge clk or negedge rst_n)//第二个时钟周期锁存一次key的值
        if(!rst_n)        key_low_r <= 3'b111;
                else key_low_r <= key_low;
               
wire key_scan = key_low_r&(~key_low);//边缘检测哪个按键按下

reg start_move,led_right;
always @(posedge clk or negedge rst_n)
        if(!rst_n)       
      begin
      start_move <= 1'b1;
      led_right <= 1'b1;
      end
                else if(key_scan)   start_move <= ~start_move ;
                else if(key_scan)   led_right <= 1'b1;
                else   if(key_scan)   led_right <= 1'b0;
               
reg led_vaul;
always @(posedge clk or negedge rst_n)
        if(!rst_n)        led_vaul <=4'b1110;
        else   if(cnt == 24'h1fffff && start_move)
        case (led_right)
    1'b1:   led_vaul<={led_vaul,led_vaul};
    1'b0:   led_vaul<={led_vaul,led_vaul};
    endcase
   
assign led = ~led_vaul;

endmodule

binaimei2007 发表于 2010-10-18 10:56:17

不懂,帮顶

Jigsaw 发表于 2010-10-18 14:26:30

EDN的CPLD/FPGA助学小组里面有这个计数器的源码
Google应该也有

这样的问题用Modelsim就应该能测试出来

suxilong 发表于 2010-10-19 22:07:23

回复【2楼】Jigsaw
edn的cpld/fpga助学小组里面有这个计数器的源码
google应该也有
这样的问题用modelsim就应该能测试出来
-----------------------------------------------------------------------

这个就是小组里的代码

akuei2 发表于 2010-10-20 11:48:25

..................

建议楼主看我最近写的笔记吧 ...
先掌握建模基础那 ... 不然代码风格很糟糕

suxilong 发表于 2010-10-21 14:45:25

回复【4楼】akuei2 回家阿贵猪
-----------------------------------------------------------------------

我找不到你 啊》》》???给个链接!!
页: [1]
查看完整版本: 怎样编写约翰逊计数器