欢迎来到天天文库
浏览记录
ID:18536715
大小:167.28 KB
页数:10页
时间:2018-09-19
《数字系统课程设计设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数字系统设计课程设计设计题目:基于FPGA的简单计时器一、功能说明与实现方法1、实验项目设计一个60秒倒计时器2、设计要求(功能说明)晶振输入信号:48MHZ时钟信号开机60秒开始倒计时,用两只七段数码管显示,计时结束时显示00,同时产生报警输出,报警信号用指示灯或蜂鸣器显示。3、实验思路根据设计指标,将电路设计分成5个模块:分频器,计数器,扫描计数,数据选择器,七段显示译码器二、基于VHDL方法的设计方案1、系统需求和解决方案计划在项目开始设计时,首先要确定系统的需求并发展出一个针对这些需求的计划。晶振本设计所用为48MHz的晶
2、振信号。分频器 对晶体振荡器产生的时钟信号进行分频,产生时间基准信号。本设计中将48MHz的信号分频成1KHz和1Hz的基准频率,1KHz的用于计数扫描达到视觉残留效果,1Hz的用于倒计时计数。计数器 对1Hz时间基准脉冲进行计数,完成倒计时功能。扫描计数器用于产生数码管位选信号和数据选择器的选通信号。数据选择器实现选通数码管时发送相应要显示的数据七段译码器产生数码管的七段驱动信号,将数据选择器输出的数据在数码管显示一、系统电路设计libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD
3、_LOGIC_unsigned.ALL;entityjishiqiis--输入输出信号定义Port(clk_in:instd_logic;--时钟输入信号(设为48MHz)alarm:outstd_logic:='1';--计时结束报警信号定义seg:outstd_logic_vector(1downto0);--数码管位选信号定义dig:outstd_logic_vector(6downto0)--数码管段选信号定义);endjishiqi;architectureBehavioralofjishiqiis-中间信号定义sign
4、alcnt:integerrange1to48000000:=1;--定义1Hz分频器的计数信号,计数范围1~48000000signalcnt_1k:integerrange1to48000:=1;--定义1KHz分频器的计数信号,计数范围1~48000signaldata1:std_logic_vector(3downto0):="0000";--定义个位数的计数信号signaldata2:std_logic_vector(3downto0):="0110";--定义十位数的计数信号signaldata:std_logic_v
5、ector(3downto0);--定义七段译码器的输入信号signalclk_1:std_logic:='0';--定义1Hz时钟信号signalclk_1k:std_logic:='0';--定义1KHz时钟信号signalsel:STD_LOGIC_vector(1downto0):="00";--定义计数扫描信号beginprocess(clk_in)--分频器1,产生1KHz时钟beginifrising_edge(clk_in)thenifcnt_1k=48000then--计数到48000时cnt_1k<=1;--从
6、1重新开始计数clk_1k<=notclk_1k;--1KHz时钟跳变elsecnt_1k<=cnt_1k+1;endif;endif;endprocess;process(clk_in)--分频器2,产生1Hz时钟,用于计数beginifrising_edge(clk_in)thenifcnt=48000000then--计数到48000000时cnt<=1;--从1重新开始计数clk_1<=notclk_1;--1Hz时钟跳变elsecnt<=cnt+1;endif;endif;endprocess;process(clk_1
7、)--计数器模块beginifrising_edge(clk_1)then--在1Hz时钟的上升沿ifdata1="0000"then--如果各位上数字减到0data1<="1001";--从9开始重新减data2<=data2-1;--十位上数字自减1elsedata1<=data1-1;endif;ifdata1="0000"anddata2="0000"then--倒计时结束alarm<='0';--使能报警信号data1<="0000";--计时结束时显示00data2<="0000";endif;endif;endpro
8、cess;process(clk_1k,sel)--数据扫描计数器,用于产生选择两个数码管点亮的信号beginifrising_edge(clk_1k)then--采用1KHz信号触发,达到视觉暂留要求ifsel="10"thensel<="01"
此文档下载收益归作者所有