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

上传人:精*** 文档编号:835396 上传时间:2023-09-07 格式:DOC 页数:27 大小:2.26MB
下载 相关 举报
彩灯循环控制电路设计.doc_第1页
第1页 / 共27页
彩灯循环控制电路设计.doc_第2页
第2页 / 共27页
彩灯循环控制电路设计.doc_第3页
第3页 / 共27页
彩灯循环控制电路设计.doc_第4页
第4页 / 共27页
彩灯循环控制电路设计.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

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