基于FPGA的简易频率计(Verilog HDL)

2023-11-12

1.设计要求

设计并制作一个能够测量正弦波信号频率的电路。

基本要求如下:

(1) 测频范围为0~999Hz,精度为1Hz;

(2) 用数码管显示测频结果;

(3) 设有超量程指示(信号频率≥1kHz时)。
说明:在输入正弦波信号峰值为100mV的情况下进行测试。

2.方案

基于FPGA的控制方案
通过软件设计,其中测频控制电路、等精度测量和频率计算电路以及转换译码电路均可以在DE0中实现。标准信号产生电路可通过外部晶振信号(频率为50MHz)提供,待测信号可与扩展接口相连接,故总体设计方案如下图所示。
基于FPGA的设计方案图
其中fx为被测信号,CLR’是用于将计数器清零,CNTEN为门控信号,用于控制计数器在单位时间内对CLK进行计数,DISPEN’用于控制锁存译码电路刷新测量结果.

3.单元电路设计
3.1 FPGA部分模块电路代码

由于DE0开发板库中的元器件有限,因此对于库中没有的器件,需要自己写出该器件的功能,并完成调试后封装成电路图,以便在顶层电路中调用。

3.1.1分频电路

将DE0开发板的内部50MHz晶振进行分频,使用其8Hz的频率作为标准频率信号产生,具体代码如下:

 module FP8Hz(clk,fp_out);
    input clk;
    output
    reg fp_out;
    reg [21:0] cnt;   
    parameter N = 6250000;  
         always @ (posedge clk)
           if ( cnt < N/2-1) 
                cnt <= cnt + 1'b1; 
           else
             begin  
                cnt <= 22'b0; 
                fp_out <= ~fp_out; 
             end
endmodule

在这里插入图片描述

3.1.2主控电路

为设计方便,用十进制计数器74HC160作为主控电路,取时钟脉冲为8Hz,输出用
在这里插入图片描述
表示。设测频计数器的清零信号CLK’低电平有效,门控信号CNTEN高电平有效,显示信号DISPEN’低电平有效,其中闸门信号有效时间为1秒。
在这里插入图片描述

3.1.3计数电路

电路设计的测频范围为0~9999Hz,则需要4个74HC160级联扩展为一万进制计数器。
在这里插入图片描述

3.1.4译码显示电路

锁存与译码电路基于CD4511设计。为了节约FPGA资源,简化掉CD4511的灯测试和灭灯功能,只保留锁存功能,同时将显示译码器的输出设计为低电平有效以适应驱动DE0开发板上共阳数码管的需要。
CD4511代码如下:

module CD4511(LE,BCD,SEG7);
     input LE;
     input [3:0] BCD;
     output reg [6:0] SEG7;
     always @(LE,BCD)
     if (!LE)        // 锁存信号无效时
       case (BCD)    // SEG7: gfedcba,低电平有效
         4'b0000: SEG7 <= 7'b1000000;  // 显示0
         4'b0001: SEG7 <= 7'b1111001;  // 显示1
         4'b0010: SEG7 <= 7'b0100100;  // 显示2
         4'b0011: SEG7 <= 7'b0110000;  // 显示3
         4'b0100: SEG7 <= 7'b0011001;  // 显示4
         4'b0101: SEG7 <= 7'b0010010;  // 显示5
         4'b0110: SEG7 <= 7'b0000010;  // 显示6
         4'b0111: SEG7 <= 7'b1111000;  // 显示7
         4'b1000: SEG7 <= 7'b0000000;  // 显示8
         4'b1001: SEG7 <= 7'b0010000;  // 显示9
         default: SEG7 <= 7'b1111111;  // 不显示
      endcase
endmodule

四路合成一路代码如下:

module B4to1(QA,QB,QC,QD,BCD);
      input QA,QB,QC,QD;
      output [3:0]BCD;
      assign BCD={QD,QC,QB,QA};
endmodule

在这里插入图片描述

3.1.5超量程指示电路

在量程超范围后,四个74HC160的进位信号通过四输入与门结合D触发器作为超量程指示信号,当量程超范围后,指示灯亮。
在这里插入图片描述

3.2外部电路设计

由于要求输入信号为100mv,且为正弦波。因此应将输入信号进行整形放大,利用LM2904双运放及74HC14整形器件,使用双级运放,第一级放大10倍,第二级放大3倍,使得输出为3v的方波。
在这里插入图片描述

