- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
最近下载
- 供方评价表(物流服务).docx VIP
- 给排水国标图集-02S404:防水套管.pdf VIP
- Unit3ComparisonandContrast市公开课一等奖省赛课微课金奖PPT课件.pptx
- 60kW-258kWh磷酸铁锂储能系统项目方案书.pdf
- 数量指标 质量指标 时效指标 成本指标.xls VIP
- 2024年联通新融合发展技能竞赛(业务管理及稽核赛道)试题库(含答案).docx
- 江苏开放大学维修电工第3次形考作业答案.pdf
- 2023冠状动脉造影日间手术专家共识(完整版).pdf
- DB51/T 2919-2022FDIS古树名木养护和抢救复壮及管理技术规程.pdf
- BS EN 16314-2013 国外国际规范.pdf
文档评论(0)