eda课程设计-彩灯控制器_第1页
eda课程设计-彩灯控制器_第2页
eda课程设计-彩灯控制器_第3页
eda课程设计-彩灯控制器_第4页
eda课程设计-彩灯控制器_第5页
免费预览已结束,剩余7页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 .设计目的学习EDAW发软件和MAX+plus R的使用方法,熟悉可编程逻辑器件的使用, 通过制作来了解彩灯控制系统。2 .设计题目描述和要求1)设计一个彩灯控制器,使彩灯(LED管)能连续发出四种以上不同的显示 形式;2)随着彩灯显示图案的变化,发出不同的音响声。3)扩充其它功能。3 .设计原理3.1 方案论证这次的彩灯设计采用的是分模块来完成的,包括分频器、计数器、选择器、 彩灯控制器。其中彩灯控制器是用来输出不同的花样, 彩灯控制器的输出则是用 一个32进制的计数器来控制,扬声器的输出时用不同的频率来控制,所以用了 一个集成分频器来使输入的频率被分为几种不同的频率,不同频率的选择性的

2、输 出则是用一个4选一的选择器来控制。基于上述的介绍本次的彩灯控制采用的模 式6来进行显示。资料Bi个is2沁屿嬴成PIO3中P灯24挎g J已立c, t a1Y瞬曙A-PIO3%PIO32挎 q.L % d, c.da二口g Ft®。摄 gj, E. SL I.a(IB;与7段显示弱目接/PI013 i PI012 011 /PIO 10 f DI?QD16M 0013109DirPI08i曲羸D1.51)PID22-RO16 号PI030-PI024 ofPI038-PI032PIO4PIO40FPGA/CPLDp,0,b目标芯片PI017 印5PI018PI019PIO20PI

3、021PIO22PIO23PIO13-PIO8PIO7-PIO4PIO3-PIO0HEX HEXC4律5j-妾会电路结构图NO.6图3-1-1模式6结构图3.2 模块设计1)集成分频器模块设计要求显示不同的彩灯的时候要伴随不同的音乐, 所以设计分频器来用不同的频率控制不同的音乐输出。模块说明:Rst:输入信号 复位信号 用来复位集成分频器的输出使输出为“0”,及没有音乐输出。Clk:输入信号 模块的功能即为分频输入的频率信号。Clk 4、clk6、clk8、clk 10 :输出信号 即为分频模块对输入信号 clk的分频,分别为1/4分频输出、1/6分频输出、1/8分频输出、1/10分频输出。不

4、匚MPHNQ工SK )一JtJLK.JL 电CLKRS*0-力女:JlO-¥、cxic.qCLK_-* CLICKS0图3-2-1集成分频器2)32进制计数器模块32进制模块用来控制彩灯输出模块,即确定彩灯控制器的不同的输出 Rst:输入信号复位信号用来复位32进制使其输出为“ 00000”。Clk:输入信号用来给模块提供工作频率。Count_out4.0:输出信号 即为32进制计数器的输出。图3-2-2 32进制计数器3)彩灯控制模块彩灯控制模块用来直接控制彩灯的输出,使彩灯表现出不同的花样。Rst:输入信号使彩灯控制模块的输出为“ 00000000',即让彩灯无输出。In

5、put4.0:输入信号 不同的输入使彩灯控制模块有不同的输出即彩灯显示出不同的花样。Output7.0:输出信号直接与彩灯相连来控制彩灯。CAIDENG图3-2-3彩灯控制模块4) 4选1选择器模块Rst:输入信号复位信号使选择器的输出为“ 0”。In1、in2、in3、in4 :输入信号 接分频器的输出。Inp1.0: 输入信号 接4进制计数器的输出用来控制选择器的选择不同的输入选择不 同的输出。Output :输出信号 直接接扬声器即输出的是不同的频率来控制扬声器播放音乐。XZQ4_1RST工 Z P I JL =C jIMXOUTPUTINSI M3I X。工后图3-2-4 4选1选择器

6、5)4进制计数器模块4进制计数器作为选择器的输入来控制选择器选择不同的频率作为输出控 制扬声器工作。Clk:输入信号来为计数器提供工作频率。Rst:输入信号复位信号使计数器的输出为“ 00”。-: COUMTOOT X . ,ST|XT图3-2-5 4进制计数器3.3 系统结构整个系统就是各个分模块组成来实现最后的彩灯控制功能,系统又两个时钟 来控制一个是控制32进制计数器即控制彩灯控制模块来实现彩灯的不同输出, 另一个时钟为分频器的输入来进行分频处理, 最后用来控制扬声器发出不同的音 乐,具体分频处理的时钟的频率比实现彩灯控制的时钟频率要高。COUMT£H_32CAIDENG;门叫

7、V SSI6.0I作 l>凶图3-3-1系统功能模块4 .总结这次的EDA课程设计有一周的时间,在这一周的时间里我们充分合理的安排 了自己的时间来使本次的课程设计能够顺利的完成,当然我们在本次的设计中并不是一帆风顺的,我们遇到了一些的问题,例如我们开始时用的文本的方式用一 个总的程序来完成,可以在设计的过程中我们发现程序编到后面变量越到很容易 搞混淆同时各个进程间的联系也越来越模糊以至于后面我们自己都不知道程序 的整体框图是什么,导致后面不能够继续下去,后面我们再一次对我们这次的设 计题目进行了分析和整理,最后我和我的同伴决定采用分模块的方式来完成本次 的课题设计,当然最重要的是分析各个

