八位数字频率计实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
八位十进制数字频率计
一、设计任务
(1)熟悉Quatus 11软件的基本使用方法。
(2)熟悉EDA实验开发系统的使用方法。
(3)学习时序电路的设计、仿真和硬件设计,进一步熟悉VHDL设计技术。
(4)分析了8位十进制数字频率计的基本原理。
(5)对数字频率计的各个模块功能的分析,进行了功能仿真测试,得出仿真波形图。
二、方案选择与设计
数字频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为1秒。闸门时间也可以大于或小于一秒。闸门时间越长,得到的频率值就越准确,但闸门时间越长则每测一次频率的间隔就越长。闸门时间越短,测的频率值刷新就越快,但测得的频率精度就受影响。数字频率计的主要功能是测量周期信号的频率。频率是单位时间(1S)内信号发生周期变化的次数。如果我们能在给定的1S时间内对信号波形计数,并将计数结果显示出来,就能读取被测信号的频率。数字频率计首先必须获得相对稳定与准确的时间,同时将被测信号转换成幅度与波形均能被数字电路识别的脉冲信号,然后通过计数器计算这一段时间间隔内的脉冲个数,将其换算后显示出来。这就是数字频率计的基本原理。
设计:
1)脉冲信号的频率就是在单位时间内所产生的脉冲个数,其表达式为,f为被测信号的频率,N为计数器所累积的脉冲个数,T为产生N个脉冲所需的时间。所以,在1秒时间内计数器所记录的结果,就是被测信号的频率。
2)被测频率信号取自实验箱晶体振荡器输出信号,加到主控室的输入端。
3)再取晶体振荡器的另一标准频率信号,经分频后产生各种时基脉冲:1ms,
10ms,0.1s,1s等,时基信号的选择可以控制,即量程可以改变。
4)时基信号经控制电路产生闸门信号至主控门,只有在闸门信号采样期间内(时基信号的一个周期),输入信号才通过主控门。
5)f=N/T,改变时基信号的周期T,即可得到不同的测频范围。
6)当主控门关闭时,计数器停止计数,显示器显示记录结果,此时控制电路输出一个置零信号,将计数器和所有触发器复位,为新一次采样做好准备。
系统总体框架图
8位十进制数字频率计的电路逻辑图
8位十进制数字频率计的电路逻辑图,它由一个测频控制信号发生器TESTCTL、8个有时钟使能的十进制计数器CNT10、一个32位锁存器REG32B[8]组成。以下分别叙述频率计各逻辑模块的功能与设计方法。8位十进制数字频率计的电路逻辑如图4.18所示。
图4.1 8位十进制数字频率计的电路逻辑图
三软件设计与仿真
各功能模块的源程序及每个程序运行后的仿真波形:
测频控制信号发生器的功能模块及仿真
(1)测频控制信号发生器的功能模块如下图所示。
测频控制信号发生器的功能模块图
测频控制电路图
(2)源程序如下:
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 TESTCTL;
ARCHITECTURE ART OF TESTCTL IS
SIGNAL Div2CLK:STD_LOGIC;
BEGIN
PROCESS(CLK)
BEGIN IF CLK'EVENT AND CLK='1'THEN
Div2CLK<=NOT Div2CLK;
END IF;
END PROCESS;
PROCESS(CLK,Div2CLK)
BEGIN
IF CLK='0'AND Div2CLK='0'THEN
CLR_CNT<='0';
ELSE CLR_CNT<='1';
END IF;
END PROCESS;
LOAD<=NOT Div2CLK;
TSTEN<=Div2CLK;
END ART;
频率计的关键是设计一个测频率控制信号发生器,产生测量频率的控制时序。控制时钟信号CLK取为1Hz,2分频后即可产生一个脉宽为1秒的时钟TSTEN,以此作为计数闸门信号。当TSTEN为高电平时,允许计数;当TSTEN由高电平变为低电平(下降沿到来)时,应产生一个锁存信号,将计数值保存起来;锁存数据后,还要在下次TSTEN上升沿到哦来之前产生零信号CLEAR,将计数器清零,为下次计数作准备,如下图所示为测频控制信号仿真图。
32位锁存器的功能模块及仿真
(1)32位锁存器的功能模块下图所示。
锁存器的功能模块图
锁存器电路图
(2)源程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY REG32B IS
PORT (LOAD:IN STD_LOGIC;
DIN1:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
DIN2:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
DIN3:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
DIN4:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
DIN5:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
DIN6:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
DIN7:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
DIN8:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
DOUT1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
DOUT2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
DOUT3:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
DOUT4:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
DOUT5:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
DOUT6:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
DOUT7:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
DOUT8:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END REG32B;
ARCHITECTURE ART OF REG32B IS
BEGIN
PROCESS(LOAD,DIN1,DIN2,DIN3,DIN4,DIN5,DIN6,DIN7,DIN8) BEGIN
IF(LOAD'EVENT AND LOAD='1')THEN
DOUT1<=DIN1;
DOUT2<=DIN2;
DOUT3<=DIN3;
DOUT4<=DIN4;
DOUT5<=DIN5;
DOUT6<=DIN6;
DOUT7<=DIN7;
DOUT8<=DIN8;