数字秒表设计EDA课设报告
EDA数字秒表设计

《EDA技术与应用》课程设计报告报告题目:数字秒表设计作者所在系部:电子工程系作者所在专业:电子信息工程作者所在班级:作者姓名:指导教师:完成时间:2017-6-10容摘要在科技高度发展的今天,集成电路和计算机应用得到了高速发展。
尤其是计算机应用的发展。
它在人们日常生活已逐渐崭露头角。
大多数电子产品多是由计算机电路组成,如:手机、mp3等。
而且将来的不久他们的身影将会更频繁的出现在我们身边。
各种家用电器多会实现微电脑技术。
电脑各部分在工作时多是一时间为基准的。
本报告就是基于计算机电路的时钟脉冲信号、状态控制等原理,运用EDA技术及VHDL语言设计出的数字秒表。
秒表在很多领域充当一个重要的角色。
在各种比赛中对秒表的精确度要求很高,尤其是一些科学实验,他们对时间精确度达到了几纳秒级别。
利用VHDL语言设计基于计算机电路中时钟脉冲原理的数字秒表。
该数字秒表能对0秒~59分59.99秒围进行计时,显示最长时间是59分59秒,超过该时间能够进行报警。
计时精度达到10ms。
设计了复位开关和启停开关。
复位开关可以在任何情况下使用,使用以后计时器清零,并做好下一次计时的准备。
关键词:EDA技术、VHDL语言、分频器、计数器、数码管、蜂鸣器目录一概述 (1)二方案设计与论证 (1)三单元电路设计 (2)⒊1分频器的设计 (2)⒊2计时控制模块的设计 (3)⒊3计时模块的设计 (4)⒊⒊1十进制计数器的设计 (4)⒊⒊2六进制计数器的设计 (5)⒊⒊3计数器的设计 (6)⒊4显示模块的设计 (8)⒊⒋1选择器的设计 (8)⒊⒋2七段译码器的设计 (9)⒊5报警模块设计 (10)⒊6顶层文件的设计 (11)四器件编程与下载 (11)五性能测试与分析 (12)⒌1分频器模块的仿真 (12)⒌2计时控制模块的仿真 (12)⒌3计时模块的仿真 (13)⒌⒊1十进制计数器的仿真 (13)⒌⒊2六进制计数器的仿真 (13)⒌⒊3计数器的仿真 (13)⒌4显示模块的仿真 (15)⒌⒋1扫描模块的仿真 (15)⒌⒋2七段译码器的仿真 (15)⒌5报警模块的仿真 (15)⒌6顶层文件的仿真 (16)⒌7设计调试 (16)六实验设备 (16)七心得体会 (16)八参考文献 (16)课程设计任务书一、概述EDA是指以计算机为工作平台,融合了应用电子技术、计算机技术、智能化技术的最新成果而开发出的电子CAD通用软件包,它根据硬件描述语言VHDL完成的设计文件,自动完成逻辑编译、化简、分割、综合、优化、布局布线及仿真,直至完成对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA秒表实验报告

《EDA课程设计——秒表》题目数字秒表学院信息学院专业电子信息工程班级 11电子A姓名朱彦杰学号指导教师凌朝东课题名称秒表完成时间11.28指导教师凌朝东学生姓名朱彦杰班级11电子A总体设计要求和技术要点设计要求:5. 秒表,难度系数0.9要求:计时范围为0∼59 分59 秒,精度为百分之一秒;能同时显示分秒信息(LED 数码管)。
技术要点:1.利用VHDL语言设计基于计算机电路中时钟脉冲原理的数字秒表。
该秒表计时范围为0秒~59分59.99秒,显示的最长时间为59分59秒,计时精度为10毫秒以内,具有复位功能。
2.秒表有共有6个输出显示,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,所以共有6个计数器与之相对应,6个计数器的输出全都为BCD码输出。
一、系统组成模块连接图和系统框图- 3 -二、模块器件及其程序1、分频模块及其程序本模块实现脉冲分频,本实验使用的EP2C5T144C8的频率计进行50MHz 分频产生100HZ 的脉冲。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY fenpin ISPORT ( CLK: IN STD_LOGIC; OUTCLK: out std_logic ); END fenpin;ARCHITECTURE behav OF fenpin IS BEGINPROCESS( CLK )variable cnt:integer range 0 to ; BEGINIF CLK'EVENT AND CLK = '1' THEN if cnt= then cnt:=0; outclk<='1'; elsecnt:=cnt+1;分频器十进制计数器 时钟频率十进制计数器 十进制计数器六进制计数器十进制计数器 六进制计数器输出到LED开始清零outclk<='0';end if;END IF;END PROCESS;END behav;2、十进制程序产生99毫秒、秒的低位、分的低位的功能。
数字秒表实验报告---EDA

