第一范文网 - 专业文章范例文档资料分享平台

基于VHDL的数字频率计设计---毕业论文

来源:用户分享 时间:2025/5/30 5:40:31 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

些问题,许多频率计设计者提出了各种各样的频率计设计方案。常见的解决方案有以下几种: (1)采用对标频信号计数的修正来提高测量精度。这主要有双计数测频法和数字移相测频法。这两种方法都可以在一定程度上提高频率测量的精确度,则其精确度可以提高3~4倍。 (2)多周期同步测频法。多周期同步测频法的闸门时间不是固定的值,而是被测信号的整周期倍,即与被测信号同步。多周期同步测频法有以下特点:(1)测量误差与被测信号频率无关,即实现了被测频带内的等精度测量;(2)增大T 或提高 可以提高测量精度;(3)标准频率误差为 ,因为晶体稳定度很高, 标准频率误差可以进行校准,校准后的标准频率误差可以忽略[14]。

而在扩展测频宽度的问题上,通常采用的是量程自动转换法,这种方法通常可以达到一定精度的宽带的频率测量,但其在测频精度上也受到了很大的限制。 2.4 等精度数字频率计的工作原理

等精度测频的方法是从直接测频的基础上发展而来的。它采用频率准确的高频信号作为标准频率信号Fs,在闸门时间Tc内同时对标准信号脉冲和被测信号脉冲进行计数,并保证测量的闸门时间为被测信号的整数倍,实现整个频率测量范围内的测量精度相等,当标准信号频率够高,闸门时间足够长时,就可以实现高精度的频率测量。等精度测频原理示意图如图2-1所示:

其具体方法如下:

设定一个闸门时间为Tc,标准信号频率为fs,在Td 时间内对标准时钟信号和被测信号的脉冲计数值分别为Ns和Nx,则被测信号的频率测量值为: (2-6)

在这里对标准信号所产生的计时误差为 (2-7)

由于Δt≤Ts,可以得到 (2-8)

被测信号频率准确值 ,则测量频率的相对误差为 (2-9)

当Td 远远大于Δt 时,频率测量的最大误差为 (2-10)

可知,频率测量的最大误差由标准时钟信号的周期Ts 和频率计数的闸门时间Td决定,Ts 越小、Td 越大,测量误差越小,即测量精度越高。在整个频率测量范围内,实现了精度恒定的等精度测量。当标准信号选取准确的100MHz 信号源时, ,只要选取 ,就可使测量的最大相对误差≤10-6 ,即达到百万分之一的测量精度[15]。

从图中我们可以看出预置闸门时间为Tc,但当Tc结束时,并未停止对fx、fs的计数,而是等到被测信号的下一个高电平到来时才结束计数,这样实际的闸门时间即为Td,保证了测量的闸门时间为被测信号的整数倍,在整个频率测量范围内,精度恒定,实现了等精度测量。

等精度测频实现的原理图如下图2-2所示:

3 基于VHDL频率计功能模块的设计

经过分析可以知道,完成本频率计的设计共需一下四大模块,其设计结构图如图3-1所示。

其各部分的功能分析如下:

(1)计数器部分。此部分主要完成对fx、fs的计数,其组成的主要部分是标准计数器和被测信号计数器。

(2)运算器部分。完成运算,得出被测信号的频率fx。包含除法器和乘法器两部分。

(3)显示模块。显示是频率计必不可少的部分。在本设计中采用动态扫描显示,实现八位八段数码管的显示。

(4)控制器。此部分主要产生设计中所用到的一些内部控制信号,如复位、清零等信号。

3.1 计数器模块

计数器是数字频率计中最重要的部分,是数字频率计的核心,一个简单的数字频率计可以说就是一个计数器。计数器的准确性,两个计数器如何实现同步计数,对频率计的精度影响非常大。

此计数器为32位二进制,实现对标准频率信号和被测频率信号进行计数。它具有计数使能端(en)、异步清零端(clr)、时钟输入端(clk)等。当异步清零端(clr)为高电平时,不管计数使能端是否有效,时钟上升沿是否到来,计数器都立即清零,即Nx=0,Ns=0。只有异步清零端(clr)为低电平,并且计数使能端为高电平,有上升沿到来时,计数器才开始计数,当计数器计满时,进位输出为高电平。计数器的VHDL源程序如下: library ieee;--计数器

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity plj is

port(bclk: in std_logic;--标准时钟

xclk:in std_logic;--被测信号

clr,en: in std_logic;--清零,计数使能信号 data1:out std_logic_vector(31 downto 0);

data2:out std_logic_vector(31 downto 0));--数据输出 end plj;

architecture behav of plj is

signal Ns,Nx:std_logic_vector(31 downto 0); begin

process(xclk,clr,en) --被测信号计数,实际闸门 begin

if clr='1' then Nx<=(others=>'0'); elsif xclk'event and xclk='1' then if en='1' then Nx<=Nx+1; end if; end if; end process;

process(bclk,clr,en) --标准时钟计数 begin

if clr='1' then Ns<=(others=>'0'); elsif bclk'event and bclk='1' then if en='1' then Ns<=Ns+1; end if; end if;

end process; data1<=Nx; data2<=Ns; end behav;

计数器的仿真如图3-2所示:

3.2 运算器模块

根据等精度频率计的原理可以知道,在本设计中所用到的运算主要有乘法单元和除法单元两个模块。

3.2.1 乘法器

乘法器的运算,首先进行初始化。此处将乘积和乘数共用一个寄存器,初始化时乘积寄存器高位清零,乘数赋给乘积寄存器低位。然后检查乘积寄存器的最低有效位,此时乘积寄存器的最低有效位为1,则将被乘数寄存器与乘积寄存器左半部分相加,并将结果写回乘积寄存器左半部分,然后乘积寄存器右移1位,循环执行以上步骤32次。乘法器的硬件结构如图3-3所示。

乘法运算流程的如图3-4所示,仿真如图3-5所示,程序见附录A。

3.2.1 除法器

在Quartus Ⅱ软件集成开发环境中,虽然自带有LMP模块除法器,但它只能进行被除数为2的整数平方的运算,因此大大地限制了它的使用领域[16]。除法器可通过移位相减相除来实现,本设计中采用时序逻辑除法算法来实现除法运算,其过程如图3-6。除法器要求比较中间数据与除数的大小,如果除数大于中间数据则不进行减法,对应的结果寄存器置0,否则就置1。因为乘除法器是由时序逻辑电路构成的,计算结果需要很多个时钟周期才能得出结果,所以其结果的输出与数据的输入有一段时间间隔[17]。由于时序电路的这种特性,因此必须等到运算结果才能允许下一次输入,否则不允许输入,所以在这里要设置start信号和finished信号。除法器的流程图如图3-7所示。

除法器仿真如下图3-7所示:

基于VHDL的数字频率计设计---毕业论文.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c3igul7t3vd6rgfk15sw18xzko02xoc00fy5_2.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top