8、模块间的关系。 最后我们采用上面分析的 结构框图。最后我们的设计很成功,仿真和硬件测试都是正确的,实现了我们的 设计要求和目的。在这次设计中我们收获了很多,首先最直接的收获就是我们巩固了这门课程 所学过的知识,把它运用到了实践当中,并且学到了很多在书本撒和那个所没有 学到的知识,通过查阅相关资料进一步加深了对 EDA勺了。总的来说,通过这次 课程设计不仅锻炼了我们的动手和动脑能力, 也使我懂得了理论与实际相结合的 重要性,只有理论知识是远远不够的,要把所学的理论知识与实践相结合起来, 才能提高自己的实际动手能力和独立思考的能力。 在我们的共同努力和指导老师 的指引下我们圆满的完成了彩灯控制器的

9、设计,实现了设计目的。6附录一程序:分频器模块LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY fenpinqi ISPORT ( clk,rst : IN std_logic;clk_10,clk_4,clk_6,clk_8: OUT std_logic);END fenpinqi;ARCHITECTURE cd OF fenpinqi IS begin p1:process(clk,rst) variable a:integer range 0 to 20;beginif rst='1' thenclk_4<='

10、0'-复位信号控制部分else if clk'event and clk='1'then if a>=3 then a:=0; clk_4<='1' else a:=a+1; clk_4<='0' end if; end if; end if; end process p1;p2:process(clk,rst) variable b:integer range 0 to 20;beginif rst='1' thenclk_6<='0'-复位信号控制部分else if cl

11、k'event and clk='1'then if b>=5 then b:=0; clk_6<='1' else b:=b+1; clk_6<='0' end if; end if; end if; end process p2;p3:process(clk,rst) variable c:integer range 0 to 20;beginif rst='1' thenclk_8<='0'-复位信号控制部分else if clk'event and clk='

12、1'then if c>=7 then c:=0; clk_8<='1' else c:=c+1; clk_8<='0' end if; end if; end if; end process p3;p4:process(clk,rst) variable d:integer range 0 to 20;beginif rst='1' thenclk_10<='0'-复位信号控制部分else if clk'event and clk='1'then if d>=9 th

13、en d:=0; clk_10<='1'elsed:=d+1;clk_10<='0'end if;end if;end if;end process p4;end cd;4选 1 选择器LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY xzq4_1 ISPORT(rst:in std_logic;inp:in integer range 0 to 3; in1,in2,in3,in4 : In std_logic;output : OUT std_logic);END xzq4_1;ARCHITECTUR

14、E a OF xzq4_1 ISBEGINPROCESS (rst,inp)BEGINif(rst='1') then output<='0'elsecase inp iswhen 0=>output<=in1;when 1=>output<=in2;when 2=>output<=in3;when 3=>output<=in4;when others=>null;end case;end if;END PROCESS;END a;彩灯控制模块LIBRARY ieee;USE ieee.std_logi

15、c_1164.all;ENTITY caideng ISPORT(input : IN INTEGER RANGE 0 TO 31;rst:in std_logic;output : OUT std_logic_vector(7 downto 0); sm :out std_logic_vector(6 downto 0)END caideng;ARCHITECTURE a OF caideng ISBEGINPROCESS (input)BEGINif rst='1' then output<="00000000"sm<="00000

16、00”;elsecase input iswhen 0=>output<="10000000"sm<="0000110”;when 1=>output<="01000000"sm<="0000110”;when 2=>output<="00100000"sm<="0000110”;when 3=>output<="00010000"sm<="0000110”;when 4=>output<=&

17、quot;00001000"sm<="0000110”;when 5=>output<="00000100"sm<="0000110”;when 6=>output<="00000010"sm<="0000110”;when 7=>output<="00000001"sm<="0000110”;when 8=>output<="00010000"sm<="0011011”;whe

18、n 9=>output<="00110000"sm<="0011011”;when 10=>output<="00111000"sm<="0011011”;when 11 =>output<="01111000"sm<="0011011"when 12=>output<="01111100"sm<="0011011"when 13=>output<="011111

19、10"sm<="0011011"when 14=>output<="11111110"sm<="0011011"when 15=>output<="11111111 "sm<="0011011when 16=>output<="1000000r'sm<="1001111"when 17=>output<="11000001"sm<="1001111&q

20、uot;when 18=>output<="11000011 "sm<="1001111"when 19=>output<="11100011 "sm<="0011011when 20=>output<="11100111 "sm<="1001111"when 21=>output<="11110111"sm<="1001111"when 22=>output<=

21、"11111111 "sm<="1001111"when 23=>output<="00001000"sm<="1001111"when 24=>output<="00000001"sm<="0100110"when 25=>output<="00000010"sm<="0100110"when 26=>output<="00000100"sm&

22、lt;="0100110"when 27=>output<="00001000"sm<="0100110"when 28=>output<="00010000"sm<="0100110"when 29=>output<="00100000"sm<="0100110"when 30=>output<="01000000"sm<="0100110"w

23、hen 31 =>output<="10000000"sm<="0100110"when others=>null;end case;end if;end process;end a;32进制计数器模块LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY counter_32 ISPORT(clk.rst: IN stdjogic;count_out : OUT integer range 0 to 31);END counter_32;ARCHITECTURE a OF counter_32 IS BEGINPROCESS (rst,clk) variable temp:integer range 0 to 32;BEGINIF rst='1' THEN temp:=0;ELSIF (clk'event and clk='1') THENtemp:=temp+1;if(temp=32) then temp:=0;end if;END IF; count_out<=temp;END PROCESS;END a;4进制计数器模块LIBRARY ieee;USE ieee.std_logic_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论