johnson_可控流水灯设计

johnson_可控流水灯设计

ID:41888028

大小:145.21 KB

页数:6页

时间:2019-09-04

johnson_可控流水灯设计_第1页
johnson_可控流水灯设计_第2页
johnson_可控流水灯设计_第3页
johnson_可控流水灯设计_第4页
johnson_可控流水灯设计_第5页
资源描述:

《johnson_可控流水灯设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Johnson—n;控流水灯设计AaaronMalone所谓Johnson计数器,其实说白了无非就是复杂一点的流水灯实验。流水灯加上了按键控制,流水灯的开启关闭和变化方向在按键的控制下进行。本实例是带停止控制的双向8bitJohnson计数器,可以通过LED灯直观的在学习板上进行演示。该工程的接口定义如下。Johnson计数器实验接口定义信号名称方向描述elkinput时钟信号,50MHzrst_ninput复位信号,低电平有效keylinput按键1,控制流水灯移动或者不移动key2input按键2,控制流水灯向左移动key3i

2、nput按键3,控制流水灯向右移动ledloutput1ed2outputled3outputLed4outputled5outputlcd6outputLcd7outputled8output发光二极管1发光二极管2发光二极管3发光二极管4发光二极管5发光二极管6发光二极管7发光二极管8该实验相对于一般的流水灯设计上有几点不同(1)加入了消抖的按键功能。(2)可控性,能够控制从leftorright两个方向,加上控制流动开始的开关一共三个控制端。所以代码分两个部分第一部分:流水灯modulejohnson(elk,rstn,le

3、d,swl_n,sw2_n,sw3_n);一——inputelk;//时钟信号,SOMIlzinputrst_n;//复位信号,低电平有效output[3:0]led;//LED控制,1一灭,0—亮inputswl_n,sw2_n,sw3_n;//三个独立按键,低表示按下regled_dir;//l'bl--left,TbO--rightregled_on;//l'bl-一on,1'bO-一off//reg[23:0]cnt24;always@(poscdgcelkornegedgerst_n)if(!rst_n)cnt24<=2

4、4'dO;elsecnt24<二cnt24+rbl;//reg[3:0]ledr;always@(posedgeelkornegedgerst_n)if(!rst_n)1ed_r<=4'b0001;elseif(cnt24二二24"hffffff&&1edon)beginif(leddir)led_r<=(ledr[0],ledr[3:1]};//leftelseledr<={led_r[2:0],led_r[3]};//rightenclassignled=lcd_r;可以通过调节参数计数器ent的位数来控制流动的速度。epu主

5、频是50Mhz,通过分频(也就是计数)来确定每次流动的时间间隔。ent为24位2^23*20ns==1.6so第二部分;加入控制端led_on控制流动或者停止led.dir为0或者1控制移动方向。reg[2:0]key_rst;always@(posedgeelkornegedgerst_n)if(!rst_n)key_rst<=3'bill;elsekeyrst<={sw3_n,sw2_n,swln};reg[2:0]kcy_rst_r;//每个时钟周期的上升沿将low_sw信号锁存到lowswr中MBalways@(posed

6、geelkornegedgerst_n)if(!rst_n)key_rst_r<=3*bill;elsekey_rst_r<=key_rst;//当寄存器key_rst由1变为0时,led_an的值变为高,维持一个时钟周期wirc[2:0]key_an=kcy_rst_r&(~kcy_rst);//reg[19:0]ent;//计数寄存器always@(posedgeelkornegedgerst_n)if(!rst_n)ent<=20'dO;//异步复位elseif(key_an)ent〈二2O'dO;elseent<=ent+

7、1’bl;reg[2:0]low_sw;always@(posedgeelkornegedgerstn)if(!rstn)lowsw<=3'bill;elseif(ent==20'hfffff)〃满20ms,将按键值锁存到寄存器low_sw屮ent二二20Jhfffff1ow_sw<={sw3_n,sw2_n,swl_n};//reg[2:0]low_sw_r;lowswr中MB■〃每个时钟周期的上升沿将low_sw信号锁存到always@(posedgeelkornegedgerstn)if(!rst_n)low_sw_r<=3

8、'bill;elselow_sw_r<=low_sw;〃当寄存器low_sw由1变为0时,led^ctrl的值变为高,纟隹持一个时钟周期wire[2:0]ledCtrl=lowswr[2:0]&(~lowsw[2:0]);always@(posed

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。