EDA技术课程设计彩灯控制器设计.doc

上传人:laozhun 文档编号:4146424 上传时间:2023-04-07 格式:DOC 页数:19 大小:694.50KB
返回 下载 相关 举报
EDA技术课程设计彩灯控制器设计.doc_第1页
第1页 / 共19页
EDA技术课程设计彩灯控制器设计.doc_第2页
第2页 / 共19页
EDA技术课程设计彩灯控制器设计.doc_第3页
第3页 / 共19页
EDA技术课程设计彩灯控制器设计.doc_第4页
第4页 / 共19页
EDA技术课程设计彩灯控制器设计.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《EDA技术课程设计彩灯控制器设计.doc》由会员分享,可在线阅读,更多相关《EDA技术课程设计彩灯控制器设计.doc(19页珍藏版)》请在三一办公上搜索。

1、EDA技术课程设计课题:彩灯控制器的设计系 别: 专 业: 姓 名: 学 号: 指导教师: 河南城建学院2011年6月24日成绩评定一、指导教师评语(根据学生设计报告质量、答辩情况及其平时表现综合评定)。二、评分(按下表要求评定)评分项目设计报告评分答辩评分平时表现评分合 计 (100分)任务完成情 况(20分)课程设计报告质量(40分)表达情况(10分)回答问题情 况(10分)工作态度与纪律(10分)独立工作能力(10分)得分课程设计成绩评定班级 姓名 学号成绩: 分(折合等级 )指导教师签字 年 月 日 目 录一、设计目的:3二、设计要求:3三、总体设计原理与内容4四、EDA程序设计及波形

2、仿真分析51、时序模块52、显示模块8五、硬件实现10六、设计总结111、设计过程中遇到的问题及解决方法112、设计体会113、对设计的建议12七、参考文献12附录:设计生成的电路图12一、设计目的:本程序以计算机为工作平台,综合运用EDA软件工具开发环境、用硬件描述语言VHDL为设计语言,以ASIC来实现载体的设计。通过在EDA中的编译和处理、仿真下载、调试分析,接受一次电子设计蓝领初步的设计训练,并使所学的知识和技能得到进一步巩固、深化和扩展,以达到可以运用EDA工具设计一些简单的电子产品,掌握使用EDA工具设计数字系统的设计思想和设计方法,为继续学习和认识电子设计知识打下良好的基础。培养

3、利用EDA技术知识,解决电子设计自动化中常见实际问题的能力,积累实际的EDA编程。通过本课程设计的学习,复习所学的专业知识,使课堂学习的理论知识应用于实践。培养综合运用已学知识解决实际工程技术问题的能力、查阅图书资料和各种工具书的能力、工程绘图能力、撰写技术报告和编制技术资料的能力,接受一次电子设计自动化方面的基本训练。二、设计要求:1、用EDA技术设计一个彩灯控制器,使彩灯(LED管)能连续发出三种以上不同的花型(自拟);2、随着彩灯显示图案的变化,发出不同的音响声。3、要求使用7段数码管显示当前显示的花型,如第一种花型显示A1,第二种花型显示b2,第三种花型显示C3。三、总体设计原理与内容

4、 彩灯控制器的设计原理分析:此设计的要求是连续发出三种以上的花型且显示不同花型的时候发出不同的响声。可以由此推测:如果要发出不同的响声,必定需要由不同的输出频率来实现,而显示部分可以使用计数扫描的方法得以实现,但是如果想听到清晰的声音,必然要加大输入频率,但输入频率的增加,必然导致显示部分花型变换的频率就会相应的增加,以致花型变换过快,显示不明显。解决办法:如果利用分频器,实现频率的改变,既可以发出不同的声音,又可以满足花型变换过快的问题。综上,此设计的核心是分频器的使用。具体设计方案的选定:分频器部分的设计是利用计数器实现分频,将控制器外接的频率分为几个我们预先设定的值。当计数器达到预先设定

