量程自动转换数字式频率计的设计

上传人:新** 文档编号:489524233 上传时间:2023-02-20 格式:DOC 页数:13 大小:555KB
返回 下载 相关 举报
量程自动转换数字式频率计的设计_第1页
第1页 / 共13页
量程自动转换数字式频率计的设计_第2页
第2页 / 共13页
量程自动转换数字式频率计的设计_第3页
第3页 / 共13页
量程自动转换数字式频率计的设计_第4页
第4页 / 共13页
量程自动转换数字式频率计的设计_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《量程自动转换数字式频率计的设计》由会员分享,可在线阅读,更多相关《量程自动转换数字式频率计的设计(13页珍藏版)》请在金锄头文库上搜索。

1、量程自动转换数字式频率计的设计EDA课 程 设 计 题 目: 数字频率计的设计 学 院: 理工学院 班 级: 10 电 信 学 号: 1034301114 姓 名: X X 指导老师: X X 提交时间: 2013-12-6 数字频率计的设计摘要: 数字频率计是一种能够测量被测信号频率的数字测量仪器。它被广泛应用于航天、航空、电子、自动化测量、测控等领域。本文利用测频原理,设计一个量程自动转换数字式频率计,主要硬件电路由Altera公司生产的复杂可编程逻辑(CPLD)EPM7128构成。复杂可编程逻辑器件CPLD芯片EPM7128SLC84-15完成各种时序逻辑控制、计数功能。在QUARTUS

2、 II平台上,用VHDL语言编程完成了CPLD的软件设计、编译、调试、仿真和下载。由于本系统采用了先进的EDA技术,不但大大缩短了开发研制周期,而且使本系统具有结构紧凑、体积小,可靠性高,测频范围宽、精度高等优点。关键词:频率计;可编程逻辑器件;VHDL一、设计要求1. 频率计的测量范围为1,量程分10、100和1000三档(最大读数分别为9.99、99.9、999)。2. 要求量程可根据被测量的大小自动转换。即当计数器溢出时,产生一个换档信号,让整个计数时间减少为原来的1/10,从而实现换档功能。3. 要求实现溢出报警功能。即当频率高于999时,产生一报警信号,点亮LED灯,从而实现溢出报警

3、功能。二、设计方案1、频率计的工作原理常用的测量频率的方法有两种,一个是测周期法,一个是测频率法。测周期法需要有基准系统时钟频率,在待测信号一个周期内,记录基准时钟频率的周期数,则被测频率可表示为:=/ 测频率法就是在一定的时间间隔内内,得到这个周期信号重复变化的次数,则被测频率可表示为=/ 本设计采用的是直接测频率的方法。2、频率计的系统框图频率计的系统设计可以分为4位10进制计数模块、闸门控制模块、锁存器模块、译码显示模块和可自动换档基准时钟模块,其系统框图如图2.1所示。可自动换档基准时钟模块闸门控制模块4位10进制计数模块译码显示模块锁存模 块图2.1:频率计的系统框图其中,可自动换档

4、模块为闸门控制模块提供3个档也就是3个测量范围的基准时钟信号,通过计数器的最高位溢出情况来判定工作在第几档。闸门控制模块根据基准时钟信号产生基准时钟信号周期2倍的周期使能信号,随后为锁存器产生一周期性地锁存信号,再然后为计数模块产生一周期性地清零信号。4位10进制计数模块在使能信号和清零信号的控制下对被测信号的波形变化进行计数,若产生溢出则为自动换档模块输出一换档信号。译码显示模块负责不闪烁的显示被测信号的频率以及数字频率计目前工作的档位。三、详细设计1、4位十进制计数器模块4位十进制计数器模块包含4个级联十进制计数器,用来对施加到时钟脉冲输入端的待测信号产生的脉冲进行计数,十进制计数器具有计

5、数使能、清零控制和进位扩展输出。用于计数的时间间隔(计数允许周期T)由闸门控制模块的控制信号发生器所产生的使能信号来控制,使能十进制计数器的计数允许周期T可由闸门控制模块中的量程选择输入来决定。这样允许用户选择所希望的被测频率范围,并有效地确定读出数据中十进制小数点的位置。(1)、十进制计数器元件cnt10的设计十进制计数器既可采用QuartusII的宏元件74160,也可用VHDL语言设计,本设计采用VHDL编写,其源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt

6、10 ISPORT(clr:IN STD_LOGIC; clk:IN STD_LOGIC; cout:OUT STD_LOGIC; en:IN STD_LOGIC; cq:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END cnt10;ARCHITECTURE one OF cnt10 ISBEGINPROCESS(clr,clk,en) VARIABLE cqi:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN IF clr=1THEN cqi:=(OTHERS=0); ELSIF clkEVENT AND clk=1THEN IF en=1THEN

7、 IF cqi0); END IF; END IF; END IF; IF cqi=9 THEN cout=1; ELSE cout=0; END IF; cq=cqi;END PROCESS;END; 在源程序中cout是计数器进位输出;cq3.0是计数器的状态输出;clk是时钟输入端;clr是复位控制输入端,当clr=1时,cq3.0=0;en是使能控制输入端,当en=1时,计数器计数,当en=0时,计数器保持状态不变。其仿真输出波形如图3.1所示: 图3.1:十进制计数器模块仿真输出波形在项目编译仿真成功后,将设计的十进制计数器电路设置成可调用的元件cnt10.bsf,用于以下的4位十进

8、制计数器的顶层设计。(2)、计数器的顶层设计该顶层设计可以用原理图输入的方法完成。在QUartusII中,新建一个原理图编辑窗,从当前的工程目录中调出4片十进制计数器元件cnt10,并按图所示的4位十进制计数器的顶层原理图完成电路连接,如图3.2所示。图3.2:计数模块电路图(3) 分频模块的设计根据设计要求,最小一档的周期是10ms,即100Hz。选用10MHz的晶振作为EPM7128的时针,为得到1000Hz的信号需要100分频,可知用2个cnt10级联就可以实现,图3.3是其电路图。图3.3:分频模块电路图 2、闸门控制模的设计闸门控制模块主要根据输入的控制时钟脉冲,首先要产生一个锁存信

9、号LOAD,用其上升沿控制锁存器将之前的计数结果存入锁存器中,并由显示模块将其显示出来,设置锁存器是为了让显示稳定,不会因为周期性清零信号使得显示的数值不断闪烁。锁存之后须有一清零信号CLR_CNT将计数器清零,为了下一秒的计数操作做准备。闸门控制模块的VHDL源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TESTCTL ISPORT(clk,fin:IN STD_LOGIC; clr_cnt:OUT STD_LOGIC; tsten:OUT STD_LOGIC; lo

10、ad:OUT STD_LOGIC);END;ARCHITECTURE one OF TESTCTL IS SIGNAL a:STD_LOGIC; SIGNAL count:STD_LOGIC_VECTOR (1 downto 0); BEGIN PROCESS(clk) BEGIN IF clkEVENT AND clk=1 THEN a=not a; END IF; END PROCESS;PROCESS(fin) BEGIN IF finEVENT AND fin=1 THEN IF a=0 then IF count=11 then load=0;clr_cnt=1; ELSE load=1;count=count+1;clr_cnt=0; END IF; ELSE count=00;load=0;clr_cnt=0; END IF; END IF; END PROCESS; tstenSOUT=IN0;OVER=0;FLAGSOUT=IN1;OVER=0;FLAGSOUT=IN2;OVER=0;F

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号