数字频率计设计

2023-10-27

FPGA教程目录

MATLAB教程目录

-----------------------------------------------------------------------

  • 设计任务与要求

1、设计任务

    设计并实现一个数字频率计。

2、基本要求:

  1. 测频率范围:10Hz ~ 10K Hz。为保证测量精度分为三个频段:

     10Hz ~ 100 Hz

     100Hz ~ 1K Hz

     1 K Hz ~ 10K Hz

当信号频率超过规定的频段上限时,设有超量程指示。三个频段之间用手动切换。

  1. 输入波形:低频函数信号发生器输出的方波,幅度为5V 。
  2. 测量误差:σ≤±1%。
  3. 显示和响应时间:

       测量结果用三位半导体数码管显示,要求显示数码稳定清晰。三个频段的最大显示数分别为99.9 Hz,999. Hz,9.99 K Hz,为此需要控制小数点位置,并用两个发光二极管分别显示频率单位:Hz 或K Hz,详见表2.2。

表2.2.1

频率范围

小数点位置

单位

响应时间

10Hz  ≤  f  <100 Hz

××.×

Hz

≤12秒

100Hz ≤  f  <1KHz

×××.

Hz

≤2秒

1 KHz ≤  f  < 10KHz

×.××

K Hz

≤2秒

实现量程的自动转换。

二、基本工作原理

频率测量的方法常用的有测频法和测周法两种。

  1. 测频法

测频法的基本思想是让计数器在闸门信号的控制下计数1秒时间,计数结果是1秒内被测信号的周期数,即被测信号的频率。若被测信号不是矩形脉冲,则应先变换成同频率的矩形脉冲。测频法的原理框图如图2-2-1所示。

图中,秒脉冲作为闸门信号,当其为高电平时,计数器计数;低电平时,计数器停止计数。显然,在同样的闸门信号作用下,被测信号的频率越高,测量误差越小。当被测频率一定时,闸门信号高电平的时间越长,测量误差越小。但是闸门信号周期越长,测量的响应时间也越长。

例如,闸门信号高电平时间为1秒,被测信号频率的真值为2Hz,如图2-2-2所示。由


图可知,无论被测信号的频率是多少,测量时可能产生的最大绝对误差均为±1Hz,即

            f测-f真=±1Hz

所以,最大相对误差为

               σmax= (f测-f真)/ f真=±1/ f真


由上式可知,在闸门信号相同时,测频法的相对误差与被测信号的频率成反比。因此测频法适合于测量频率较高的信号。

  1. 测周法

当被测信号频率较低时,为保证测量精度,常采用测周法。即先测出被测信号的周期,再换算成频率。测周法的实质是把被测信号作为闸门信号,在它的高电平的时间内,用一个标准频率的信号源作为计数器的时钟脉冲。若计数结果为N,标准信号频率为f1,则被测信号的周期为

               T = T1·N

被测信号的频率为

                  f = 1/T1·N = f1/N

利用测周法所产生的最大绝对误差,显然也等于±1个标准信号周期。如果被测信号周期的真值为T真= T1·N,则T测= T1·(N±1)

               σmax= (f测-f真)/ f真= T真/T测 – 1=±1/(N±1)

由上式可知,对于一定的被测信号,标准信号的频率越高,则N的值越大,因而相对误差越小。

  1. 低频段的测量

鉴于上述困难,对于低频信号,为了达到规定的精度,要采取一些比较特殊的方法。例如,可考虑将被测信号倍频后再用测频法测量。或将闸门信号展宽。由于倍频电路比较复杂,所以一般采用后一种方法,实际上闸门信号展宽与被测信号倍频在效果上是相同的。闸门信号展宽比较容易做到,例如采用分频电路就可以实现。若闸门信号高电平时间从1秒展宽到10秒,则相对误差可以按比例下降,但响应时间也增大相同的比例。

  1. 测频法的参考框图


     图2-2-3是测频法的参考框图。被测信号为矩形波时,整形电路可省略。对信号的低频段采用闸门信号展宽的方法,因此分别采用1秒和10秒两个闸门信号,频段控制可以采用三位(K2、K1、K0)或二位控制信号。在测量过程中,由于计数器的输出总是不断变化的,如果这时译码器实时地将计数值译码,显示器就会不断地跳动,无法读数;或者跳动太快,由于人地视觉残留,看起来显示器总是显示8。为了在测量过程中能稳定清晰地显示数码,译码器必须具有锁存功能。