数字秒表实验报告—EDA项目背景本次实验旨在使用EDA工具设计一个数字秒表电路,通过FPGA开发板进行验证,具体要求如下:1.实现毫秒计时,并可以在数码管上显示当前计时数值。
2.支持开始/暂停、清零等操作。
设计思路本次实验的数字秒表电路由以下模块构成:1.时钟发生器模块:用于产生时钟信号,以驱动计数器进行计数。
2.计数器模块:通过时钟信号进行计数,并将计数结果传递给显示模块。
3.显示模块:将计数结果转换为数码管显示的数码信号,并控制数码管进行显示。
其中,时钟发生器模块和计数器模块都是基础电路模块,在这里不再赘述,下面将着重介绍显示模块的设计。
显示模块设计显示模块主要由控制模块和数码管模块构成。
控制模块根据计数结果和当前时间,控制数码管模块显示相应的数码。
在这里,我们采用的是共阳极的数码管。
具体来说,我们将控制模块分为两个子模块:时分秒计数器和数码显存控制器。
时分秒计数器时分秒计数器通过接收计数器模块的计数结果,将其转换为时分秒,并存储在计数器寄存器中。
计数器寄存器是一个64位的寄存器,由三个16位的子寄存器组成,用于存储时分秒。
当计数器模块的计数结果为0时,时分秒计数器会重置计数器寄存器。
数码显存控制器数码显存控制器由一个6位的数据存储器和一个6位的显示寄存器组成。
当计数器模块进行计数时,显示寄存器中存储的数码信号会根据时分秒计数器的值进行更新。
同时,数码显存控制器也会控制共阳极数码管进行相应的显示操作。
原理图设计根据以上的设计思路,我们可以得到数字秒表电路的原理图如下:原理图原理图EDA设计流程设计环境本次实验使用的是Xilinx ISE Design Suite 14.7,这是一个使用VHDL进行设计的EDA工具。
设计流程1.新建工程并设置工程名、目录、设备等基本信息。
2.添加源文件,包括时钟发生器模块、计数器模块、显示模块,以及顶层模块。
将所有模块综合为一个顶层设计。
3.检查时序约束,以保证电路能够正确运行。
EDA数字秒表设计

