网站大量收购独家精品文档,联系QQ:2885784924

EDA简易数字频率计设计.doc

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
EDA简易数字频率计设计

唐 山 学 院 EDA课 程 设 计 题 目 简易数字频率计设计 系 (部) 信息工程系 班 级 12自动化 姓 名 陈帅 学 号 4120219124 指导教师 郭耀华 2014 年12月 21日 至 12 月 26 日 共 1 周 2014年 12 月 26 日 目 录 1 引言 2 实验 2 2.1 实验原理 2 2.1.1基本原理 2.1.2原理框图 2.2各模块程序 3 2.2.1分频定时模块的设计 2.2.2待测信号计数模块的设计 2.2.3显示编译模块的设计 8 .4顶层模块的设计 12 封装图 15 2.2.6.引脚锁定 5 4 结论 17 参考文献 8 附 录 9 1 引言 1)设计四位十进制的简易数字频率计,对1HZ-10MHZ的方波信号进行测量; (2)测量的方波频率值要在4位数码管上进行显示; (3)根据不同的待测方波信号,频率计分为4个量程进行测量,四个量程分别为乘 1乘10,乘100,乘1000量程。 (4)此频率计要设有一个整体复位控制; 2.1.1基本原理 数字频率计的主要功能是测量周期信号的频率。频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。 频率是单位时间(1秒)内方波信号发生周期变化的次数。在给定的1秒时间内对方波信号波形计数,并将所计数值显示出来,就能读取被测信号的频率。数字频率计首先必须获得相对稳定与准确的时间,然后通过计数器计算这一段时间间隔内的方波脉冲个数并显示出来。这就是数字频率计的基本原理。 脉冲信号的频率就是在单位时间内所产生的脉冲个数,其表达式为f=N/T,其中f为被测信号的频率,N为计数器所累计的脉冲个数,T为产生N个脉冲所需的时间。计数器所记录的结果,就是被测信号的频率。library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity ctr is port(clk,rst: in std_logic; clk1,en: buffer std_logic); end ctr; architecture bhv of ctr is begin process(clk,rst) variable c:integer range 0 to 2begin if rst=1 then en=0; elsif clkevent and clk=1 then c:=c+1; if c=1 then c:=0; en=not en; end if; end if; clk1=not(clk or en); end process; end bhv; 此测频控制发生器的仿真结果如图所示。 此模块如果仿真12M分频器很困难,为了看到仿真效果,改成20倍分频器,得到了此仿真结果。如果按程序下载,在硬件上能很清楚的看到由6MHZ的基准信号得到了脉宽为1秒的控制信号en和控制输出信号clk1,rst实现了整体异步清零的功能。 2.2.2待测信号计数器counter模块的设计 该模块通过ctr模块所产生的脉宽为1秒的en信号来对待测信号进行计数。用28位二进制数d进行对待测信号的计数,同时用sel表示自动量程根据所得数值d变化,sel为“0001”时代表乘1,sel为“0010”时代表乘10,sel为“0100”时代表乘100,sel为“1000”时代表乘1000。如果测量选择量程太小或者待测方波信号频率超出10MHZ,均无法正确显示测量结果,则将b置高电平进行警告。 此待测信号计数器的程序如下: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity counter is port(en,clkin,rst:in std_logic; a:in std_logic_vector(3 downto 0); sel:out std_logic_vector(3 downto 0); d :out std_logic_vector(27 downto 0); b:out

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档