xxxxxxxxxxxxx学院《EDA技术综合设计》课程设计报告报告题目:数字钟设计作者所在系部:电子工程系作者所在专业:通信工程作者所在班级:作者姓名:指导教师姓名:完成时间:2011-12-212内容摘要随着微电子技术和计算机技术的发展,电子信息产品更新换代的速度日新月异。实现这种进步的主要原因就是电子设计与制造技术的发展,其核心就是电子设计自动化(EDA,ElectronicsDesignAutomation)技术,EDA技术的发展和推广应用极大地推动了电子信息产业的发展。本实验采用EDA技术,用硬件描述语言VHDL设计数字钟的各个模块,在QuartusⅡ软件环境下进行存盘检查、编译、仿真,利用CPLD技术的层次化结构化设计。系统主芯片采用EPF10KLC84—4,由秒计数器模块,分计数器模块,小时计数器模块,扫描模块,报警模块,译码模块,分频器模块组成。经编译仿真后,在可编程逻辑器件上下载,并验证数字钟的功能。关键词:十进制六进制二十四进制调节CPLD3目录一概述…………………………………………………………………5二方案设计与论证………………………………………………………………5三单元电路设计与参数计算……………………………………………………63.1.底层文本设计……………………………………………………………63.1.1分频器模块………………………………………………………………63.1.2秒模块…………………………………………………………………73.1.3分模块…………………………………………………………………83.1.4时模块…………………………………………………………………93.1.5报警模块…………………………………………………………………103.1.6扫描模块…………………………………………………………………113.1.7译码器模块………………………………………………………………123.2顶层文本………………………………………………………………………13四器件编程与下载………………………………………………………………15五性能测试与分析…………………………………………………………………15六实验设备…………………………………………………………………………16七心得体会……………………………………………………………………………16八参考文献…………………………………………………………………………164课程设计任务书课题名称利用VHDL进行数字时钟设计完成时间2011.12.21指导教师职称教授学生姓名班级总体设计要求和技术要点总体设计要求:1)具有时、分、秒计数显示功能,以24小时循环计时。2)具有清零,调节小时、分钟功能。3)具有整点报时功能,整点报时的同时LED灯花样显示。技术要点:1)掌握并运用多位计数器相连,十进制、六进制、二十四进制计数器的设计方法。2)掌握多位共阴极扫描显示数码管的驱动及编码方面的知识。3)掌握扬声器的驱动和LED灯的显示。4)掌握CPLD技术的层次化结构化的设计方法。工作内容及时间进度安排第16周:周六、周日:设计项目的输入、编译、仿真;第17周:周一:器件编程下载与硬件验证;周二:成果验收与总结;周三:撰写课程设计总结报告课程设计成果设计出具有时、分、秒计数显示功能,以24小时循环计时,具有清零,调节小时、分钟功能,整点报时的同时LED灯花样显示得数字钟,完全符合课设要求。5一、概述本次课设的目的是利用VHDL进行数字钟设计,要求及设计目的如下:1.设计要求1)具有时、分、秒计数显示功能,以24小时循环计时。2)具有清零,调节小时、分钟功能。3)具有整点报时功能,整点报时的同时LED灯花样显示。2.设计目的1)数字钟学习的目的是掌握多位计数器相连的设计方法;2)掌握十进制、六进制、二十四进制计数器的设计方法;3)巩固多位共阴极扫描显示数码管的驱动及编码;4)掌握扬声器的驱动;5)掌握LED灯的花样显示;6)掌握CPLD、FPGA技术的层次化设计方法二、方案设计与论证软件环境:QuartusⅡ硬件环境:主芯片EPF10K10LC84-4;8个LED灯;蜂鸣器;8位8段扫描共阴极数码显示管;3个按键开关(清零,调小时,调分钟)。1)底层文件设计时钟计数:秒模块------六十进制BCD码计数(second.vhd);分模块------六十进制BCD码计数(minute.vhd);时模块------二十四进制BCD码计数(hour.vhd);整个计数器具有清零(reset)、调分、调时功能,在整点时能提供报时信号(alert.vhd)且伴有蜂鸣;译码器设计(deled.vhd):决定数码管的显示数字.2)顶层文件设计顶层文件(clock_top.vhd):表现各底层文件之间的连接关系它的输入端口:clk,reset,setmin,sethour,clkdsp;输出端口:speaker,lamp[2..0],sel[2..0],a,b,c,d,e,f,g,dpout。实验端口说明:输入接口:1.代表清零、调时、调分信号RESET、SETHOUR、SETMIN的管脚分别连接按键开关。2.代表计数时钟信号CLK和扫描时钟信号CLKDSP的管脚分别同1HZ时钟源和200HZ(或更高)时钟源相连。6输出接口:1.代表扫描显示的驱动信号管脚SEL2,SEL1,SEL0和A~G参照设计一中的连法。2.代表扬声器驱动信号的管脚SPEAK同扬声器驱动接口SPEAKER相连。3.代表花样LED灯显示的信号管脚LAMP0……LAMP2同三个LED灯相连。3)它的连接关系图(top-1)如下:三、单元电路设计与参数计算3.1底层文本设计3.1.1分频器(文件名:fenpinqi.vhd)为底层文件,它的程序如下:LIBRARYieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityfenpinqiisport(clk,reset:instd_logic;q:outstd_logic);endentityfenpinqi;architecturefunoffenpinqiissignalcnt1:std_logic_vector(9downto0);signalcnt2:std_logic_vector(9downto0);signalcnt3:std_logic_vector(4downto0);signalen:std_logic;begin7process(clk,reset)beginif(reset='0')thencnt1=0000000000;cnt2=0000000000;cnt3=00000;elsif(clk'eventandclk='1')then(cnt1=999)thencnt1=0000000000;if(cnt2=999)thencnt2=0000000000;if(cnt3=19)thencnt3=00000;en='1';elsecnt3=cnt3+1;en='0';endif;elsecnt2=cnt2+1;endif;elsecnt1=cnt1+1;endif;endif;endprocess;q=en;endfun;3.1.2秒计数器(文件名:second.vhd)为底层文本,它的程序如下:LIBRARYieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;ENTITYsecondISPORT(clk,reset,setmin:INSTD_LOGIC;enmin:bufferSTD_LOGIC;daout:outstd_logic_vector(6downto0));ENDentitysecond;ARCHITECTUREfunOFsecondISSIGNALcount:STD_LOGIC_VECTOR(6downto0);SIGNALenmin_1,enmin_2:STD_LOGIC;BEGINdaout=count;enmin_2=(setminandclk);enmin=(enmin_1orenmin_2);process(clk,reset,setmin)begin8if(reset='0')thencount=0000000;elsif(clk'eventandclk='1')thenif(count(3downto0)=1001)thenif(count16#60#)thenif(count=1011001)thenenmin_1='1';count=0000000;elsecount=count+7;endif;elsecount=0000000;endif;elsif(count16#60#)thencount=count+1;enmin_1='0'after100ns;elsecount=0000000;endif;endif;endprocess;3.1.3分计数器(文件名:minute.vhd)为底层文本,它的程序如下:LIBRARYieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;ENTITYminuteISPORT(clk,clk1,reset,sethour:INSTD_LOGIC;enhour:OUTSTD_LOGIC;daout:outstd_logic_vector(6downto0));ENDentityminute;ARCHITECTUREfunOFminuteISSIGNALcount:STD_LOGIC_VECTOR(6downto0);SIGNALenhour_1,enhour_2:STD_LOGIC;BEGINdaout=count;enhour_2=(sethourandclk1);enhour=(enhour_1orenhour_2);process(clk,reset,sethour)beginif(reset='0')thencount=0000000;elsif(clk'eventandclk='1')thenif(count(3downto0)=1001)then9if(count16#60#)thenif(count=1011001)thenenhour_1='1';count=0000000;ELSEcount=count+7;endif;elsecount=0000000;endif;elsif(count16#60#)thencount=count+1;enhour_1='0'after100ns;elsecount=0000000;endif;endif;endprocess;ENDfun;3.1.4小时文本(文件名:hour.vhd)为底层文本,它的程序如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityhourisport(clk:instd_logic;reset:instd_logic;daout:outstd_logic_vector(5downto0));endentityhour;architecturefunofhourissignalcount:std_logic_vector(5downto0);begindaout=count;process(clk,reset)beginif(reset='0')thencount=000000;elsif(clk'eventandclk='1')thenif(count(3downto0)=1001)thenif(count16#23#)thencount=count+7;elsecount=000000;10end