数字系统课程设计设计.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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

文档评论(0)

tianya189 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档