ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:18.62KB ,
资源ID:19624056      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19624056.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(verilog语言的FPGA变速花样流水灯设计Word文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

verilog语言的FPGA变速花样流水灯设计Word文档格式.docx

1、Rst的作用就是初始化,首先为led赋予一个初始状态,可以让一个灯循环,也可以让几个灯一起亮,一起循环。几个灯亮,关键在于rst初始化。2,全部代码如下:这里列举右滚动流水灯module led( /这行定义了模块名字为led input clk, input rst,output reg7:0 ledreg 25:0 count; /延时计数器,这里是25位计数器,为32M。always (posedge clk) /每个时钟上升沿进行下面动作 if(rst) led = 8b10000000; /复位初始化,只有一个灯亮着,这里做一个灯的流水灯,如 always (posedge clk)

2、 果做两个灯,就是11000000 If(reg25 = 1) /计数满32M之后再进行下面动作,延时。 begin If (led = 8b00000001) /当滚动到尽头,回到左侧起始端= 8b10000000; else= led0,led7:1 /右移,用并置符实现 endendmodule左滚动可以很容易得出,在此不做详细解释,读者自行分析。 module led( /这行定义了模块名字为ledb00000001;always (posedge clk) 果做两个灯,就是00000011 If (led = 8b10000000) /当滚动到尽头,回到左侧起始端= 8b000000

3、01;= led6:0,led7 /左移,用并置符实现二,自循环流水灯此代码引用自课堂实验的代码,非本人原创,在此分析一下。大家可以自行理解。每次上电,按一下rst复位键,流水灯出现一个或者几个灯亮起来,接下来按住run,则流水灯从左向右滚动,滚到最右,自动向左滚,滚到左侧,再向右滚动,周而复始。该模块一共有四个端口,led是驱动流水灯的8个管脚的端口,clk是板载50MHz时钟,rst是复位信号输入,run是控制流水灯开始滚动的信号。该模块采用计数器延时,通过flag寄存器控制流动方向,flag为1时候左滚动,flag为0,向右滚动。滚动到位自行判断。2,代码分析module Led(clk

4、,reset,run,led);input clk,reset,run;0 led;reg 22:reg 7:0 mled; reg flag;always(posedge clk) if(count22 = 1) count = 0; else = count+1;always(posedge clk ) if(count 22 = 1) if(reset) led b0000_0001; /这里我们只让一个灯亮着,如果两个灯就是00000011 flag = 1; /初始化默认向左滚动 end else if(run ) /按下run之后才会滚动 if(flag) /左滚动状态 begin

5、0,led7; /左移 if(led = 8b0111_0000) /移到左端,之后要向右滚动 flag /控制向右滚动 else ; /使用空的else语句是为了避免产生锁存器 end else /flag=0即右滚状态1; /右移 if(led = 8b0000_1110) /右移到尽头,要控制左移 /控制左移= led; /不按run的时候,led保持原来的状态,不动。三,花样流水灯笔者逻辑思维有限,并非专职码农,写出的代码,只能保证可以实现效果,至于执行效率,你懂的。不过,可读性肯定没问题,一看便懂。Verilog采用了c语言的风格,要说C语言什么最难,数组?指针?结构体?链表?NO!

6、是if .else if.else .分支判断,尤其是嵌套,if嵌套可以把码农瞬间搞疯。C语言的if下面要跟着,括号里面的是一个整体,这还容易判断,可是verilog呢?连个括号都没有,根本无法判断谁跟谁是站在一起的。所以,根据程序是个大循环的思想,我采用过程建模,同时依靠行为建模,判断每个时间点该做点什么,确定每个点的行为,组成时间循环。没错,case语句此时此刻就显得和蔼可亲了。所以呢,我们采用case语句判断,依次判断。下面分析一下代码:注意case下面那些赋值语句中,0和1的位置,哪里是1,哪个灯就是亮的。output reg 5:reg 24:reg 5:0 mod;always (

7、posedge clk) if(count24 = 0) = count + 1; if(count24 = 0) if( mod5 = 1 ) /每次计数满了再行动,用来延时,另外,这里有个5位计数 mod 器,说明这个循环一共有32个状态,每个状态由你做主= mod + 1; case (mod) 5h00:b11000000;h01:b01100000; 5h02:b00110000;h03:b00011000;h04:b00001100;h05:b00000110;h06:b00000011;h07:h08:h09:h0a:h0b:h0c:h0d:h0e:h0f:h10:h11:h12

8、:h13:h14:h15:h16:h17:h18:h19:h1a:b01010000;h1b:b01001000;h1c:b01000100;h1d:b01000010;h1e:b10000001;h1f: default:= 5h11; endcase endmodule再唠叨两句,这个段子虽然长,但是原理是万能的,32个状态位,因为mod寄存器有6位,如果mod寄存器只有4位,那么就只有8种状态。可以修改mod位数,来决定多少个装态,每个状态赋值不同,产生的花样也不同。花样如何,你做主!四,变速流水灯变速流水灯,技术含量那个高啊,折磨我足足好几天,最后无奈了,采取了列举法。我最怕什么if

9、else了,没办法,笨是无法挽救的。其实变速,你懂得,为什么快,因为每秒滚动一位,为什么慢,经过十几秒才滚动一次。每秒滚动一次,那么每个状态只停留一秒,十几秒滚动一位,那么一个状态要停留十几秒,所以,根据每个状态停留的时间不同,发生变速。我们这里列举了越来越慢的方法,注意case语句后面的各赋值句。每个状态停留时间越长,那么速度就越慢。2,源代码odule led(output reg 7: if(count24 = 1) if(count24 = 1) if( mod7 = 1 ) 8 我们这里有128个状态,且只从左向右滚动。可 以自己修改后面的1和0的位置得到很多花样 8h20:h21:

10、h22:h23:h24:h25:h26:h27:h28:h29:h2a:h2b:h2c:h2d:h2e:h2f:h30:h31:h32:h33:h34:h35:h36:h37:h38:h39:h3a:h3b:h3c:h3d:h3e:h3f:h40:h41:h42:h43:h44:h45:h46:h47:h48:h49:h4a:h4b:h4c:h4d:h4e:h4f:h50:h51:h52:h53:h54:h55:h56:h57:h58:h59:h5a:h5b:h5c:h5d:h5e:h5f:h60:h61:h62:h63:h64:h65:h66:h67:h68:h69:h6a:h6b:h6c:h6d:h6e:h6f:h70:h71:h72:h73:h74:h75:h76:h77:h78:h79:h7a:h7b:h7c:h7d:h7e:h7f:h80:h00;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1