3.3顶层电路设计图

在这里插入图片描述

4.调试

DE0板的调试方法为,在软件内利用开发板的外部50MHz晶振做一个分频信号,测试结果是否正确。
分频信号代码如下:
分频100000Hz

module FP10whz(clk,fp_out);
 input clk;
 output fp_out;
 reg  fp_out;
 reg [21:0] cnt;          
 parameter N = 500;  
 always @ (posedge clk)
         if ( cnt < N/2-1) 
              cnt <= cnt + 1'b1; 
         else
              begin  cnt <= 22'b0;                                                               
              fp_out<= ~fp_out; 
              end
endmodule

利用开关改变八路信号:

module signal8(clk,sel,y);
  input clk;
  input [2:0] sel;
  output reg y;
  reg [7:0] q;
 always @ (posedge clk)
    q<= q+1;
       always @(sel,q)
         case (sel)
               3'd0: y=q[0];
               3'd1: y=q[1];
               3'd2: y=q[2];
               3'd3: y=q[3];
               3'd4: y=q[4];
               3'd5:  y=q[5];
               3'd6: y=q[6];
               3'd7: y=q[7];
               default :y=q[0];
        endcase
 endmodule

测试结果:
开关为001时,输入信号为25000Hz,超出量程,指示灯亮起,开关为011时,输入信号为6250Hz
在这里插入图片描述

5.资料
1.DE0板外部引脚

在这里插入图片描述
用来连接外部电路。

2.引脚锁定所需资料

1.晶振
在这里插入图片描述
2.7段数码管
在这里插入图片描述
在这里插入图片描述
3.开关
在这里插入图片描述
4.LED灯
在这里插入图片描述
水平有限,不足之处还望各位大佬指出~~~

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

基于FPGA的简易频率计(Verilog HDL) 的相关文章

  • Append-only及其使用

    Append only 维基百科 Append only 是计算机数据存储的一种属性 将新数据附加到存储中 但现有数据是不可变的 许多数据结构和数据库实现了不可变对象 有效地使它们的数据结构只能追加 实现仅追加数据结构有很多好处 例如确保数
  • android 播放raw音频文件格式,Android 使用mediaplayer播放res/raw文件夹中的音乐的实例...

    Android 使用mediaplayer播放res raw文件夹中的音乐的实例 1 在res文件夹中新建一个文件夹重命名为raw 并且将要播放的音乐放到raw文件夹里面 2 修改layout目录下的xml布局文件 添加3个按钮空间和一个文
  • 计算机硬盘启动设置方法,bios设置硬盘启动,详细教您bios设置硬盘启动操作步骤...

    我们在操作电脑的时候 会遇到要重装系统的情况 每当这种时候我们就会想到通过bios设置来进行系统的重装 所以今天小编就来重点给你们说说关于bios设置硬盘启动的操作步骤 重装系统是我们在使用电脑的时候会经常在遇到问题时采用的解决方法 但说到
  • spring boot 获取yaml配置的对象和数组对象

    一 获取对象 例子 yaml中的配置 permission method POST path auth login spring boot 中 在需要使用到该配置的controller或者service或者专门的配置类中 添加method和
  • 磁盘加新盘扩容

    注 如果有磁盘超过2T 如下调整 使用parted来对GPT磁盘操作 进入交互式模式 没有的话yum安装下 parted dev sdb 将MBR磁盘格式化为GPT parted mklabel gpt 到这就可以进行下面的了 先查看下新磁
  • QT UI不能索引控件

    原因 Qt程序使用的UI h文件并不是最新的UI文件 最新的ui h在bulid文件夹里面了 软件依旧使用旧的ui h文件 简单讲就是先要从 ui生成ui h然后再编译 所以界面未更新实际上是因为ui h这个文件没有更新导致的 解决办法 1
  • 论文阅读-(GLIP)Grounded Language-Image Pre-training (目标检测+定位)

    Paper Grounded Language Image Pre training Code https github com microsoft GLIP 简介 定位任务与图像检测任务非常类似 都是去图中找目标物体的位置 目标检测为给出
  • 好一场逗鹅冤:一瓶老干妈撬动BAT

    近日 号称 南山必胜客 的腾讯法务部将低调做酱料的老干妈送上了热搜 腾讯状告老干妈欠广告费 老干妈则称腾讯遭遇诈骗 双方各执一词 引得不明真相的吃瓜群众热闹围观 01 腾讯被骗 老干妈躺赚 6月29日 广东省深圳市南山区人民法院发布一则民事
  • QTcpSocket 发送数据心得

    遇到不会用的函数前 最好还是看看手册QAQ 今天居然吃了这个大亏 先交代一下背景 在做TCP客户端的发送数据功能 要和服务器程序进行TCP IP通信 且根据通信协议要发送数组或者结构体 并且数组的每一个位都是有效数据位 因此不能像大多数人一
  • 跳转小程序:wx-open-launch-weapp 注意事项,不显示按钮问题

    JSSDK参考文件 一 注意查看引入JS的版本 版本 版本 引用1 6 引用1 6 引用1 6 http res wx qq com open js jweixin 1 6 0 js 如果不引用1 6会出现什么情况 开放标签列表不显示 所以
  • 浅谈路由器工作原理

    路由器的作用是实现网络的三层通信 将二层网络互联形成一个三层网络 路由器工作内容 1 封装和解封装 网卡CU 数据帧 2 维护路由表 3 IP转发 也叫网络转发 三层转发 路由器接口特点 路由器接口和计算机网卡接口一样 都能封装和解封装数据
  • 【Python:Pycharm】mmSegmentation语义分割框架教程

    文章目录 一 MMSegmentation介绍 二 MMSegmentation基本框架 1 model设置 2 dataset设置 2 1 Dataset Class文件配置 2 2 Dataset Config文件配置 2 3 Tota
  • C语言实现贪吃蛇(详细版)

    一 需要掌握的知识 C语言基础语法 结构体 指针 链表
  • MyBatis 源码解析MyBatis如何解析配置 ?(六)

    XMLMapperBuilder parameterMapElement 代码比较长了 因为parameterMap 涉及到比较多的东西
  • 基于bandersnatch搭建pip本地源

    由于现在工作在单位局域网环境下 不能联接互联网 Python程序的开发和部署需要很多地三方的包 为了便于在局域网环境下学习和使用Python进行程序开发 特在有互联网的电脑上同步了一份Pip源 定期同步部署到局域网服务器上 查了不少资料 发