北华航天工业学院《EDA技术综合设计》课程设计报告"报告题目:数字秒表设计作者所在系部:电子工程系作者所在专业:电子信息工程作者所在班级:作者姓名:"指导教师姓名:完成时间: 2010年12月12日内容摘要应用VHDL语言设计数字系统,很多设计工作可以在计算机上完成,从而缩短了数字系统的开发时间。
我们尝试利用VHDL为开发工具设计数字秒表。
秒表的逻辑结构较简单,它主要由十进制计数器、六进制计数器、12500的分频器、数据选择器、和显示译码器等组成。
在整个秒表中最关键的是如何获得一个精确的100HZ 计时脉冲,除此之外,整个秒表还需有一个启动信号和一个清零信号,以便秒表能随意停止及启动。
秒表有共有6个输出显示,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,所以共有6个计数器与之相对应,6个计数器的输出全都为BCD码输出,这样便与同显示译码器连接。
开关设置秒表报警器,每10秒钟,蜂鸣器鸣响1声,发光二极管闪烁。
当计时达60分钟后,蜂鸣器鸣响10声。
"关键词:VHDL、数据选择器、计数器、显示器目录一、系统组成框图 (5)/二、各模块原理及其程序 (5)1、六进制计数器 (6)2、十进制计数器 (6)3、蜂鸣器 (7)4、译码器 (8)5、控制器 (9)三、系统仿真 (10)1、: (10)2、六进制计数器3、十进制计数器 (10)4、蜂鸣器 (10)5、译码器 (10)6、控制器 (10)四、心得体会 (11)^~课程设计任务书系统组成框图~二.各模块及的原理及其程序(1)六进制计数器library ieee;use count6 isport (clk,clr,start:in std_logic;daout:out std_logic_vector(3 downto 0);,cout:out std_logic );end count6;architecture behave of count6 issignal temp:std_logic_vector(3 downto 0);beginprocess(clk,clr)beginif clr='1' then temp<="0000";—cout<='0';elsif clk'event and clk='1' thenif start='1'thenif temp>="0101" then temp<="0000";cout<='1';else temp<=temp+1; cout<='0';end if;end if;"end if;end process;daout<=temp;end behave;(2)十进制计数器library ieee;use count10 isport((clr,start,clk:in std_logic;cout:out std_logic;daout:buffer std_logic_vector(3 downto 0));end count10;architecture behave of count10 isbeginprocess(clr,start,clk)begin^if clr='1' then daout<="0000";elsif ( clk'event and clk='1') thenif start='1' thenif daout="1001" then daout<="0000";cout<='1';else daout<=daout+1;cout<='0';end if;end if;end if;;end process;end behave;(3)蜂鸣器library ieee;use alarm isport(clk,I:in std_logic;q:out std_logic);"end alarm;architecture ar of alarm is signal n:integer range 0 to 20; signal q0:std_logic;beginprocess(clk)beginif clk'event and clk='1'~thenif i='0' then q0<='0';n<=0;elsif n<=19 and i='1' thenq0<=not q0;n<=n+1;else q0<='0';end if;:end if;end process;q<=q0;end ar;(4)译码器library ieee;useentity deled is]port(num:in std_logic_vector(3 downto 0);led:out std_logic_vector(6 downto 0));end deled ;architecture a of deled isbeginprocess(num)begincase num is$when"0000"=>led<="0111111";when"0001"=>led<="0000110";when"0010"=>led<="1011011";when"0011"=>led<="1001111";when"0100"=>led<="1100110";when"0101"=>led<="1101101";when"0110"=>led<="1111101";when"0111"=>led<="0100111";-when"1000"=>led<="1111111";when"1001"=>led<="1101111";when others=>led<="0000000";end case;end process;end a;(5)控制器library ieee;^use seltime isport(clr,clk: in bit;dain0,dain1,dain2,dain3,dain4,dain5: 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 a of seltime issignal temp:integer range 0 to 5;?beginprocess(clk)beginif (clr='1') thendaout<="0000";sel<="000";temp<=0;elsif (clk='1'and clk'event) then@if temp=5 then temp<=0;else temp<=temp + 1;end if;case temp iswhen 0=>sel<="000";daout<=dain0; when 1=>sel<="001";daout<=dain1; when 2=>sel<="010";daout<=dain2; when 3=>sel<="011";daout<=dain3; ;when 4=>sel<="100";daout<=dain4; when 5=>sel<="101";daout<=dain5; end case;end if;end process;end a;三.系统仿真(1)六进制【(2)十进制(3)蜂鸣器(4)译码器(5)控制器四.心得体会开始做设计时总是会犯一些错误,只有经过不停的改错不停的编译才能得到正确的程序。
EDA课程设计--数字秒表设计

电子课程设计—数字秒表的设计数字秒表的设计数字秒表的设计一、设计任务与要求1、数字秒表的计时范围是0秒~59分59.99秒,显示的最长时间为59分59秒。
秒。
2 2、数字秒表的计时精度是、数字秒表的计时精度是10ms 10ms。
3 3、、复位开关可以在任何情况下使用,复位开关可以在任何情况下使用,即便在计时过程中,即便在计时过程中,即便在计时过程中,只要按一下复位只要按一下复位开关,计时器就清零,并做好下次计时的准备。
开关,计时器就清零,并做好下次计时的准备。
4 4、、具有启具有启//停开关,停开关,即按一下启即按一下启即按一下启//停开关,停开关,启动计时器开始计时,启动计时器开始计时,启动计时器开始计时,再按一下再按一下启/停开关则停止计时。
停开关则停止计时。
二、总体框图由频率信号输出端输出频率为100HZ 的时钟信号,输入到微妙模块的时钟端clk ,高/低电平电平频率信号输入输入微妙模块微妙模块秒模块秒模块分模块分模块置数/位选位选显示模块显示模块进位进位微妙模块为100进制的计数器,产生的进位信号co 输入到下一级秒模块的时钟端,以此类推,直到分模块计数到59进60时,产生的进位信号不输出,计数清零。
将微妙、秒、分产生的计数通过置数/位选再通过显示模块实时显示。
设计方案:利用一块芯片完成除时钟源,利用一块芯片完成除时钟源,按键和显示器之外的所有数字电路功按键和显示器之外的所有数字电路功能。
所有数字逻辑功能都在CPLD 器件上用VHDL 语言实现。
这样设计具有体积小,设计周期短,调试方便,故障率地和修改升级容易等特点,本设计采用自顶向下,混合输入方式(原理图输入——顶层文件链接和VHDL 语言输入——各模块程序设计)实现数字秒表的设计,下载和调试。
三、功能模块1.1. 微秒模块微秒模块采用VHDL 语言输入方式,以时钟clk clk,清零信号,清零信号clr 以及暂停信号STOP 为进程敏感变量,程序如下:为进程敏感变量,程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity MINSECONDb isport(clk,clrm,stop:in std_logic;----时钟时钟//清零信号清零信号secm1,secm0:out std_logic_vector(3 downto 0);----秒高位秒高位//低位co:out std_logic);------- co:out std_logic);-------输出输出输出//进位信号进位信号 end MINSECONDb;architecture SEC of MINSECONDb is signal clk1,DOUT2:std_logic;beginprocess(clk,clrm)variable cnt1,cnt0:std_logic_vector(3 downto 0);---计数计数 VARIABLE COUNT2 :INTEGER RANGE 0 TO 10 beginIF CLK'EVENT AND CLK='1'THENIF COUNT2>=0 AND COUNT2<10 THEN COUNT2:=COUNT2+1; ELSE COUNT2:=0;DOUT2<= NOT DOUT2; END IF; END IF;if clrm='1' then----if clrm='1' then----当当clr 为1时,高低位均为0cnt1:="0000"; cnt0:="0000";elsif clk'event and clk='1' then if stop='1' then cnt0:=cnt0; cnt1:=cnt1; end if;if cnt1="1001" and cnt0="1000" ;then----then----当记数为当记数为9898(实际是经过(实际是经过59个记时脉冲)个记时脉冲) co<='1';----co<='1';----进位进位进位cnt0:="1001";----cnt0:="1001";----低位为低位为9elsif cnt0<"1001" then----elsif cnt0<"1001" then----小于小于9时 cnt0:=cnt0+1;----cnt0:=cnt0+1;----计数计数计数 --elsif cnt0="1001" then --clk1<=not clk1;elsecnt0:="0000";if cnt1<"1001" then----if cnt1<"1001" then----高位小于高位小于9时 cnt1:=cnt1+1; elsecnt1:="0000"; co<='0'; end if; end if; end if;secm1<=cnt1; secm0<=cnt0;end process; end SEC;程序生成器件如图:clk clrm stopsecm1[3..0]secm0[3..0]coMINSECONDbinst3微妙模块生成的器件可以实现带有100进制进位和清零功能,暂停等功能,MINSECONDb 输入为100HZ 脉冲和低电平的清零信号CLR 与暂停信号STOP STOP,输出,输出微妙个位、十位及进位信号CO CO。
EDA秒表设计

3)按键key的功能如下:
按第一下key,开始计数,并输源自计数值;第一个运动员到终点时按第二下key,秒表记住第一个运动员到终点的时间,但还在继续计数并输出计数值;第二个运动员到终点时按第三下key,停止计数,这时输出的计数值就是第二个运动员用的时间;然后按第四下key,秒表输出第一个运动员到终点的时间,即按第二下key时记住的计数值;按第五下key,秒表清0,新的周期开始。
begin
state<=Idle;
cnt<=0;
time1<=0;
end
else
case(state)
Idle: if (key)
begin
state<=Start;
cnt<=cnt+1;
tout<=cnt;
end
else
begin
state<=Idle;
cnt<=0;
tout<=0;
end
Start: if (key)
三、实验过程
1)画出秒表的状态转移图,标明各个状态的转移条件和输出。
2)用Verilog完成秒表的设计并仿真、综合出电路。
四、实验结果
module miaobiao (clk, key,reset, tout);
output [6:0]tout;
input clk,key,reset;
reg [6:0]tout;
end
else
begin
state<=Record;
cnt<=cnt+1;
tout<=cnt;
eda课程设计资料 实验一 数字式秒表

实验一 数字式秒表设计一、设计任务与技术指标试设计并制作一个用七段数码管显示的秒表,并具有如下指标:1. 设计一个用七段数码管显示的秒表,它有“分”、“秒”、“百分之一秒” 十进制显示,如图1所示:图1 秒表表盘示意图2. 开机显示00.00.00,最大显示23.59.99; 3. 能够准确地计时并正确显示时间,计时精度 0.01秒;4. 用户可以随时开始计时,也可随时结束计时。
二、设计原理该系统由时钟信号发生器、分频电路、计时电路、译码显示电路等模块组成。
其总体框图如图2所示:图2 系统总体框图1.时钟信号发生器使用GW48系统主板上的“CL0CK0”时钟频率来实现(信号频率范围:0.5Hz ~50MHz ,建议选用1.5MHz 信号源)。
2.分频电路的设计设输入频率为1.5MHz 的脉冲信号,要求得到100Hz 的脉冲信号,那么分频系数的计算公式如下:分频系数=分频后的频率分频前的频率3.计时电路在数字电路中,计时电路一般是用计数器来实现的,例如时间的“秒”与“分”就是一个60进制的问题。
60进制计数器外部端口图如图3所示:occlky[5…0]图3 计数器外部端口图时钟信号 发 生 器 分频 电路 计时 电路 数码管显示驱动电路计数器其中,oc是计数器进位输出端。
y[5…0]为本位输出端。
三、设计平台及可选器件GW48-CK EDA实验板开发系统、EP1K30、共阴极七段数码管、发光二极管、按键开关、电阻、电容等。
选用平台的模式:No.7四、设计要求1.编制VHDL程序,并在QuartusII环境下编译通过;2.对源程序进行逻辑仿真,仿真结果正确;3.将编译后的程序下载至目标器件,进行硬件测试,硬件测试结果正确;4.各块采用文本编辑的方式生成元件图形,在直接利用元件图形编辑秒表。
五、设计报告要求1.简单叙述设计过程(包括原理、方案);2.画出完整的顶层文件原理图;3.给出完整的程序设计文档;4.说明调试方法与调试过程;。
EDA秒表设计 实验报告

EDA课程设计报告——基于VHDL语言的秒表设计课程名称:EDA技术院系:地球物理及信息工程学院专业班级:电子信息工程08级2班学生姓名:学号:指导老师:完成时间:2011年5月18日秒表设计一. 设计要求利用EDA实验箱,通过VHDL语言进行编程,设计一个简单的秒表,并用EDA实验箱进行实现,具体设计要求如下:(1)有使能、暂停、继续、秒表计数功能;(2)带有异步复位功能;(3)显示分、秒信息,若需要,显示秒表信息。
二. 设计的作用、目的在本次设计中,可以简单的了解EDA技术的应用以及VHDL语言编写的方法。
通过设计一个秒表,可以掌握用VHDL设计多位加法计数器的方法,尤其是调整时钟使得每过一秒就改变一个数,达到设计的要求。
三. 设计的具体实现1.系统概述本次系统设计主要分三个部分,一是通过VHDL语言设计一个八位的加法计数器,来实现秒表的计时功能;二是通过调整时钟使秒表计数为每秒改变一个数;三是加入一些控制按键,实现使能、暂停、继续等功能。
2.程序具体设计秒表显示共有6位,两位显示分,两位显示秒,十分秒和百分秒各一位。
设计时使用一个计数器,随着时钟上升沿的到来循环计数,每计数一次,百分秒位加一,通过百分秒位满十进位来控制十分位的计数,十分位满十进位,依次类推,实现秒表计数。
为实现秒位的计时精确,百秒位必须以0.01秒的时间间隔计数,即时钟的频率是100Hz。
为此,本设计采用3MHz的时钟频率通过分频得到100Hz的时钟频率,再送给控制时钟以得到比较精确的CLK信号。
具体程序设计见附录。
引脚定义如下:其中,时钟信号CLK为3MHz的时钟频率,分频后得到的时钟为CLK2,输出引脚CLK2和输入引脚CLK2在外部相连,实现将分频后的时钟送入。
3.调试应用MAX+plus II软件编译调试实验控制程序, 仿真运行结果如下:(1)给时钟后,实现开始功能:开始键按下(STA=‘1’)后,秒表计数开始。
(2)给时钟后,实现暂停功能:从上图可以看出暂停键按下后(POS=‘1’),输出(CQ)保持不变,直到暂停键再次按下(POS=‘0’),输出才继续计数,从而实现了暂停的功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北华航天工业学院《EDA技术综合设计》课程设计报告报告题目:数字秒表设计作者所在系部:电子工程系作者所在专业:自动化作者所在班级: B08221作者姓名:赵天娇指导教师姓名:崔瑞雪完成时间: 2010年12月1日内容摘要EDA技术是电子设计技术和电子制造技术的核心,目前,电子系统的EDA 技术正从主要着眼于数字逻辑向模拟电路和数模混合电路的方向发展。
本设计主要内容是数字逻辑电路——数字秒表,数字秒表在日常生活中有广泛的用途,秒表的逻辑结构较简单,它主要由显示译码器、十进制计数器、六进制计数器和报警器组成。
四个10进制计数器:用来分别对百分之一秒、十分之一秒、秒和分进行计数;两个6进制计数器:用来分别对十秒和十分进行计数;显示译码器:完成对显示的控制。
根据电路持点,用层次设计概念将此设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,然后再将各模块合起来联试。
通过MAX+plusⅡ软件,对上述模块设计,仿真无误后,设计顶层文件,仿真无误后,下载到主芯片EPF10K10LC84-4中,按适配划分后的管脚定位,同相关功能块硬件电路接口连线,进行硬件实验。
EPF10K10LC84-4是Altera公司生产的FLEX10K系列可编程逻辑器件。
主要采用了嵌入式阵列,容量高达百万门,为可重复配置的CMOS SRAM工艺,系统工作过程中可随时改变配置,有利于现场编程,完成秒表设计的修改于完善。
关键词EDA、可编程逻辑器件、计数器、显示器目录(字体?)一、概述 (1)二、实验目的 (1)三、单元模块设计 (1)1十进制计数器 (1)2.六进制计数器 (2)3.时间数据分时扫描模块 (3)4.显示译码模块 (4)5.报警电路模块 (6)四、顶层文件原理图 (7)五、硬件要求 (8)六、实验连线 (8)七、实验总结 (8)八、心得体会 (9)九、参考文献 (10)课程设计任务书一、概述秒表的逻辑结构较简单,它主要由显示译码器、分频器、十进制计数器、六进制计数器和报警器组成。
秒表共有6个输出显示,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,所以共有6个计数器与之相对应,6个计数器的输出全都为BCD码输出,这样便于和显示译码器的连接。
当计时达60分钟后,蜂鸣器鸣响10声。
除此之外,整个秒表还需有一个启动信号和一个归零信号,以便秒表能随意停止及启动。
二、实验目的(看课设报告模板)1.掌握多位计数器相连的设计方法2.掌握十进制、六进制计数器的设计方法3.巩固多位共阴极扫描显示数码管的驱动及编码4.掌握扬声器的驱动5. 掌握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));end count10;architecture behave of count10 isbeginprocess(clr,start,clk)beginif clr='1' then daout<="0000";cout<='0';elsif ( clk'event and clk='1') thenif start='1' thenif daout="1001" then daout<="0000";cout<='1';else daout<=daout+1;cout<='0';end if;end if;end if;end process;end behave;对程序进行编译仿真后,仿真结果如下图:2.六进制计数器(count6.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 isbeginprocess(clr,start,clk)beginif clr='1' then daout<="0000";cout<='0';elsif ( clk'event and clk='1') thenif start='1' thenif 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_logic_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(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)beginif( clk'event and clk='1') thenif clr='1' thencount<="000";elsif count="101" then count<="000";else count<=count+1;end if;end if;case count iswhen"000"=>daout<=dain1;when"001"=>daout<=dain2;when"010"=>daout<=dain3;when"011"=>daout<=dain4;when"100"=>daout<=dain5;when"101"=>daout<=dain6;when others=>null;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(num: in std_logic_vector(3 downto 0);led: out std_logic_vector(6 downto 0));end deled;architecture behave of deled isbeginprocess(num)--abcdefgbegincase num iswhen"0000"=>led<="1111110"; when"0001"=>led<="0110000"; when"0010"=>led<="1101101"; when"0011"=>led<="1111001"; when"0100"=>led<="0110011"; when"0101"=>led<="1011011"; when"0110"=>led<="1011111"; when"0111"=>led<="1110000"; when"1000"=>led<="1111111"; when"1001"=>led<="1111011";when others=>null;end case;end process;end behave;对程序进行编译仿真后,仿真结果如下图:5.报警电路模块 (alarm.vhd)其程序如下:library ieee;use ieee.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)beginif ( clk'event and clk='1') thenif i='0' then count<=0;q0<='0';elsif i='1' thenif count<=19 thencount<=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。