数字频率计设计VHDL.doc

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

实验十八 数字频率计 实验目的 在 MagicSOPC 实验箱上实现8位十进制频率计的设计。被测信号从 CLOCK0(数字信号时钟源)输入,经过检测后测得的频率值用数码管 1~8显示。 实验器材 1、SOPC实验箱 2、计算机(装有Quartus II 7.0软件) 实验预习 1、了解数字频率计设计原理各主要模块的设计方法。 2、提前预习,编写好主模块的VHDL程序。 实验原理 频率即信号1s内振动次数,因此测定信号的频率必须有一个脉宽为1秒的输入信号作为计数允许的信号;1 秒计数结束后,计数值锁入锁存器,并为下一测频计数周期作准备的计数器清零。 数字频率计框图如图18.1所示。由控制、计数、锁存、译码显示四部分组成。工作原理为:控制信号产生电路对系统时钟分频后产生0.5Hz的门控信号gate,锁存允许信号LE,清零信号MR。当gate为高电平时,计数器对被测信号cin进行计数;1s后gate变为低电平,计数器停止计数;当gate为低电平、LE上升沿这两个条件同时满足时,锁存电路将32位计数结果锁存送译码显示电路;当gate为低电平、MR上升沿这两个条件同时满足时,计数器清零,为下一次计数做准备。各信号之间的时序关系见图18.2所示。 图18.1 数字频率计框图 1、控制信号产生电路:根据选定的输入时钟信号设定分频系数,要求输出0.5Hz门控信号gate、1Hz锁存允许信号LE和1Hz清零信号MR。这几个信号控制整个系统的工作,非常关键,要求先锁存后清零,否则计数结果可能丢失,参考时序图18.2所示。 2、计数模块:定义十进制计数器元件,有cp(时钟输入)、MR(清零输入,上升沿有效)、gate(门控信号)三个个输入引脚,Q0~Q3、co(进位)5个输出引脚。功能定义为gate为高电平时在cp上升沿计数;gate为低MR为高时清零。利用元件调用的方法组成8位十进制计数器 3、锁存电路:设计一32位锁存器,定义gate(门控信号)、LE(锁存允许,上升沿有效)d0~d31共34个输入引脚;Q0~Q31共32个输出引脚。功能定义为gate为低时在LE上升沿锁存。 4、译码显示模块:参考数字钟。 图18.2 各信号之间的时序关系 程序模块设计 十进制模块 Library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; Entity counter10 IS PORT(clk,rst:in std_logic; bcd:out std_logic_vector(3 downto 0); up:out std_logic); END entity counter10; Architecture bhv of counter10 IS signal bcd_r:std_logic_vector(3 downto 0); signal up_r:std_logic; Begin Process(clk,rst) Begin IF rst=1 THEN bcd_r=(others=0); up_r=0; ELSIF clkEVENT AND clk=1 THEN IF bcd_r=1001 THEN bcd_r=(others=0);up_r=1; ELSE bcd_r=bcd_r+1; up_r=0; END IF; END IF; END PROCESS; bcd=bcd_r; up=up_r; END bhv; 信号控制模块 Library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; ENTITY kongzhi IS PORT(rst_in,sys_clk:in std_logic; gate,lock,rst:out std_logic); END ENTITY; Architecture one of kongzhi IS signal count:std_logic_vector(25 downto 0); Begin PROCESS(sys_clk,rst_in) Begin IF rst_in=0 THEN count=(others=0);gate=0;lock=0;rst=0; ELSIF sys_clkEVENT AND sys_clk=1 THEN IF count=10110111000110110000000011THEN count=00000000000000000000000000; gate=1

文档评论(0)

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

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

1亿VIP精品文档

相关文档