随机推荐

  • Qt事件过滤器原理EventFilter(installEventFilter函数)

    Qt事件过滤器原理 installEventFilter函数 本文为原创文章 转载请注明出处 或注明转载自 黄邦勇帅 原名 黄勇 本文出自本人原创著作 Qt5 10 GUI完全参考手册 网盘地址 https pan baidu com s
  • 【433 发射接收源码】

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 433小结记录 记录 一 433小功率无线射频代码模块 二 使用步骤 1 433发射 主循环阻塞发射 中断发射 2 433接收数据 中断接收 总结 记录 提示 这里可以添加本
  • 介绍一款非常好用的高效率截图工具----Snipaste(下载及安装)

    高效率截图工具 Snipaste 一 简单介绍 二 下载安装 snipaste工具下载地址如下 点击下载地址进入如下页面 三 使用介绍 最后 一 简单介绍 snipaste工具是一款开源免费的超级截图工具 它可以让你将截图贴到到电脑屏幕上
  • 20个热门少儿编程网站与应用【家长必读】

    少儿编程是新的文化潮流 它涵盖了儿童学习的方方面面 逻辑思维训练 系统化思考训练 问题解决能力训练 团队协作 创造性思维培养 你可以利用我们整理的这些得到广泛认可的少儿编程网站教孩子学会编程 例如code org tynker com和sc
  • 关于Java音频播放不循环和暂停、继续播放(非Android)

    我使用的是MediaPlayer播放 设置其不循环播放方法为setPlaybackLoop 需要暂停时 只需要设置setPlaybackLoop 为true 使用stop 方法 即可暂停播放 继续播放设置setPlaybackLoop 为f
  • 毕业论文:支持向量机在铝电解槽况分类中的应用

    1 前言 机器学习在分类中已经非常成熟 受限于本人的专业能力与认知 所以本论文 课题是我在机器学习领域的初步探索 在关键的算法和代码部分其实我也一知半解 所以我重点讲述机器学习应用的过程 及探讨如何增强自己论文的叙事性 以及如何利用Chat
  • freertos————互斥锁

    线程安全 多线程程序处于一个多变的环境 可访问的全局变量和堆数据随时可能被其他的线程改变 多个线程同时访问一个共享数据 可能造成严重的后果 出现问题的是之前移植了一个freemodbus的从站 多个任务访问全局变量保持寄存器区 导致最后读出
  • Vue.js中的[system]TypeError: Cannot read property ‘push‘ of undefined

    我在uni app中写一下代码时出现问题 system TypeError Cannot read property push of undefined data return date this getDate kind 养殖物异常 设备
  • C 语言中常用的函数,sizeof() 和 strlen()

    sizeof 函数用于获取数据类型或变量所占用的内存字节数 不管这个变量是什么类型 只要是在编译时就能确定其类型的表达式或变量 都可以作为 sizeof 的参数 例如 int a 10 int arr 10 printf d n sizeo
  • ctfshow web(不定期更新)

    web1 源码 web2 最基本的sql注入 web3 考点 php伪协议 ctf show web3 文件包含漏洞 使用php伪协议探测 php input 可以访问请求的原始数据 配合文件包含漏洞可以将post请求体中的内容当做文件内容
  • [jQuery自定义插件] 7 自定义tab插件-jQueryTab

    tab插件 也是一个比较常用的插件 用来切换不同的页面用的 直接上源码 1 jQueryTab js import jQueryCache js function if ftab css length 0 head append proto
  • 每天半小时,一周带你手速大幅提升——几大打字练习网站测评

    马上要线上考试了 我们的考试居然要求内容手打 实在是太人性化了吧 打字速度是写字的好几倍的我第一次为学校打 call 啊有么有 我怕被打还是不说了 本文面向盲打新手 阅读时间建议5min 那么问题来了 平时没有练习的同学短时间提升打字速度有
  • idea提示git is not installed与“meaningless REX prefix used”

    记一次遇到idea提示 git is not installed 问题时的解决过程 我自己的笔记本上面的idea和git都安装挺久了 只是一直没有在idea上用git下载过东西 前两天准备学习spring源码 照着教程开始下载和编译源码 这
  • flume-使用KafkaChannel读取不到数据

    使用TAILDIR监听日志写入KafkaChannel 配置如下 a1 sources r1 a1 channels c1 描述source a1 sources r1 type TAILDIR a1 sources r1 filegrou
  • LINUX Developer must must master: grep ,

    http www vim org scripts script search results php 1 源码文件搜索 源码分析时 寻找文件名中包含某关键字的文件路径 比如寻找kernel源码中包含 usb的文件名 cd kernelSou
  • 五十款阿里开源软件说明介绍

    阿里巴巴的Github代码托管地址 https github com alibaba 通过写这篇文章从开源中国站上面看了很多 也从那里将开源软件的基本的介绍和下载地址拷贝到了文章当中 总体给我的一个感受就是阿里的开源实在太强大了 多到需要花
  • jenkins自动部署分布式项目(七)——Jenkins配置企业微信通知

    一 配置企业微信 1 打开企业微信手机端 打开群设置 找到群机器人 2 点击进入 然后点击添加 3 名字自己随意取 添加成功后 复制好Webhook地址 在配置Jenkins时使用 二 配置jenkins 1 安装插件 1 打开jenkin
  • linux-快捷键

    linux快捷键 ctrl a 移动到行首 ctrl e 移动到行尾 ctrl u 删除光标之前的字符 ctrl k 删除光标之后的字符 ctrl l 清空屏幕终端内容 同于clear
  • 使用cocotools对yolov5 6.1的检测结果进行评估(其他模型类似,只需要调整数据格式为coco的就行)

    介绍 本博客是讲如何使用yolov5对测试集进行检测 然后使用cocotools进行评估 增加COCOeval的每个类别ap显示 5 0版本模型看这个博客 代码 5 0版链接 6 1版链接 环境 pytorch只需要保证能跑起来yolov5
  • 基于FPGA的简易频率计(Verilog HDL)

    文章目录 1 设计要求 2 方案 3 单元电路设计 3 1 FPGA部分模块电路代码 3 1 1分频电路 3 1 2主控电路 3 1 3计数电路 3 1 4译码显示电路 3 1 5超量程指示电路 3 2外部电路设计 3 3顶层电路设计图 4