目录
1 绪论 .................................................................... 1 2 设计要求 ................................................................ 2 3 总体设计要求 ............................................................ 2
3.1 基本原理 .......................................................... 2 3.2分频器模块 ......................................................... 3 3.3 计数模块 .......................................................... 4 3.4 记录模块 .......................................................... 5 3.5 寄存器模块 ........................................................ 6 3.6 回放模块 .......................................................... 8 3.7 选择模块 .......................................................... 9 3.8 数显模块 ......................................................... 11 3.9 数字秒表的总原理图 ............................................... 13 4 仿真调试 ............................................................... 13
4.1 分频器模块的仿真调试 ............................................. 13 4.2 计数器模块的仿真调试 ............................................. 14 4.3 记录模块的仿真调试 ............................................... 14 4.4 寄存器模块的仿真 ................................................. 14 4.5 回放模块的仿真调试 ............................................... 15 4.6 选择模块的仿真调试 ............................................... 15 5 管脚分配 ............................................................... 16 6 总结与心得体会 ......................................................... 17 参考文献 ................................................................. 18 附录:源程序代码 ......................................................... 19
0
1 绪论
EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪60年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。
在EDA软件开发方面,目前主要集中在美国。但各国也正在努力开发相应的工具。日本、韩国都有ASIC设计工具,但不对外开放。中国华大集成电路设计中心,也提供IC设计软件,但性能不是很强。相信在不久的将来会有更多更好的设计工具在各地开花并结果。
1
2 设计要求
① 设计一个能测量4名运动员短跑成绩的数字秒表。要求用四位数码管显示时间,格式为00.00s。
② 秒表设置3个开关输入(清零开关1个,记录开关1个,回放开关1个)。按下“记录”开关,则将当前运动员成绩时间暂存,按下回放开关,依次回放各运动员成绩。
3 总体设计要求
3.1 基本原理
根据要求,数字秒表输入信号有:时钟信号CLK,清零开关CLR,记录开关RST,回放开关RSH;数字秒表的输出信号有:4个数码显示管的显示。数字秒表的主要功能是:计数功能和记录功能
数字秒表主要由七个部分构成:一是分频器;二是计数模块;三是记录模块;四是寄存器模块;五是回放模块;六是选择模块;七是数显模块。
当清零开关置低位‘0’时,所有显示均清零。
分频器模块的作用是将实验板子上50MHZ的信号频率降低到计数所需要的频率100HZ,然后将100HZ的信号作为实验的脉冲输入。
计数模块分为十秒、秒、百毫秒、十毫秒四个计数器。当时钟信号来临时,开始计数,十毫秒的进位信号让百毫秒开始计数,百毫秒的进位使秒开始计数,以此类推。
记录模块所需要实现的:当按下记录开关的时候,使能开关EN加一,并将当前的显示时间存入到使能所对应的组寄存器中。
寄存器模块功能是当记录模块的使能信号来临时,对应的一组寄存器将当前的时间存储起来,到要用的时候再调用。
回放模块:当回放开关按下形成一个脉冲的时候,使能开关PN加一,并将对应的寄存器中信号送入数显模块。
选择模块:通过使能开关PN来选择所需要的信号送到数显模块,完成计数,记录和回放的功能。
数显模块:将选择模块的信号经过译码后输出对应的时间显示
2
数显 计数 数字秒表 记录开关 回放开关 记录 寄存器
图1.总体设计框图
分频器 3.2分频器模块
分频器模块所实现的具体功能是将50MHZ的信号转化成所需要的100HZ的信号,所以需要对信号进行500000的分频,设计思想是:在程序内设置具有某范围的变量随时钟计数,前一半输出“0”,后一半输出“1”。实现这个分频器模块的VHDL程序为:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY fenpinl IS --------分频器 PORT(CLK_IN:IN STD_LOGIC; CLK_OUT:OUT STD_LOGIC); END ENTITY fenpinl;
ARCHITECTURE structure of fenpinl is constant count0:integer:=500000; begin
divide_clk:process(CLK_IN) variable n0:integer range 0 to 499999; begin
IF RISING_EDGE(CLK_IN) THEN if(n0<(count0/2))then CLK_OUT<='0'; n0:=n0+1;
elsif(n0 3 CLK_OUT<='1'; n0:=n0+1; else n0:=0; END if; END IF; END PROCESS divide_clk; END ARCHITECTURE structure; 图2.分频器封装图 3.3 计数模块 本模块实现的是计数功能,时钟信号是由分频器所得到的100HZ信号,并且本 模块由4个十进制的计数模块构成,各级进位作为高级的时钟信号,分别对应十秒,秒,百毫秒和十毫秒,理论可以显示出的最大值为99.99s,并且计数器都是异步清零的。 实现本模块的程序为: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity count10 is ----------十进制计数器 port(clk,clr:in std_logic;----时钟/清零信号 dout:buffer std_logic_vector(3 downto 0); 4