八位十进制数字频率计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDA课程设计报告书
题目:8位十进制数字频率计的设计姓名:
学号:
所属学院:
专业年级:
指导教师:
完成时间:
8位十进制数字频率计的设计
一、设计介绍
数字频率计是采用数字电路制做成的能实现对周期性变化信号频率测量的仪器。频率计主要用于测量正弦波、矩形波、三角波和尖脉冲等周期信号的频率值。其扩展功能可以测量信号的周期和脉冲宽度。通常说的,数字频率计是指电子计数式频率计。频率计主要由四个部分构成:输入电路、时基(T)电路、计数显示电路以及控制电路。在电子技术领域,频率是一个最基本的参数。数字频率计作为一种最基本的测量仪器以其测量精度高、速度快、操作简便、数字显示等特点被广泛应用。许多物理量,例如温度、压力、流量、液位、PH值、振动、位移、速度等通过传感器转换成信号频率,可用数字频率计来测量。尤其是将数字频率计与微处理器相结合,可实现测量仪器的多功能化、程控化和智能化.随着现代科技的发展,基于数字式频率计组成的各种测量仪器、控制设备、实时监测系统已应用到国际民生的各个方面。
二、设计目的
(1)熟悉Quatus 11软件的基本使用方法。
(2)熟悉EDA实验开发系统的使用方法。
(3)学习时序电路的设计、仿真和硬件设计,进一步熟悉VHDL设计技术。
三、数字频率计的基本原理
数字频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为1秒。闸门时间也可以大于或小于一秒。闸门时间越长,得到的频率值就越准确,但闸门时间越长则每测一次频率的间隔就越长。闸门时间越短,测的频率值刷新就越快,但测得的频率精度就受影响。数字频率计的主要功能是测量周期信号的频率。频率是单位时间(1S)内信号发生周期变化的次数。如果我们能在给定的1S时间内对信号波形计数,并将计数结果显示出来,就能读取被测信号的频率。数字频率计首先必须获得相对稳定与准确的时间,同时将被测信号转换成幅度与波形均能被数字电路识别的脉冲信号,然后通过计数器计算这一段时间间隔内的脉冲个数,将其换算后显示出来。这就是数字频率计的基本原理。频率计测量频率需要设计整形电路使被测周期性信号整形成脉冲,然后设计计数器对整形后的脉冲在单位时间内重复变化的次数进行计数,计数器计出的数字经锁存器锁存后送往译码驱动显示电路用数码管将数字显示出来,需要设计控制电路产生允许产生的门匣信号,计数器的清零信号和锁存器的锁存信号使电路正常工作,再设计一个量程自动转换使测量范围更广。
四系统总体框架
图 3.1 系统总体框架图
总体框图设计思路:由50MHz系统时钟分频得到0.5Hz的基准时钟。在基准时钟的1S 高电平期间计被测频率的脉冲个数,1S高电平结束时计数结束,所记录的脉冲个数是被测信号的频率,为了在数码管上显示计数结果需要锁存器将所计的数锁存,因此,在基准时钟下降沿来的时候锁存器实现锁存功能。为了下次计数必须将本次计数的结果清零,所以在基准时钟低电平期间对计数器清零。被测频率从计数器的是中端输入实现频率的测试。将锁存器锁存的数据输入扫描器,通过译码器将锁存的二进制数译成十进制然后显示到数码管上,最终被读出来。
五、设计内容
实验条件:
(1)开发条件:Quatus 11软件。
(2)实验设备:GW48-ES EDA实验开发系统,电脑。
(3)拟用芯片: EPF10K20TC144-4芯片。
源程序:--test controler(测频控制器)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY TESTCTL IS
PORT (CLKK : IN STD_LOGIC ; --test 1HZ control clk
CNT_EN,RST_CNT,LOAD : OUT STD_LOGIC); --clear the enable , count, END TESTCTL;
ARCHITECTURE BEHAV OF TESTCTL IS
SIGNAL DIV2CLK : STD_LOGIC ;
BEGIN
PROCESS (CLKK)
BEGIN
IF CLKK'EVENT AND CLKK = '1' THEN
DIV2CLK <= NOT DIV2CLK;
END IF;
END PROCESS;
PROCESS(CLKK,DIV2CLK)
BEGIN
IF CLKK = '0' AND DIV2CLK = '0' THEN RST_CNT <= '1';
ELSE RST_CNT <= '0';
END IF;
END PROCESS;
LOAD <= NOT DIV2CLK;
CNT_EN <= DIV2CLK;
END BEHAV;
-- COUNT10 (CNT10.VHD)(十进制计数器)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT10 IS
PORT(CLK : IN STD_LOGIC;
CLR : IN STD_LOGIC;
ENB : IN STD_LOGIC;
OUTY: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
COUT: OUT STD_LOGIC);
END CNT10;
ARCHITECTURE BEHAV OF CNT10 IS
BEGIN
PROCESS(CLK,CLR,ENB)
VARIABLE CQI : STD_LOGIC_VECTOR (3 DOWNTO 0);
BEGIN
IF CLR = '1' THEN CQI :="0000";
ELSIF CLK'EVENT AND CLK = '1' THEN
IF ENB = '1' THEN
IF CQI < "1001" THEN CQI := CQI+1;
ELSE CQI :="0000";
END IF;
END IF;
END IF;
OUTY <= CQI;
COUT <= CQI(0) AND (NOT CQI(1)) AND (NOT CQI(2)) AND CQI(3); END PROCESS;
END BEHAV;
--REGISTER (REG4B.VHD)(4位锁存器)