《数字秒表设计EDA课设报告(共15页).doc》由会员分享,可在线阅读,更多相关《数字秒表设计EDA课设报告(共15页).doc(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上北 华 航 天 工 业 学 院EDA技术综合设计课程设计报告报 告 题 目 : 数字秒表设计 作者所在系部: 电子工程系 作者所在专业: 自动化 作者所在班级: B08221 作 者 姓 名 : 赵天娇 指导教师姓名: 崔瑞雪 完 成 时 间 : 2010年12月1日 内 容 摘 要EDA技术是电子设计技术和电子制造技术的核心,目前,电子系统的EDA技术正从主要着眼于数字逻辑向模拟电路和数模混合电路的方向发展。本设计主要内容是数字逻辑电路数字秒表,数字秒表在日常生活中有广泛的用途,秒表的逻辑结构较简单,它主要由显示译码器、十进制计数器、六进制计数器和 报警器组成。四个
2、10进制计数器:用来分别对百分之一秒、十分之一秒、秒和分进行计数;两个6进制计数器:用来分别对十秒和十分进行计数;显示译码器:完成对显示的控制。根据电路持点,用层次设计概念将此设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,然后再将各模块合起来联试。通过MAX+plus软件,对上述模块设计,仿真无误后,设计顶层文件,仿真无误后,下载到主芯片EPF10K10LC84-4中,按适配划分后的管脚定位,同相关功能块硬件电路接口连线,进行硬件实验。EPF10K10LC84-4是Altera公司生产的FLEX10K系列可编程逻辑器件。主要采用了嵌入式阵列,容量高达百万门,为可重复配置的CMOS
3、 SRAM工艺,系统工作过程中可随时改变配置,有利于现场编程,完成秒表设计的修改于完善。关键词EDA、可编程逻辑器件、计数器、显示器目 录(字体?)一、 概 述 1二、实 验 目 的 1 三、单元模块设计 11十进制计数器 12六进制计数器 2 3时间数据分时扫描模块34显示译码模块 45报警电路模块 6四、顶层文件原理图 7 五、硬 件 要 求 8六、实 验 连 线 8七、实 验 总 结 8八、心 得 体 会 9九、参 考 文 献 10专心-专注-专业课程设计任务书课题名称数字秒表设计完成时间 2010年12月1日指导教师崔瑞雪职称副教授学生姓名赵天娇班 级B08221总体设计要求和技术要点
4、秒表共有6个输出显示,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,所以共有6个计数器与之相对应,6个计数器的输出全都为BCD码输出,这样便于和显示译码器的连接。当计时达60分钟后,蜂鸣器鸣响10声。除此之外,整个秒表还需有一个启动信号和一个归零信号,以便秒表能随意停止及启动。秒表的逻辑结构较简单,它主要由显示译码器、十进制计数器、六进制计数器和报警器组成。用层次设计概念将此设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,然后再将各模块合起来联试。 工作内容及时间进度安排第13周:立题、论证方案设计,编程,调试程序第14周:硬件仿真实验 验收答辩课程设计成果1与设计内容对应的软
5、件程序2课程设计报告书3成果使用说明书4设计工作量要求一、概述 秒表的逻辑结构较简单,它主要由显示译码器、分频器、十进制计数器、六进制计数器和 报警器组成。秒表共有6个输出显示,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,所以共有6个计数器与之相对应,6个计数器的输出全都为BCD码输出,这样便于和显示译码器的连接。当计时达60分钟后,蜂鸣器鸣响10声。除此之外,整个秒表还需有一个启动信号和一个归零信号,以便秒表能随意停止及启动。二、实验目的(看课设报告模板)1掌握多位计数器相连的设计方法2掌握十进制、六进制计数器的设计方法3巩固多位共阴极扫描显示数码管的驱动及编码4掌握扬声器的驱动5.
6、掌握EDA技术的层次化设计方法 三、单元模块设计 1.十进制计数器(count10.vhd)四个10进制计数器:用来分别对百分之一秒、十分之一秒、秒和分进行计数,其程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity count10 isport( clr,start,clk:in std_logic; cout:out std_logic; daout:buffer std_logic_vector(3 downto 0
7、);end count10;architecture behave of count10 isbeginprocess(clr,start,clk)beginif clr=1 then daout=0000;cout=0; elsif ( clkevent and clk=1) then if start=1 then if daout=1001 then daout=0000;cout=1; else daout=daout+1;cout=0; end if; end if;end if;end process;end behave;对程序进行编译仿真后,仿真结果如下图: 2六进制计数器(c
8、ount6.vhd)两个6进制计数器:用来分别对十秒和十分进行计数,其程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity count6 isport( clr,start,clk:in std_logic; cout:out std_logic; daout:buffer std_logic_vector(3 downto 0);end count6;architecture behave of count6 isbeg
9、inprocess(clr,start,clk)beginif clr=1 then daout=0000;cout=0; elsif ( clkevent and clk=1) then if start=1 then if daout=0101 then daout=0000;cout=1; else daout=daout+1;cout=0; end if; end if;end if;end process;end behave;对程序进行编译仿真后,仿真结果如下图: 3时间数据分时扫描模块(seltime.vhd)其程序如下:library ieee;use ieee.std_log
10、ic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity seltime isport( clr,clk:in std_logic; dain1:in std_logic_vector(3 downto 0); dain2:in std_logic_vector(3 downto 0); dain3:in std_logic_vector(3 downto 0); dain4:in std_logic_vector(3 downto 0); dain5:in std_logic_vector(
11、3 downto 0); dain6:in std_logic_vector(3 downto 0); sel:out std_logic_vector(2 downto 0); daout:out std_logic_vector(3 downto 0);end seltime;architecture behave of seltime issignal count: std_logic_vector(2 downto 0);beginsel=count;process(clr,clk)begin if( clkevent and clk=1) then if clr=1 then cou
12、nt=000; elsif count=101 then count=000; else countdaoutdaoutdaoutdaoutdaoutdaoutnull;end case;end process;end behave;对程序进行编译仿真后,仿真结果如下图:4显示译码模块(deled.vhd)显示译码器:完成对显示的控制。其程序如下: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity deled isport( n
13、um: in std_logic_vector(3 downto 0); led: out std_logic_vector(6 downto 0);end deled;architecture behave of deled isbeginprocess(num)-abcdefgbegin case num iswhen0000=ledledledledledledledledledlednull;end case;end process;end behave;对程序进行编译仿真后,仿真结果如下图:5报警电路模块 (alarm.vhd) 其程序如下:library ieee;use ieee
14、.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity alarm isport( clk,i:in std_logic; q:out std_logic);end alarm;architecture behave of alarm issignal count:integer range 0 to 20;signal q0:std_logic;beginprocess(clk,i)begin if ( clkevent and clk=1) then if i=0 the
15、n count=0;q0=0; elsif i=1 then if count=19 then count=count+1;q0=not q0; end if; end if;end if;end process;q =q0;end behave;对程序进行编译仿真后,仿真结果如下图:四、顶层文件原理图1. 总原理图(second_top.gdf)2编译过程3仿真结果五、硬件要求: 1 主芯片EPF10K10LC84-4。 2 6位八段扫描共阴极数码显示管。3 二个按键开关(归零,启动)。 六、实验连线: 下载程序到主芯片后,按适配划分后的管脚定位,连接线路。输入接口:1代表归零,启动信号RE
16、SET、START的管脚分别连接按键开关2蜂鸣器鸣响信号SPEAKER接蜂鸣器的输入3代表计数时钟信号CLK的管脚同2.5MHZ时钟源相连 输出接口:代表扫描显示的驱动信号管脚SEL2,SEL1,SEL0和AG分别连接到数码管相应接口。 七、实验总结1 严禁带电插拔“JTAG”下载电缆!为了安全地使用下载电缆,防止损坏下载电缆中的器件和计算机主板的并口,应在计算机及实验箱均断电的情况下,插入或拔出下载电缆。插入下载电缆的步骤:确认完全断电下载电缆并口与计算机并口相连下载电缆JTAG口与实验箱的JTAG口相连接通实验箱电源接通计算机电源;拔出下载电缆的步骤:关闭实验箱电源拔下JTAG电缆插头实验
17、箱内部连线接通实验箱电源进行功能验证。测试完毕,先断掉EDA实验箱的电源,再把JTAG电缆的小插头插入实验箱的JTAG插座,然后接通实验箱电源,准备下一次的设计下载。2 所有文件应放在同一个文件夹下,文件夹名应符合要求,文件名应与实体名一致,先录入底层文件,把某个底层文件设为当时的顶层,保存、编译、仿真、退出,再录入另一个底层文件,这样把所有的文件都一一录入,最后录入顶层文件,并保存、编译、仿真,再下载顶层文件到指定器件,实现功能。八、心得体会通过这次课程设计,我对电子设计自动化技术(EDA)有了进一步的了解,在设计过程中,计数器的设计让我对数字电路加深了了解,在一开始时总是会出现多多少少的错
18、误,通过课本、翻阅资料,对照教材上类似的时钟设计的相关文件,对模块的结构及原理有了更深的认识,所以后才编程的时候写的得心应手。顶层文件编写完后,编译仿真,结果没有一点错误,让我很高兴。但进入实验室,下载带芯片上,在器件上运行的程序,却没有想象的那么完美,时钟信号源频率需要精确的100HZ,否则秒表走的不是慢了就是快了,要想得到精确地计数频率,就需要不断实验各个频率,以得到最精确的时钟信号。刚开始的时候,秒表计数到60分时,秒表不能停下来,我们想了很多方法后,最后把秒表达到六十分时的进位信号取非后和时钟信号源用一个与门连接作为clk信号。还有就是,秒表计数到60分的时候,蜂鸣器只响一声,但是看报
19、警电路的仿真结果没有错误,于是我们另外采用一个时钟信号源作为蜂鸣器的时钟信号,成功的达到要求达到60分后蜂鸣10声。还有就是CLR信号在START为高电平时清零,但当CLR信号恢复为低电平后,秒表又从清零前的数值开始计数,针对这个问题,我们讨论后修改了数据选择模块,之后又进行那个了多次修改,最后实现了正确的清零作用。还有很多硬件实验时候出现的问题也都在我们的努力下解决了。虽然这并不是什么伟大的设计,但是我们了解软件的元件管理深层含义,以及模块元件之间的连接概念,熟悉了FPGA设计的调试过程中手段的多样化,看着自己的成果,让我们感到一种小小的成就感,对电子系统的设计有了浓厚的兴趣。课设对于我们来说是锻炼,是成长,短短的几天,虽然忙碌,却很充实。在以后的学习工作中,这次课设带给我锻炼一定会有更深的意义和影响。九、参考文献电子技术基础(数字部分) 康光华主编,高等教育出版社数字电子技术基础 阎石主编,高等教育出版社 EDA技术与实验李国洪、胡辉、沈明山主编,机械工业出版社指导教师评语及设计成绩 评 语 课程设计成绩: 指导教师: 日期: 年 月 日
限制150内