EDA课程设计多路彩灯设计.docx
- 文档编号:23159496
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:20
- 大小:2.26MB
EDA课程设计多路彩灯设计.docx
《EDA课程设计多路彩灯设计.docx》由会员分享,可在线阅读,更多相关《EDA课程设计多路彩灯设计.docx(20页珍藏版)》请在冰豆网上搜索。
EDA课程设计多路彩灯设计
多路彩灯控制器的设计
O引言 硬件描述语言(HDL)是相对于一般的计算机软件语言如C,Pascal而言的。
HDL是用于设计硬件电子系统的计算机语言,它描述电子系统的逻辑功能、电路结构和连接方式。
设计者可以利用HDL程序来描述所希望的电路系统,规定其结构特征和电路的行为方式,然后利用综合器和适配器将此程序变成能控制FPGA和CPLD内部结构,并实现相应逻辑功能的门级或更底层的结构网表文件和下载文件。
VHDL(VeryHighSpeedIntegratedCircuitHardwaredescriptionLangtuage)主要用于描述数字系统的结构、行为、功能和接口。
与其他的HDL语言相比,VHDL具有更强的行为描述能力,从而决定了它成为系统设计领域最佳的硬件描述语言。
强大的行为描述能力是避开具体的器件结构。
从逻辑行为上描述和设计大规模电子系统的重要保证。
在文献中作者从不同的角度阐述了EDA技术的应用,它具有功能强大、描述能力强、可移植性好、研制周期短、成本低等特点,即使设计者不懂硬件的结构,也能进行独立的设计。
本文以Alter公司提供的Max+PlusⅡ为平台,设计一个可变速的彩灯控制器,可以在不修改硬件电路的基础上,仅通过更改软件就能实现任意修改花型的编程控制方案,实现控制16只LED以6种花型和两种速度循环变化显示,而且设计非常方便,设计的电路保密性。
(一)实验目的
1.进一步掌握数字电路课程所学的理论知识。
2.了解数字电路设计的基本思想和方法,学会科学分析和解决问题。
3.熟悉几种常用集成数字芯片,并掌握其工作原理,进一步学会使用其进行电路设计。
4.培养认真严谨的工作作风和实事求是的工作态度
一、设计任务与要求
(1)要有多种花形变花。
(2)多路花形可以自动变换循环往复。
(3)彩灯变幻的快慢接拍可以选择。
(4)具有清零开关。
二、总体框图
(一)设计思路
用VHDL进行设计,首先应该理解,VHDL语言是一种全方位硬件描述语言,包括系统行为级,寄存器传输级和逻辑门级多个设计层次。
应充分利用VHDL“自顶向下”的设计优点以及层次化的设计概念,层次概念对于设计复杂的数字系统是非常有用的,它使得我们可以从简单的单元入手,逐渐构成庞大而复杂的系统。
首先应进行系统模块的划分,规定每一个模块的功能以及各模块之间的接口,最终设计方案分为三大模块:
16路花样彩灯显示器、时序控制器、整个电路系统,从而达到控制彩灯闪烁速度的快慢和花型的的变换。
1.自动控制多路彩灯按预设的花型进行变换;
2、花型种类不少于三种,花型自拟;
3.分别用快慢两种节拍实现花型变换。
4.选择:
用可编辑逻辑器件实现。
(二)总体方案的设计
根据题目实际要求,经过分析与思考,拟定以下两种方案:
方案一:
总体分为三个模块。
第一块实现花形的演示,,第二块实现花形的控制及节拍控制;第三块实现时钟信号的产生。
方案二:
整体电路分为四块。
第一块实现花形的演示;第二块实现花形的控制;第三块实现节拍控制;第四块实现信号产生。
方案三:
有三个模块,第一个模块是时钟控制模块,第二块是花形控制模块,第三块是整体模块。
(三)总体设计的选择
三种方案比较发现,第三种方案相对简单。
这样设计其优点在于:
设计思想比较简单,元件种类使用较少,且易于连接电路。
基于以上原因,加上短时间内完成课程设计,我选择了连线少的,易于连接和调试的方案。
(四)总体设计的选择
1设计原理 时序控制电路SXKZ根据输入信号CKL_IN,CLR,CHOSE_KEY产生符合一定要求的、供显示控制电路XSKZ使用的控制时钟信号,而显示控制电路XSKZ则根据时序控制电路SXKZ输入的控制时钟信号,输出6种花形循环变化的、控制16路彩灯工作的控制信号,这些控制信号加上驱动电路一起控制彩灯工作。
2系统设计方案
根据系统设计方案要求可知,整个系统共三个输入信号:
控制彩灯节拍快慢的基准时钟信号CLK_IN,系统清零信号CLR,彩灯节拍快慢选择开关CHOSE_KEY:
共有16个输出信号LED【15..0】,分别控制16路彩灯。
我们可将整个彩灯控制器CDKZQ分为两大部分:
时序控制电路SXKZ和显示控制电路XSKZ,整个系统的组成原理如下图。
三、选择器件
16X16LED显示
EPI12版上SW【0】拨码
CLK1p
四、功能模块
(一)时序控制电路的VHDL源程序
――SXKZ。
VHDH
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitysxkzis
port(chose_key:
instd_logic;
clk_in:
instd_logic;
clr:
instd_logic;
clk:
outstd_logic);
endentitysxkz;
architectureartofsxkzis
signalcllk:
std_logic;
begin
process(clk_in,clr,chose_key)is
variabletemp:
std_logic_vector(2downto0);
begin
ifclr='0'then ――当CLK='0'时清零,否则正常工作
cllk<='0';temp:
="000";
elsifrising_edge(clk_in)then
ifchose_key='1'then
iftemp="011"then
temp:
="000";
cllk<=notcllk;
else
temp:
=temp+'1';
endif;
--当CHOSE_KEY=’1’产生基准时钟频率的1/4的时钟信号,否则产生基准时钟
--频率的1/8的时钟信号
else
iftemp="111"then
temp:
="000";
cllk<=notcllk;
else
temp:
=temp+'1';
endif;
endif;
endif;
endprocess;
clk<=cllk;
endarchitectureart;
时序控制电路SXKZ的仿真图如下;
时序控制电路SXKZ的功能是,用CHOSE_KEY控制输入信号CKL_IN的快慢节拍。
而CLR是控制开关。
(二)显示控制电路的VHDL源程序
--XSKZ.VHDL
libraryieee;
useieee.std_logic_1164.all;
entityxskzis
port(clk:
instd_logic;
clr:
instd_logic;
led:
outstd_logic_vector(15downto0));
endentityxskz;
architectureartofxskzis
typestateis(s0,s1,s2,s3,s4,s5,s6);
signalcurrent_state:
state;
signalflower:
std_logic_vector(15downto0);
begin
process(clr,clk)is
constantf1:
std_logic_vector(15downto0):
="00010001";
constantf2:
std_logic_vector(15downto0):
="0";
constantf3:
std_logic_vector(15downto0):
="00110011";
constantf4:
std_logic_vector(15downto0):
="0";
constantf5:
std_logic_vector(15downto0):
="1";
constantf6:
std_logic_vector(15downto0):
="1";
--六种花形的定义
begin
ifclr='1'then
current_state<=s0;
elsifrising_edge(clk)then
casecurrent_stateis
whens0=>
flower<="0000000000000000";
current_state<=s1;
whens1=>
flower<=f1;
current_state<=s2;
whens2=>
flower<=f2;
current_state<=s3;
whens3=>
flower<=f3;
current_state<=s4;
whens4=>
flower<=f4;
current_state<=s5;
whens5=>
flower<=f5;
current_state<=s6;
whens6=>
flower<=f6;
current_state<=s1;
endcase;
endif;
endprocess;
led<=flower;
endarchitectureart;
显示控制电路XSKZ的仿真图如下;
显示控制电路XSKZ的功能是控制花形的。
(三)整个电路系统的VHDL源程序
--CDKZQ.VHDL
libraryieee;
useieee.std_logic_1164.all;
entitycdkzqis
port(chose_key:
instd_logic;
clk_in:
instd_logic;
clr:
instd_logic;
VGA:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
led:
outstd_logic_vector(15downto0));
endentitycdkzq;
architectureartofcdkzqis
componentsxkzis
port(chose_key:
instd_logic;
clk_in:
instd_logic;
clr:
instd_logic;
clk:
outstd_logic);
endcomponentsxkz;
componentxskzis
port(clk:
instd_logic;
clr:
instd_logic;
led:
outstd_logic_vector(15downto0));
endcomponentxskz;
signals1:
std_logic;
begin
VGA<="0110";
u1:
sxkzportmap(chose_key,clk_in,clr,s1);
u2:
xskzportmap(s1,clr,led);
endarchitectureart;
整个电路CDKZQ系统的仿真图如下;
整个电路CDKZQ系统是把SXKZ与XSKZ综合成一个电路。
五、总体设计电路图
花形变化00010001——0——00110011——0——1——1——00010001循环变化如下图所示:
第一个花形;
第二个花形;
第三个花形;
第四个花形;
第五个花型;
第六个花形;
六、分析与总结
用VHDL进行设计,首先应该理解,VHDL语言是一种全方位硬件描述语言,包括系统行为级,寄存器传输级和逻辑门级多个设计层次。
应充分利用VHDH“自顶向下”的设计优点以及层次化的设计概念,层次概念对于设计复杂的数字系统是非常有用的。
它使的我们可以从简单的单元入手,逐渐构成庞大而复杂的系统。
通过使用EDA编程既方便又快捷的实现了程序本次设计的程序已经在硬件系统上得到了验证,实验表明,此设计方法能够满足多种不同花样彩灯的变化要求。
并且该方法便于扩展不同变化模式的彩灯花样。
电子技术课程设计是配合电子技术基础课程与实验教学的一个非常重要的教学环节。
他不但能巩固我们以所学的电子技术的理论知识,而且能提高我们的电子电路设计水平,还能加强我们综合分析问题和解决问题的能力。
进一步培养我们的实验技能和动手能力,启发我们的创新思维。
使用VHDL语言设计电路,思路简单,功能明了。
使用Max+PlusⅡ设计电路不仅可以进行逻辑仿真,还可以进行时序仿真,使用PLD不仅省去了电路制作的麻烦,还可以反复进行硬件的实验,非常方便地修改设计,且设计的电路的保密性强。
总之,采用EDA技术使得复杂的电子系统的设计变的简单易行,提高了设计的效率。
在电子电路设计领域中,电子设计自动化(EDA)工具已成为主要的设计手段,而VHDL语言则是EDA的关键技术之一,它采用自顶向下的设计方法,即从系统总体要求出发,自上至下地将设计任务分解为不同的功能模块,最后将各功能模块连接形成顶层模块,完成系统硬件的整体设计。
本文介绍了基于EDA技的多路彩灯控制器的设计与分析
七、心得体会
本次课程实习我虽然用了两个星期的时间就全部做完,但整个过程我都认真的完成了,而且从中收获很多。
可以总结为以下的几点:
1,对EDA知识的巩固与提高
这次课程设计主要是运用VHDH设计的一些相关知识,在整个实习过程中,都离不开对EDA课程知识的再学习。
我在最开始,就先将实习用到的知识通过翻阅数电书回顾了一遍(这也是对这门课的复习,给以后的复习备考减少了很多负担),这样的回顾让我对知识的理解更加透彻,对后来的快速设计起了很好的铺垫作用。
2,学会了理论联系实际
课程设计,通过选择的题目,根据要求,运用所学知识将其付诸实践来完成。
这并不是在课堂上的单纯听懂,或者课后看书过程中的深入理解,这需要的是一种理论联系实践的能力。
理论知识往往都是在一些理想状态下的假设论,而实际的动手操作则完全不同,需要考虑实际中的很多问题。
有些知识在理论上可能完全没错但到了实际中则不然。
比如在动笔做题时我们是不用考虑导线的电阻的,但在实际中,导线电阻有时是会带来时延造成花型变化的错乱,所以我们应尽量在连接电路时选择最短路径。
3,学会了如何运用电路板、芯片、导线等组装各种功能的电路;
虽然这不是第一次用电路板,因为之前的课内实验也用过,但当时的运用也只是插些导线和电阻电容之类的,用了电路板的很小部分。
这次的实习中应用了整块板子,实习后对电路板的组成完全了解了,并能熟练运用。
实习中通过对电路的连接也懂得了如何通过设计的分析对所连电路的整体布局,如何更好的设计模块将它放在最合适的位置。
一个完美的作品不仅要能很好的完成要求实现功能,还要在感官上给人美的享受。
所以站在美的角度对自己的电路进行改良是很必要的。
4,和同学的互相协作共同进步
在实习中经常会遇到一些自己可能暂时无法想明白的问题,请教同学或老师是很好的做法,节省时间也会从别人上上学到更多。
在设计时和同学相互交流各自的想法也是很重要的,不同的人对问题的看法总有差异,我们可以从交流中获得不同的idea,其他人的设计一定有比你出色的地方,很好的借鉴,并在大家的商讨中选择最优方案最终一定会得到最好的设计方法。
5,其他
课程实习设计是开端,设计是关键,测试是必须。
所以实现过程中不仅要求对知识的掌握要足够准确与精通,更要有绝对的耐心与细心。
设计模块电路时一定按照自己的设计图仔细设计这会对后面的测试起到很好的铺垫作用。
在后面查错时就不用花费精力在检查上,可以给减少很多后续工作。
我在这次的实习中其实也有连错线的时候,但我很快检查出来调整了电路,结果测试电路后花型显示完全正确。
没有费太多的功夫在检查电路上
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,,最好的办法就是问别人,因为每个人掌握情况不一样,不可能做到处处都懂,发挥群众的力量,复杂的事情就会变得很简单。
这一点我深有体会,在很多时候,我遇到的困难或许别人之前就已遇到,向他们请教远比自己在那冥思苦想来得快。
通过这次彩灯设计之后,让我学到了很多,不仅是巩固了先前学的模电、数电的理论知识,而且也培养展。
在这次的课程设计里深入的接触了运用电子集成元器件制作多路彩灯的过程,并和同学一起讨论用软件制作出了这一个多路彩灯控制系统。
正所谓“纸上谈兵终觉浅,觉知此事要躬行。
”学习任何知识,仅从理论上去求知,而不去实践的
仅供个人用于学习、研究;不得用于商业用途。
Forpersonaluseonlyinstudyandresearch;notforcommercialuse.
NurfürdenpersönlichenfürStudien,Forschung,zukommerziellenZweckenverwendetwerden.
Pourl'étudeetlarechercheuniquementàdesfinspersonnelles;pasàdesfinscommerciales.
толькодлялюдей,которыеиспользуютсядляобучения,исследованийинедолжныиспользоватьсявкоммерческихцелях.
以下无正文
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 课程设计 彩灯 设计