5、的值,即产生一个上升沿,从而实现分频。显示部分的设计是利用分频器产生的低频信号记数,从而达到控制数码管显示时,不同花色之间变换的频率不至于太快。利用分频器输出的不同频率信号,可以在花型变换的时候控制扬声器发出不同的声音。 图31 设计方案总框图四、EDA程序设计及波形仿真分析1、时序模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity XHKZ isport(clk:in std_logic; clr:in std_logic;clk1_1:out std_logic;clk2_1:

6、out std_logic;clk3_1:out std_logic;clk4_1:out std_logic);end entity;architecture caideng of XHKZ is signal clk1:std_logic; signal clk2:std_logic; signal clk3:std_logic; signal clk4:std_logic;beginprocess(clk,clr) variable a:std_logic_vector(6 downto 0); beginif clr=1 then 复位信号为高电平,将CLK1置为低电平 clk1=0;

7、 elsif clkevent and clk=1then 如果遇到时钟上升沿,进行计数 if a=1111100then 如果计满“1111100”将a清零 a:=0000000; 且将clk1置为高电平 clk1=1; else 否则 计数继续 a:=a+1; clk1=0; end if; end if;end process; process(clk,clr) variable b:std_logic_vector(1 downto 0); beginif clr=1 then 复位信号 clk2=0; elseif clkevent and clk=1then 时钟上升沿,计数 if

8、 b=10then 计满清零且将clk2置为高电平 b:=00; clk2=1; else 否则,继续计数 b:=b+1; clk2=0; end if;end if;end if;end process;process(clk,clr) variable c:std_logic_vector(1 downto 0); beginif clr=1 then clk3=0; elseif clkevent and clk=1then if c=01then c:=00; clk3=1; else c:=c+1; clk3=0; end if;end if;end if;end process;p

9、rocess(clk,clr) variable d:std_logic_vector(1 downto 0); beginif clr=1 then clk4=0; elseif clkevent and clk=1then if d=11then d:=00; clk4=0; else d:=d+1; clk4=1; end if;end if;end if;end process;clk1_1=clk1;clk2_1=clk2;clk3_1=clk3;clk4_1 start simulation选项,即可观察到波形仿真图像。 图41 时序电路波形仿真图 通过观察可以发现,时钟信号一直以

10、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、显示模块library ieee;use ieee.std_logic_1164.all;use iee

11、e.std_logic_unsigned.all; entity XHKZ isport(clk:in std_logic; clr:in std_logic; LED7:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);end entity;architecture caideng of XHKZ is signal n:std_logic_vector(9 downto 0); SIGNAL DISPLAY:STD_LOGIC_VECTOR(6 DOWNTO 0); beginprocess(clk,clr) isbegin if clr=1 then 复位信号为高电平,中

12、间量n清零 n=0000000000;elsif clkEVENT AND clk = 1 then 否则如遇到时钟上升沿,计数开始 if n=1111111111 then 计满“1111111111” ,将中间量清零 n=0000000000; else n=0000000000 and n=0111010100 then DISPLAY=0111010100 and n=1010101000 then DISPLAY=1010101000 and n=1111111111thenDISPLAY=0111001;end if;end if;end process;LED7000000000

13、0 与n0111010100 与 n1010101000 与nAssignments Editor,在Assignments Editor窗口中选择pin标签页,然后可进行分配引脚,之后进行程序下载。图51 软硬结合实现步骤引脚的分配情况如图所示: 图52 引脚锁定如上图所示,硬件实现选用试验箱模式6方式下完成,在实验过程中clk的引脚选择clock0即外接频率源PIN_Y16,频率选择为65536HZ。复位信号clr引脚用按键8进行控制锁定为PIN_F14,其余数码管的使能端引脚分配见上图。选择process-start compilation,重新编译,完成后形成可配置到FPGA的pan.

14、sof文件和配置到外部的pan.pof文件。编程下载,在quartus软件中,选择tools/programmer,在Mode中选择JTAG,点击”add file” 按钮添加需要配置的XHKZ.sof文件,点击start按钮对芯片进行配置,即可观察到实验结果。在实验箱上,我们观察到实验结果按我们所设计的那样显示,即可显示我们预先设定的三种花型A、B、C并且能够按要求进行固定频率的变换显示,并当显示不同的花型时扬声器发出了不同的声音。当按下复位键时我们可以看到数码显示管显示暂停,且扬声器不再发出响声。这些实验结果验证所设计程序的正确性,实现了设计内容和要求,并且有了一定的 扩展功能。 当程序下

