- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数字频率计的设计及实现
E D A 实验报告(四)
实验地点:211大楼606609
任课教师:窦衡
学生姓名:李志
学 号:2402401024
实验四 数字频率计的设计及实现
一、预习内容
1、什么是数字频率计;
2、数字频率计实现原理;
3、写出原理草图和源程序。
二、实验目的二、实验目的
1、学会数字频率计的设计方法;
2、掌握自顶向下的设计方法,体会其优越性。
三、实验器材三、实验器材
PC机一台、EDA教学实验系统一台、下载电缆一根(已接好)、导线若干
四、实验内容
1、用VHDL完成8位数字频率计的设计, 该频率计要求频率测量范围:1 Hz ~ 20 MHz;测量误差≤0.1%1、画出实验原理方框图;
2、设计各个元件;
3、进行元件例化;
4、下载程序,查看数码管显示的频率是否和待测的频率相同。
六、实验原理和设计
1、测频原理
若某一信号在T秒时间里重复变化了N 次,则根据频率的定义可知该信号的频率fs 为:fs=N/T 通常测量时间T取1秒或它的十进制时间。频率计方框图如下:
(1)、时基T 产生电路:
提供准确的计数时间T。晶振产生一个振荡频率稳定的脉冲,通过分频整形、门控双稳后,产生所需宽度的基准时间T的脉冲,又称闸门时间脉冲。
注意:分频器一般采用计数器完成,计数器的模即为分频比。
(2)、计数脉冲形成电路:
将被测信号变换为可计数的窄脉冲,其输出受闸门脉冲的控制。
(3)、计数显示电路:
对被测信号进行计数,显示被测信号的频率。计数器一般采用多位10 进制计数器;控制逻辑电路控制计数的工作程序:准备、计数、显示、复位和准备下一次测量。
2、实现框图:
1)、门控电路
1)、测频控制逻辑电路(以1 秒为例)
2) 产生一个1秒脉宽的周期信号;
3) 对计数器的每一位计数使能进行控制;
4) 完成下一次测量前的计数器复位;
以下是一种可能的时序关系:
门控电路框图如右图
2)、 10 进制计数器
要求具有计数使能端CNTEN、复位端CLR、进位输出端CO。
3)、 32位锁存器
4)、 扫描电路
5)、 系统框图
4、VHDL源程序(七段译码器源程序框图与实验二相同)
--1位十进制计数器描述
library ieee;
use ieee.std_logic_1164.all;
entity cnt10 is
port(clk:in std_logic;
clr:in std_logic;
ena:in std_logic;
cq:out integer range 0 to 15;
carry_out:out std_logic);
end entity cnt10;
architecture art of cnt10 is
signal cqi:integer range 0 to 15;
begin
process(clk,clr,ena)is
begin
if clr=1then cqi=0;
elsif clkevent and clk=1then
if ena=1then
if cqi9 then cqi=cqi+1;
else cqi=0;
end if;
end if;
end if;
end process;
process(cqi) is
begin
if cqi=9 then carry_out=1;
else carry_out=0;
end if;
end process;
cq=cqi;
end architecture art;
--门控电路描述
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity testctl is
port(clk:in std_logic;
tsten:out std_logic;
clr_cnt:out std_logic;
load:out std_logic);
end entity testctl;
architecture art of testctl is
signal div2clk:std_logic;
begin
process(clk) is
begin
if clkevent and clk=1 then
div2clk=not div2clk;
end if;
end process;
process(clk,div2clk)is
begin
if clk=0 and div2clk=0then
clr_cnt=1;
else clr_cnt=0;
end if;
end process;
load=not div2cl
文档评论(0)