EDA课程设计多功能彩灯.docx
《EDA课程设计多功能彩灯.docx》由会员分享,可在线阅读,更多相关《EDA课程设计多功能彩灯.docx(15页珍藏版)》请在冰豆网上搜索。
EDA课程设计多功能彩灯
第一章绪论1
1.1系统背景1
1.1.1EDA技术的特点以及在电子技术中的应用1
a.EDA技术的特点:
1
b.EDA技术的发展趋势:
2
c.EDA技术的设计流程:
2
1.1.2设计内容和目标2
a.设计主要内容和任务:
2
b.目标:
2
第二章系统电路设计3
2.1系统总体设计框架结构3
2.2系统实验电路结构图NO.94
2.3仿真软件总电路4
第三章系统软件设计4
3.1系统程序设计4
3.1.1分频电路程序4
3.1.2彩灯显示程序5
3.2仿真波形图9
第四章实验结果和分析9
4.1实验使用的仪器设备9
4.2测试结果分析9
结束语9
第一章绪论
1.1系统背景
1.1.1EDA技术的特点以及在电子技术中的应用
a.EDA技术的特点:
EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。
电子设计自动化工程是近几年迅速发展起来的计算机软件、硬件、微电子交叉的现代电子设计学科,它是以EDA软件工具为开发环境,以硬件描述语言为设计语言,以可编程器件为实验载体,以专用集成电路(ASIC)、片上系统(SOC)芯片为器件目标,以电子系统设计为应用方向的电子产品自动化设计过程[1]。
利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程在计算机上自动处理完成。
现代EDA技术是采用高级语言描述,具有系统级仿真和综合能力,它主要采用并行工程(ConcurrentEngineering)设计和自顶向下(Top-down)设计方法,其基本思想是从系统总体要求出发,分为行为描述、寄存器传输级描述、逻辑综合三个层次,将设计内容逐步细化,最后完成整体设计,这是一种全新的设计思想与设计理念。
b.EDA技术的发展趋势:
进入21世纪,全定制和定制专用集成电路正成为新的发展热点,专用集成电路的设计与应用必须依靠专门的EDA工具,因此EDA技术在功能仿真、时序分析、集成电路自动测试、高速印刷电路板设计及操作平台的扩展等方面都面临着新的巨大的挑战。
EDA技术目前正处于高速发展阶段,每年都有新的EDA工具问世,我国EDA技术的应用水平长期落后于发达国家,因此,广大电子工程人员应该尽早掌握这一先进技术,这不仅是提高设计效率的需要,更是我国电子工业在世界市场上生存、竞争与发展的需要。
c.EDA技术的设计流程:
EDA技术是将传统的“电路设计——硬件搭试——调试焊接”模式变为“功能设计——软件模拟——编程下载”方式,设计人员只需一台微机和相应的开发工具即可研制出各种功能电路。
EDA技术将电子产品设计从软件编译、逻辑化简、逻辑综合、仿真优化、布局布线、逻辑适配、逻辑影射、编程下载、生成目标系统的全过程在计算机及其开发平台上自动处理完成。
1.1.2设计内容和目标
a.设计主要内容和任务:
完成EDA最小系统板设计与制作,在此基础上通过编程设计多功能彩灯设计。
b.目标:
具有分频功能,可以控制彩灯闪烁频率。
例如8分频、4分频、2分频。
具有至少3路以上的彩灯花样。
按照一定的时间间隔和既定的顺序亮灭。
第二章系统电路设计
2.1系统总体设计框架结构
本实验设计并制作一个基于ACEX1K,P1K30TC144-2芯片的多功能彩灯。
系统电路结构框图如图所示。
按键1控制四选一电路,可以选择不同的时钟频率。
按错误!
未找到索引项。
本次设计系统可分为控制部分和显示部分,其中,控制部分包括功能按键模块和四选一模块等,显示部分主要指LED显示模块。
这些单元电路也主要通过EDA芯片来调控其共同工作。
2.2系统实验电路结构图NO.9
2.3仿真软件总电路
第三章系统软件设计
3.1系统程序设计
3.1.1分频电路程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYfpIS
port(clk_in:
instd_logic;
s:
instd_logic_vector(3downto0);
clk_out:
outstd_logic);
endentityfp;
architectureoneoffpis
SIGNALdiv8clk,div4clk,div2clk:
STD_LOGIC;
BEGIN
PROCESS(CLK_IN)
BEGIN
IFclk_in'EVENTANDclk_in='1'THEN
div2clk<=notdiv2clk;
ENDIF;
ENDPROCESS;
PROCESS(div2clk)
BEGIN
IFdiv2clk'EVENTANDdiv2clk='1'THEN
div4clk<=notdiv4clk;
ENDIF;
ENDPROCESS;
PROCESS(div4clk)
BEGIN
IFdiv4clk'EVENTANDdiv4clk='1'THEN
div8clk<=notdiv8clk;
ENDIF;
ENDPROCESS;
process(clk_in)
begin
ifs="0000"then
CLK_out<=div8clk;
elsifs="0001"then
CLK_out<=div4clk;
elsifs="0010"then
CLK_out<=div2clk;
elsifs="0011"then
CLK_out<=clk_in;
endif;
endprocess;
ENDARCHITECTUREONE;
3.1.2彩灯显示程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycd1is
port(clk:
instd_logic;
selmode:
instd_logic_vector(3DOWNTO0);--彩灯花样控制
led:
outstd_logic_vector(15downto0));
end;
architectureoneofcd1is
begin
process(clk)
variableQA:
std_logic_vector(5downto0);
begin
ifclk'eventandclk='1'then
ifqa="110011"thenqa:
="000000";
elseQA:
=QA+1;
endif;
endif;
ifselmode="0000"then
caseQA(3downto0)is---跑马灯
when"0000"=>LED<="0000000000000001";
when"0001"=>LED<="0000000000000010";
when"0010"=>LED<="0000000000000100";
when"0011"=>LED<="0000000000001000";
when"0100"=>LED<="0000000000010000";
when"0101"=>LED<="0000000000100000";
when"0110"=>LED<="0000000001000000";
when"0111"=>LED<="0000000010000000";
when"1000"=>LED<="0000000100000000";
when"1001"=>LED<="0000001000000000";
when"1010"=>LED<="0000010000000000";
when"1011"=>LED<="0000100000000000";
when"1100"=>LED<="0001000000000000";
when"1101"=>LED<="0010000000000000";
when"1110"=>LED<="0100000000000000";
when"1111"=>LED<="1000000000000000";
whenothers=>NULL;
endcase;
elsifselmode="0001"then--第一种彩灯花样的程序
caseQA(3downto0)is
when"0000"=>LED<="1000000000000001";
when"0001"=>LED<="1100000000000011";
when"0010"=>LED<="1110000000000111";
when"0011"=>LED<="1111000000001111";
when"0100"=>LED<="1111100000011111";
when"0101"=>LED<="1111110000111111";
when"0110"=>LED<="1111111001111111";
when"0111"=>LED<="1111111111111111";
when"1000"=>LED<="1111111001111111";
when"1001"=>LED<="1111110000111111";
when"1010"=>LED<="1111100000011111";
when"1011"=>LED<="1111000000001111";
when"1100"=>LED<="1110000000000111";
when"1101"=>LED<="1100000000000011";
when"1110"=>LED<="1000000000000001";
whenothers=>LED<="0000000000000000";
endcase;
elsifselmode="0010"then--第二种彩灯花样的程序
caseQA(1downto0)is
when"00"=>LED<="1000000110000001";
when"01"=>LED<="1100001111000011";
when"10"=>LED<="1110011111100111";
when"11"=>LED<="1111111111111111";
whenothers=>LED<="0000000000000000";
endcase;
elsifselmode="0011"then--第三种彩灯花样的程序
caseQA(3downto0)is
when"0000"=>LED<="1100000000000011";
when"0001"=>LED<="0110000000000110";
when"0010"=>LED<="0011000000001100";
when"0011"=>LED<="0001100000011000";
when"0100"=>LED<="0000110000110000";
when"0101"=>LED<="0000011001100000";
when"0110"=>LED<="0000001111000000";
when"0111"=>LED<="0000011001100000";
when"1000"=>LED<="0000110000110000";
when"1001"=>LED<="0001100000011000";
when"1010"=>LED<="0011000000001100";
when"1011"=>LED<="0110000000000110";
when"1100"=>LED<="1100000000000011";
whenothers=>LED<="0000000000000000";
endcase;
elsifselmode="0100"then--第四种彩灯花样的程序
caseQA(1downto0)is
when"00"=>LED<="0001100000011000";
when"01"=>LED<="0011110000111100";
when"10"=>LED<="0111111001111110";
when"11"=>LED<="1111111111111111";
whenothers=>LED<="0000000000000000";
endcase;
elsifselmode="0101"then--第五种彩灯花样的程序
caseQAis
when"000000"=>LED<="0000000000000001";
when"000001"=>LED<="0000000000000010";
when"000010"=>LED<="0000000000000100";
when"000011"=>LED<="0000000000001000";
when"000100"=>LED<="0000000000010000";
when"000101"=>LED<="0000000000100000";
when"000110"=>LED<="0000000001000000";
when"000111"=>LED<="0000000010000000";
when"001000"=>LED<="0000000100000000";
when"001001"=>LED<="0000001000000000";
when"001010"=>LED<="0000010000000000";
when"001011"=>LED<="0000100000000000";
when"001100"=>LED<="0001000000000000";
when"001101"=>LED<="0010000000000000";
when"001110"=>LED<="0100000000000000";
when"001111"=>LED<="1000000000000000";
when"010000"=>LED<="1000000000000001";
when"010001"=>LED<="1100000000000011";
when"010010"=>LED<="1110000000000111";
when"010011"=>LED<="1111000000001111";
when"010100"=>LED<="1111100000011111";
when"010101"=>LED<="1111110000111111";
when"010110"=>LED<="1111111001111111";
when"010111"=>LED<="1111111111111111";
when"011000"=>LED<="1111111001111111";
when"011001"=>LED<="1111110000111111";
when"011010"=>LED<="1111100000011111";
when"011011"=>LED<="1111000000001111";
when"011100"=>LED<="1110000000000111";
when"011101"=>LED<="1100000000000011";
when"011110"=>LED<="1000000000000001";
when"011111"=>LED<="1000000110000001";
when"100000"=>LED<="1100001111000011";
when"100001"=>LED<="1110011111100111";
when"100010"=>LED<="1111111111111111";
when"100011"=>LED<="1100000000000011";
when"100100"=>LED<="0110000000000110";
when"100101"=>LED<="0011000000001100";
when"100110"=>LED<="0001100000011000";
when"100111"=>LED<="0000110000110000";
when"101000"=>LED<="0000011001100000";
when"101001"=>LED<="0000001111000000";
when"101010"=>LED<="0000011001100000";
when"101011"=>LED<="0000110000110000";
when"101100"=>LED<="0001100000011000";
when"101101"=>LED<="0011000000001100";
when"101110"=>LED<="0110000000000110";
when"101111"=>LED<="1100000000000011";
when"110000"=>LED<="0001100000011000";
when"110001"=>LED<="0011110000111100";
when"110010"=>LED<="0111111001111110";
when"110011"=>LED<="1111111111111111";
whenothers=>LED<="0000000000000000";
endcase;
endif;
endprocess;
end;
3.2仿真波形图
分频电路:
彩灯显示电路:
第四章实验结果和分析
4.1实验使用的仪器设备
计算机,实验箱
4.2测试结果分析
首先将程序调入实验箱中进行仿真,按键1切换时钟频率,按键2切换彩灯花样
按键1=0:
8分频
按键1=1:
4分频
按键1=2:
2分频
按键1=3:
不分频
按键2=0:
跑马灯
按键2=1:
彩灯两边同时亮两个,然后逐次向中间点亮。
按键2=7:
彩灯从左到右两个两个点亮,然后从右到左两个两个逐次点亮。
按键2=8:
彩灯中间两个点亮。
然后同时向两边散开。
按键2=9:
循环实现前面的彩灯闪烁花样
结束语
EDA技术的优越性在于可以直接从程序中修改错误及系统功能,而不需要硬件电路的支持,即把后期进行的系统调试转移到设计实现之前在计算机上进行的功能仿真和时序仿真。
使系统的功能修改及调试比较方便、快捷、准确,既缩短了研发周期,又大大节约了成本。
本实验刚开始,然后通过翻阅书籍,了解相关芯片的功能及使用方法,慢慢熟悉并掌握了电路的思想及原理。
并且通过波形仿真,找到了电路的缺陷,进而完善设计,使电路实现了既定功能。
编好的程序烧录到单片机中,就可以用电路板测试定时效果了。
写论文时,参考了大量网络资源。
通过本次EDA课程设计,暴露了我学习的不足,提高了我结合理论知识动手操作的能力,熟悉了EDA编程软件的使用,掌握了时序电路的设计要领。
在实验过程中,实际提高自己独立思考动手的能力,运用模块思想,分层次设计电路,并在遇到问题时,耐心分析,查找错误,最终实现了设计的目的。
参考文献
[1]潘松,黄继业.2009.EDA技术与VHDL.北京:
清华大学出版社.
[2]潘松,王国栋.VHDL实用教程(修订版).成都:
成都电子科技大学出版社.
[3]潘松,潘明.2007.现代计算机组成原理.北京:
科学出版社.
[4]宋万杰,罗丰,吴顺君.2000.CPLD技术及其应用.西安:
西安电子科技大学出版社.
[5]王锁萍.2000.电子设计自动化(EDA)教程.成都:
成都电子科技大学出版社.