三、单元电路设计参考

  1. 锁存/译码/驱动器

为了能稳定清晰地显示频率,只有在一次测量结束后再将结果通过锁存器传输给译码器,并且这个结果由锁存器锁存。下一次测量过程中,由于锁存器地锁存作用,计数器输出的变化不会影响显示的内容,显示器仍然显示原来锁存的内容。在下一次测量结束才更新锁存器、译码器和显示器的内容。因此,所选用的译码器必须兼有锁存功能,同时译码器还应具有足够地驱动能力,以便直接驱动数码管。

  1. BCD码计数器

计数器输出给译码器地信号应为BCD码,因此采用十进制集成计数器较为方便。为了满足测量误差的要求,在10Hz  ≤ f <100 Hz 段,将闸门信号展宽为10秒。在显示时加上小数点和单位后,显示的最大值为99.9Hz。因此,在这一频段,需要三个十进制的计数器级联构成一个一千进制计数器。在100Hz ≤ f <1KHz 段,闸门信号为1秒,显示的最大值为999.Hz。也是三个十进制的计数器级联。在1 KHz ≤ f < 10KHz,闸门信号为1秒,最大计数值为9999 Hz,需要四个十进制的计数器级联,而显示只有三位,因此将最低一位的计数结果舍去,显示最大值为9.99 KHz。舍去的尾数不会超过最大相对误差。

  1. 闸门信号信号产生电路

闸门信号信号产生电路包括矩形波发生器和分频电路两部分。分频的级数取决于矩形波发生器的输出频率。由于闸门信号的精度直接影响整机的精度,因此要选择输出频率十分稳定的矩形波发生器。矩形波发生器的电路形式很多。可以用运放、TTL与非门、CMOS门电路、施密特反相器、集成定时器和石英晶体振荡器等器件实现,可以根据频率要求、成本等要求选择合适的方案。

分频电路可以采用十进制或十六进制的计数器级联而成。为了减少分频的级数矩形波发生器的输出频率不能太高也不能太低,否则,调试和校准闸门信号十分困难。振荡器中的R、C参数的选择也应恰当。R或C很大时,误差往往较大。

  1. 控制电路

控制电路是单元设计中最重要的任务。控制电路设计的质量关系到元器件数量的多少,线路是否可靠,甚至会关系到整个方案能否实现。控制电路主要包括三个部分:

  1. 三个不同频段时,小数点位置的改变,显示单位的变化,三级或四级BCD计数器的选择,闸门信号10秒或1秒的选择。
  2. 译码器锁存脉冲和计数器清零脉冲的产生及其与闸门信号时序的配合。
  3. 超量程指示。
  1. 三个频段控制

三个频段的控制可以采用三位控制码,也可以采用二位控制码。表2.2.2列出了三个频段控制的要求。表中采用的闸门信号为10秒和1秒两种。

表2.2.2

频率范围

控制码

小数点位置

单位

计数器

闸门时间

K2

K1

K0

10Hz  ≤  f  <100 Hz

0

0

1

中间××.×

Hz

三位BCD

10S

100Hz ≤  f  <1KHz

0

1

0

低位×××.

Hz

三位BCD

1S

1 KHz ≤  f  < 10KHz

1

0

0

高位×.××

KHz

四位BCD

1S

    小数点位置的改变和显示单位的选择可以用组合逻辑电路来实现。

表2.2.3

控制码

闸门

信号G

时钟

脉冲EN2

控制码

闸门

信号G

时钟

脉冲EN2

K2

