fpga测频原理和verilog代码

总的来说,fpga测量频率有两种算法,就是常说的测频和测周。专门翻了一下《电子测量》课本找定义,测频是在一段闸门时间内对输入信号周期进行计数,而测周则相反,是在输入信号的时段内,对标准信号周期进行计数。可以理解为,测频是用慢时钟测高频,测周是用用快时钟测低频周期。这种理解也符合“高频测频,低频测周”的说法。

就以测频算法为例写程序。难点是对闸门开始和结束标志的捕获。那我们可以用低频信号时钟的两个上升沿之间的那段时间作为闸门,对上升沿时间内输入信号周期进行计数。所以这就转为对时钟信号沿的捕获。一般捕捉沿是靠拼接运算符。verilog用{ },VHDL用&。

于是以posedge datain作为敏感信号(因为它快),当检测到clk的上升沿到来时,开始对datain上升沿计数。再下一个上升沿到来时,输出计数,并清零。

实现代码:

仿真结果:

从输出的结果看,得到的计数值会有两个(当不能整除的时候),两个值相差1,其实还是可以接受的吧。在ASK、FSK解码等场合这个计数值已经够用,只需要判断计数值在分频值+1或-1范围即可。如果要真实的频率值测出来,据说得去弄个除法核算,公式fo = N/T。我还没试过。

时间: 2024-10-29 02:30:46

fpga测频原理和verilog代码的相关文章

FPGA按键去抖verilog代码

按键去抖的原因及其分类就不罗嗦了. 在这里解释一段代码,代码是网上找的,看了半天没懂,无奈查了半天想了半天,终于明白了... module sw_debounce(clk,rst_n,sw1,sw2,sw3,//outputled_d3,led_d4,led_d5);input clk;input rst_n;input sw1,sw2,sw3; //Active lowoutput led_d3;output led_d4;output led_d5;// ------------------

Verilog代码自动缩进和对齐Perl脚本

实验室做FPGA开发时经常用到Verilog,代码规范成为一个问题,于是乎写了一个Perl脚本对代码进行规范化,主要是进行自动缩进和对齐. 代码原理很简单,主要是使用了正则表达式进行匹配和替换. 代码如下,初学Perl,请读者赐教: ##################################################### # 代码缩进对齐脚本 # 功能:对Verilog代码进行自动缩进和对齐处理, # 该版本目前还没有对case语句进行处理 # 更改:增加了对assign的缩进

Mybatis插件原理和PageHelper结合实战分页插件(七)

今天和大家分享下mybatis的一个分页插件PageHelper,在讲解PageHelper之前我们需要先了解下mybatis的插件原理.PageHelper 的官方网站:https://github.com/pagehelper/Mybatis-PageHelper 一.Plugin接口 mybatis定义了一个插件接口org.apache.ibatis.plugin.Interceptor,任何自定义插件都需要实现这个接口PageHelper就实现了改接口 package org.apach

iOS开发UI篇—程序启动原理和UIApplication

iOS开发UI篇-程序启动原理和UIApplication 一.UIApplication 1.简单介绍 (1)UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序. (2)每一个应用都有自己的UIApplication对象,而且是单例的,如果试图在程序中新建一个UIApplication对象,那么将报错提示. (3)通过[UIApplicationsharedApplication]可以获得这个单例对象 (4) 一个iOS程序启动后创建的第一个对

Verilog代码可移植性设计(转自特权同学博客http://bbs.ednchina.com/BLOG_ARTICLE_1983188.HTM)

最近开始学习FPGA,之前项目中仅用过parameter,在CrazyBingo的<FPGA设计技巧与案例开发例程详解>中看到使用localparam,以及在366页中简单介绍了下‘define,parameter和localparam的区别.查找特权同学博客发现其曾经讲诉过.文中红色阴影处为文中错误. Verilog代码可移植性设计 1.       参数定义 localparam,实例代码如下: module tm1( clk,rst_n, pout ); input clk; input

iOS-程序启动原理和UIApplication

iOS开发UI篇—程序启动原理和UIApplication 一.UIApplication 1.简单介绍 (1)UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序. (2)每一个应用都有自己的UIApplication对象,而且是单例的,如果试图在程序中新建一个UIApplication对象,那么将报错提示. (3)通过[UIApplicationsharedApplication]可以获得这个单例对象 (4) 一个iOS程序启动后创建的第一个对

程序启动原理和UIApplication

iOS开发UI篇—程序启动原理和UIApplication 一.UIApplication 1.简单介绍 (1)UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序. (2)每一个应用都有自己的UIApplication对象,而且是单例的,如果试图在程序中新建一个UIApplication对象,那么将报错提示. (3)通过[UIApplicationsharedApplication]可以获得这个单例对象 (4) 一个iOS程序启动后创建的第一个对

iOS开发UI篇之16程序启动原理和UIApplication

原文  http://blog.csdn.net/u010927311/article/details/40145035 iOS 开发 UI 篇 — 程序启动原理和 UIApplication 一. UIApplication 1. 简单介绍 ( 1 ) UIApplication 对象是应用程序的象征,一个 UIApplication 对象就代表一个应用程序. ( 2 )每一个应用都有自己的 UIApplication 对象,而且是单例的,如果试图在程序中新建一个 UIApplication 

ARP原理和ARP攻击

ARP--在TCP/IP协议栈中,最不安全的协议莫过于ARP了,我们经常听到的网络扫描,内网渗透,流量欺骗等等,他们基本上都与ARP有关系,甚至可以说,他们的底层都是基于ARP实现的.但是ARP的是实现仅需一问一答的两个包即可,实现上很简单. 一.ARP协议 ARP(Address Resolution Protocol)地址解析协议,目的是实现IP地址到MAC地址的转换. 在计算机间通信的时候,计算机要知道目的计算机是谁(就像我们人交流一样,要知道对方是谁),这中间需要涉及到MAC地址,而MA