多路彩灯控制器的设计Word文档格式.docx
《多路彩灯控制器的设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《多路彩灯控制器的设计Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
![多路彩灯控制器的设计Word文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/5/940c64e8-ba66-472d-9fa6-d141f031294a/940c64e8-ba66-472d-9fa6-d141f031294a1.gif)
彩灯控制器;
目录
1解决方案1
1.1方案1
1.2说明1
2模块设计及其功能描述1
2.1模块功能描述1
2.2时序控制模块2
2.3显示控制模块4
3多路彩灯控制器的实现7
3.1整体功能描述7
3.2设计原理7
4总结10
1解决方案
1.1方案
我用VHDL语言设计了一个十六路彩灯控制器,六种花型循环变化,有异步清零开关,并且可以选择快慢两种节拍。
本控制电路采用VHDL语言设计。
运用自顶而下的设计思想,按功能逐层分割实现层次化设计。
根据多路彩灯控制器的设计原理,将整个控制器分为两个部分,分别为时序控制模块和显示控制模块。
时序控制模块实现的功能是产生1/4和1/8的时钟信号。
显示控制模块中实现的六种花型分别为:
"
1010101010101010"
1100110011001100"
1110001110001110"
1111000011110000"
1111100000111110"
1111110000001111"
整个电路仅有时序控制和显示控制两个模块。
1.2说明
我们可以从两方面入手。
先写时序控制模块,再写显示控制模块。
最后用例化语句。
把他们结合在一起。
实现元器件的组合。
2模块设计及其功能描述
2.1模块功能描述
时序控制模块的功能是产生输入脉冲的1/4分频脉冲信号和1/8分频脉冲信号,以此控制十六路彩灯的快慢节奏变化。
时序模块有3个输入1个输出。
CHOOSE是控制彩灯变换快慢的。
CHOOSE=1时,输出1/4/分频脉冲信号。
CHOOSE=0时,输出1/8分频脉冲信号。
CLK_IN是输入的脉冲信号。
RESET是置位信号。
高电平有效。
CLKOUT是输出信号。
显示控制模块的功能是使电路产生六种花型并且循环显示,以此实现本次课程设计要求实现的多路彩灯控制器的花型循环显示功能。
显示模块有2输入1个输出。
CLK是时钟输入信号。
RESET是置位信号,高电平有效。
Q是输出信号,输出6种彩灯变化。
2.2时序控制模块
1.时序控制模块VHDL文本输入和截图:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYfenpinIS
PORT(CHOOSE:
INSTD_LOGIC;
CLK:
RESET:
CLKOUT:
OUTSTD_LOGIC);
ENDfenpin;
ARCHITECTUREBEHAVOFfenpinIS
SIGNALCLLK:
STD_LOGIC;
BEGIN
PROCESS(CLK,RESET,CHOOSE)IS
VARIABLECOUNT:
STD_LOGIC_VECTOR(2DOWNTO0);
IFRESET='
1'
THENCLLK<
='
0'
;
COUNT:
="
000"
ELSIFRISING_EDGE(CLK)THEN
IFCHOOSE='
THEN
IFCOUNT="
011"
THENCOUNT:
CLLK<
=NOTCLLK;
ELSE
=COUNT+'
ENDIF;
111"
ENDPROCESS;
CLKOUT<
=CLLK;
ENDARCHITECTUREBEHAV;
2.时序控制模块波形仿真截图:
2.3显示控制模块
ENTITYmachineIS
PORT(CLK:
Q:
OUTSTD_LOGIC_VECTOR(15DOWNTO0));
ENDmachine;
ARCHITECTUREBEHAVOFmachineIS
TYPESTATEIS(S0,S1,S2,S3,S4,S5,S6);
SIGNALCURRENT_STATE:
STATE;
SIGNALQQ:
STD_LOGIC_VECTOR(15DOWNTO0);
PROCESS(RESET,CLK)IS
CONSTANTF1:
STD_LOGIC_VECTOR(15DOWNTO0):
CONSTANTF2:
CONSTANTF3:
CONSTANTF4:
CONSTANTF5:
CONSTANTF6:
CURRENT_STATE<
=S0;
ELSIFRISING_EDGE(CLK)THEN
CASECURRENT_STATEIS
WHENS0=>
QQ<
0000000000000000"
=S1;
WHENS1=>
=F1;
=S2;
WHENS2=>
=F2;
=S3;
WHENS3=>
=F3;
=S4;
WHENS4=>
=F4;
=S5;
WHENS5=>
=F5;
=S6;
WHENS6=>
=F6;
ENDCASE;
Q<
=QQ;
2.显示控制模块波形仿真截图:
3多路彩灯控制器的实现
3.1整体功能描述
1.在时序控制电路fenpin的设计中,利用计数器计数达到分频值时,对计数器进行清零,同时将输出信号反向,这就非常简洁地实现了对输入基准信号的分频,并且分频信号的占空比为0.5。
2.在显示控制电路machine的设计中,利用状态机非常简洁地实现了六种花型的循环变换,同时利用六个十六位常数的设计,可非常方便地设置和修改六种花型。
3.对于顶层程序的设计,若为模块较多的系统,最好使用文本的程序设计方式。
但因本系统模块较少,既可使用文本的程序设计方式,也可以使用原理图的设计方式。
彩灯显示控制电路是整个设计的核心,彩灯显示控制模块能进行彩灯的图案控制,它负责整个设计的输出效果即各种彩灯图案的样式变化。
在电路中以1代表灯亮,以0代表灯灭,由0,1按不同的规律组合代表不同的灯光图案,同时使其选择不同的频率,从而实现多种图案多种频率的花样功能显示。
该程序充分地说明了用VHDL设计电路的简单易修改,即可通过适当地改变程序中输出变量来改变彩灯的花型。
时序控制模块对灯闪的速度控制有两种速度:
一是1/4分频时钟脉冲,二是1/8分频时钟脉冲。
并且还可以通过改变CLKIN的时钟输入信号来产生更多的频率。
3.2设计原理
1.整体模块VHDL文本输入和截图:
ENTITYAAAIS
C:
ENDAAA;
ARCHITECTUREoneOFAAAIS
COMPONENTfenpinIS
ENDCOMPONENTfenpin;
COMPONENTmachineIS
ENDCOMPONENTmachine;
SIGNALS1:
U1:
fenpinPORTMAP(CHOOSE=>
C,CLK=>
CLK,RESET=>
RESET,CLKOUT=>
S1);
U2:
machinePORTMAP(CLK=>
S1,RESET=>
RESET,Q=>
Q);
endone;
2.整体模块RTL电路图截图:
3.整体控制模块波形仿真截图:
4总结
此次EDA课程设计时间比较紧张。
同学们因为刚入手所以都不怎么会用QuartusII4.0这个软件。
通过我们不停的上网找资料,我终于大致了解了如何将整个系统根据不同的功能化分成模块,再分别进行设计,逐个攻破,最后再将其整合。
用VHDL进行设计,首先应该理解,VHDL语言是一种全方位硬件描述语言,包括系统行为级,寄存器传输级和逻辑门级多个设计层次。
应充分利用VHDL“自顶向下”的设计优点以及层次化的设计概念,层次概念对于设计复杂的数字系统是非常有用的,它使得我们可以从简单的单元入手,逐渐构成庞大而复杂的系统。
通过使用EDA编程既方便有快捷的实现了程序本次设计的程序已经在硬件系统上得到了验证,实验表明,此设计方法能够满足多种不同花样彩灯的变化要求,并且该方法便于扩展不同变化模式的彩灯花样。
但是试验中也出现了一些不熟练的操作问题和一些复杂程序的不能完全理解都需要我在平时多学习,进一步的完善自己。
在实习中经常会遇到一些自己可能暂时无法想明白的问题,请教同学或老师是很好的做法,节省时间也会从别人上上学到更多。
在设计时和同学相互交流各自的想法也是很重要的,不同的人对问题的看法总有差异,我们可以从交流中获得不同的思路,其他人的设计一定有比你出色的地方,很好的借鉴,并在大家的商讨中选择最优方案最终一定会得到最好的设计方法。
电子技术课程设计是配合电子技术基础课程与实验教学的一个非常重要的教学环节。
它不但能巩固我们已所学的电子技术的理论知识,而且能提高我们的电子电路的设计水平,还能加强我们综合分析问题和解决问题的能力,进一步培养我们的实验技能和动手能力,启发我们的创新意识几创新思维。
参考文献
[1]潘松黄继业.EDA技术与VHDL.清华大学出版社,2009.9
[2]边计年.用VHDL设计电子线路.清华大学出版社,2000