K1

K0

K2

K1

K0

0

0

0

×

×

1

0

0

T1

QD1

0

0

1

T10

Vi`

1

0

1

×

×

0

1

0

T1

Vi`

1

1

0

×

×

0

1

1

×

×

1

1

1

×

×


在三个不同频段,十进制计数的位数和闸门信号时间的选择方法可以由图2-2-4表示。选择器1用来选择三位或四位BCD码计数器;选择器2用来选择闸门信号(10秒或1秒)。它们的真值表如表2.2.3所示。数据选择器可以用门电路实现也可以采用集成数据选择器。

  1. 锁存脉冲和清零脉冲的产生

由于在闸门信号的高电平期间计数器计数,低电平时计数器停止计数,因此锁存脉冲应在闸门信号的下降沿后产生。在锁存脉冲为低电平期间,锁存/译码/驱动器执行传输功能,即输入信号通过内部的传输门送到译码器的输入端。当锁存脉冲由0变成1时,输入信号被锁存,所以输入信号的变化不再影响译码器的译码结果。锁存结束后,可以将计数器清零,为第二次测量做好准备。对清零脉冲的时序,有几种不同的方案,如图2-2-5所示。方案1利用闸门信号的上升沿产生清零脉冲,这样,计数时间要减少一个清零脉冲的脉宽,是否会影响频率计的测量误差,应作仔细分析。

方案2是利用锁存脉冲的上升沿产生清零脉冲。这样可以保证闸门信号的高电平期间计数器计数。但是如果锁存器的锁存延迟时间超过计数器清零的延迟时间,就可能使锁存器种锁存的各位信号全部是零。


方案3是在方案2的基础上再加一级单稳态延时电路,锁存后延迟一段时间再对计数器清零。这样锁存和清零之间就有足够的时间,工作比较可靠。


锁存脉冲和清零脉冲,可以用单稳态电路产生。单稳态电路可以用门电路构成,也可以用集成定时器或集成单稳态触发器。若对脉宽没有严格要求,也可以用较为简单的电路实现。图2-2-6为CMOS单稳延时电路及其时序图。如果CMOS与非门内部已有输入保护二极管,则图2-2-6中的二极管可以省略。

    (3)超量程指示电路

图2-2-7是超量程指示电路的参考方案。该方案的饿设计思想是:当出现超量程时,BCD计数器的最高位输出端Q4就从1变为0,利用Q4的这个下跳边沿,使触发器F0的输出端Q0由0变成1。因此,当锁存脉冲到来时,触发器F1的输出端Q1变成1,使作为超量程指示用的发光二极管亮。


如果由于输入信号的频率减小或切换了频段,下一次测量不再超量程时,则在下一次测量结束后,发光二极管应熄灭。为实现这个功能,用清零脉冲使Q0复位,但由于Q1仍维持1,因此下一次测量结束之前,发光二极管不会熄灭。

四、可供选择的元器件

型号

名称

型号

名称

CC4011

四2输入与非门

CC40106

六施密特触发器

CC4023

三3输入与非门

CC4013

双D触发器

CC4069

六反相器

CC4098

双单稳态触发器

CC4081

四2输入与门

CC4511

BCD锁存译码驱动

CC40160

可预置BCD同步加法计数器

NE555

集成定时器

CC40161

可预置四位二进制同步加法计数器

CD4060

集成振荡分频器

