原创 Verilog之Johnson计数器

2008-8-1 23:18 8528 12 16 分类: FPGA/CPLD

VerilogJohnson计数器<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


 


简介:本示例是带停止控制的双向4bit  Johnson 计数器示例,可以通过LED灯直观的在开发板上进行演示。


    sw2: 按键 sw2 控制向左移动


    sw3: 按键 sw3 控制向右移动


sw1: 按键 sw1 第一次按下时将停止移动,再次按下时就会恢复移动


代码经过sp306板测试通过,且综合后0 error 0warning


 


代码如下:


module johnson(clk,rst_n,key1,key2,key3,led1,led2,led3,led4);


 


input clk;


input rst_n;


input key1,key2,key3;


output led1,led2,led3,led4;


 


//------------------------------------


reg[23:0] delay;


 


always @ (posedge clk or negedge rst_n)


       if(!rst_n) delay <= 0;


       else delay <= delay+1;


 


reg[2:0] key_value;


 


always @ (posedge clk or negedge rst_n)


       if(!rst_n) key_value <= 3'b111;


       else if(delay == 24'hffffff) key_value <= {key3,key2,key1}; //delay 20ms


 


//-------------------------------------


reg[2:0] key_value_r;


 


always @ (posedge clk or negedge rst_n)


       if(!rst_n) key_value_r <= 3'b111;


       else key_value_r <= key_value;


 


wire[2:0] key_change;


 


assign key_change = key_value_r & (~key_value);       //check key_value negedge per clk


 


//------------------------------------


reg stop_start,left_right;


 


always @ (posedge clk or negedge rst_n)


       if(!rst_n) begin


              stop_start <= 1;


              left_right <= 1;


              end


       else


              if(key_change[2]) stop_start <= ~stop_start;


              else if(key_change[1]) left_right <= 1;


              else if(key_change[0]) left_right <= 0;


 


//-------------------------------------


reg[3:0] led_value_r;


 


always @ (posedge clk or negedge rst_n)


       if(!rst_n) led_value_r <= 4'b1110;


       else if(delay == 24'h3fffff && stop_start)


              case (left_right)


                     1: led_value_r <= {led_value_r[2:0],led_value_r[3]};


                0: led_value_r <= {led_value_r[0],led_value_r[3:1]};


                     default: ;


                     endcase


 


assign {led4,led2,led3,led1} = led_value_r;


 


endmodule


 


 

文章评论4条评论)

登录后参与讨论

用户1805731 2015-8-25 14:47

是的,ffffff大约670ms

用户428585 2012-12-14 19:05

写的太精彩了

用户425865 2012-9-13 22:15

非常感谢!

用户1564910 2011-9-10 09:54

谢谢

用户1623835 2011-9-3 11:08

谢谢特权同学

zhanghaokm_428385128 2011-7-10 20:17

下下来看看

用户291975 2011-1-17 20:03

怎么打不开页面全部是黑色

用户1643674 2010-12-25 14:12

通俗易懂,比那些所谓的教授讲得好多了。多谢特权同学

用户1575790 2010-12-2 14:50

灰常感谢特权老师!

用户1397278 2010-11-3 21:26

谢谢特权
相关推荐阅读
特权ilove314 2016-06-30 21:16
例说FPGA连载6:FPGA开发所需的技能
例说FPGA连载6:FPGA开发所需的技能 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   前面的文字已经做了很多铺垫,相信读...
特权ilove314 2016-06-28 21:09
例说FPGA连载5:FPGA的优势与局限性
例说FPGA连载5:FPGA的优势与局限性 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   若要准确评估FPGA技术能否满足开...
特权ilove314 2016-06-28 21:05
例说FPGA连载5:FPGA的优势与局限性
例说FPGA连载5:FPGA的优势与局限性 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   若要准确评估FPGA技术能否满足开...
特权ilove314 2016-06-26 22:11
例说FPGA连载4:FPGA语言与厂商介绍
例说FPGA连载4:FPGA语言与厂商介绍 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   Verilog与VHDL 说到FP...
特权ilove314 2016-06-23 21:26
例说FPGA连载3:FPGA与其它主流芯片的比较
例说FPGA连载3:FPGA与其它主流芯片的比较 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   FPGA、ASIC和ASSP...
特权ilove314 2016-06-21 20:32
例说FPGA连载2:FPGA是什么
例说FPGA连载2:FPGA是什么 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   2015年伊始,Intel欲出资百亿美金收...
我要评论
4
12
关闭 站长推荐上一条 /2 下一条