- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数字系统设计
课程设计
设计题目:基于FPGA 的简单计时器
一、 功能说明与实现方法
1、实验项目
设计一个 60 秒倒计时器
2、设计要求(功能说明)
晶振输入信号:48MHZ 时钟信号
开机 60 秒开始倒计时,用两只七段数码管显示,计时结束时显示00,同时产生报警输出,报警信号用指示灯或蜂鸣器显示。
3、实验思路
根据设计指标,将电路设计分成 5 个模块:分频器,计数器,扫描计数, 数据选择器,七段显示译码器
二、 基于VHDL 方法的设计方案
1、系统需求和解决方案计划
在项目开始设计时,首先要确定系统的需求并发展出一个针对这些需求的计划。晶振 本设计所用为 48 MHz 的晶振信号。
分频器
对晶体振荡器产生的时钟信号进行分频,产生时间基准信号。本设计中将48MHz 的信号分频成 1KHz 和 1Hz 的基准频率,1KHz 的用于计数扫描达到视觉残留效果,1Hz 的用于倒计时计数。
计数器
对 1Hz 时间基准脉冲进行计数,完成倒计时功能。
扫描计数器
用于产生数码管位选信号和数据选择器的选通信号。数据选择器
实现选通数码管时发送相应要显示的数据七段译码器
产生数码管的七段驱动信号,将数据选择器输出的数据在数码管显示
三、 系统电路设计
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_unsigned.ALL;
entity jishiqi is --输入输出信号定义
Port ( clk_in : in std_logic; --时钟输入信号(设为 48MHz) alarm :out std_logic:=1; --计时结束报警信号定义 seg:out std_logic_vector (1 downto 0); --数码管位选信号定义
dig : out std_logic_vector (6 downto 0) --数码管段选信号定义
);
end jishiqi;
architecture Behavioral of jishiqi is -中间信号定义
signal cnt:integer range 1 to=1; --定义1Hz 分频器的计数信号, 计数范围 1signal cnt_1k:integer range 1 to 48000:=1; --定义 1KHz 分频器的计数信号, 计数范围 1~48000
signal data1 :std_logic_vector(3 downto 0):=0000;--定义个位数的计数信号
signal data2 :std_logic_vector(3 downto 0):=0110;--定义十位数的计数信号signal data :std_logic_vector(3 downto 0); --定义七段译码器的输入信号signal clk_1:std_logic:=0; --定义 1Hz 时钟信号
signal clk_1k:std_logic:=0; --定义 1KHz 时钟信号
signal sel: STD_LOGIC_vector(1 downto 0):=00; --定义计数扫描信号
begin
process(clk_in) --分频器 1,产生 1KHz 时钟
begin
if rising_edge(clk_in) then
if cnt_1k=48000 then --计数到 48000 时cnt_1k=1; --从 1 重新开始计数clk_1k=not clk_1k; --1KHz 时钟跳变
else cnt_1k=cnt_1k+1;
end if; end if;
end process ;
process(clk_in) --分频器 2,产生 1Hz 时钟,用于计数
begin
if rising_edge(clk_in) then
if cntthen --计数到时cnt=1; --从 1 重新开始计数clk_1=not clk_1; --1Hz 时钟跳变
else cnt=cnt+1;
end if; end if;
end process ;
process(clk_1) --计数器模块begin
if rising_edge(clk_1) then --在 1Hz 时钟的上升沿
if data1=0000 then --如果各位上数字减到 0 data1=1001; --从 9 开始重新减data2=data2-1; --十位上数字自减 1
else data1=data1-1; end if;
if data1=0000 and data2=0
您可能关注的文档
最近下载
- 最新:2024湖北省医疗服务价格项目及医保支付目录(完整版) .pdf VIP
- 高标准农田建设项目 投标方案(技术方案).doc
- 【桂科版】《综合实践活动》五下 第6课《购物的学问有趣的购物体验》课件.pptx VIP
- 深刻领会二十届三中全会精神,进一步全面深化改革-2025执业药师继续教育答案.docx VIP
- m埋地钢管结构计算1.0.xls VIP
- VTE相关知识培训课件.pptx VIP
- 2025年 河南统招专升本 公共英语 真题及参考答案.pdf VIP
- 《肿瘤治疗相关心功能不全防治与管理专家共识》解读(2)(1).pptx VIP
- 为爱痴狂 钢琴独奏版 钢琴谱五线谱.pdf VIP
- 机床夹具拆装与调整实验实验报告模板.pdf VIP
原创力文档


文档评论(0)