Verilog频率计.docx

上传人:b****5 文档编号:3116894 上传时间:2022-11-17 格式:DOCX 页数:20 大小:365.04KB
下载 相关 举报
Verilog频率计.docx_第1页
第1页 / 共20页
Verilog频率计.docx_第2页
第2页 / 共20页
Verilog频率计.docx_第3页
第3页 / 共20页
Verilog频率计.docx_第4页
第4页 / 共20页
Verilog频率计.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

Verilog频率计.docx

《Verilog频率计.docx》由会员分享,可在线阅读,更多相关《Verilog频率计.docx(20页珍藏版)》请在冰豆网上搜索。

Verilog频率计.docx

Verilog频率计

 

数字频率计的设计

 

学号:

2905101012

姓名:

袁浩

指导老师:

皇小辉

 

摘要

本文介绍了基于FPGA的数字频率计的设计方法,设计采用硬件描述语言Verilog,在软件开发平台ISE上完成,可以在较高速时钟频率(48MHz)下正常工作。

该数字频率计采用测频的方法,能准确的测量频率在10Hz到100MHz之间的信号。

使用ModelSim仿真软件对Verilog程序做了仿真,并完成了综合布局布线,最终下载到芯片Spartan3A上取得良好测试效果。

关键词:

FPGA,Verilog,ISE,测频方法

目录

目录

1引言-4-

1.1数字频率计概述-5-

1.2频率测量的思想和方法-5-

第二章任务要求-7-

第三章基于VerilogHDL数字频率计程序设计-8-

3.1数字频率计系统模块划分结构-8-

3.2计数模块counter-9-

3.3门控模块gate_control-12-

4.4分频模块fdiv-13-

3.5寄存器模块flip_latch-15-

4.6多路选择模块data_mux-17-

3.7动态位选模块dispselect-18-

3.8BCD译码模块dispdecoder-19-

3.9顶层电路top-22-

第四章综合分析-25-

4.1总体仿真结果-25-

4.2误差分析-26-

参考文献-27-

1引言

在电子测量领域中,频率测量的精确度是最高的,可达10—10E-13数量级。

因此,在生产过程中许多物理量,例如温度、压力、流量、液位、PH值、振动、位移、速度、加速度,乃至各种气体的百分比成分等均用传感器转换成信号频率,然后用数字频率计来测量,以提高精确度。

国际上数字频率计的分类很多。

按功能分类,测量某种单一功能的计数器。

如频率计数器,只能专门用来测量高频和微波频率;时间计数器,是以测量时间为基础的计数器,其测时分辨力和准确度很高,可达ns数量级;特种计数器,它具有特种功能,如可逆计数器、予置计数器、差值计数器、倒数计数器等,用于工业和白控技术等方面。

数字频率计按频段分类

(1)低速计数器:

最高计数频率<10MHz;

(2)中速计数器:

最高计数频率10—100MHz;(3)高速计数器:

最高计数频率>100MHz;(4)微波频率计数器:

测频范围1—80GHz或更高。

单片机自问世以来,性能不断提高和完善,其资源又能满足很多应用场合的需要,加之单片机具有集成度高、功能强、速度快、体积小、功耗低、使用方便、价格低廉等特点,因此,在工业控制、智能仪器仪表、数据采集和处理、通信系统、高级计算器、家用电器等领域的应用日益广泛,并且正在逐步取代现有的多片微机应用系统。

单片机的潜力越来越被人们所重视。

特别是当前用CMOS工艺制成的各种单片机,由于功耗低,使用的温度范围大,抗干扰能力强、能满足一些特殊要求的应用场合,更加扩大了单片机的应用范围,也进一步促使单片机性能的发展。

 

1.1数字频率计概述

频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。

通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为1秒。

闸门时间也可以大于或小于一秒。

闸门时间越长,得到的频率值就越准确,但闸门时间越长则没测一次频率的间隔就越长。

闸门时间越短,测的频率值刷新就越快,但测得的频率精度就受影响。

本文数字频率计是用数字显示被测信号频率的仪器,被测信号可以是正弦波,方波或其它周期性变化的信号。

如配以适当的传感器,可以对多种物理量进行测试,比如机械振动的频率,转速,声音的频率以及产品的计件等等。

因此,数字频率计是一种应用很广泛的仪器电子系统非常广泛的应用领域内,到处可见到处理离散信息的数字电路。

数字电路制造工业的进步,使得系统设计人员能在更小的空间内实现更多的功能,从而提高系统可靠性和速度。

集成电路的类型很多,从大的方面可以分为模拟电路和数字集成电路2大类。

数字集成电路广泛用于计算机、控制与测量系统,以及其它电子设备中。

一般说来,数字系统中运行的电信号,其大小往往并不改变,但在实践分布上却有着严格的要求,这是数字电路的一个特点。

数字集成电路作为电子技术最重要的基础产品之一,已广泛地深入到各个应用领域

1.2频率测量的思想和方法

1.频率测量的基本思想

测量被测信号在单位时间内的脉冲个数,其数字表达式

f=N/t

其中:

F为被测信号的频率

N为脉冲的个数

T为被测信号产生N个脉冲所需的时间

2.频率测量方法

直接测量法:

直接测量被测信号的频率,通过计数法来对被测信号在一定时间内的脉冲个数进行计数。

直接厕灵法的结构框图如图1.2.1所示。

被测信号测量结果

 

图1.2.1直接测量法的结构框图

3.误差来源

①技术过程中最大存在着±1个字的量化误差

