EDA数字秒表设计_第1页
EDA数字秒表设计_第2页
EDA数字秒表设计_第3页
EDA数字秒表设计_第4页
EDA数字秒表设计_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

EDA技术与应用 课程设计报告报 告 题 目: 数字秒表设计 作者所在系部: 电子工程系 作者所在专业: 电子信息工程 作者所在班级: 作 者 姓 名 : 指导教师姓名: 完 成 时 间 : 2017-6-10 内 容 摘 要在科技高度发展的今天,集成电路和计算机应用得到了高速发展。尤其是计算机应用的发展。它在人们日常生活已逐渐崭露头角。大多数电子产品多是由计算机电路组成,如:手机、mp3等。而且将来的不久他们的身影将会更频繁的出现在我们身边。各种家用电器多会实现微电脑技术。电脑各部分在工作时多是一时间为基准的。 本报告就是基于计算机电路的时钟脉冲信号、状态控制等原理,运用EDA技术及语言设计出的数字秒表。秒表在很多领域充当一个重要的角色。在各种比赛中对秒表的精确度要求很高,尤其是一些科学实验,他们对时间精确度达到了几纳秒级别。利用VHDL语言设计基于计算机电路中时钟脉冲原理的数字秒表。该数字秒表能对0秒59分59.99秒范围进行计时,显示最长时间是59分59秒,超过该时间能够进行报警。计时精度达到10ms。设计了复位开关和启停开关。复位开关可以在任何情况下使用,使用以后计时器清零,并做好下一次计时的准备。关键词:EDA技术、VHDL语言、分频器、计数器、数码管、蜂鸣器目 录一 概 述 1二 方案设计与论证1三 单元电路设计2 分频器的设计2 计时控制模块的设计3 计时模块的设计4 十进制计数器的设计4 六进制计数器的设计5 计数器的设计6 显示模块的设计8 选择器的设计8 七段译码器的设计9报警模块设计 10顶层文件的设计 11四 器件编程与下载11五 性能测试与分析12 1分频器模块的仿真 12 2计时控制模块的仿真12 3计时模块的仿真13 1十进制计数器的仿真13 2六进制计数器的仿真13 3计数器的仿真13 4显示模块的仿真15 1扫描模块的仿真15 2七段译码器的仿真155报警模块的仿真156顶层文件的仿真167设计调试16六 实验设备 16七 心得体会 16八 参考文献 16课程设计任务书课题名称数字秒表设计完成时间2017.6.10指导教师职称学生姓名班级总体设计要求和技术要点一、总体设计要求:设计一个数字秒表,共有6位输出显示,分别为百分之一秒、十分之一秒、秒、十秒、分、十分;秒表的最大计数容量为60分钟,当计时达60分钟后,蜂鸣器报警;秒表还需有一个启动信号和一个归零信号,以便秒表能随意启停及归零。二、技术要点:1.秒表的逻辑结构主要由显示译码器、分频器、十进制计数器、六进制计数器和报警器组成。2.最关键的是精确的100Hz计时脉冲如何获得,可由高频时钟信号经分频得到;3.设计时钟扫描模块seltime和显示译码器电路,产生驱动6位八段数码管的位选信号和决定数码管字形的段选信号,将各计数器的计数输出信号在6位八段共阴数码管的。工作内容及时间进度安排2016-2017学年第二学期第14周:周一、周二:设计项目的输入、编译、仿真;周三、周四:器件编程下载与硬件验证;周五:成果验收与总结;周六、周日:撰写课程设计总结报告。课程设计成果1进行系统结构分析,编写顶层文件和各底层模块程序并仿真;2对可编程逻辑器件编程下载并进行实际调试,能够实现设计要求的各项功能;3. 撰写课程设计报告。一、概述 EDA是指以计算机为工作平台,融合了应用电子技术、计算机技术、智能化技术的最新成果而开发出的电子CAD通用软件包,它根据硬件描述语言HDL完成的设计文件,自动完成逻辑编译、化简、分割、综合、优化、布局布线及仿真,直至完成对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。随着科技发展,在现代生活中,计数器应用越来越广泛。EDA技术的应用引起电子产品即系统开发的革命性变革,在MAX+PLUS2环境下采用VHDL语言实现,论述了基于VHDL语言在FPGA芯片的数字设计思想与实现过程。本设计是以VHDL语言为基础的数字秒表。在数字秒表的程序中应用了四个10进制计数器和两个6进制计数器,以及报警器、选择器和显示译码器等。电子设计自动化技术EDA的发展给电子系统的设计带来了革命性变化,EDA软件设计工具,硬件描述语言,可编程逻辑器件(PLD)使得EDA技术的应用走向普及。VHDL语言是EDA的关键技术之一,它采用自顶向下的设计方法,完成系统的整体设计。二、方案设计与论证 本系统设计采用自顶向下的设计方案,系统的整体组装设计原理图如图1-1所示,它主要由控制模块、分频模块,计时模块、显示模块和报警模块五部分组成。各模块分别完成计时过程的控制功能、计时功能与显示功能。数字秒表计时控制电路控制状态机计时电路显示电路分频电路计数器六十进制计数器扫描电路七段译码器十进制计数器图 1-1 系统组成框图报警电路3、 单元电路设计分频器的设计: 由于本设计中需要用到精确的100Hz计时脉冲,因此分频器的设计显得尤为重要。考虑到实验箱上输出频率的限制及所产生及时脉冲的精度要求,采用由5MHz的时钟脉冲经过分频器产生100Hz的计时脉冲。分频器的设计程序(divclk.vhd)如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY divclk IS PORT( CLK: IN STD_LOGIC; CO : OUT STD_LOGIC);END divclk;ARCHITECTURE behave OF divclk IS SIGNAL COUNT:INTEGER RANGE 0 TO 49999; BEGIN PROCESS(CLK) BEGIN IF RISING_EDGE(CLK)THEN IF COUNT=49999 THEN COUNT=0; CO=1; ELSE COUNT=COUNT+1; COEN=0; IF k=1THEN NEXT_STATE=S0; ELSE NEXT_STATEEN=1; IF k=1THEN NEXT_STATE=S2; ELSE NEXT_STATEEN=1;IF k=1THEN NEXT_STATE=S2; ELSE NEXT_STATE=S0; END IF;END CASE;END PROCESS;SYNCH:PROCESS(clk)BEGIN IF CLR=1THENCURRENT_STATE =S0;ELSIF CLKEVENT AND CLK=1THENCURRENT_STATE=NEXT_STATE;END IF;END PROCESS;END BEHAVE;计时模块的设计:计时模块执行计时功能,计时方法和计算机一样是对标准时钟脉冲计数。计时模块是由四个十进制计数器和两个六进制计数器构成的。其中毫秒位、十毫秒位、秒位和分位采用十进制计数器,十秒位和十分位采用六进制计数器。十进制计数器的设计程序(count_10.vhd)如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY count_10 IS PORT( CLK:IN STD_LOGIC; CLR,en:IN STD_LOGIC; CO :OUT STD_LOGIC; COUNT10:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END count_10;ARCHITECTURE behave OF count_10 ISSIGNAL SCOUNT10: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN COUNT10=SCOUNT10;PROCESS (CLK,CLR,en)BEGIN IF(CLR=1)THENSCOUNT10=0000;CO=0;ELSIF RISING_EDGE(CLK)THENIF(en=1)THENIF SCOUNT10=1001THENCO=1;SCOUNT10=0000;ELSECO=0;SCOUNT10=SCOUNT10+1;END IF;END IF;END IF;END PROCESS;END behave;六进制计数器的设计程序(count_6.vhd)如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY count_6 IS PORT( CLK,CLR,EN:IN STD_LOGIC; CO :OUT STD_LOGIC; COUNT6:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END count_6;ARCHITECTURE behave OF count_6 ISSIGNAL SCOUNT6: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS (CLK,CLR,EN)BEGIN IF(CLR=1)THENSCOUNT6=0000;CO=0;ELSIF RISING_EDGE(CLK) THENIF(EN=1)THENIF SCOUNT6=0101THENCO=1;SCOUNT6=0000;ELSECO=0;SCOUNT6=SCOUNT6+1;END IF;END IF;END IF;END PROCESS;COUNT6=SCOUNT6;END behave;计数器的设计程序(count0.vhd)如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNT0 IS PORT( CLK,CLR,EN:IN STD_LOGIC; msl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); msh:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); sl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); sh:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); ml:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); mh:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CO:OUT STD_LOGIC);END COUNT0;ARCHITECTURE behave OF COUNT0 ISCOMPONENT count_10PORT( CLK,CLR,EN:IN STD_LOGIC; CO:OUT STD_LOGIC; COUNT10:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END COMPONENT;COMPONENT count_6PORT( CLK,CLR,EN:IN STD_LOGIC; CO :OUT STD_LOGIC; COUNT6:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END COMPONENT;SIGNAL A,B,C,D,E:STD_LOGIC;BEGINU1:count_10 PORT MAP (CLK,CLR,EN,A,msl);U2:count_10 PORT MAP (A,CLR,EN,B,msh);U3:count_10 PORT MAP (B,CLR,EN,C,Sl);U4:count_6 PORT MAP (C,CLR,EN,D,sh);U5:count_10 PORT MAP (D,CLR,EN,E,ml);U6:count_6 PORT MAP (E,CLR,EN,CO,mh);END behave;显示模块的设计:计时显示电路的作用是将计时值在LED数码管上显示出来。计时电路产生的值经过BCD七段译码后,驱动LED数码管。计时显示电路的实现方案采用扫描显示。其中包括选择器和七段译码器。选择器中包含了对数码管的片选信号、位选信号及小数点的设置。选择器的设计程序(mulx.vhd)如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY MULX IS PORT(CLK,CLR,START:IN STD_LOGIC; msl,msh,sl,sh,ml,mh:in STD_LOGIC_VECTOR(3 DOWNTO 0); dp:out std_logic;OUTBCD:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); SEG:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END MULX;ARCHITECTURE behave OF MULX ISSIGNAL COUNT:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINSEG=count; PROCESS (CLK) BEGINIF CLR=1THENCOUNT=000;ELSIF RISING_EDGE(CLK)THENIF start =1 THEN if count=101 then COUNT=000; ELSE COUNTOUTBCD=msl;dpOUTBCD=msh;dpOUTBCD=sl;dpOUTBCD=sh;dpOUTBCD=ml;dpOUTBCD=mh;dpnull;END CASE;END PROCESS;END behave;七段译码器的设计程序(BCD7.vhd)如下所示:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY BCD7 IS PORT( BCD:IN STD_LOGIC_VECTOR(3 DOWNTO 0); LED:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END BCD7;ARCHITECTURE behave OF BCD7 ISBEGINLED=WHEN BCD =0000 ELSEWHEN BCD =0001 ELSEWHEN BCD =0010 ELSEWHEN BCD =0011 ELSEWHEN BCD =0100 ELSEWHEN BCD =0101 ELSEWHEN BCD =0110 ELSEWHEN BCD =0111 ELSEWHEN BCD =1000 ELSEWHEN BCD =1001 ELSE;END behave; 报警模块设计:报警模块的设计是利用蜂鸣器的发声原理。当计数器计满59分钟后会产生进位信号,在蜂鸣器的一端输入高电平时蜂鸣器发生,产生报警声。报警模块的设计程序(alarm.vhd)如下所示:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity alarm isport (clk,clr,I : in std_logic; q : out std_logic);end alarm;architecture speaker of alarm issignal n:integer range 0 to 9;signal q0:std_logic;begin process(clk,clr,i) begin if clr=1 then q0=0;n=0; elsif clkevent and clk=1 then if i=0then q0=0;n=0; elsif (i=1 and n=9) then q0=1;n=n+1; else q0=0; end if; end if; end process; q=q0;end speaker;顶层文件的设计如下图所示:4、 器件编程与下载Altera可编程器件的编程可通过JTAG在系统编程、编程器及Altera在线配置3种方式进行。本设计所使用的器件是FPGA芯片、由Altera公司生产的FLEX10K系列可编程逻辑器件EPF10K10LC84-4芯片。本设计采用JTAG在系统编程,即使用MAX+plusII编译器对器件进行编译,产生的编译文件(top.pof),通过ByteBlaster下载电缆下载到器件中去。顶层文件中各引脚在器件上的分配如图1-3所示。选择MAX+plusIIProgrammer命令或单击按钮,弹出如图1-4所示的器件编辑窗口。对顶层文件进行编译后,图中Configure会变成黑色,点击Configure按键对文件进行下载。 图1-3顶层文件的引脚分配图5、 性能测试与分析1分频器模块的仿真:仿真结果如下图所示。2计时控制模块的仿真结果如下图所示:关于仿真结果的说明:首先对各模块进行清零,使初始状态为S0,当K键按下即K=0时,系统由S0状态变成S1状态,松开按键K即K=1后,系统由S1状态变成S2状态,而使能端(EN)由低电平跳变为高电平,使数字秒表开始计时。当K键再次按下时,系统由S2状态变成S0状态,同时使能端(EN)由高电平跳变为低电平,使数字秒表停止计数,当再次按下K时,数字秒表继续计数,如此循环。3计时模块的仿真:1十进制计数器的仿真结果如下图所示:2六进制计数器的仿真结果如下图所示:3计数器的仿真结果如图所示:毫秒的低位向毫秒的高位的进位如

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论