eda课程设计彩灯控制器.docx

上传人:b****5 文档编号:7881570 上传时间:2023-01-26 格式:DOCX 页数:13 大小:267.57KB
下载 相关 举报
eda课程设计彩灯控制器.docx_第1页
第1页 / 共13页
eda课程设计彩灯控制器.docx_第2页
第2页 / 共13页
eda课程设计彩灯控制器.docx_第3页
第3页 / 共13页
eda课程设计彩灯控制器.docx_第4页
第4页 / 共13页
eda课程设计彩灯控制器.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

eda课程设计彩灯控制器.docx

《eda课程设计彩灯控制器.docx》由会员分享,可在线阅读,更多相关《eda课程设计彩灯控制器.docx(13页珍藏版)》请在冰豆网上搜索。

eda课程设计彩灯控制器.docx

eda课程设计彩灯控制器

1.设计目的

学习EDA开发软件和MAX+plusⅡ的使用方法,熟悉可编程逻辑器件的使用,通过制作来了解彩灯控制系统。

2.设计题目描述和要求

1)设计一个彩灯控制器,使彩灯〔LED管〕能连续发出四种以上不同的显示形式;

2〕随着彩灯显示图案的变化,发出不同的音响声。

3〕扩大其它功能。

3.设计原理

3.1方案论证

这次的彩灯设计采用的是分模块来完成的,包括分频器、计数器、选择器、彩灯控制器。

其中彩灯控制器是用来输出不同的把戏,彩灯控制器的输出那么是用一个32进制的计数器来控制,扬声器的输出时用不同的频率来控制,所以用了一个集成分频器来使输入的频率被分为几种不同的频率,不同频率的选择性的输出那么是用一个4选一的选择器来控制。

基于上述的介绍本次的彩灯控制采用的模式6来进展显示。

图3-1-1模式6构造图

 

3.2模块设计

1)集成分频器模块

设计要求显示不同的彩灯的时候要伴随不同的音乐,所以设计分频器来用不同的频率控制不同的音乐输出。

模块说明:

Rst:

输入信号复位信号用来复位集成分频器的输出使输出为“0〞,及没有音乐输出。

Clk:

输入信号模块的功能即为分频输入的频率信号。

Clk_4、clk_6、clk_8、clk_10:

输出信号即为分频模块对输入信号clk的分频,分别为1/4分频输出、1/6分频输出、1/8分频输出、1/10分频输出。

图3-2-1集成分频器

2)32进制计数器模块

32进制模块用来控制彩灯输出模块,即确定彩灯控制器的不同的输出。

Rst:

输入信号复位信号用来复位32进制使其输出为“00000〞。

Clk:

输入信号用来给模块提供工作频率。

Count_out[4..0]:

输出信号即为32进制计数器的输出。

图3-2-232进制计数器

3)彩灯控制模块

彩灯控制模块用来直接控制彩灯的输出,使彩灯表现出不同的把戏。

Rst:

输入信号使彩灯控制模块的输出为“00000000〞,即让彩灯无输出。

Input[4..0]:

输入信号不同的输入使彩灯控制模块有不同的输出即彩灯显示出不同的把戏。

Output[7..0]:

输出信号直接与彩灯相连来控制彩灯。

图3-2-3彩灯控制模块

4)4选1选择器模块

Rst:

输入信号复位信号使选择器的输出为“0〞。

In1、in2、in3、in4:

输入信号接分频器的输出。

Inp[1..0]:

输入信号接4进制计数器的输出用来控制选择器的选择不同的输入选择不同的输出。

Output:

输出信号直接接扬声器即输出的是不同的频率来控制扬声器播放音乐。

图3-2-44选1选择器

5)4进制计数器模块

4进制计数器作为选择器的输入来控制选择器选择不同的频率作为输出控制扬声器工作。

Clk:

输入信号来为计数器提供工作频率。

Rst:

输入信号复位信号使计数器的输出为“00〞。

图3-2-54进制计数器

3.3系统构造

整个系统就是各个分模块组成来实现最后的彩灯控制功能,系统又两个时钟来控制一个是控制32进制计数器即控制彩灯控制模块来实现彩灯的不同输出,另一个时钟为分频器的输入来进展分频处理,最后用来控制扬声器发出不同的音乐,具体分频处理的时钟的频率比实现彩灯控制的时钟频率要高。

 

图3-3-1系统功能模块

 

4.总结

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

最后我们采用上面分析的构造框图。

最后我们的设计很成功,仿真和硬件测试都是正确的,实现了我们的设计要求和目的。

在这次设计中我们收获了很多,首先最直接的收获就是我们稳固了这门课程所学过的知识,把它运用到了实践当中,并且学到了很多在书本撒和那个所没有学到的知识,通过查阅相关资料进一步加深了对EDA的了。

总的来说,通过这次课程设计不仅锻炼了我们的动手和动脑能力,也使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,要把所学的理论知识与实践相结合起来,才能提高自己的实际动手能力和独立思考的能力。

在我们的共同努力和指导教师的指引下我们圆满的完成了彩灯控制器的设计,实现了设计目的。

 

6附录一程序:

----------------------------------------------分频器模块-----------------------------------------

LIBRARYieee;

USEieee.std_logic_1164.all;

ENTITYfenpinqiIS

PORT

clk,rst:

INstd_logic;

clk_10,clk_4,clk_6,clk_8:

OUTstd_logic

);

ENDfenpinqi;

ARCHITECTUREcdOFfenpinqiIS

begin

p1:

process(clk,rst)

variablea:

integerrange0to20;

begin

ifrst='1'then

clk_4<='0';-----复位信号控制局部

else

