搜索
bottom↓
回复: 5

怎样编写约翰逊计数器

[复制链接]

出0入0汤圆

发表于 2010-10-18 10:28:17 | 显示全部楼层 |阅读模式
这是参照例程,自己写的代码!但发现很不稳定,尤其是按键的检测!
有时要按很久才能检测到按键,有时根本就检测不了!
module johncount(
                                clk,rst_n,
                                key,led);
input clk,rst_n;
input [2:0]key;
output  [3:0]led;

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

reg [2:0] 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        [2:0] 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 [2:0] 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[2])   start_move <= ~start_move ;
                else if(key_scan[1])   led_right <= 1'b1;
                else   if(key_scan[0])   led_right <= 1'b0;
               
reg [3:0] 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[2:0],led_vaul[3]};
    1'b0:   led_vaul<={led_vaul[0],led_vaul[3:1]};
    endcase
   
assign led = ~led_vaul;

endmodule

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2010-10-18 10:56:17 | 显示全部楼层
不懂,帮顶

出0入0汤圆

发表于 2010-10-18 14:26:30 | 显示全部楼层
EDN的CPLD/FPGA助学小组里面有这个计数器的源码
Google应该也有

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

出0入0汤圆

 楼主| 发表于 2010-10-19 22:07:23 | 显示全部楼层
回复【2楼】Jigsaw
edn的cpld/fpga助学小组里面有这个计数器的源码
google应该也有
这样的问题用modelsim就应该能测试出来
-----------------------------------------------------------------------

这个就是小组里的代码

出0入0汤圆

发表于 2010-10-20 11:48:25 | 显示全部楼层
..................

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

出0入0汤圆

 楼主| 发表于 2010-10-21 14:45:25 | 显示全部楼层
回复【4楼】akuei2 回家阿贵猪
-----------------------------------------------------------------------

我找不到你 啊》》》???给个链接!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 17:30

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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