可供选用的元器件如表所示。需要表中所列以外的元器件需要向实验指导教师提出申请。阻容元件可以自选。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数字频率计设计 的相关文章

  • 基于FPGA的频率计设计

    文章目录 写在前面 1 什么是频率计 2 测量方法与基本原理 3 待测信号如何输入FPGA 一 实验程序 1 RTL图 2 Verilog 参考设计 3 指派引脚 二 调试验证 输入不同频率的方波 写在前面 1 什么是频率计 频率计是一种专
  • Ubuntu16.04主机安装基于ZYNQ的QT交叉编译库

    Ubuntu16 04主机尝试安装基于ZYNQ的QT交叉编译库 前言 基于vivado2016 4 SDK的交叉编译环境 主机Linux上安装vivado2016 4版本 qtcreator上添加基于ZYNQ的交叉编译工具 基本环境 参考资
  • SD卡读写实验(SPI模式)

    对于 SD 卡的 SPI 模式而言 采用的 SPI 的通信模式为模式 3 即 CPOL 1 CPHA 1 在 SD 卡 2 0 版 本协议中 SPI CLK 时钟频率可达 50Mhz SD 卡的 SPI 模式 只用到了 SDIO D3 SP
  • 最详细的Vivado安装教程

    V i v a d o 安 装
  • Verilog实现两路组相联cache

    cache代码 timescale 1ns 1ps cache共32块 分为16组 每组2块 即两路组相联 1块 4字 1字 4字节 主存共1024块 4096个字 主存地址共12位 1 0 为块内偏移 5 2 为组地址 11 6 为Tag
  • 【Xilinx】SynchronousInterruptHandler错误排查笔记

    SynchronousInterruptHandler错误排查笔记 一 ArmV8的异常处理 二 64位lscript ld的修改 三 asm vectors S的修改 四 SynchronousInterruptHandler函数解析 五
  • Lattice Diamond安装

    1 下载 到Lattice官网 http www latticesemi com 注册一个lattice的账号后就可以去下载Diamond 登陆后如下图 根据自己系统情况选择对应的版本 我用的是32位win8 Diamond软件安装包和La
  • FPGA学习笔记(一)__电平知识

    常见电平标准 文章目录 1 TTL电平标准 2 LVTTL电平标准 1 LVTTL3V3 2 LVTTL2V5 3 CMOS电平标准 4 LVCOMS电平标准 1 LVCOMS3V3 2 LVCOMS2V5 3 LVCOMS1V8 4 LV
  • FPGA实现VGA显示图片

    利用FPGA在带有VGA接口的液晶显示器上显示图片 电路原理图 端口说明 VGA R2 VGAB0的8个端口位VGA的RGB数据位 VGA HS为行同步信号 VGA VS为场同步信号 以分辨率为640x480为例 刷新速率为60Hz 每幅图
  • 异步FIFO设计之格雷码

    目录 二进制转格雷码 格雷码转二进制 相邻的格雷码只有1bit的差异 因此格雷码常常用于异步fifo设计中 保证afifo的读地址 或写地址 被写时钟 或读时钟 采样时最多只有1bit发生跳变 在不考虑路径延时的情况下 因为源数据 读写地址
  • 如何生成异步复位verilog总是阻塞凿子

    Chisel 始终生成敏感度列表中仅包含时钟的块 always posedge clk begin end 是否可以将模块配置为使用异步重置并生成这样的始终块 always posedge clk or posedge reset begi
  • VHDL - PhysDesignRules:367

    当我尝试从 VHDL 代码合成 实现和生成程序文件时 我收到警告 当我尝试合成时出现此错误 WARNING Xst 647 Input
  • VHDL门控时钟如何避免

    我收到了避免使用门控时钟的建议 因为它可能会导致松弛和时序限制问题 但我想问一下我可以认为什么是门控时钟 例如 此代码对时钟进行门控 因为 StopCount 对它进行门控 process ModuleCLK begin if rising
  • PyOpenCL 中的时间测量

    我正在 FPGA 和 GPU 中使用 PyOpenCL 运行内核 为了测量执行所需的时间 我使用 t1 time event mykernel queue c width c height block size block size d c
  • 模拟器和合成器之间初始化状态机的差异

    我的问题是关于合成状态机中使用的第一个状态 我正在使用莱迪思 iCE40 FPGA 用于仿真的 EDA Playground 和用于综合的莱迪思 Diamond Programmer 在下面的示例中 我生成一系列信号 该示例仅显示引用状态机
  • 使用双寄存器方法解决亚稳态问题

    为了解决Verilog中不同时钟域引起的亚稳态 采用双寄存器方法 但据我所知 亚稳态的最终输出尚未确定 输出独立于输入 那么 我的问题是如何保证使用双寄存器方法输出的正确性 Thanks 您不能完全确定您避免了亚稳态 正如您所提到的 亚稳态
  • 您可以使用类 C 语言对 FPGA 进行编程吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在大学里 我用类似 C 的语言编写了 FPGA 不过 我也知道人们通常使用 Verilog 或 VHD
  • FPGA大输入数据

    我正在尝试向 FPGA 发送 4 KB 字符串 最简单的方法是什么 是我正在使用的fpga的链接 我正在使用 Verilog 和 Quartus 您的问题的答案在很大程度上取决于将数据输入 FPGA 的内容 即使没有您需要遵守的特定协议 S
  • 映射 MMIO 区域写回不起作用

    我希望对 PCIe 设备的所有读写请求都由 CPU 缓存进行缓存 然而 它并没有像我预期的那样工作 这些是我对回写 MMIO 区域的假设 对 PCIe 设备的写入仅在缓存回写时发生 TLP 有效负载的大小是缓存块大小 64B 然而 捕获的
  • 可以购买哪些 FPGA(现场可编程门阵列)在家中进行实验? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 什么是 FPGA 在哪里可以买到 它们要花多少钱 您需要什么样的系统来试验它们 如何对它们进行编程 如果这是正确的术语 您能否使用普通 M

