1、EDA秒表设计实验报告 EDA课程设计报告 基于VHDL语言的秒表设计课程名称: EDA技术 院 系: 地球物理及信息工程学院 专业班级: 电子信息工程08级2班 学生姓名: 学 号: 指导老师: 完成时间: 2011年5月18日 秒表设计一. 设计要求利用EDA实验箱,通过VHDL语言进行编程,设计一个简单的秒表,并用EDA实验箱进行实现,具体设计要求如下:(1)有使能、暂停、继续、秒表计数功能;(2)带有异步复位功能;(3)显示分、秒信息,若需要,显示秒表信息。二. 设计的作用、目的在本次设计中,可以简单的了解EDA技术的应用以及VHDL语言编写的方法。通过设计一个秒表,可以掌握用VHDL
2、设计多位加法计数器的方法,尤其是调整时钟使得每过一秒就改变一个数,达到设计的要求。三. 设计的具体实现1.系统概述本次系统设计主要分三个部分,一是通过VHDL语言设计一个八位的加法计数器,来实现秒表的计时功能;二是通过调整时钟使秒表计数为每秒改变一个数;三是加入一些控制按键,实现使能、暂停、继续等功能。2.程序具体设计秒表显示共有6位,两位显示分,两位显示秒,十分秒和百分秒各一位。设计时使用一个计数器,随着时钟上升沿的到来循环计数,每计数一次,百分秒位加一,通过百分秒位满十进位来控制十分位的计数,十分位满十进位,依次类推,实现秒表计数。为实现秒位的计时精确,百秒位必须以0.01秒的时间间隔计数
3、,即时钟的频率是100Hz。为此,本设计采用3MHz的时钟频率通过分频得到100Hz的时钟频率,再送给控制时钟以得到比较精确的CLK信号。具体程序设计见附录。引脚定义如下:其中,时钟信号CLK为3MHz的时钟频率,分频后得到的时钟为CLK2,输出引脚CLK2和输入引脚CLK2在外部相连,实现将分频后的时钟送入。3调试应用MAX+plus II软件编译调试实验控制程序, 仿真运行结果如下:(1)给时钟后,实现开始功能:开始键按下(STA=1)后,秒表计数开始。(2)给时钟后,实现暂停功能:从上图可以看出暂停键按下后(POS=1),输出(CQ)保持不变,直到暂停键再次按下(POS=0),输出才继续
4、计数,从而实现了暂停的功能。(3)给时钟后,实现复位功能:从上图可以看出复位键按下后(RST=1),输出(CQ)全部变为复位状态(0),直到复位键再次按下(RST=0),输出才继续计数,从而实现了复位的功能。(4)给时钟后,实现停止的功能:从上图可以看出停止键按下后(STO=1),输出(CQ)全部保持当前状态不变,直到停止键再次按下(STO=0),输出才从全零状态继续计数,从而实现了停止的功能。(5)综合功能的实现:4系统调试中出现的问题在初次系统调试的过程中,由于实验箱上并没有时钟满足运行时是一秒计一个数,所以无法实现秒表的功能。后来通过在程序中加入一个时钟分频的进程,利用实验箱上现有的时钟
5、再得到一个新的时钟,实现了秒表的计时功能。四心得体会 通过本次EDA的实验,进一步了解了VHDL语言的特点,了解了硬件描述语言的编程思想、编程规范,在一定程度上提高了实际编程能力。附录运行程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY MIAOBIAO IS PORT (CLK,CLK1,STA,POS,STO,RST: IN STD_LOGIC; CQ1,CQ2,CQ3,CQ4,CQ5,CQ6 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); CLK
6、2:OUT STD_LOGIC );END MIAOBIAO;ARCHITECTURE BEHAV OF MIAOBIAO ISBEGINPROCESS(CLK) -由频率为3MHz的时钟产生频率为100Hz的时钟VARIABLE NUM:INTEGER RANGE 0 TO 15000;-定义计数器VARIABLE Q:STD_LOGIC;BEGINIF CLKEVENT AND CLK=1 THENIF NUM=15000 THEN NUM:=0;Q:=NOT Q;-计数器每计数15000,时钟改变电平-值ELSE NUM:=NUM+1;END IF;END IF;CLK20);CQI2:
7、=(OTHERS=0);CQI3:=(OTHERS=0); CQI4:=(OTHERS=0);CQI5:=(OTHERS=0);CQI6:=(OTHERS=0); ELSIF CLK1EVENT AND CLK1=1 THEN IF STA=1 THEN IF RST=0 THEN IF POS=0 THEN IF CQI1=00111011 THEN CQI1:=(OTHERS = 0);-百分秒位满59进-位 IF CQI2=00111011 THEN CQI2:=(OTHERS = 0); -十分秒位满59进-位 IF CQI3=00111011 THEN CQI3:=(OTHERS =
8、 0); -秒位满59进位 IF CQI4=00111011 THEN CQI4:=(OTHERS = 0); -十秒位满六进位 IF CQI5=00111011 THEN CQI5:=(OTHERS = 0); -分位满十进位 IF CQI6=00111011 THEN CQI6:=(OTHERS = 0); -十分位满六进位 ELSE CQI6:=CQI6+1; END IF; ELSE CQI5:=CQI5+1; END IF; ELSE CQI4:=CQI4+1; END IF; ELSE CQI3:=CQI3+1; END IF; ELSE CQI2:=CQI2+1; END IF; ELSE CQI1:=CQI1+1; END IF; END IF; END IF; END IF; IF RST=1 THEN CQI1:=(OTHERS = 0);CQI2:=(OTHERS = 0); CQI3:=(OTHERS = 0);CQI4:=(OTHERS = 0); CQI5:=(OTHERS = 0);CQI6:=(OTHERS = 0); END IF; CQ1=CQI1;CQ2=CQI2;CQ3=CQI3; CQ4=CQI4;CQ5=CQI5;CQ6=CQI6;END IF;END PROCESS;END BEHAV;