15、载完成后,调节工作方式为模式6,按下清零按键以后,电路按照预先设定好的程序开始工作。图53 硬件电路实现1图54 硬件电路实现2图55 硬件电路实现3六、设计总结6.1、设计过程中遇到的问题及解决方法 此次设计的过程中遇到了较多的问题,第一,对EDA编程语言的熟练程度不够,经常出现语法和句式的错误。第二,就是编程的思路不是特别的清晰,导致中途变动程序发生了好多次。第三,软硬结合是一个较大的问题,需要充分考虑到硬件电路的时延等问题。举例设计过程中具体遇到的问题:由于在显示花型的时候,扬声器要同时发出声音,我在第一次设计的时候,采用了状态机的设计方法,但状态机在每一个状态完成后,执行的动作只会存在

16、一个周期的时间,而我却把扬声器发出响声放置在此,显然在65536HZ的时钟频率下,一个上升沿的时间任何声音也听不到。当意识到这个问题后,我采用降低时钟频率的办法,延长显示的时间,另一方面采用计数的办法,实现扬声器发出声音的间隔,解决了扬声器不响的问题。6.2、设计体会通过本次课程设计,我对这么课程有了初步的了解。通过与同学探讨,终于把问题都解决了,并加深了对交通灯原理和设计思路的了解。同时也掌握了做课程设计的一般流程,为以后的设计积累了一定的经验。做课程设计时,先查阅相关知识,把原理吃透,确定一个大的设计方向,在按照这个方向分模块的把要实现的功能用流程图的形式展示。不过本次设计也存在一些不足,

17、暴露了自己对的掌握还有所欠缺。在设计过程中,分频分的太大,频率太小的话,扬声器的声音体现不出显示不同花型时的区别;频率太大的话,数码管显示速度太快,尝试分频时使用不同的脉冲信号,但没有成功。在反复调试中,最后还是成功了,但原理还不是很清楚。同时,在课程设计过程中通过与老师、同学的交流,也了解了他们对于这门技术的看法和今后这门技术的发展方向。总的来说,这次设计还是有所收获的。6.3、对设计的建议 我们的设计由于受器件的限制,不能在花型的变换上做工作,使之显出绚丽的图案。对高级语法的使用还有欠缺,不能完全体现EDA设计的优越性。七、参考文献【1】 李国丽、朱维勇、何剑春. EDA与数字系统设计.

18、2版. 机械工业出版社2009年【2】VOLNEI A.PEDRONI 著乔庐峰 王志功 等译. VHDL数字电路设计教程2010年【3】 刘洪喜,陆颖编著. VHDL电路设计实用教程 清华大学出版社附录1:总程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity XHKZ isport(clk:in std_logic; clr:in std_logic; speak:out std_logic; LED7:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);end e

19、ntity;architecture caideng of XHKZ is signal clk1:std_logic; signal clk2:std_logic; signal clk3:std_logic; signal clk4:std_logic; signal n:std_logic_vector(9 downto 0); SIGNAL DISPLAY:STD_LOGIC_VECTOR(6 DOWNTO 0);beginprocess(clk,clr) variable a:std_logic_vector(6 downto 0); beginif clr=1 then clk1=

20、0; elsif clkevent and clk=1then if a=1111100then a:=0000000; clk1=1; else a:=a+1; clk1=0; end if; end if;end process; process(clk,clr) variable b:std_logic_vector(1 downto 0); beginif clr=1 then clk2=0; elseif clkevent and clk=1then if b=10then b:=00; clk2=1; else b:=b+1; clk2=0; end if;end if;end i

21、f;end process;process(clk,clr) variable c:std_logic_vector(1 downto 0); beginif clr=1 then clk3=0; elseif clkevent and clk=1then if c=01then c:=00; clk3=1; else c:=c+1; clk3=0; end if;end if;end if;end process;process(clk,clr) variable d:std_logic_vector(1 downto 0); beginif clr=1 then clk4=0; elsei

22、f clkevent and clk=1then if d=11then d:=00; clk4=0; else d:=d+1; clk4=1; end if;end if;end if;end process;process(clk1,clr) isbegin if clr=1 then n=0000000000;elsif clk1EVENT AND clk1 = 1 then if n=1111111111 then n=0000000000; else n=0000000000 and n=0111010100 then DISPLAY=1110111;speak=0111010100 and n=1010101000 then DISPLAY=1111111;speak=1010101000 and n=1111111111thenDISPLAY=0111001;speak=clk3;end if;end if;end process;LED7=DISPLAY;end architecture caideng;附录2 :设计生成的电路图 图71 总电路图

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号