随机推荐

  • 题5:字符串的压缩

    题目 利用字符重复出现的次数 编写一个方法 实现基本的字符串压缩功能 比如 字符串 aabcccccaaa 经压缩会变成 a2b1c5a3 若压缩后的字符串没有变短 则返回原先的字符串 给定一个string iniString为待压缩的串
  • Pymol入门教程--基础

    Pymol入门教程 基础 软件界面介绍 内置demo介绍 打开PyMOL 点击1 1菜单窗口的Wizard菜单 然后点击Demo gt Representations然后在2 3对象窗口和2 4模式窗口之间会出现各种示例 Represent
  • Docker-Compose的安装

    一 什么是Docker Compose Compose项目来源于之前的fig项目 使用python语言编写 与docker swarm配合度很高 Compose 是 Docker 容器进行编排的工具 定义和运行多容器的应用 可以一条命令启动
  • IDEA插件安装以及一些不错的插件的推荐

    IDEA有自己庞大的插件支持 来丰富生态 现在一个好用点的工具如果没有点插件都不好意思 当然了 微信除外 因为人家会告你 一 插件的安装 IDEA的插件安装和别的IDE工具 比如eclipse或者vscode的位置都差不多 还是具体说一下
  • TensorFlow二元-多类-多标签分类示例

    探索不同类型的分类模型 使用 TensorFlow 构建二元 多类和多标签分类器 二元分类 简述 逻辑回归 二元交叉熵 二元分类架构 案例 逻辑回归预测获胜团队 多类分类 简述 Softmax 函数 分类交叉熵 多类分类架构 案例 预测航天
  • Jenkins CI、CD入门操作

    基于Jenkins拉取GitLab指定发行版本的SpringBoot代码进行构建发布到生产环境实现CD实现持续部署 准备测试项目 准备一个简单的Spring boot 项目 Jenkins新建任务 Jenkins关联Gitlab自动拉取最新
  • 如果一个人真的懂你

    一辈子 遇见一个真正读懂你的人 真的很难 人的一生中会遇到几十甚至上百万个人 其中能和你打招呼 称得上是朋友的人就更少 而在这么多人当中 却很有可能连一个真正懂你的人都没有 有些人 就算相识再久 也无法成为知己 有些人 即使你说了千句 他都
  • 基于错误信息的SQL盲注

    何谓盲注 在SQL注入基础一文中介绍了SQL注入的基本原理 可以轻易注入的原因是知道SQL拼接代码是怎么写的 很多情况下 很难甚至无法知道对方的SQL拼接语句是怎么写的 这里情况下需要做尝试 分析代码是采用何种拼接结构 然后再写个万能注入公
  • python docx 表格样式的设置修改表格列宽

    我的需求是设置表格的列宽和高度 之前的代码使用网上找的方法 table cell y x width Cm 4 无论怎么修改都是无效的 最后正确的代码是 col table columns 1 col width Inches 5
  • 修改mt4服务器地址,修改mt4服务器地址

    修改mt4服务器地址 内容精选 换一换 云平台支持修改主网卡的私有IP地址 具体操作请参见本节内容 如需修改扩展网卡的私有IP地址 请删除网卡 并挂载新网卡 云服务器已关机 如果网卡绑定了虚拟IP或者DNAT规则 需要先解绑 如果网卡上有I
  • [译] APT分析报告:03.OpBlueRaven揭露APT组织Fin7/Carbanak(上)Tirion恶意软件

    这是作者新开的一个专栏 主要翻译国外知名的安全厂商APT报告文章 了解它们的安全技术 学习它们溯源APT组织的方法 希望对您有所帮助 前文分享了钓鱼邮件网址混淆URL逃避检测 这篇文章将介绍APT组织Fin7 Carbanak的Tirion
  • 什么浏览器好用稳定速度快?

    什么浏览器好用稳定速度快 说到浏览器 不知道你们是否有这样的困惑和烦恼 浏览器换了一款又一款 内存大就不说了 体验总是不尽人意 经常弹出一些莫名其妙的资讯 还会出现卡住 奔溃 网页打开不完全 打开速度慢等情况 就拿我最近用的两款360来说吧
  • Nginx+lua实现秒杀系统架构

    能今天做好的事就不要等到明天 以梦为马 学习趁年华 文章目录 前言 一 秒杀业务特点 1 瞬时高并发 2 热点数据 3 读多写少 二 技术难点 1 数据一致性 2 库存超卖 三 秒杀注意事项 1 数据预热 2 请求承载 3 请求拦截 四 微
  • 重新理解Linux交叉编译及编译流程

    参考书籍 1 编译原理 2 嵌入式Linux应用开发 文章目录 一 交叉编译背景 二 gcc和arm linux gcc的常用选项 1 查询gcc帮助 2 常用gcc选项介绍 3 生成一个可执行文件的三种方法 二 交叉编译的四个流程及实例说
  • iOS编程基础-OC(六)-专家级技巧:使用ARC

    该系列文章系个人读书笔记及总结性内容 任何组织和个人不得转载进行商业活动 第6章 专家级技巧 使用ARC 本章是第一部分的最后一章 本章介绍ARC内存管理中的细微之处 如直接桥接对象使用ARC的方法 6 1 ARC和对象所有权 我们已经知道
  • 快排-java

    快排总结 分区方法 3个while 递归使用排序方法 使用了分治法 挖坑赋值法 package cn com import java util Arrays public class QuickSort public static void
  • 虚拟机上CentOS 7关闭防火墙操作

    虚拟机上CentOS 7关闭防火墙操作 1 首先查看防火墙的状态 使用的命令为 service iptables status 提示 Unit iptables service could not be found 解决方案 还原传统的管理
  • sprintf实例

    include
  • Unity热更新 ILRuntime 从零开始 HelloWorld(二)

    自从我凌晨两点放下喝醉的小姐姐回家写博客之后 小姐姐对我愈发的崇拜了 约我今晚一块学习ILRuntime 带好身份证 我这一想必须要未雨绸缪 安排 选了一个全市最好的网吧 斥巨资通宵5元 请小姐姐一块学习 一起记录下学习内容 这是这一系列文
  • 数字频率计设计

    FPGA教程目录 MATLAB教程目录 设计任务与要求 1 设计任务 设计并实现一个数字频率计 2 基本要求 测频率范围 10Hz 10K Hz 为保证测量精度分为三个频段 10Hz 100 Hz 100Hz 1K Hz 1 K Hz 10