eda多功能彩灯课程设计.docx
《eda多功能彩灯课程设计.docx》由会员分享,可在线阅读,更多相关《eda多功能彩灯课程设计.docx(13页珍藏版)》请在冰豆网上搜索。
![eda多功能彩灯课程设计.docx](https://file1.bdocx.com/fileroot1/2023-2/4/175f5b94-cf8c-4d4d-bf72-a20087d6fefa/175f5b94-cf8c-4d4d-bf72-a20087d6fefa1.gif)
eda多功能彩灯课程设计
黄冈师院物科院
《EDA技术实用教程》课程设计报告
项目名称:
多功能彩灯控制电路
专业年级:
电子信息工程09级
学号:
200922240232
学生姓名:
杨瑶
指导教师:
冯杰
报告完成日期:
2011年12月15日
一、引言
1.1EDA技术及其发展
电子设计自动化EDA(ElectronicDesignAutomation)技术的发展和普及给数字系统的设计带来了革命性的变化。
它作为现代电子设计技术的核心,依赖于功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL(HardwareDescriptionLanguage)为系统逻辑描述手段完成的设计文件,自动地完成逻辑化简、逻辑分割、逻辑综合、结构综合(布局布线),以及逻辑优化和仿真测试等项功能,直至实现既定性能的电子线路系统功能。
EDA技术在21世纪后,得到更大的发展,突出表现在以下几个方面:
使电子设计成果以自主知识产权的方式得以明确表达和确认成为可能。
在仿真验证和设计两方面都支持标准硬件描述语言的功能强大的EDA软件不断推出。
电子技术全方位进入EDA时代,数字技术日益成熟,传统电路系统设计建模理念也发生重大的变化:
软件无线电技术的崛起,模拟电路系统硬件描述语言的表达和设计的标准化,系统可编程模拟器件的出现,数字信号处理和图像处理的全硬件实现方案的普遍接受,软硬件技术和功能及其结构的进一步融合等。
④EDA使得电子技术领域各学科的界限更加模糊,更加互为包容,如模拟与数字、软件与硬件、ASIC与FPGA等。
⑤软硬件IP核在电子行业的产业领域、技术领域和设计应用领域得到进一步确认和广泛的应用。
1.2EDA技术的特点和优势
EDA技术的基本特征是采用高级语言描述,具有系统级仿真和综合能力。
它采用“自顶向下”的设计方法,与传统的基于标准逻辑器件的“自底向上”数字系统设计方法相比,EDA技术具有以下特点:
①用软件的方式设计硬件。
从设计输入到下载配置前的整个过程几乎不涉及硬件,通过软件方式修改硬件设计。
②设计全程,包括电路系统描述、硬件设计、仿真测试、综合、调试、软件设计,直至硬件系统都由计算机完成。
③目标系统可现场编程,在线升级;集成度更高,可构建片上系统。
④对设计人员的硬件知识要求低,通过EDA工具,即使设计人员不熟悉各种半导体工艺,也能完成电子系统的设计。
它基于芯片,大量使用大规模可编程逻辑器件,以缩短产品的上市时间,提高产品性能、缩小产品体积、降低产品消耗;它广泛运用现代计算机技术,提高电子设计自动化程度,缩短开发周期,提高品竞争力。
闪烁的彩灯在娱乐场所、餐饮等日常生活环境中应用广泛,彩灯的亮、灭具有一定的周期和规律,采用EDA技术容易设计和修改其控制电路。
1.3EDA技术的设计方法
EDA技术是将传统的搭积木式设计模式变为自顶而下的设计模
式,设计人员通过计算机和EDA开发工具即可设计和开发出各种功
能电路。
EDA技术从系统总体出发,自上而下地逐步细化设计内容,最后完成系统设计。
它包括下面几个设计步骤:
1.设计准备。
依据设计要求,选取合适的设计方案和器件类型,对系统功能细化,合理划分功能模块,画出功能框图。
2.设计输入。
选取原理图、硬件描述语言等进行设计输入。
3.功能仿真。
通过建立波形文件和测试向量,在编译前对设计的电路进行逻辑功能验证,此时的仿真没有考虑延时信息。
4.设计处理。
编译软件将对设计输入文件进行逻辑化简、综合优化、适配和分割、布局布线,最后产生编程文件。
5.时序仿真。
考虑延时信息,分析系统和各模块时序关系,估计设计的性能,检查和消除竞争冒险。
6.器件编程测试。
将仿真成功后适配器产生的配置文件通过编程器或下载电缆写入目标芯片,并对硬件系统进行检查、测试。
二.彩灯电路控制设计
下面基于EDA技术,利用Alter公司的可编程器件EP1K30TC144-3和MaxplusII软件平台,设计一个多功能彩灯控制电路。
2.1设计要求
设计一个多功能彩灯控制电路,控制16个彩灯周期性地自动改变显示模式并且能够改变显示频率。
这里设用发光二极管模拟彩灯,用两个按键来控制频率选择和亮灯花样选择。
显示频率分设为时钟信号的频率的八分频、四分频、二分频和其本身频率。
彩灯设为四组闪烁形式,具体如下:
第一组灯亮默认为从LED0到LED15依次单独循环灯亮;
第二组灯亮情况依次为全亮,LED0到LED7这8个彩灯亮,LED0到LED3这4个彩灯亮,LED0到LED1这2个彩灯亮,全不亮,LED0到LED1这2个彩灯亮,LED0到LED3这4个彩灯亮,LED0到LED7这8个彩灯亮,LED0到LED9这10个彩灯亮,LED0到LED11这12个彩灯亮,LED0到LED13这14个彩灯亮,全亮,LED6到LED9这4个彩灯亮,LED5到LED10这6个彩灯亮,LED4到LED11这8个彩灯亮,LED3到LED12这10个彩灯亮.
第三组灯亮情况依次为:
LED0和LED15亮,LED0、LED1和LED15、LED14亮,LED0、LED1、LED2和LED15、LED14、LED13亮,LED0、LED1、LED2、LED3和LED15、LED14、LED13、LED12亮,LED0、LED1、LED2、LED3、LED4和LED15、LED14、LED13、LED12、LED11亮,LED0、LED1、LED2、LED3、LED4、LED5和LED15、LED14、LED13、LED12、LED11、LED10亮,LED0、LED1、LED2、LED3、LED4、LED5、LED6和LED15、LED14、LED13、LED12、LED11、LED10、LED9亮,全亮,LED0、LED1、LED2、LED3、LED4、LED5、LED6和LED15、LED14、LED13、LED12、LED11、LED10、LED9亮,LED0、LED1、LED2、LED3、LED4、LED5和LED15、LED14、LED13、LED12、LED11、LED10亮,LED0、LED1、LED2、LED3、LED4和LED15、LED14、LED13、LED12、LED11亮,LED0、LED1、LED2、LED3和LED15、LED14、LED13、LED12亮,LED0、LED1、LED2和LED15、LED14、LED13亮,LED0、LED1和LED15、LED14亮,LED0和LED15亮,LED2、LED3、LED6、LED7、LED10、LED11、LED14、LED15亮。
第四组灯亮情况依次为:
LED1、LED3、LED5、LED7、LED9、LED11、LED13、LED15亮,LED0、LED2、LED4、LED6、LED8、LED10、LED12、LED14亮,LED0、LED1、LED4、LED5、LED8、LED9、LED12、LED13亮,LED2、LED3、LED6、LED7、LED10、LED11、LED14、LED15亮,LED1、LED2、LED3、LED7、LED8、LED9、LED13、LED14、LED15亮,LED4、LED5、LED6、LED7、LED12、LED13、LED14、LED15亮,LED0、LED1、LED2、LED3、LED8、LED9、LED10、LED11亮,LED15和LED7不亮其它亮,LED15、LED14和LED8、LED7不亮其它亮,LED15、LED14、LED13和LED7、LED6、LED5不亮其它亮,LED15、LED14、LED13、LED12和LED7、LED6、LED5、LED4不亮其它亮。
2.2设计思路
彩灯灯亮的的秩序可以通过在对时钟脉冲计数控制,用十六进制计数器循环计数,来让某一个灯在某个瞬间亮,然后再通过外部按键来控制选择第几组的灯亮情况,用另一个按键来控制选择灯闪烁的频率快慢。
用记数器的输出依次访问存储器的各地址单元,将存储的彩灯控制信息通过数据总线依次输出,控制彩灯周期性有序变化。
整个系统大体上分为三个部分,即可以实现四种分频的频率计、四选一多路选择器、控制彩灯显示的十六进制计数器。
3.各个模块的设计
多功能彩灯设计需要先把各个小部分用VHDL语言编写,然后再画原理图调出各个部分,再连接好电路,编译成功后,将各个管脚与实验箱上的对应管脚锁定,确认无误后,再将实验图装入实验箱,查看彩灯显示结果。
3.1四种分频的分频计
⑴VHDL语言
LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYFENPINIS
PORT(CLK:
INSTD_LOGIC;a,b,c,d:
OUTSTD_LOGIC);END;
ARCHITECTUREbhvOFFENPINIS
SIGNALCLK2,CLK4,CLK8:
STD_LOGIC;BEGIN
U1:
PROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THEN
CLK2<=NOTCLK2;ENDIF;ENDPROCESS;---二分频
U2:
PROCESS(CLK2)BEGINIFCLK2'EVENTANDCLK2='1'THEN
CLK4<=NOTCLK4;ENDIF;ENDPROCESS;---四分频
U3:
PROCESS(CLK4)BEGINIFCLK4'EVENTANDCLK4='1'THEN
CLK8<=NOTCLK8;ENDIF;ENDPROCESS;---八分频
a<=CLK8;b<=CLK4;c<=CLK2;d<=CLK;ENDbhv;
⑵时序仿真图
在时钟上升沿的时候开始实现分频,d是直接时钟输出,c是二分频输出,b是四分频输出,a是八分频输出。
⑶原理图
外接时钟信号输入,四种频率输出,A端八分频输出,B端四分频输出,C端二分频输出,D端原信号输出。
3.2四选一多路选择器
⑴VHDL语言
LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;
ENTITYmux41aISPORT(a,b,c,d:
INSTD_LOGIC;
S:
INSTD_LOGIC_VECTOR(3DOWNTO0);Y:
OUTSTD_LOGIC);
ENDENTITYmux41a;ARCHITECTUREbhvOFmux41aIS
BEGINPROCESS(a,b,c,d,s)BEGIN
IFs="0000"THENY<=a;--控制信号输入0,输出状态为a
ELSIFs="0001"THENY<=b;--控制信号输入1,输出状态为b
ELSIFs="0010"THENY<=c;--控制信号输入2,输出状态为c
ELSEY<=d;--控制信号输入其它,输出状态为d
ENDIF;ENDPROCESS;ENDARCHITECTUREbhv;
⑵时序仿真图
当S为“0000”时,输出状态为a,当S为“0001”时,输出状态为b,当S为“0010”时,输出状态为c,当S为其它时,输出状态
⑶原理图
通过S来选择输入信号的频率,S接实验箱上的键1。
3.3控制彩灯显示花样的综合十六进制计数器
⑴VHDL语言
LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCUNT16IS
PORT(CLK:
INSTD_LOGIC;K2:
INSTD_LOGIC_VECTOR(3DOWNTO0);
LED:
OUTSTD_LOGIC_VECTOR(15DOWNTO0));ENDCUNT16;
ARCHITECTUREbehavOFCUNT16IS
SIGNALLED1:
STD_LOGIC_VECTOR(15DOWNTO0);
SIGNALLED2:
STD_LOGIC_VECTOR(15downto0);
SIGNALLED3:
STD_LOGIC_VECTOR(15downto0);
SIGNALLED4:
STD_LOGIC_VECTOR(15downto0);
BEGINPROCESS(K2)BEGIN
IFK2="0000"THENLED<=LED1;ELSIFK2="0001"THENLED<=LED2;
ELSIFK2="0010"THENLED<=LED3;ELSIFK2="0011"THENLED<=LED4;
ELSENULL;ENDIF;ENDPROCESS;----K2控制选择彩灯显示花样
PROCESS(CLK)VARIABLEQQ:
STD_LOGIC_VECTOR(3downto0);
BEGINIFCLK'EVENTANDCLK='1'THENIFQQ<15THENQQ:
=QQ+1;
ELSEQQ:
="0000";ENDIF;ENDIF;CASEQQIS
when"0000"=>LED1<="0000000000000001";
when"0001"=>LED1<="0000000000000010";when"0010"=>LED1<="0000000000000100";when"0011"=>LED1<="0000000000001000";when"0100"=>LED1<="0000000000010000";when"0101"=>LED1<="0000000000100000";when"0110"=>LED1<="0000000001000000";when"0111"=>LED1<="0000000010000000";when"1000"=>LED1<="0000000100000000";when"1001"=>LED1<="0000001000000000";when"1010"=>LED1<="0000010000000000";when"1011"=>LED1<="0000100000000000";when"1100"=>LED1<="0001000000000000";when"1101"=>LED1<="0010000000000000";when"1110"=>LED1<="0100000000000000";when"1111"=>LED1<="1000000000000000";whenothers=>NULL;ENDCASE;ENDPROCESS;--------第一种花样
PROCESS(CLK)VARIABLEQQ:
STD_LOGIC_VECTOR(3downto0);
BEGINIFCLK'EVENTANDCLK='1'THENIFQQ<15THENQQ:
=QQ+1;
ELSEQQ:
="0000";ENDIF;ENDIF;CASEQQIS
when"0000"=>LED2<="1111111111111111";when"0001"=>LED2<="0000000011111111";when"0010"=>LED2<="0000000000001111";when"0011"=>LED2<="0000000000000011";when"0100"=>LED2<="0000000000000000";when"0101"=>LED2<="0000000000000011";when"0110=>LED2<="0000000000001111";when"0111"=>LED2<="0000000011111111";when"1000"=>LED2<="0000001111111111";when"1001"=>LED2<="0000111111111111";when"1010"=>LED2<="0011111111111111";
when"1011"=>LED2<="1111111111111111";when"1100"=>LED2<="0000001111000000";when"1101"=>LED2<="0000011111100000";when"1110"=>LED2<="0000111111110000";when"1111"=>LED2<="0001111111111000";whenothers=>NULL;ENDCASE;ENDPROCESS;---第二种花样
PROCESS(CLK)
VARIABLEQQ:
STD_LOGIC_VECTOR(3downto0);BEGIN
IFCLK'EVENTANDCLK='1'THENIFQQ<15THENQQ:
=QQ+1;
ELSEQQ:
="0000";ENDIF;ENDIF;CASEQQIS
when"0000"=>LED3<="1000000000000001";when"0001"=>LED3<="1100000000000011";when"0010"=>LED3<="1110000000000111";
when"0011"=>LED3<="1111000000001111";when"0100"=>LED3<="1111100000011111";when"0101"=>LED3<="1111110000111111";when"0110"=>LED3<="1111111001111111";when"0111"=>LED3<="1111111111111111";when"1000"=>LED3<="1111111001111111";when"1001"=>LED3<="1111110000111111";when"1010"=>LED3<="1111100000011111";when"1011"=>LED3<="1111000000001111";when"1100"=>LED3<="1110000000000111";when"1101"=>LED3<="1100000000000011";when"1110"=>LED3<="1000000000000001";when"1111"=>LED3<="1100110011001100";whenothers=>NULL;ENDCASE;ENDPROCESS;--第三种花样
PROCESS(CLK)VARIABLEQQ:
STD_LOGIC_VECTOR(3downto0);
BEGINIFCLK'EVENTANDCLK='1'THENIFQQ<15THENQQ:
=QQ+1;
ELSEQQ:
="0000";ENDIF;ENDIF;CASEQQIS
when"0000"=>LED4<="1010101010101010";when"0001"=>LED4<="0101010101010101";when"0010"=>LED4<="0011001100110011";
when"0011"=>LED4<="1100110011001100";when"0100"=>LED4<="1110001110001110";when"0101"=>LED4<="1111000011110000";when"0110"=>LED4<="0000111100001111";when"0111"=>LED4<="0111111101111111";when"1000"=>LED4<="0011111001111111";when"1001"=>LED4<="0001111100011111";when"1010"=>LED4<="0000111100001111";when"1011"=>LED4<="0001111111111000";when"1100"=>LED4<="0000111111110000";when"1101"=>LED4<="0001111111111000";when"1110"=>LED4<="1111100001111101";when"1111"=>LED4<="1000001111111100";whenothers=>NULL;ENDCASE;ENDPROCESS;--第四种花样ENDbehav;
⑵时序仿真图
K2控制LED的显示,四种花样。
⑶原理图
K2外接键2,CLK接四选一多路选择器,LED【15..0】直接输出。
4.设计成果及其实验结果
4.1实验电路框图
键1控制彩灯显示频率,接到芯片管脚PIO0--PIO3。
键2控制彩灯变换花样接到芯片管脚PIO7--PIO4。
D1到D16为显示彩灯,接到芯片PIN32--39。
4.2彩灯整体原理图
将彩灯原理图装入实验箱前,锁定管脚,外部时钟信号最好与芯片126管脚锁定,那样将易于观察彩灯变化快慢。
输入引脚S[3..0](即键1)依次与该芯片的12、10、9、8管脚锁定,K2[3..0](即键2)依次与芯片上的19、18、17、13管脚锁定。
彩灯LED[15..0]依次与芯片上的29、28、27、26、23、22、21、20、86、83、82、81、80、79、78、73管脚锁定。
然后再将原理图装入实验箱,通过键1和键2进行操作,观察彩灯变化情形。
4.3实验结果
五.结束语
本文设计了一个多功能彩灯控制电路实现16路灯各种分频输出及四种花样组合输出。
在本课程的设计过程中,灵活地运用了计数器、分频计和多路选择器。
在汇编VHDL语言时,也灵活地运用了CASE语句,对VHDL语言也加深了理解和熟练应用。
VHDL最初用于标准文档的建立和电路功能模拟,后来作为系统模拟建模工具,还可以作为电路系统的设计工具,通过软件工具将VHDL源码自动转化为文本方式表达的基本逻辑原件连接图。
它具有与具体硬件电路无关和与设计平台无关的特性,它通过EDA工具自动语法检查,排除许多设计中的疏忽,还有很好的行为级描述能力和一定的系统级描述能力。
EDA技术通过软件方式设计与测试数字系统,体现了硬件设计向软件化方向发展的新趋势。
这种数字系统设计技术采用自顶向下的模块化设计方法,使系统的功能修改及调试方便,大大节约了设计和开发成本。
随着计算机技术和微电子技术的快速发展,EDA技术在现代数字系统设计中必然将发挥更加重要的作用。
参考文献
[1]谭会生,张昌凡.EDA技术及应用第二版[M].西安:
西安电子科技大
学出版社,2006:
1-3.
[2]崔葛瑾.基于FPGA的数字电路系统设计[M].西安:
西安电子科技大
学出版社,2008:
8-10.
[3]丁文霞.EDA技术在现代数字系统中的应用[J].电子技术应
用,2000(11):
29-31.
[4]康华光,皱寿彬,秦臻.电子技术基础(数字部分)第五版[M].北京:
高
等教育出版社,2006:
296-298.
[5]姜雪松,刘东升.硬件描述语言VHDL教程(应用篇)[M].西安:
西安
交通大学大学出版社,2004:
414-415.
[6]崔葛瑾,沈利芳,李伟民.基于FPGA的