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

加入VIP,免费下载资源
 

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

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

下载须知

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

版权提示 | 免责声明

本文(彩灯循环控制电路设计.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(发送邮件至2622162128@qq.com或直接QQ联系客服),我们立即给予删除!

彩灯循环控制电路设计.doc

1、1、设计题目:12、设计任务及要求:12.1 设计任务12.2 具体要求13、电路的设计与仿真63.1各功能模块的程序及仿真6 3.1.1模式一6 3.1.2模式二73.1.3模式三83.1.4模式四93.1.5模式五103.1.6模式六113.1.7模式七123.1.8模式八133.19译码器143.1.10分频器153.2将各模块连接后的电路图:164、附加功能184.1各模块程序184.1.1 Verilog源文件:184.1.2分频器21 4.2电路图 204.3功能仿真波形:215、总结与讨论 22附录 241、设计题目: 彩灯循环控制电路设计2、设计任务及要求:2.1 设计任务 装

2、饰用的彩灯在日常生活中使用的非常普遍,比如在节假日里,为了增加节日的气氛,许多商场都用各种各样的彩灯进行装饰。虽然彩灯有各种样式,但其控制原理很简单。本次的课程设计内容就是实现一个有多种工作模式的彩灯控制系统。2.2 具体要求本实验要完成任务就是设计一个简单彩灯循环控制电路,彩灯显示用实验箱的LED灯模块和七段码管中的任意二个来显示。系统时钟选择时钟模块的1MHz时钟,彩灯闪烁时钟要求为2Hz。假设系统板上的LED从左到右依次定义为L1,L2,L3,L4,L5,L6,L7,L8。彩灯循环的具体要求如下:模式一: 从右到左,LED灯依次点亮,首先是L8灯亮,间隔0.5秒(2HZ)后,L7灯亮,再

3、间隔0.5秒后,L6灯亮,依次进行直至8个灯都点亮。当8个灯都点亮后,从左到右,间隔0.5秒,依次熄灭,即首先熄灭L1灯,然后间隔0.5秒,熄灭L2灯,直到所有灯都熄灭。模式一结束。模式二: 从右到左,LED灯依次点亮,首先是L8灯亮,间隔0.5秒(2HZ)后,L8灯熄灭,L7灯亮,再间隔0.5秒后,L7灯熄灭,L6灯亮,依次进行直至L1灯点亮。当L1灯点亮后,从左到右,间隔0.5秒,点亮的灯依次循环,即首先熄灭L1灯,点亮L2灯,然后间隔0.5秒,熄灭L2灯,点亮L3灯,直到L8灯点亮。间隔0.5秒钟后,L8灯熄灭,模式二结束。模式三: 从右到左,LED灯依次点亮,首先是L8,L7灯亮,间隔

4、0.5秒(2HZ)后,L8灯熄灭,L7,L6灯亮,再间隔0.5秒后,L7灯熄灭,L6,L5灯亮,依次进行直至L2,L1灯点亮。当L1,L2灯点亮后,从左到右,间隔0.5秒,点亮的灯依次循环,即首先熄灭L1灯,点亮L2,L3灯,然后间隔0.5秒,熄灭L2灯,点亮L3,L4灯,直到L7,L8灯点亮。间隔0.5秒钟后,L7,L8灯熄灭,模式三结束。模式四: 从中间LED灯依次点亮,首先是L4,L5灯亮,间隔0.5(2HZ)后,L4,L5灯熄灭,L3,L6灯亮,再间隔0.5秒后,L3,L6灯熄灭,L2,L7灯亮,依次进行直至L1,L8灯点亮。当L1,L8灯点亮后,从两侧到中间,间隔0.5秒,点亮的灯依

5、次循环,即首先熄灭L1,L8灯,点亮L2,L7灯,然后间隔0.5秒,熄灭L2,L7灯,点亮L3,L6灯,直到L4,L5灯点亮。间隔0.5秒钟后,L4,L5灯熄灭,模式四结束。模式五: 从中间LED灯依次点亮,首先是L4,L5灯亮,间隔0.5(2HZ)后, L3,L6灯亮,再间隔0.5秒后, L2,L7灯亮,依次进行直至L1,L8灯点亮。当L1,L8灯点亮后,从两侧到中间,间隔0.5秒,点亮的灯依次循环熄灭,即首先熄灭L1,L8灯,然后间隔0.5秒,熄灭L2,L7灯,直到L4,L5灯熄灭,模式五结束。模式六: LED灯间隔依次点亮,首先是L1,L3,L5,L7灯亮,间隔0.5秒(2HZ)后,L1

6、,L3,L5,L7灯熄灭,L2,L4,L6,L8灯亮,再间隔0.5秒后,L2,L4,L6,L8灯熄灭,L1,L2,L3,L6,L7,L8灯亮,间隔0.5秒钟后,所有灯熄灭,模式六结束。模式七: LED灯间隔依次点亮,首先是L1,L2,L3,L4灯亮,间隔0.5秒(2HZ)后,L1,L2,L3,L4灯熄灭,L5,L6,L7,L8灯亮,再间隔0.5秒后,所有灯亮,间隔0.5秒钟后,所有灯熄灭,再间隔0.5秒后,所有灯亮,然后间隔0.5秒后,所有灯熄灭,模式七结束。系统通过拨动开关K1、K2、K3、K4进行操作,其中拨动开关K4=0时,系统进行复位暂停,所有灯熄灭,拨动开关K4=1时 彩灯的工作受拨

7、动开关K1、K2、K3组合控制:K1K2K3工作模式000从模式1到模式7循环工作001模式1循环010模式2循环011模式3循环100模式4循环101模式5循环110模式6循环111模式7循环附加功能:一、为了节能,设计一个倒计时定时器,定时范围为099秒,当定时时间到时,所有彩灯熄灭(只有定时时间大于零时,彩灯才能按照设定的工作模式工作)。定时器的时间设定通过按键S1、S2设定,每按一下s2按键,秒个位加1, 从而实现个位09的循环设定,同样每按一下s1按键,秒十位加1, 从而实现秒十位09的循环设定。如果一直按着按键S1或者S2,能实现按照设定的速率连续加1的功能。定时器通过数码管显示,

8、试验箱上有8位七段数码管,需要采用扫描的方式显示数字。二、为了增加节日气氛,通过16*16的点阵显示模块按照彩灯的显示频率(2hz)实现循环滚动显示“姓名+学号”(左移或者右移均可)。汉字用16*16点显示、数字用16*8显示。参考电路原理框图所下图所示。16*16点阵LED的内部结构如下图所示。实验箱中用到的数字时钟模块、按键开关、数码管、点阵与FPGA的接口电路,以及数字时钟源、按键开关、数码管、点阵与FPGA的管脚连接在以前的实验中都做了详细说明,这里不再赘述。LED灯模块的工作原理是当有高电平输入时LED灯就会被点亮,反之不亮。三、输入输出资源说明:1、输入信号:按键S1(按下时S1=

9、0,松开时S1=1)。2、外部输入脉冲信号时钟源CP(1MHz),经适当分频后供计数器使用。其具体框图如下:控制器倒计时定时器七段LED数码管显示(2个)输出显示译 码1MHzS1LED1LED8CLKS2K1K2K3K4图1 控制电路结构框图根据如上说明,本设计的主要任务和设计要求是:1、按照现代数字系统的Top-Down模块化设计方法,提出彩灯控制电路设计系统的整体设计方案,并进行正确的功能划分,分别提出并实现控制器、计数器、输出译码等模块化子系统的设计方案。2、在Quartus的EDA设计环境中,完成系统的顶层设计、各子系统的模块化设计。分别完成各个基于Verilog语言实现的子模块(包

10、括控制器电路、计数器电路、输出译码电路、点阵显示电路)的逻辑功能仿真。最后对顶层设计进行功能仿真。 3、在2步的基础上,用下载电缆通过JTAG口将对应的sof文件加载到FPGA中。观察实验结果是否与自己的编程思想一致。25 3、电路的设计与仿真 3.1 各功能模块的程序及仿真 3.1.1模式一: Verilog源文件:module mokuai1(en,cin,cout);input3:0 cin;input en;output 7:0cout;reg7:0cout;always(cin or en)beginif(en=1)case(cin)4b0000:cout=8b00000001;4b

11、0001:cout=8b00000011;4b0010:cout=8b00000111;4b0011:cout=8b00001111;4b0100:cout=8b00011111;4b0101:cout=8b00111111;4b0110:cout=8b01111111;4b0111:cout=8b11111111;4b1000:cout=8b01111111;4b1001:cout=8b00111111;4b1010:cout=8b00011111;4b1011:cout=8b00001111;4b1100:cout=8b00000111;4b1101:cout=8b00000011;4b1

12、110:cout=8b00000001;4b1111:cout=8b00000000;default:cout=8b00000000;endcaseelsecout=8b00000000;endendmodule 功能仿真波形:控制模式一循环的计数器Verilog文件:module counter1(cp,en,q); input cp,en; output3:0 q; reg3:0q; always(negedge cp) begin q=4b0000; if(en&(q4b1111)q=q+1; else q=4b0000; end endmodule3.1.2模式二: Verilog源文

13、件:module mokuai2(cin,en,cout);input3:0 cin;input en;output 7:0cout;reg7:0cout;always(cin or en)beginif(en=1)case(cin)4b0000:cout=8b00000001;4b0001:cout=8b00000010;4b0010:cout=8b00000100;4b0011:cout=8b00001000;4b0100:cout=8b00010000;4b0101:cout=8b00100000;4b0110:cout=8b01000000;4b0111:cout=8b10000000

14、;4b1000:cout=8b01000000;4b1001:cout=8b00100000;4b1010:cout=8b00010000;4b1011:cout=8b00001000;4b1100:cout=8b00000100;4b1101:cout=8b00000010;4b1110:cout=8b00000001;4b1111:cout=8b00000000;default:cout=8b00000000;endcaseelsecout=8b00000000;endendmodule 功能仿真波形:控制模块二循环的计数器Verilog文件:module counter2(cp,en,q

15、); input cp,en; output3:0 q; reg3:0q; always(negedge cp) begin q=4b0000; if(en&(q4b1111)q=q+1; else q=4b0000; end endmodule3.1.3模式三: Verilog源文件:module mokuai3(cin,en,cout);input3:0 cin;input en;output 7:0cout;reg7:0cout;always(cin or en)beginif(en=1)case(cin)4b0000:cout=8b00000011;4b0001:cout=8b0000

16、0110;4b0010:cout=8b00001100;4b0011:cout=8b00011000;4b0100:cout=8b00110000;4b0101:cout=8b01100000;4b0110:cout=8b11000000;4b0111:cout=8b01100000;4b1000:cout=8b00110000;4b1001:cout=8b00011000;4b1010:cout=8b00001100;4b1011:cout=8b00000110;4b1101:cout=8b00000011;4b1110:cout=8b00000000;default:cout=8b0000

17、0000;endcaseelsecout=8b00000000;endendmodule 功能仿真波形:控制模块三循环的计数器Verilog文件:module counter3(cp,en,q); input cp,en; output3:0 q; reg3:0q; always(negedge cp) begin q=4b0000; if(en&(q4b1101)q=q+1; else q=4b0000; end endmodule3.1.4模式四: Verilog源文件:module mokuai4(cin,en,cout);input3:0 cin;input en;output 7:0

18、cout;reg7:0cout;always(cin or en)beginif(en=1)case(cin)4b0000:cout=8b00011000;4b0001:cout=8b00100100;4b0010:cout=8b01000010;4b0011:cout=8b10000001;4b0100:cout=8b01000010;4b0101:cout=8b00100100;4b0110:cout=8b00011000;4b0111:cout=8b00000000;default:cout=8b00000000;endcaseelsecout=8b00000000;endendmodu

19、le功能仿真波形:控制模块四循环的计数器Verilog文件:module counter4(cp,en,q); input cp,en; output3:0 q; reg3:0q; always(negedge cp) begin q=4b0000; if(en&(q4b0111)q=q+1; else q=4b0000; end endmodule3.1.5模式五: Verilog源文件:module mokuai5(cin,en,cout);input3:0 cin;input en;output 7:0cout;reg7:0cout;always(cin or en)beginif(en

20、=1)case(cin)4b0000:cout=8b00011000;4b0001:cout=8b00111100;4b0010:cout=8b01111110;4b0011:cout=8b11111111;4b0100:cout=8b01111110;4b0101:cout=8b00111100;4b0110:cout=8b00011000;4b0111:cout=8b00000000;default:cout=8b00000000;endcaseelsecout=8b00000000;endendmodule功能仿真波形:控制模块五循环的计数器Verilog文件:module counte

21、r5(cp,en,q); input cp,en; output3:0 q; reg3:0q; always(negedge cp) begin q=4b0000; if(en&(q4b0111)q=q+1; else q=4b0000; end endmodule 3.1.6模式六: Verilog源文件:module mokuai6(cin,en,cout);input3:0 cin;input en;output 7:0cout;reg7:0cout;always(cin or en)beginif(en=1)case(cin)4b0000:cout=8b10101010;4b0001:

22、cout=8b01010101;4b0010:cout=8b11100111;4b0011:cout=8b00000000;default:cout=8b00000000;endcaseelsecout=8b00000000;endendmodule 功能仿真波形:控制模块六循环的计数器Verilog文件:module counter6(cp,en,q); input cp,en; output3:0 q; reg3:0q; always(negedge cp) begin q=4b0000; if(en&(q4b0011)q=q+1; else q=4b0000; end endmodule

23、3.1.7模式七: Verilog源文件:module mokuai7(cin,en,cout);input3:0 cin;input en;output 7:0cout;reg7:0cout;always(cin or en)beginif(en=1)case(cin)4b0000:cout=8b11110000;4b0001:cout=8b00001111;4b0010:cout=8b11111111;4b0011:cout=8b00000000;4b0100:cout=8b11111111;4b0101:cout=8b00000000;default:cout=8b00000000;en

24、dcaseelsecout=8b00000000;endendmodule功能仿真波形:控制模块七循环的计数器Verilog文件:module counter7(cp,en,q); input cp,en; output3:0 q; reg3:0q; always(negedge cp) begin q=4b0000; if(en&(q4b0101)q=q+1; else q=4b0000; end endmodule3.1.8模式八: 用第八个模块实现一个结合计数和3-7译码为一体的功能,7个输出端分别控制7个计数器的使能端从而达到控制7种模式循环工作的目的。 Verilog源文件: mok

25、uai8:module mokuai8(en,cp,cout); input cp,en; output6:0cout; reg6:0cout; reg6:0p;always(negedge cp ) begin if(en=1) begin p=p+1; if(p=72)p=0; else if (p17) cout=7b0000001; else if (p33) cout=7b0000010; else if (p47) cout=7b0000100; else if (p55) cout=7b0001000; else if (p63) cout=7b0010000; else if

26、(p67) cout=7b0100000; else if (p72) cout=7b1000000; end end endmodule功能仿真波形:3.1.9译码器: 用该译码器实现对控制端K1、K2、K3的译码,将输入的高低电平译为7为二进制码控制七个计数器的使能端,从而达到驱动7种模式工作的目的。 Verilog源文件: module decode(en,cin,cout); input2:0cin; input en; output6:0cout; reg6:0cout; always(cin or en) begin if(en=1) case(cin) 3b001:cout=8b

27、00000001; 3b010:cout=8b00000010; 3b011:cout=8b00000100; 3b100:cout=8b00001000; 3b101:cout=8b00010000; 3b110:cout=8b00100000; 3b111:cout=8b01000000; default:cout=8b00000000; endcase else cout=8b00000000; end endmodule 功能仿真波形: 3.1.10分频器: 用该分频器将1MHZ时钟分频为2HZ,作为7个计数器的时钟信号。 Verilog源文件:module fenpin (cp,Q)

28、;input cp;output Q;reg 31:0 CT;reg Q;always (posedge cp)begin CT32d249998) begin CT=32d0; Q=Q; end else CT=CT+1d1; end endmodule 3.2将各模块连接后的电路图: 连接原理说明: 按键K1-K3为控制按键,可以通过他们控制8中不同的模式,具体情况是通过它们的不同状态(非000)来控制右边译码器的7种不同输出,译码器输出的7位二进制码中只有一个是高电平。K4为开关键,当它为0时后面电路停止工作。 当K1K3为000,K4为1时,mokuai8的使能端为高电平,其开始工作,

29、驱动前七个模块循环工作。 译码器和mokuai8输出的两个7位二进制码,通过或门接入7个计数器的使能端,控制计数器的工作,从而达到控制计数器后面所接的模块工作与否的目的。 将七个模块的输出总线分别分成8条支路通过或门接入8个LED灯,从而达到控制8个LED灯的目的。4、附加功能通过16*16的点阵显示模块按照彩灯的显示频率(2hz)实现循环滚动显示“姓名+学号”(左移或者右移均可)。4.1各模块程序 4.1.1 Verilog源文件: module zimo(CP1,CP2,H,Y); input CP1,CP2; output15:0H; output15:0Y; reg15:0H; reg

30、15:0Y; integer n,p; reg15:0r95:0; initial begin r0=16b1111111111111111; r1=16b1111111011110111; r2=16b1111111100110111; r3=16b1100000000000000; r4=16b1111111110110111; r5=16b1111101101110111; r6=16b1101110111011110; r7=16b1110111001001110; r8=16b1111011110010110; r9=16b1111101111011010; r10=16b11111

31、10011011010; r11=16b1101111100011100; r12=16b1101111111011110; r13=16b1110000000011111; r14=16b1111111111111111; r15=16b1111111111111111; /杨 r16=16b1111111111111111; r17=16b1100000110100001; r18=16b1101110110101111; r19=16b1110110110101111; r20=16b1110110110100000; r21=16b1111010110101111; r22=16b11

32、11010000100001; r23=16b1101111111111111; r24=16b1110000000000001; r25=16b1111111111111101; r26=16b1111111111111101; r27=16b1110000000000001; r28=16b1101111111111111; r29=16b1100011111111111; r30=16b1111111111111111; r31=16b1111111111111111; /凯 r32=16b1111111111111111; r33=16b1110111111101111; r34=16

33、b1110111111101111; r35=16b1110000000000111; r36=16b1110000000000000; r37=16b1110000000000000; r38=16b1111111111111111; r39=16b1111111111111111; r40=16b1111111111111111; r41=16b1110011111001111; r42=16b1110101111110111; r43=16b1110110111110111; r44=16b1110111011110111; r45=16b1110111101110111; r46=16

34、b1110011110001111; r47=16b1111111111111111; /1 2 r48=16b1111111111111111; r49=16b1111100000011111; r50=16b1111011111101111; r51=16b1110111111110111; r52=16b1110111111110111; r53=16b1111100000011111; r54=16b1111111111111111; r55=16b1111111111111111; r56=16b1111111111111111; r57=16b1111001100000111; r

35、58=16b1110111101110111; r59=16b1110111110110111; r60=16b1110111110110111; r61=16b1110111110110111; r62=16b1111000001110111; r63=16b1111111111111111;/05 r64=16b1111111111111111; r65=16b1111001111001111; r66=16b1110111111110111; r67=16b1110111101110111; r68=16b1110111101110111; r69=16b1110111010110111

36、; r70=16b1111000111001111; r71=16b1111111111111111; r72=16b1111111111111111; r73=16b1110111111101111; r74=16b1110111111101111; r75=16b1110000000000111; r76=16b1110111111111111; r77=16b1110111111111111; r78=16b1111111111111111; r79=16b1111111111111111;/31 r80=16b1111111111111111; r81=16b1110111111101

37、111; r82=16b1110111111101111; r83=16b1110000000000111; r84=16b1110111111111111; r85=16b1110111111111111; r86=16b1111111111111111; r87=16b1111111111111111; r88=16b1111111111111111; r89=16b1111111111000111; r90=16b1111111111110111; r91=16b1110000011110111; r92=16b1111111100110111; r93=16b1111111111000

38、111; r94=16b1111111111110111; r95=16b1111111111111111;/17 end always(negedge CP1) begin if(p=95) p=0; else p=p+1; end always(negedge CP2) begin if(n=15) begin n=0; end else n=n+1; case(n) 0:Y=16b0000000000000001; 1:Y=16b0000000000000010; 2:Y=16b0000000000000100; 3:Y=16b0000000000001000; 4:Y=16b0000000000010000; 5:Y=16b0000000000100000; 6:Y=16b0000000001000000; 7:Y=16b0000000010000000; 8:Y=16b0000000100000000; 9:Y=16b000000

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922