②对时间t的准确把握,主要包括准时钟的时间准确性、整形电路、分频电路以及技术时间控制闸门的开关速度等因素。

直接法测量的最大相对误差可以表达为

(df/f)max=±(|1/N|+|G|)=±(|1/ft|+|G|)

其中:

N为脉冲的个数,G为标准时钟的频率稳定性,f为被测信号频率,t为被测信号产生N个脉冲所需的时间。

第二章任务要求

设计一个计数式频率计,其频率测量范围为10Hz~10MHz,测量结果用6只数码管显示。

有三个带锁按键开关(任何时候都只能有一个被按下)被用来选择1S、0.1S和0.01S三个闸门时间中的一个。

有一个按钮开关用来使频率计复位。

有两只LED,一只用来显示闸门的开与闭,另一只当计数器溢出时做溢出指示。

下图显示了该频率计前面板的基本排布构想。

 

第三章基于VerilogHDL数字频率计程序设计

3.1数字频率计系统模块划分结构

数字频率计中的CPLD/FPGA是频率计的核心,主要实现在一定时间内,对被测信号的脉冲个数进行计算,并且转化为相应的频率值显示在六个数码管上。

首先将系统分成七个模块来分别设计仿真。

分别有以下七个模块:

经过上述模块化划分后的结构框如图3.1所示

图3.1模块化划分后的结构

●计数模块counter:

对包含被测信号频率信息的脉冲进行计数

●门控模块gate_control:

根据量程,控制技术模块计数。

●分频模块fdiv:

将标准时钟分频,得到计数以及动态显示所需的时钟。

●寄存器模块flip_latch:

对计数模块的计数值进行寄存。

●多路选择模块data_mux:

根据动态选择信号,选择相应的需要显示的计数值

●动态为选择模块dispselevt:

输出动态显示中的位选信号

●BCD译码模块dispdenoder:

将BCD码译成数码管的显示数据

 

3.2计数模块counter

该模块主要完成对被测信号经过放大整形后输入到可编程逻辑器件的F_IN信号是现在一定的时间下的计数,采用六个异步BCD码十进制计数器来实现0~999999范围的计数,而加入了一个复位信号,当复位信号到来时,全部输出为0,并输出一个led来指示阀门信号的选择值。

因为要输出一个over_alarm信号所以必须在6个计数器的基础上再加上一个计数器来储存溢出值。

计数模块的结构框图如图3.2.1所示。

图3.2.1

源程序如下:

modulecounter(EN,reset,F_IN,Q0,Q1,Q2,Q3,Q4,Q5,Q6,led);

output[3:

0]Q5,Q4,Q3,Q2,Q1,Q0;outputQ6;outputled;inputEN;

inputF_IN;inputreset;

reg[3:

0]Q5,Q4,Q3,Q2,Q1,Q0;regQ6;regled;

always@(posedgeF_INornegedgereset)

if(!

reset)

begin

Q0<=4'b0000;Q1<=4'b0000;Q2<=4'b0000;Q3<=4'b0000;

Q4<=4'b0000;Q5<=4'b0000;Q6<=1'b0;

endelsebegin

if((EN==1'b1)&&(Q0!

=4'b1001))

beginQ0<=Q0+4'b0001;led<=1'b0;endelse

beginQ0<=4'b0000;if((EN==1'b1)&&(Q1!

=4'b1001))

beginQ1<=Q1+4'b0001;led<=1'b0;

endelsebeginQ1<=4'b0000;

if((EN==1'b1)&&(Q2!

=4'b1001))

beginQ2<=Q2+4'b0001;led<=1'b0;endelse

beginQ2<=4'b0000;

if((EN==1'b1)&&(Q3!

=4'b1001))begin

Q3<=Q3+4'b0001;led<=1'b0;endelse

beginQ3<=4'b0000;if((EN==1'b1)&&(Q4!

=4'b1001))begin

Q4<=Q4+4'b0001;led<=1'b0;endelsebeginQ4<=4'b0000;

if((EN==1'b1)&&(Q5!

=4'b1001))beginQ5<=Q5+4'b0001;

led<=1'b0;endelsebeginQ5<=4'b0000;led<=1'b1;

if((EN==1'b1)&&(Q0==4'b1001)&&(Q0==4'b1001)&&(Q1==4'b1001)&&(Q2==4'b1001)&&(Q3==4'b1001)&&(Q4==4'b1001)&&(Q5==4'b1001))

beginQ6<=Q6+4'b0001;endelseQ6<=4'b0000;endendendendendendendendmodule

该模块定义输入端口如下:

●EN:

异步BCD码十进制计数器的全局使能信号

●reset:

异步BCD码十进制计数器复位信号

●F_IN:

被测信号经过放大与整形处理后的信号

该模块定义输出端口如下:

●led:

阀门选择信号灯,闪烁频率等于现在选择的闸门值。

●Q0:

计数器的最低位输出●Q1:

计数器的第5位输出

●Q2:

计数器的第4位输出●Q3:

计数器的第3位输出

●Q4:

计数器的第2位输出●Q5:

计数器的第1位输出

●Q6:

计数器的最高位溢出储存位

经过ModelSimSE6.1f仿真图像如下:

 

3.3门控模块gate_control

门控模块实现检测外界量程的选择,并且根据量程输出控制6位BCD码十进制计算器的计数时钟。

生成的模块如下:

实现的源程序如下:

modulegate_control(SW0,SW1,SW2,f1hz,f10hz,f100hz,Latch_EN,Counter_EN,dp_s1hz,dp_s10hz,dp_s100hz);

outputLatch_EN;outputCounter_EN;outputdp_

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1