EDA技术课程设计彩灯控制器设计模板.docx
- 文档编号:17440711
- 上传时间:2023-07-25
- 格式:DOCX
- 页数:20
- 大小:164.62KB
EDA技术课程设计彩灯控制器设计模板.docx
《EDA技术课程设计彩灯控制器设计模板.docx》由会员分享,可在线阅读,更多相关《EDA技术课程设计彩灯控制器设计模板.docx(20页珍藏版)》请在冰点文库上搜索。
EDA技术课程设计彩灯控制器设计模板
EDA技术课程设计
课题:
彩灯控制器的设计
系别:
专业:
姓名:
学号:
指导教师:
河南城建学院
2011年6月24日
成绩评定·
一、指导教师评语(根据学生设计报告质量、答辩情况及其平时表现综合评定)。
二、评分(按下表要求评定)
评分项目
设计报告评分
答辩评分
平时表现评分
合计
(100分)
任务完成
情况
(20分)
课程设计
报告质量
(40分)
表达情况
(10分)
回答问题
情况
(10分)
工作态度与纪律
(10分)
独立工作
能力
(10分)
得分
课程设计成绩评定
班级姓名学号
成绩:
分(折合等级)
指导教师签字年月日
目录
一、设计目的:
3
二、设计要求:
3
三、总体设计原理与内容4
四、EDA程序设计及波形仿真分析5
1、时序模块5
2、显示模块8
五、硬件实现10
六、设计总结11
1、设计过程中遇到的问题及解决方法11
2、设计体会11
3、对设计的建议12
七、参考文献12
附录:
设计生成的电路图12
一、设计目的:
本程序以计算机为工作平台,综合运用EDA软件工具开发环境、用硬件描述语言VHDL为设计语言,以ASIC来实现载体的设计。
通过在EDA中的编译和处理、仿真下载、调试分析,接受一次电子设计蓝领初步的设计训练,并使所学的知识和技能得到进一步巩固、深化和扩展,以达到可以运用EDA工具设计一些简单的电子产品,掌握使用EDA工具设计数字系统的设计思想和设计方法,为继续学习和认识电子设计知识打下良好的基础。
培养利用EDA技术知识,解决电子设计自动化中常见实际问题的能力,积累实际的EDA编程。
通过本课程设计的学习,复习所学的专业知识,使课堂学习的理论知识应用于实践。
培养综合运用已学知识解决实际工程技术问题的能力、查阅图书资料和各种工具书的能力、工程绘图能力、撰写技术报告和编制技术资料的能力,接受一次电子设计自动化方面的基本训练。
二、设计要求:
1、用EDA技术设计一个彩灯控制器,使彩灯(LED管)能连续发出三种以上不同的花型(自拟);
2、随着彩灯显示图案的变化,发出不同的音响声。
3、要求使用7段数码管显示当前显示的花型,如第一种花型显示A1,第二种花型显示b2,第三种花型显示C3。
三、总体设计原理与内容
彩灯控制器的设计原理分析:
此设计的要求是连续发出三种以上的花型且显示不同花型的时候发出不同的响声。
可以由此推测:
如果要发出不同的响声,必定需要由不同的输出频率来实现,而显示部分可以使用计数扫描的方法得以实现,但是如果想听到清晰的声音,必然要加大输入频率,但输入频率的增加,必然导致显示部分花型变换的频率就会相应的增加,以致花型变换过快,显示不明显。
解决办法:
如果利用分频器,实现频率的改变,既可以发出不同的声音,又可以满足花型变换过快的问题。
综上,此设计的核心是分频器的使用。
具体设计方案的选定:
分频器部分的设计是利用计数器实现分频,将控制器外接的频率分为几个我们预先设定的值。
当计数器达到预先设定的值,即产生一个上升沿,从而实现分频。
显示部分的设计是利用分频器产生的低频信号记数,从而达到控制数码管显示时,不同花色之间变换的频率不至于太快。
利用分频器输出的不同频率信号,可以在花型变换的时候控制扬声器发出不同的声音。
图3—1设计方案总框图
四、EDA程序设计及波形仿真分析
1、时序模块
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityXHKZis
port(clk:
instd_logic;
clr:
instd_logic;
clk1_1:
outstd_logic;
clk2_1:
outstd_logic;
clk3_1:
outstd_logic;
clk4_1:
outstd_logic);
endentity;
architecturecaidengofXHKZis
signalclk1:
std_logic;
signalclk2:
std_logic;
signalclk3:
std_logic;
signalclk4:
std_logic;
begin
process(clk,clr)
variablea:
std_logic_vector(6downto0);
begin
ifclr='1'then——复位信号为高电平,将CLK1置为低电平
clk1<='0';
elsifclk'eventandclk='1'then——如果遇到时钟上升沿,进行计数
ifa="1111100"then——如果计满“1111100”将a清零
a:
="0000000";——且将clk1置为高电平
clk1<='1';
else——否则计数继续
a:
=a+1;
clk1<='0';
endif;
endif;
endprocess;
process(clk,clr)
variableb:
std_logic_vector(1downto0);
begin
ifclr='1'then——复位信号
clk2<='0';
else
ifclk'eventandclk='1'then——时钟上升沿,计数
ifb="10"then——计满清零且将clk2置为高电平
b:
="00";
clk2<='1';
else——否则,继续计数
b:
=b+1;
clk2<='0';
endif;
endif;
endif;
endprocess;
process(clk,clr)
variablec:
std_logic_vector(1downto0);
begin
ifclr='1'then
clk3<='0';
else
ifclk'eventandclk='1'then
ifc="01"then
c:
="00";
clk3<='1';
else
c:
=c+1;
clk3<='0';
endif;
endif;
endif;
endprocess;
process(clk,clr)
variabled:
std_logic_vector(1downto0);
begin
ifclr='1'then
clk4<='0';
else
ifclk'eventandclk='1'then
ifd="11"then
d:
="00";
clk4<='0';
else
d:
=d+1;
clk4<='1';
endif;
endif;
endif;
endprocess;
clk1_1<=clk1;
clk2_1<=clk2;
clk3_1<=clk3;
clk4_1<=clk4;
endarchitecturecaideng;
程序编译成功之后即可进行波形的仿真,为了方便观察显示结果,这里调节仿真时间为1us,脉冲频率clk的周期为20ns,复位信号为clr.。
保存之后,执行Quartus软件中的processing-->startsimulation选项,即可观察到波形仿真图像。
图4—1时序电路波形仿真图
通过观察可以发现,时钟信号一直以20ns的频率输入,在复位信号clr为高电平的时候,计数器中间变量a、b、c、d被置为零。
当复位信号clr不为高电平时,变量a、b、c、d开始计数,当b计够两个时钟周期的上升沿的时候,clk2_1被置为高电平,等待下一个时钟上升沿来临的时候,重新置为低电平,如此循环得到新的时钟周期。
Clk1_1、clk3_1、clk4_1类似,在此重点解释一下clk1_1,由于显示模块要使用低频的时钟信号,所以clk1_1的中间变量被设为记满“1111100”才被置为高电平,用以降低频率,延长显示时间。
2、显示模块
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityXHKZis
port(clk:
instd_logic;
clr:
instd_logic;
LED7:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
endentity;
architecturecaidengofXHKZis
signaln:
std_logic_vector(9downto0);
SIGNALDISPLAY:
STD_LOGIC_VECTOR(6DOWNTO0);
begin
process(clk,clr)is
begin
ifclr='1'then——复位信号为高电平,中间量n清零
n<="0000000000";
elsifclk'EVENTANDclk='1'then——否则如遇到时钟上升沿,计数开始
ifn="1111111111"then——计满“1111111111”,将中间量清零
n<="0000000000";
else
n<=n+1;
endif;
ifn>="0000000000"andn<="0111010100"then
DISPLAY<="1110111";
elsifn>="0111010100"andn<="1010101000"then
DISPLAY<="1111111";
elsifn>="1010101000"andn<="1111111111"then
DISPLAY<="0111001";
endif;
endif;
endprocess;
LED7<=DISPLAY;
endarchitecturecaideng;
图4—2显示电路波形仿真图
(1)
图4—3显示电路波形仿真图
(2)
观察此波形,可以看到,当遇到时钟上升沿信号的时候,计数开始,当计数在n=>"0000000000"与n<="0111010100"之间的时候,数码管显示“1110111”即字母A;当计数在n=>"0111010100"与n<="1010101000"之间的时候,数码管显示“1111111”即字母B;当计数在n=>"1010101000"与n<="1111111111"之间的时候,数码管显示“0111001”即字母C。
五、硬件实现
波形仿真完成之后即可进行引脚的分配,并进行编程下载至硬件进行测试。
在Quartus中选择Assignments->AssignmentsEditor,在AssignmentsEditor窗口中选择pin标签页,然后可进行分配引脚,之后进行程序下载。
图5—1软硬结合实现步骤
引脚的分配情况如图所示:
图5—2引脚锁定
如上图所示,硬件实现选用试验箱模式6方式下完成,在实验过程中clk的引脚选择clock0即外接频率源PIN_Y16,频率选择为65536HZ。
复位信号clr引脚用按键8进行控制锁定为PIN_F14,其余数码管的使能端引脚分配见上图。
选择process->startcompilation,重新编译,完成后形成可配置到FPGA的pan.sof文件和配置到外部的pan.pof文件。
编程下载,在quartus软件中,选择tools/programmer,在Mode中选择JTAG,点击”addfile”按钮添加需要配置的XHKZ.sof文件,点击start按钮对芯片进行配置,即可观察到实验结果。
在实验箱上,我们观察到实验结果按我们所设计的那样显示,即可显示我们预先设定的三种花型A、B、C并且能够按要求进行固定频率的变换显示,并当显示不同的花型时扬声器发出了不同的声音。
当按下复位键时我们可以看到数码显示管显示暂停,且扬声器不再发出响声。
这些实验结果验证所设计程序的正确性,实现了设计内容和要求,并且有了一定的扩展功能。
当程序下载完成后,调节工作方式为模式6,按下清零按键以后,电路按照预先设定好的程序开始工作。
图5—3硬件电路实现1
图5—4硬件电路实现2
图5—5硬件电路实现3
六、设计总结
6.1、设计过程中遇到的问题及解决方法
此次设计的过程中遇到了较多的问题,第一,对EDA编程语言的熟练程度不够,经常出现语法和句式的错误。
第二,就是编程的思路不是特别的清晰,导致中途变动程序发生了好多次。
第三,软硬结合是一个较大的问题,需要充分考虑到硬件电路的时延等问题。
举例设计过程中具体遇到的问题:
由于在显示花型的时候,扬声器要同时发出声音,我在第一次设计的时候,采用了状态机的设计方法,但状态机在每一个状态完成后,执行的动作只会存在一个周期的时间,而我却把扬声器发出响声放置在此,显然在65536HZ的时钟频率下,一个上升沿的时间任何声音也听不到。
当意识到这个问题后,我采用降低时钟频率的办法,延长显示的时间,另一方面采用计数的办法,实现扬声器发出声音的间隔,解决了扬声器不响的问题。
6.2、设计体会
通过本次课程设计,我对EDA这么课程有了初步的了解。
通过与同学探讨,终于把问题都解决了,并加深了对交通灯原理和设计思路的了解。
同时也掌握了做课程设计的一般流程,为以后的设计积累了一定的经验。
做课程设计时,先查阅相关知识,把原理吃透,确定一个大的设计方向,在按照这个方向分模块的把要实现的功能用流程图的形式展示。
不过本次设计也存在一些不足,暴露了自己对EDA的掌握还有所欠缺。
在设计过程中,分频分的太大,频率太小的话,扬声器的声音体现不出显示不同花型时的区别;频率太大的话,数码管显示速度太快,尝试分频时使用不同的脉冲信号,但没有成功。
在反复调试中,最后还是成功了,但原理还不是很清楚。
同时,在课程设计过程中通过与老师、同学的交流,也了解了他们对于这门技术的看法和今后这门技术的发展方向。
总的来说,这次设计还是有所收获的。
6.3、对设计的建议
我们的设计由于受器件的限制,不能在花型的变换上做工作,使之显出绚丽的图案。
对高级语法的使用还有欠缺,不能完全体现EDA设计的优越性。
七、参考文献
【1】李国丽、朱维勇、何剑春.《EDA与数字系统设计》.2版.机械工业出版社2009年
【2】VOLNEIA.PEDRONI著乔庐峰王志功等译.《VHDL数字电路设计教程2010年》
【3】刘洪喜,陆颖编著.《VHDL电路设计实用教程》清华大学出版社
附录1:
总程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityXHKZis
port(clk:
instd_logic;
clr:
instd_logic;
speak:
outstd_logic;
LED7:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
endentity;
architecturecaidengofXHKZis
signalclk1:
std_logic;
signalclk2:
std_logic;
signalclk3:
std_logic;
signalclk4:
std_logic;
signaln:
std_logic_vector(9downto0);
SIGNALDISPLAY:
STD_LOGIC_VECTOR(6DOWNTO0);
begin
process(clk,clr)
variablea:
std_logic_vector(6downto0);
begin
ifclr='1'then
clk1<='0';
elsifclk'eventandclk='1'then
ifa="1111100"then
a:
="0000000";
clk1<='1';
else
a:
=a+1;
clk1<='0';
endif;
endif;
endprocess;
process(clk,clr)
variableb:
std_logic_vector(1downto0);
begin
ifclr='1'then
clk2<='0';
else
ifclk'eventandclk='1'then
ifb="10"then
b:
="00";
clk2<='1';
else
b:
=b+1;
clk2<='0';
endif;
endif;
endif;
endprocess;
process(clk,clr)
variablec:
std_logic_vector(1downto0);
begin
ifclr='1'then
clk3<='0';
else
ifclk'eventandclk='1'then
ifc="01"then
c:
="00";
clk3<='1';
else
c:
=c+1;
clk3<='0';
endif;
endif;
endif;
endprocess;
process(clk,clr)
variabled:
std_logic_vector(1downto0);
begin
ifclr='1'then
clk4<='0';
else
ifclk'eventandclk='1'then
ifd="11"then
d:
="00";
clk4<='0';
else
d:
=d+1;
clk4<='1';
endif;
endif;
endif;
endprocess;
process(clk1,clr)is
begin
ifclr='1'then
n<="0000000000";
elsifclk1'EVENTANDclk1='1'then
ifn="1111111111"then
n<="0000000000";
else
n<=n+1;
endif;
ifn>="0000000000"andn<="0111010100"then
DISPLAY<="1110111";speak<=clk2;
elsifn>="0111010100"andn<="1010101000"then
DISPLAY<="1111111";speak<=clk4;
elsifn>="1010101000"andn<="1111111111"then
DISPLAY<="0111001";speak<=clk3;
endif;
endif;
endprocess;
LED7<=DISPLAY;
endarchitecturecaideng;
附录2:
设计生成的电路图
图7—1总电路图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 技术 课程设计 彩灯 控制器 设计 模板