ifclk'eventandclk='1'then

ifa>=3then

a:

=0;

clk_4<='1';

else

a:

=a+1;

clk_4<='0';

endif;

endif;

endif;

endprocessp1;

p2:

process(clk,rst)

variableb:

integerrange0to20;

begin

ifrst='1'then

clk_6<='0';-----复位信号控制局部

else

ifclk'eventandclk='1'then

ifb>=5then

b:

=0;

clk_6<='1';

else

b:

=b+1;

clk_6<='0';

endif;

endif;

endif;

endprocessp2;

p3:

process(clk,rst)

variablec:

integerrange0to20;

begin

ifrst='1'then

clk_8<='0';-----复位信号控制局部

else

ifclk'eventandclk='1'then

ifc>=7then

c:

=0;

clk_8<='1';

else

c:

=c+1;

clk_8<='0';

endif;

endif;

endif;

endprocessp3;

p4:

process(clk,rst)

variabled:

integerrange0to20;

begin

ifrst='1'then

clk_10<='0';-----复位信号控制局部

else

ifclk'eventandclk='1'then

ifd>=9then

d:

=0;

clk_10<='1';

else

d:

=d+1;

clk_10<='0';

endif;

endif;

endif;

endprocessp4;

endcd;

 

----------------------------------------------4选1选择器---------------------------------------

LIBRARYieee;

USEieee.std_logic_1164.all;

ENTITYxzq4_1IS

PORT

rst:

instd_logic;

inp:

inintegerrange0to3;

in1,in2,in3,in4:

Instd_logic;

output:

OUTstd_logic

);

ENDxzq4_1;

ARCHITECTUREaOFxzq4_1IS

BEGIN

PROCESS(rst,inp)

BEGIN

if(rst='1')thenoutput<='0';

else

caseinpis

when0=>output<=in1;

when1=>output<=in2;

when2=>output<=in3;

when3=>output<=in4;

whenothers=>null;

endcase;

endif;

ENDPROCESS;

ENDa;

 

-------------------------------------------彩灯控制模块----------------------------------------

LIBRARYieee;

USEieee.std_logic_1164.all;

ENTITYcaidengIS

PORT

input:

ININTEGERRANGE0TO31;

rst:

instd_logic;

output:

OUTstd_logic_vector(7downto0);

sm:

outstd_logic_vector(6downto0)

);

ENDcaideng;

ARCHITECTUREaOFcaidengIS

BEGIN

PROCESS(input)

BEGIN

ifrst='1'thenoutput<="00000000";sm<="0000000";

else

caseinputis

when0=>output<="10000000";sm<="0000110";

when1=>output<="01000000";sm<="0000110";

when2=>output<="00100000";sm<="0000110";

when3=>output<="00010000";sm<="0000110";

when4=>output<="00001000";sm<="0000110";

when5=>output<="00000100";sm<="0000110";

when6=>output<="00000010";sm<="0000110";

when7=>output<="00000001";sm<="0000110";

 

when8=>output<="00010000";sm<="0011011";

when9=>output<="00110000";sm<="0011011";

when10=>output<="00111000";sm<="0011011";

when11=>output<="01111000";sm<="0011011";

when12=>output<="01111100";sm<="0011011";

when13=>output<="01111110";sm<="0011011";

when14=>output<="11111110";sm<="0011011";

when15=>output<="11111111";sm<="0011011";

when16=>output<="10000001";sm<="1001111";

when17=>output<="11000001";sm<="1001111";

when18=>output<="11000011";sm<="1001111";

when19=>output<="11100011";sm<="0011011";

when20=>output<="11100111";sm<="1001111";

when21=>output<="11110111";sm<="1001111";

when22=>output<="11111111";sm<="1001111";

when23=>output<="00001000";sm<="1001111";

when24=>output<="00000001";sm<="0100110";

when25=>output<="00000010";sm<="0100110";

when26=>output<="00000100";sm<="0100110";

when27=>output<="00001000";sm<="0100110";

when28=>output<="00010000";sm<="0100110";

when29=>output<="00100000";sm<="0100110";

when30=>output<="01000000";sm<="0100110";

when31=>output<="10000000";sm<="0100110";

whenothers=>null;

endcase;

endif;

endprocess;

enda;

--------------------------------------------32进制计数器模块-----------------------------------

LIBRARYieee;

USEieee.std_logic_1164.all;

ENTITYcounter_32IS

PORT

clk,rst:

INstd_logic;

count_out:

OUTintegerrange0to31);

ENDcounter_32;

ARCHITECTUREaOFcounter_32IS

BEGIN

PROCESS(rst,clk)

variabletemp:

integerrange0to32;

BEGIN

IFrst='1'THEN

temp:

=0;

ELSIF(clk'eventandclk='1')THEN

temp:

=temp+1;

if(temp=32)then

temp:

=0;

endif;

ENDIF;

count_out<=temp;

ENDPROCESS;

ENDa;

 

-------------------------------------------4进制计数器模块----------------------------------

LIBRARYieee;

USEieee.std_logic_1164.all;

ENTITYcounter_4IS

PORT

clk,rst:

INstd_logic;

count_out:

OUTintegerrange0to3);

ENDcounter_4;

ARCHITECTUREaOFcounter_4IS

BEGIN

PROCESS(rst,clk)

variabletemp:

integerrange0to32;

BEGIN

IFrst='1'THEN

temp:

=0;

ELSIF(clk'eventandclk='1')THEN

temp:

=temp+1;

if(temp=4)then

temp:

=0;

endif;

ENDIF;

count_out<=temp;

ENDPROCESS;

ENDa;

 

7附录二编译

 

7附录三时序仿真

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

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

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