文档库 最新最全的文档下载
当前位置:文档库 › 基于FPGA的等精度频率计

基于FPGA的等精度频率计

基于FPGA的等精度频率计
基于FPGA的等精度频率计

光电与通信工程学院课程设计报告书

课设名称:等精度频率计

年级专业及班级:

姓名:

学号:

一、课程设计目的

1、进一步熟悉 Quartus Ⅱ的软件使用方法,熟悉 keil 软件使用;

2、熟悉单片机与可编程逻辑器件的开发流程及硬件测试方法;

3、掌握等精度频率计设计的基本原理。

4、掌握独立系统设计及调试方法,提高系统设计能力。

实验设备

EDA最小系统板一块(康芯)、PC机一台、示波器一台、信号发生器一台、万用表一个。

二、设计任务

利用单片机与FPGA设计一款等精度频率计,待测脉冲的检测及计数部分由FPGA实现,FPGA的计数结果送由单片机进行计算,并将最终频率结果显示在数码管上。要求该频率计具有较高的测量精度,且在整个频率区域能保持恒定的测试精度,具体指标如下:

a)具有频率测试功能:测频范围 100Hz~5MHz。测频精度:相对误差恒为基准频率的万分之一。

b)具有脉宽测试功能:测试范围 10μs~1s,测试精度:0.1μs。

c)具有占空比测试功能:测试精度1%~99%。

d)具有相位测试功能。

(注:任务a 为基本要求,任务 b、c、d 为提高要求)

三、基本原理

基于传统测频原理的频率计的测量精度将随被测信号频率的下降而降低,在实用中有较大的局限性,而等精度频率计不但具有较高的测量精度,而且在整个频率区域能保持恒定的测试精度。

3.1 等精度测频原理

等精度频率计主控结构如图 1 所示

预置门控信号 CL 选择为 0.1~1s 之间(通过测试实验得出结论:CL 在这个

范围内选择时间宽度对测频精度几乎没有影响)。BZH 和 TF 分别是 2 个高速计数器,BZH 对标准频率信号(频率为 Fs)进行计数,设计数结果为 Ns;TF 对被测信号(频率为Fx)进行计数,计数结果为 Nx,则有

MUX64-8 模块并不是必须的,可根据实际设计进行取舍。分析测频计测控时序,着重分析 START的作用,完成等精度频率计设计。

3.2 FPGA 模块

FPGA模块所要完成的功能如图 1 所示,由于单片机的速度慢,不能直接测量高频信号,所以使用高速 FPGA 为测频核心。100MHZ 的标准频率信号由FPGA 内部的 PLL 倍频实现,待测信号 TCLK 为方波,由信号发生器给出待测方波信号(注意:该方波信号带有直流偏置,没有负电压,幅值3.3V)。预制

门控信号 CL 由单片机发出,BRNA 和 ENA 分别是 BZH 与 TF 两个计数器的计数允许信号端。FPGA 将允许计数时间内的 BZH、TF 的运行结果送入单片机进

行最后的计算。

顶层文件如下:

2以下是把20M 5倍频的设置,利用FPGA内部的PLL。

电路需要100M标准频率信号,FPGA提供20M的频率,所以需要建立PLL模块,使之五杯频,得到所需的100M信号。

功能仿真设置:

下图是波形仿真的结果:

3.3 单片机模块

单片机模块完成对整个测频系统的控制,包括对FPGA的控制以及数码管的显示控制。测频允许信号由单片机发出,并且单片机的P0 口负责循环读取FPGA 发送过来的测频结果数据(BZH、TF两个计数器的计数结果,每次传送8位数据),P2负责发送控制信号,单片机可以通过结束信号了解测频记数是否结束,以确定何时开始读取数据。

附上康芯原理图截图:

占空比

五、心得体会

这周课程设计的题目是等精度频率计的设计,由于书本上有一段程序,所以一开始只是将书上的程序和显示波形研究了一下。当到课程设计的时候,将书上程序敲入并实现效果后有点茫然的感觉。于是,我又仔仔细细地分析了一遍设计原理,从新改变了输入的代码,加上自己的思路,并能自己添加预置控制信息CL模块。原本我还想将测试频率显示在数码管上,但是最终没能实现,这应该

是我的一个遗憾吧。设计中,我感受到了硬件描述语言的强大,我可以几乎不用

考虑硬件条件,将代码导入就可实现功能。不要总想着去依靠书本上的原题或者是他人,自己思考的做出来的,才算是自己真正收获的。本次实验最大的收获莫过于,独立系统的去完成一项任务。在其中我查阅了大量的资料,尤其是数字电路、quartersⅡ软件使用说明、EDA设计等方面的资料。

通过本次学习使我对时序电路有了更深的理解,具体体现在复位、计数、锁存多环节的控制上。同时,在这次实验中,我第一次联合单片机和EDA一起完成一个项目。EDA充分的发挥其高频工作的特点,使得频率测量的上限很高。单片机则在整个系统中充当控制及数据处理的作用

设计的优点及缺点

本频率计最大优点在于它的高精度。信号频率的测量,不受闸门信号精度的影响。在被测信号送入计数器之前,先通过D触发器,使闸门信号和被测信号同步,有效地避免了±1误差。不仅如此,本频率计对100HZ至5MHZ的全域相对误差均小于百万之一。

当然,本频率计也存在缺点。在频率计的设计中,乘法器为32位,除法器采用64位,资源占用率太大。单片机处理32位数据的方式有待改进,要是它变得更优化

六、系统设计步骤及程序,结果

FPGA:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY EQUALFRECOUNT IS

PORT(

BCLK,TCLK:IN STD_LOGIC;

DATA_OUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);

EN:IN STD_LOGIC;

ADDRESS:IN STD_LOGIC_VECTOR(3 DOWNTO 0)

);

END EQUALFRECOUNT;

ARCHITECTURE ARCH OF EQUALFRECOUNT IS

SIGNAL EN2,WIDE_TEST:STD_LOGIC;

SIGNAL WIDE_COUNT,B_COUNT,T_COUNT:STD_LOGIC_VECTOR(31 DOWNTO 0);

SIGNAL SAVE_WIDE,SAVE_B,SAVE_T:STD_LOGIC_VECTOR(31 DOWNTO 0);

BEGIN

PROCESS(EN,TCLK)

BEGIN

IF RISING_EDGE(TCLK) THEN

EN2<=EN;

ELSE NULL;

END IF;

END PROCESS;

PROCESS(EN2,TCLK,BCLK)

BEGIN

IF EN2='1' THEN

IF RISING_EDGE(TCLK) THEN

IF T_COUNT=X"FFFF_FFFF" THEN

T_COUNT<=(OTHERS=>'1');

ELSE T_COUNT<=T_COUNT+1;

SAVE_T<=T_COUNT+1;--SAVE T_COUNT

END IF;

ELSE NULL;

END IF;

IF FALLING_EDGE(TCLK) THEN

IF WIDE_TEST='0' THEN

WIDE_COUNT<=B_COUNT;

WIDE_TEST<='1';

ELSE SAVE_WIDE<=WIDE_COUNT;--SAVE WIDE_COUNT

END IF;

END IF;

IF RISING_EDGE(BCLK) THEN

IF B_COUNT=X"FFFF_FFFF" THEN

B_COUNT<=(OTHERS=>'1');

ELSE B_COUNT<=B_COUNT+1;

SAVE_B<=B_COUNT+1;--SAVE B_COUNT IN SAVE_B END IF;

ELSE NULL;

END IF;

ELSE

--WHEN ENA=0,WE OUTPUT THE DATA AND RESET THE COUNTER.

WIDE_COUNT<=(OTHERS=>'0');

B_COUNT<=(OTHERS=>'0');

T_COUNT<=(OTHERS=>'0');

WIDE_TEST<='0';

END IF;

END PROCESS;

PROCESS(ADDRESS,EN2,SAVE_T,SAVE_B,SAVE_WIDE,BCLK) BEGIN

IF RISING_EDGE(BCLK) THEN

IF EN2='0' THEN

--USE SOME CONSTANTS TO TEST

CASE ADDRESS IS

WHEN X"0"=>DATA_OUT<=SAVE_T(7 DOWNTO 0);

WHEN X"1"=>DATA_OUT<=SAVE_T(15 DOWNTO 8);

WHEN X"2"=>DATA_OUT<=SAVE_T(23 DOWNTO 16);

WHEN X"3"=>DATA_OUT<=SAVE_T(31 DOWNTO 24);

WHEN X"4"=>DATA_OUT<=SAVE_B(7 DOWNTO 0);

WHEN X"5"=>DATA_OUT<=SAVE_B(15 DOWNTO 8);

WHEN X"6"=>DATA_OUT<=SAVE_B(23 DOWNTO 16);

WHEN X"7"=>DATA_OUT<=SAVE_B(31 DOWNTO 24);

WHEN X"8"=>DATA_OUT<=SAVE_WIDE(7 DOWNTO 0);

WHEN X"9"=>DATA_OUT<=SAVE_WIDE(15 DOWNTO 8);

WHEN X"A"=>DATA_OUT<=SAVE_WIDE(23 DOWNTO 16);

WHEN X"B"=>DATA_OUT<=SAVE_WIDE(31 DOWNTO 24);

WHEN OTHERS=>NULL;

END CASE;

ELSE NULL;

END IF;

ELSE NULL;

END IF;

END PROCESS;

END ARCH;

单片机:

/* *.c文件,文件名:EqualFre_main.c

*各模块的流程控制*/

#include "EqualFre_main.h"

int main(void){

communicationInit_Ex();

while(1){

mode = getMode_Ex(); //确定选择的模式

askForData_Ex(); //请求数据

if(HOLD_DATA_MODE != mode){ //表示没有固定数据时,则载入数据loadData();

}

disData(); //数据显示

}

}

//数据载入

static void loadData(){

fre = getFre_Ex();

wide = getWide_Ex();

duty = getDuty_Ex();

}

/***************************************

数据显示中:

wData(uchar) 传入的参数意义

0 - 9 数字0-9

10 - 19 跟了点号的0-9

20 暗选

***************************************/

static void disDelay(){ //显示延时

uchar data x,y;

for(x=250;x>0;x--)

for(y=50;y>0;y--);

}

//数据显示--总控

static void disData(){

switch(mode){

case SHOW_FRE_MODE: disFre(); disDelay(); break;

case SHOW_WIDE_MODE: disWide(); disDelay();break;

case SHOW_DUTY_MODE: disDuty(); disDelay(); break;

default:break;

}

}

/*static void disFre(){

uchar data i;

for(i=0;i<8;i++)

wData_Ex(1);

}

static void disWide(){

uchar data i;

for(i=0;i<8;i++)

wData_Ex(2);

}

static void disDuty(){

uchar data i;

for(i=0;i<8;i++)

wData_Ex(3);

}*/

//数据显示--显示频率,单位Hz或MHz(双模式)

static void disFre(){

uchar data dataTemp[8],i;

ulong data freTemp = fre;//为了显示1位小数,这里已经将频率扩大10倍uchar data flag = 0;//消零标志位

if(1000000 <= freTemp){//当频率值大于1M时,使用兆显示模式

freTemp /= 100000;//0.00MHz

for(i=2;i<8;i++){//数据从低位到高位装入数据暂存器dataTemp,这里保留2位,用于显示nH(即MHz)

dataTemp[i] = (uchar)(freTemp%10);

freTemp /= 10;

}

dataTemp[4] += 10;//取2位小数,这里是加入小数点

dataTemp[1] = 21;//n

dataTemp[0] = 22;//H

}

else{

for(i=1;i<8;i++){

dataTemp[i] = (uchar)(freTemp%10);

freTemp /= 10;

}

dataTemp[2] += 10;

dataTemp[0] = 22;//H

}

for(i=0;i<8;i++){//数据从高位到低位显示,并进行高位消零操作

if(0 != dataTemp[7-i]){

flag = 1;

}

if((0==dataTemp[7-i])&&(0==flag)){

dataTemp[7-i] = 20;

}

wData_Ex(dataTemp[7-i]); //显示数据

}

}

//数据显示--显示脉宽,单位us,意味着最大只能测1MHz的频率

static void disWide(){

uchar data dataTemp[8],i;

ulong data wideTemp = wide;

uchar data flag = 0;

for(i=0;i<8;i++){

dataTemp[i] = (uchar)(wideTemp%10);

wideTemp /= 10;

}

for(i=0;i<8;i++){//数据从高位到低位显示,并进行高位消零操作

if(0 != dataTemp[7-i]){

flag = 1;

}

dataTemp[1]|=10;

if((0==dataTemp[7-i])&&(0==flag)){

dataTemp[7-i] = 20;

}

wData_Ex(dataTemp[7-i]);

}

}

//数据显示--显示占空比

static void disDuty(){

uchar data dataTemp[4],i;

uint data dutyTemp = duty;

for(i=0;i<4;i++){

dataTemp[i] = (uchar)(dutyTemp%10);

dutyTemp /= 10;

}

dataTemp[2] += 10;

wData_Ex(20);//补4个暗选

wData_Ex(20);

wData_Ex(20);

wData_Ex(20);

for(i=0;i<4;i++){

wData_Ex(dataTemp[3-i]);

}

}

/*

*.h文件,文件名:EqulaFre_SGMDisplay.h

*SGM显示模块,用于显示由主程序传过来的数据

*硬件资源:

164时钟端--P3.1

164数据端--P3.0

*/

#ifndef _EQUALFRE_SGMDISPLAY_H_H_

#define _EQUALFRE_SGMDISPLAY_H_H_

#include

#include

#define uchar unsigned char

sbit sgm_clk=P3^1; //164时钟端

sbit sgm_data=P3^0; //164数据端

static uchar code num[] = {//从低位到高位,高电平有效

0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,//数字0-9

0xfd,0x61,0xdb,0xf3,0x67,0xb7,0xbf,0xe1,0xff,0xf7,//带点号的0-9 0x00,0x2a,0x6e//暗选,n,h

};

//接口函数

void wData_Ex(uchar ); //在数码管上显示数据

#endif

/*

*.c文件,文件名:EqualFre_SGMDisplay.c

*/

#include "EqualFre_SGMDisplay.h"

//接口函数

void wData_Ex(uchar index){

uchar data i,byte;

byte = num[index];

for(i=0;i<8;i++){

sgm_clk = 0;

sgm_data = (bit)((byte>>i)&0x01);

_nop_();

sgm_clk = 1;

_nop_();

}

}

/*

*.c文件,文件名:EqualFre_modeFromKey.c

*/

#include "EqualFre_modeFromKey.h"

//**************内部函数************

//按键检测延时

static void keyDelay(){

uchar data x,y;

for(x=100;x>0;x--);

for(y=200;y>0;y--) ;

}

//按键扫描

static void keyScan(){ //选择模式

if(0 == Key_Mode){

keyDelay();

if(1 == Key_Mode) return ;

switch(mode){

case SHOW_FRE_MODE: //测频率

mode = SHOW_WIDE_MODE; //下一次测的是脉宽

break;

case SHOW_WIDE_MODE: //测脉宽

mode = SHOW_DUTY_MODE; //下一次测的是占空比

break;

case SHOW_DUTY_MODE: //测占空比

mode = SHOW_FRE_MODE; //下一次测的是频率

break;

default:

mode = SHOW_FRE_MODE;

break;

}

while(0 == Key_Mode) ;

keyDelay();

}

if(0 == Key_Hold_Data){

keyDelay();

if(1 == Key_Hold_Data) return ;

mode = HOLD_DATA_MODE; //按下Key_Hold_Data,即为P1^1时,数据保持不变

while(0 == Key_Hold_Data);

keyDelay();

}

}

//*******************接口函数**************

uchar getMode_Ex(void){ //返回mode,确定选择的模式keyScan();

return mode;

}

/*

*.h文件,文件名:equalFre.h

*模式控制模块,通过键盘来控制模式的选择,并将所选模式传递给函数

*所使用的硬件资源:

频率显示、脉宽显示、占空比显示的切换建---P1.0

测试值保持键-- P1^1

*/

#ifndef _EQUALFRE_MODEFROMKEY_H_H_

#define _EQUALFRE_MODEFROMKEY_H_H_

#include

#define SHOW_FRE_MODE 0

#define SHOW_WIDE_MODE 1

#define SHOW_DUTY_MODE 2

#define HOLD_DATA_MODE 3

#define uchar unsigned char

sbit Key_Mode = P1^0; //实现频率显示,脉宽显示,占空比显示的转化

sbit Key_Hold_Data = P1^1; //将测得的数值定住

static uchar data mode;

//内部函数

static void keyDelay(); //按键检测延时

static void keyScan(); //按键扫描

//接口函数

uchar getMode_Ex(void); //在数码管上显示数据

#endif

/*

*.h文件,文件名:EqulaFre_communication.h

*通信模块,用于和FPGA通信,获取频率、脉宽、占空比的原始数据。

*并将处理好数据传给主程序

*所使用的硬件资源:

地址线0---P2.0

地址线1---P2.1

地址线2---P2.2

地址线3---P2.3

测频标志位---P2.4

数据线----P0

定时器T0

*/

#ifndef _EQUALFRE_COMMUNICATION_H_H_

#define _EQUALFRE_COMMUNICATION_H_H_

#include

#include

#define uchar unsigned char

#define ulong unsigned long

#define uint unsigned int

#define MY_TH0 0x5d//对于20Mhz晶振来说,25ms

#define MY_TL0 0x3d

#define FREE_TIME 80//空闲时间,即让FPGA测频率的时间,50ms*FREE_TIME

#define DATA_IN P0

#define BASE_FRE 100000000 //FPGA的基准频率

sbit address0 = P2^0;

sbit address1 = P2^1;

sbit address2 = P2^2;

sbit address3 = P2^3;

sbit TEST_EN = P2^4;//当它为1表示测频结束

static ulong data fre,wide;

static uint data duty;

//内部函数

static ulong getSourceData(uchar ); //从FPGA中获得基准信号,被测信号的数据//接口函数

void communicationInit_Ex(void);

void askForData_Ex(void); //请求数据

ulong getFre_Ex(void); //计算频率值

ulong getWide_Ex(void); //计算脉宽值

uint getDuty_Ex(void); //计算占空比

#endif

/*

*.c文件,文件名:EqualFre_communication.c

*/

#include "EqualFre_communication.h"

//从FPGA那里获得频率、脉宽、占空比的原始值

static ulong getSourceData(uchar sourceKind){

uchar data byte0,byte1,byte2,byte3;

ulong data temp = 0;

byte0 = byte1 = byte2 = byte3 = 0;

switch(sourceKind){

case 1://被测信号T值

address3 = 0; address2 = 0; address1 = 0; address0 = 0;

_nop_();_nop_();_nop_();_nop_();//FPGA反应时间

byte0 = DATA_IN;

address3 = 0; address2 = 0; address1 = 0; address0 = 1;

_nop_();_nop_();_nop_();_nop_();//FPGA反应时间

byte1 = DATA_IN;

address3 = 0; address2 = 0; address1 = 1; address0 = 0;

_nop_();_nop_();_nop_();_nop_();//FPGA反应时间

byte2 = DATA_IN;

address3 = 0; address2 = 0; address1 = 1; address0 = 1;

_nop_();_nop_();_nop_();_nop_();//FPGA反应时间

byte3 = DATA_IN;

break;

case 2://基准信号B值

address3 = 0; address2 = 1; address1 = 0; address0 = 0;

_nop_();_nop_();_nop_();_nop_();//FPGA反应时间

byte0 = DATA_IN;

address3 = 0; address2 = 1; address1 = 0; address0 = 1;

_nop_();_nop_();_nop_();_nop_();//FPGA反应时间

byte1 = DATA_IN;

address3 = 0; address2 = 1; address1 = 1; address0 = 0;

_nop_();_nop_();_nop_();_nop_();//FPGA反应时间

byte2 = DATA_IN;

address3 = 0; address2 = 1; address1 = 1; address0 = 1;

_nop_();_nop_();_nop_();_nop_();//FPGA反应时间

byte3 = DATA_IN;

break;

case 3://脉宽W值

address3 = 1; address2 = 0; address1 = 0; address0 = 0;

_nop_();_nop_();_nop_();_nop_();//FPGA反应时间

byte0 = DATA_IN;

address3 = 1; address2 = 0; address1 = 0; address0 = 1;

_nop_();_nop_();_nop_();_nop_();//FPGA反应时间

byte1 = DATA_IN;

address3 = 1; address2 = 0; address1 = 1; address0 = 0;

_nop_();_nop_();_nop_();_nop_();//FPGA反应时间

byte2 = DATA_IN;

address3 = 1; address2 = 0; address1 = 1; address0 = 1;

_nop_();_nop_();_nop_();_nop_();//FPGA反应时间

byte3 = DATA_IN;

break;

default:break;

}

temp = byte0 + byte1*256 + byte2*65536 + byte3*256*65536; //转化为十进制return temp;

}

//20MHz,25ms

void t0() interrupt 1{

static uchar data count;

TH0 = MY_TH0;

TL0 = MY_TL0;

count++;

if(FREE_TIME == count){//测频时间FREE_TIME *50ms

TEST_EN = 0;

}

if(2*FREE_TIME == count){

TEST_EN = 1;

count = 0;

}

}

/*********************************************接口函数**********************

****定义了传向主函数的频率、脉宽、占空比的值

****接收来自主函数的请求

*/

//通信模块初始化

void communicationInit_Ex(void){

IE |= 0x82;

TMOD = 0x01;

TH0 = MY_TH0;

TL0 = MY_TL0;

TR0 = 1;

TEST_EN = 1;//允许测频

//数据请求

void askForData_Ex(void){

ulong data B,T,W;

// double tmp;

if(0 == TEST_EN){

T = getSourceData(1); //被测信号的周期数

B = getSourceData(2); //基准信号的周期数

W = getSourceData(3); //脉宽的周期数

if(0 == B) B = 1;

fre=(ulong)(T/(0.1*B)*BASE_FRE);//频率先扩大10倍,即分母乘以0.1,以保留一位小数,单位hz

wide=(ulong)(0.1*W);//脉宽单位us

duty=(uint)(W*T/(0.0001*B));//占空比以百分数显示,并扩大100倍,以保留2位小数

fre = T;

wide = B;

duty = (uint)W;

wide=W;

/*tmp = BASE_FRE * (double)T;

tmp=tmp/(double)B;

fre = (long int)tmp;

tmp = (double)W+(double)duty;

tmp = (double)W /tmp;

tmp = tmp*100;

duty=(long int)(tmp+0.5);

wide=W;

tmp=B*(double)T;

tmp=tmp/(double)B;

fre=(long int)tmp;*/

}

}

ulong getFre_Ex(void){

return fre; //返回测量的频率值

}

ulong getWide_Ex(void){

return wide; //返回测量的脉宽值

}

uint getDuty_Ex(void){

return duty; //返回测量的占空比

}

等精度频率计设计C程序

1 #include 2 #include 3 #include 4 #include 5 #include 6 #define uchar unsigned char 7 #define uint unsigned int 8 #define ulong unsigned long 9 10 code uchar m[]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6,0x00}; 11 // 0 1 2 3 4 5 6 7 8 9 灭 12 data uchar NS[]={0x0,0x0,0x0,0x0};//标准频率计数 13 data uchar NX[]={0x0,0x0,0x0,0x0};//待测频率计数 14 data ulong NSS,NXX,MM,F; 15 data ulong temp1,temp2; 16 data uchar shuju[]={0,0,0,0,0,0,0,0};//数码管数据 17 sbit CLR = P2^3; 18 sbit SEL2 = P2^2; 19 sbit SEL1 = P2^1; 20 sbit SEL0 = P2^0; 21 sbit CL = P2^4; 22 sbit START = P2^7; 23 //int i,j,k,l; 24 char *pNS; //清零 25 char *pNSS; 26 char *pNX; 27 char *pNXX; 28 29 void delay(uint x); 30 void display(); 31 void operation(); 32 void outdata(); 33 34 long powcyc(long c1,long c2) 35 { 36 long c3=1; 37 uchar ii; 38 for(ii=0;ii

全国大学生电子设计大赛题一等奖数字频率计

2015 年全国大学生电子设计竞赛 全国一等奖作品 设计报告部分错误未修正,软 件部分未添加 竞赛选题:数字频率计(F 题)

摘要 本设计选用FPGA 作为数据处理与系统控制的核心,制作了一款超高精度的数字频率计,其优点在于采用了自动增益控制电路(AGC)和等精度测量法,全部电路使用PCB 制版,进一步减小误差。 AGC 电路可将不同频率、不同幅度的待测信号,放大至基本相同的幅度,且高于后级滞回比较器的窗口电压,有效解决了待测信号输入电压变化大、频率范围广的问题。频率等参数的测量采用闸门时间为1s 的等精度测量法。闸门时间与待测信号同步,避免了对被测信号计数所产生±1 个字的误差,有效提高了系统精度。 经过实测,本设计达到了赛题基本部分和发挥部分的全部指标,并在部分指标上远超赛题发挥部分要求。 关键词:FPGA 自动增益控制等精度测量法

目录

1. 系统方案 1.1. 方案比较与选择 宽带通道放大器 方案一:OPA690 固定增益直接放大。由于待测信号频率范围广,电压范围大,所以选用宽带运算放大器OPA690,5V 双电源供电,对所有待测信号进行较大倍数的固定增益。对于输入的正弦波信号,经过OPA690 的固定增益,小信号得到放大,大信号削顶失真,所以均可达到后级滞回比较器电路的窗口电压。 方案二:基于VCA810 的自动增益控制(AGC)。AGC 电路实时调整高带宽压控运算放大器VCA810 的增益控制电压,通过负反馈使得放大后的信号幅度基本保持恒定。 尽管方案一中的OPA690 是高速放大器,但是单级增益仅能满足本题基本部分的要求,而在放大高频段的小信号时,增益带宽积的限制使得该方案无法达到发挥部分在频率和幅度上的要求。 方案二中采用VCA810 与OPA690 级联放大,并通过外围负反馈电路实现自动增益控制。该方案不仅能够实现稳定可调的输出电压,而且可以解决高频小信号单级放大时的带宽问题。因此,采用基于VCA810 的自动增益控制方案。 正弦波整形电路 方案一:采用分立器件搭建整形电路。由于分立器件电路存在着结构复杂、设计难度大等诸多缺点,因此不采用该方案。 方案二:采用集成比较器运放。常用的电压比较器运放LM339 的响应时间为1300ns,远远无法达到发挥部分100MHz 的频率要求。因此,采用响应时间为4.5ns 的高速比较器运放TLV3501。 主控电路 方案一:采用诸如MSP430、STM32 等传统单片机作为主控芯片。单片机在现实中与FPGA 连接,建立并口通信,完成命令与数据的传输。 方案二:在FPGA 内部利用逻辑单元搭建片内单片机Avalon,在片内将单片机和测量参数的数字电路系统连接,不连接外部接线。 在硬件电路上,用FPGA 片内单片机,除了输入和输出显示等少数电路外,其它大部分电路都可以集成在一片FPGA 芯片中,大大降低了电路的复杂程度、减小了体积、电路工作也更加可靠和稳定,速度也大为提高。且在数据传输上方便、简单,因此主控电路的选择采用方案二。

基于FPGA的频率计的文献综述

文献综述 一.课题来源及研究的目的和意义 数字频率计已经广泛应用于高科技等产品上面,可以不无夸张的说没有不包含有频率计的电子产品。我国的CD、VCD、DVD和数字音响广播等新技术已开始大量进入市场;而在今天这些行业中都必须用到频率计。到今天频率计已开始并正在向智能、精细方向的发展,因此系统对电路的要求越来越高,传统的集成电路设计技术已经无法满足性能日益提高的系统要求。在信息技术高度发展的今天,电子系统数字化已成为有目共睹的趋势。从传统的应用中小规模芯片构成系统到广泛地应用单片机,直至今天FPGA/CPLD在系统设计中的应用,电子技术已迈入一个全新的阶段。而在电子技术中,频率是最基本的参数之一,而信号的频率往往与测量方案的制定、测量结果都有十分密切的关系,所以测频率方法的研究越来越受到重视。 数字频率计属于时序电路,它主要由具有记忆功能的触发器构成。在计算机及各种数字仪表中,都得到了广泛的应用。在CMOS电路系列产品中,数字频率计是用量最大、品种很多的产品,是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此,频率的测量就显得更为重要。EDA技术是面向解决电子系统最基本最底层硬件实现问题的技术,通过设计输入编辑、仿真、适配、下载实现整个系统硬件软件的设计过程。通过EDA技术设计者不但可以不必了解硬件结构设计, 而且将使系统大大简化, 提高整体的可靠性,再加上其设计的灵活性使得EDA技术得以快速发展和广泛应用。 二、主要研究内容 1、研究内容 数字频率计用于对方波、正弦波、三角波的测量,并将结果用十进制数字显示,本设计的应达到的技术指标有: 1)频率测量范围:10HZ~100MHZ; 2)测量分辨率:1HZ; 3)测量通道灵敏度:50mVpp; 4)通道输入阻抗:不小于100KΩ; 5)测量误差:±1; 2、测量方案 (1)测频原理选择 目前常用测量频率原理有三种:直接测量频率方法、直接与间接测量相结合

等精度频率计的实验报告

数字频率计 摘要 以FPGA(EP2C8Q208C8N)为控制核心设计数字频率计,设计采用硬件描述语言Verilog 该作品主要包括FPGA控制、数码管模块、信号发生器、直流电源模块、独立按键、指示灯模块。主要由直流电源供电、数字信号发生器输出信号,FPGA 控制信号的采集、处理、输出,数码管显示数据,按键切换档位,指示灯显示档位。作品实现了测频、测周、测占空比,能准确的测量频率在10Hz 到100kHz之间的信号。 关键字: 频率计等精度 FPGA (EP2C8Q208C8N)信号发生器Verilog语言

一、系统方案论证与比较 根据题目要求,系统分为以下几个模块,各模块的实现方案比较选择与确定如下: 1.主控器件比较与选择 方案一:采用FPGA(EP2C8Q208C8N)作为核心控制,FPGA具有丰富的I/O 口、内部逻辑和连线资源,采集信号速度快,运行速度快,能够显示大量的信息,分频方便。 方案二:采用SST89C51作为主控器件,虽然该款单片机较便宜,但运行速度较慢,不适合对速度有太大要求的场合,并且不带AD,增加了外围电路。 综上所述,主控器件我选择方案一。 2.测量方法的比较与选择 方案一:采用测频法测量。在闸门时间内对时钟信号和被测信号同时计数,由于在闸门闭合的时候闸门时间不能是被测信号的整数倍,导致计数相差为一个被测信号时间,所以测频法只适合频率较高的测量。 方案二:采用测周法测量。用被测信号做闸门,在闸门信号内对时钟信号计数,由于在闸门闭合的时候闸门时间不能是时钟信号的整数倍,导致计数相差为一个时钟信号时间,所以测周法只适合较低频率的测量。 方案三:采用等精度法和测周法结合的方法。用等精度发测量1KHZ以上的频率,测周法测量1KHZ一下的频率。这种方法取长补短,既能准确的测高频又能测低频。 综上所述,测量方法我选用方案三。 3. 界面显示方案的选择 方案一:采用数码管显示,控制程序简单,价格便宜,显示直观。 方案二:液晶5110,虽然体积小,可以显示各种文字,字符和图案。 考虑到数码管完全可以满足数据显示要求,所以显示部分我选用方案一。 二、理论分析与计算 1、键盘设计 系统中我们采用独立键盘,用2个I/O控制2个键。原理是将2个I/O口直接接键盘的2个引脚,低电平有效,这种键盘的优点反应的速率快。 2、计算公式 (1)测频: 1khz以上:被测频率=时钟频率*(被测频率计数/时钟频率计数) 1khz以下:被测频率=时钟频率/(时钟频率在被测信号高电平计数+时钟频率在被测信号低电平计数)

基于FPGA数字频率计 (可测占空比)

VHDL 课程设计报告——基于FPGA的数字频率计 姓名: 学号: 班级:

目录 1 设计原理 (1) 2功能设计 (1) 3系统总体框图 (1) 4各功能块设计说明 (2) 5实验结果 (14) 6结论分析 (15)

一、设计原理 频计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。通常情况下计算每秒内待测信号的脉冲个数,即闸门时间为1 s。闸门时间可以根据需要取值,大于或小于1 s都可以。闸门时间越长,得到的频率值就越准确,但闸门时间越长,则每测一次频率的间隔就越长。闸门时间越短,测得的频率值刷新就越快,但测得的频率精度就受影响。一般取1 s作为闸门时间,此测量方法称为直接测频法。由于闸门时间通常不是待测信号的整数倍,这种方法的计数值也会产生最大为±1个脉冲误差。进一步分析测量准确度:设待测信号脉冲周期为Tx,频率为Fx,当测量时间为T=1s时,测量相对误差为Tx/T=Tx=1/Fx。由此可知直接测频法的测量准确度与信号的频率有关:当待测信号频率较高时,测量准确度也较高,反之测量准确度也较低。 二、功能设计 1、测量范围:1HZ--------99MHZ,测量精度±1HZ。 2、测量结果高4位与低4位进行分页显示。 当超过9999HZ时,系统亮灯提示超出低4位显示范围,可通过按键进行高低4位结果的显示切换。高4位显示时,伴有小数点位的点亮,提示已成功切换到高4位。 3、测量所测信号的占空比。 能够快速测出输入待测信号的占空比,并且通过按键,切换到占空比显示状态。 4、内置自测信号 由内部时钟产生三个特定时钟,以供自身测试功能是否正常。 三、系统总体框图

全国大学生电子设计大赛F题一等奖数字频率计

2015 年全国大学生电子设计竞赛 全国一等奖作品
设计报告 部分错误未修正,软 件部分未添加
竞赛选题:数字频率计(F 题)
1 / 10

摘要
本设计选用 FPGA 作为数据处理与系统控制的核心,制作了一款超高精度 的数字频率计,其优点在于采用了自动增益控制电路(AGC)和等精度测量法, 全部电路使用 PCB 制版,进一步减小误差。
AGC 电路可将不同频率、不同幅度的待测信号,放大至基本相同的幅度, 且高于后级滞回比较器的窗口电压,有效解决了待测信号输入电压变化大、频率 范围广的问题。频率等参数的测量采用闸门时间为 1s 的等精度测量法。闸门时 间与待测信号同步,避免了对被测信号计数所产生±1 个字的误差,有效提高了 系统精度。
经过实测,本设计达到了赛题基本部分和发挥部分的全部指标,并在部分指 标上远超赛题发挥部分要求。
关键词:FPGA 自动增益控制 等精度测量法
1 / 10

目录
摘 要....................................................................................................................1 目录........................................................................................................................ 2 1. 系统方案...................................................................................................3
1.1. 方案比较与选择................................................................................3 1.1.1. 宽带通道放大器.........................................................................3 1.1.2. 正弦波整形电路.........................................................................3 1.1.3. 主控电路.....................................................................................3 1.1.4. 参数测量方案.............................................................................4
1.2. 方案描述............................................................................................4 2. 电路设计...................................................................................................4
2.1. 宽带通道放大器分析........................................................................4 2.2. 正弦波整形电路................................................................................5 3. 软件设计...................................................................................................6 4. 测试方案与测试结果...............................................................................6 4.1. 测试仪器............................................................................................6 4.2. 测试方案及数据................................................................................7
4.2.1. 频率测试.....................................................................................7 4.2.2. 时间间隔测量.............................................................................7 4.2.3. 占空比测量.................................................................................8 4.3. 测试结论............................................................................................9 参考文献................................................................................................................ 9
2 / 10

计算机毕业论文_基于FPGA的等精度频率计的设计与实现

目录 前言...............................................................1 第一章 FPGA及Verilog HDL..........................................2 1.1 FPGA简介.....................................................2 1.2 Verilog HDL 概述.............................................2 第二章数字频率计的设计原理........................................3 2.1 设计要求.....................................................3 2.2 频率测量.....................................................3 2.3.系统的硬件框架设计..............................................4 2.4系统设计与方案论证............................................5 第三章数字频率计的设计............................................8 3.1系统设计顶层电路原理图........................................8 3.2频率计的VHDL设计.............................................9 第四章软件的测试...............................................15 4.1测试的环境——MAX+plusII.....................................15 4.2调试和器件编程...............................................15 4.3频率测试.....................................................16

等精度数字频率计的设计

等精度数字频率计的设计 李艳秋 摘要 基于传统测频原理的频率计的测量精度将随着被测信号频率的下降而降低,在实用中有很大的局限性,而等精度频率计不但有较高的测量精度,而且在整个测频区域内保持恒定的测试精度。运用等精度测量原理,结合单片机技术设计了一种数字频率计,由于采用了屏蔽驱动电路及数字均值滤波等技术措施,因而能在较宽定的频率范围和幅度范围内对频率,周期,脉宽,占空比等参数进行测量,并可通过调整闸门时间预置测量精度。选取的这种综合测量法作为数字频率计的测量算法,提出了基于FPGA 的数字频率计的设计方案。给出了该设计方案的实际测量效果,证明该设计方案切实可行,能达到较高的频率测量精度。 关键词等精度测量,单片机,频率计,闸门时间,FPGA Ⅱ

ABSTRACT Along with is measured based on the traditional frequency measurement principle frequency meter measuring accuracy the signalling frequency the drop but to reduce, in is practical has the very big limitation, but and so on the precision frequency meter not only has teaches the high measuring accuracy, moreover maintains the constant test precision in the entire frequency measurement region. Using and so on the precision survey principle, unified the monolithic integrated circuit technical design one kind of numeral frequency meter, because has used the shield actuation electric circuit and technical measure and so on digital average value filter, thus could in compared in the frequency range and the scope scope which the width decided to the frequency, the cycle, the pulse width, occupied parameter and so on spatial ratio carries on the survey, and might through the adjustment strobe time initialization measuring accuracy. Selection this kind of synthesis measured the mensuration took the digital frequency meter the survey algorithm, proposed based on the FPGA digital frequency meter design proposal. Has produced this design proposal actual survey effect, proved this design proposal is practical and feasible, can achieve the high frequency measurement precision Keywords Precision survey, microcontroller, frequency meter, strobe time,field programmable gate array Ⅱ

基于FPGA的数字频率计的设计和实现

基于FPGA 的数字频率计的设计和实现 杨守良 (渝西学院物理学与电子信息工程系 重庆 402168) 摘 要:现场可编程门阵列的出现给现代电子设计带来了极大的方便和灵活性,使复杂的数字电子系统设计变为芯片级设计,同时还可以很方便地对设计进行在线修改。本文以设计一个四位显示的十进制数字频率计为例,介绍了在一片F PG A 芯片上实现多位数字频率计的设计方法和实现步骤,并且给出了仿真结果。在设计中,所有频段均采用直接测频法对信号频率进行测量,克服了逼近式换挡速度慢的缺点。所设计的电路通过硬件仿真,下载到目标器件上运行,能够满足实际测量频率的要求。 关键词:数字频率计设计;V HDL ;现场可编程门阵列(FP GA );直接测频法 中图分类号:T P 271+.82 文献标识码:B 文章编号:1004373X (2005)1111803 Construction and Realization of the Digital C ymometer Based on FPGA Y A NG Shouliang (Department of Physics &Elec t roni c Informa tion Eng i neeri ng ,West ern Chongqing Uni v ersit y ,Chongqi ng ,402168,China ) Abstract :T he appear ance of F PG A (Field P ro gr ammable G ate A r ray )leads to t he co nvenience and flex ibility of the mo der n electr o nic construction ,w hich cha ng es the complicated dig ital electr onic sy stem co nstr uctio n into the on chip co nst ructio n .On the o ther hand ,it can a lso make so me o nline modificat ion expediently.W ith a case which describes an quadbit sho wn on t he decimal digital fr equency ,t he author intro duces the co nstr uct ion metho d and the r ealiza tio n steps o n a sing le F PG A chip.T he aut ho r show s an em ulational result.D ur ing the constr uction pro cess,the sig nal f requency of all the F requency Channel is measur ed by the way o f direct measurement ,which o ver comes the shor tcoming of lo w appr ox imate shift speed .W ith the cer tificatio n of t he har dwar e emulatio n system,t he cir cuit constructed can meet the demand of measur ing fr equency in the r eality,which has so me theor etic and pr act ical sig nificatio n. Keywords :desig n of the dig ital cymo meter ;V HDL ;F PGA (Field Pr og ram mable G ate A rr ay );dir ect frequency measur ement 收稿日期:200501 22 可编程逻辑器件和EDA 技术给今天的硬件系统设计者提供了强有力的工具,使得电子系统的设计方法发生了质的变化。传统的“固定功能集成块+连线”的设计方法正逐步地退出历史舞台,而基于芯片的设计方法正在成为现代电子系统设计的主流。在设计方法上,已经从“电路设计—硬件搭试—焊接”的传统方式转到“功能设计—软件模拟—下载”的电子设计自动化模式,从而大大提高了系统设计的灵活性。本文以一个四位的十六进制频率计为例,介绍其设计和实现方法。 1 数字频率计设计实例 数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。采用V DHL 编程设计实现的数字频率计,除被测信号的整形部分、键输入部分和数码显示部分以外,其余全部在一片FPGA 芯片上实现,整个设计过程变得十分透明、快捷和方便,特别是对于各层次电路系统的工作时序的了解和把握显得尤为准确,而且具有灵活的现场可更改性。在不更改硬件电路的基础上, 对系统进行各种改进还可以进一步提高系统的性能和测量频率的范围。该数字频率计具有高速、精确、可靠、抗干扰性强、而且可根据需要进一步提高其测量频率的范围而不需要更改硬件连接图,具有现场可编程等优点。 1.1 数字频率计设计的基本原理 本文以一个四位十进制、测量范围为1Hz ~16kHz 的数字频率计为例,采用SOPC /SOC 实验开发系统,以1 Hz 测频控制信号,说明设计的基本原理及实现方法。设计的数字频率计由测频控制信号发生器模块、锁存器和译码显示模块组成。根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1s 的对输入信号脉冲计数允许的信号;1s 计数结束后,计数值锁入锁存器的锁存信号和为下一测频计数周期做准备的计数器清0信号。这3个信号可以由一个测频控制信号发生器产生,即图1中的T EST CT L ,他的设计要求是,T EST CT L 的计数使能信号CN T _EN 能产生一个1s 脉宽的周期信号,并对频率计的每一计数器CNT 10的EN A 使能端进行同步控制。当CN T _EN 高电平时,允许计数;低电平时停止计数,并保持其所计的脉冲数。在停止计数期间,首先需要一个锁存信号LO AD 的上跳沿将计数器在前1秒钟的计数值锁 118 电子技术杨守良:基于FPGA 的数字频率计的设计和实现

等精度数字频率计

江西理工大学应用科学学院 SOPC/EDA综合课程设计报告 完成时间2012年01月03日

目录 第一章设计项目的分析: 1.1 设计原理 1.2 设计要求 1.3 设计思路 第二章项目工作原理及模块工作原理 2.1 项目工作原理 2.2 频率测量模块的工作原理 2.3 周期测量模块的工作原理 2.3.1 直接周期测量法 2.3.2 等精度周期测量法 2.4 脉宽测量模块的工作原理 2.5 占空比测量模块的工作原理 第三章系统设计方案 3.1 等精度数字频率计项目设计方案 3.1.1等精度数字频率计的原理图 3.1.2系统的主要组成部分 3.1.3系统的基本工作方式 3.1.4 CPLD/FPGA测频专用模块的VHDL程序设计 3.2 测频/测周期的实现 3.3 控制部件设计 3.4 计数部件设计 3.5 测量脉冲宽度的工作步骤 第四章主要VHDL源程序 4.1 频率计测试模块 4.2 计数模块 4.3 测频、周期控制模块 4.4 测脉宽、占空比控制模块 4.5 自校/测试频率选择模块 4.6 计数器二频率切换模块 第五章项目硬件测试及仿真结果 5.1 硬件试验情况 5.2 仿真结果 第六章设计总结 附录一参考文献

第一章设计项目的分析 1.1 设计原理 频率计用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为1s。闸门时间也可以大于或小于1s。闸门时间越长,得到的频率值就越准确,但闸门时间越长则每测一次频率的间隔就越长。闸门时间越短,测得频率值刷新就越快,但测得的频率精度就受影响。 1.2 设计要求 (1) 对于频率测试功能,测频范围为0.1 Hz~70 MHz;对于测频精度,测频全域相对误差恒为百万分之一。 (2) 对于周期测试功能,信号测试范围与精度要求与测频功能相同。 (3) 对于脉宽测试功能,测试范围为0.1 μs~1 s,测试精度为0.01 μs。 (4) 对于占空比测试功能,测试精度为1%~99%。 1.3 设计思路 利用计数器A对时钟脉冲信号进行计数,同时使用另一个计数器B对被测信号计数。当测量时钟脉冲信号的计数器A累积到一定数值时,将计数器B的结果传送到触发器中并通过一个时钟脉冲锁存,并译码送到七段数码管输出。为了使测量误差尽可能小,可以在被测信号的上升沿使计数器A和计数器B同时计数,为此,可添加一个D触发器,以被测信号作为D触发器的时钟信号,高电平为输入端,输出端Q作为两个计数器的计数允许信号。其原理可用图1表示。 基于传统测频原理的频率计的测量精度将随被测信号的频率的下降而降低,在使用中有较大的局限性,而等精度频率计不但具有较高的测量精度,而且在整个频率区域能保持恒定的测试精度。

基于FPGA的数字频率计的设计

. 成绩课程设计说明书 课程设计名称:EDA技术课程设计 题目:数字频率计电路设计 日期:2011年5月30日

摘要:频率计具有数字频率计是直接用十进制来显示被测信号频率的一种测量装置。本设计用Verilog HDL在CPLD器件上实现数字频率计测频系统,能够用十进制数码显示被测信号的频率,能够测量正弦波、方波、三角波等信号的频率,而且还能对其他多种物理量进行测量。具有体积小、可靠性高、功耗低的特点。数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。基于测频原理及FPGA的设计思想,给出了一种新型数字测频系统的设计方案,系统采用Verilog HDL语言,运用自顶向下的设计思想,采取将系统按功能逐层分割的层次化设计方法。在具体实现上,以FPGA为中央处理器对被测频率信号进行周期采样,通过调用Quartus II的宏功能模块进行占空比计算。 关键词:FPGA芯片、Verilog HDL语言、数字频率计、数字频率计原理图、Quartus II 软件。 Abstract: The frequency meter with digital frequency meter is directly in the decimal to display the measured signal of the frequency of a measuring instrument. This design in CPLD device with Verilog HDL on its digital frequency meter frequency measurement system, to be able to use the decimal digital display measured the frequency of the signal, able to measure the sine wave, square wave, triangle wave and the frequency of the signal, but also to other a variety of physical quantity measurement. The advantages of small size, high reliability, low power consumption characteristics. Digital frequency plan is a computer, communication equipment, audio video in scientific research production field indispensable measuring instrument. Based on frequency measurement principle and FPGA design thought, this paper presents a new digital frequency

基于FPGA的等精度频率计

光电与通信工程学院课程设计报告书 课设名称:等精度频率计 年级专业及班级: 姓名: 学号:

一、课程设计目的 1、进一步熟悉 Quartus Ⅱ的软件使用方法,熟悉 keil 软件使用; 2、熟悉单片机与可编程逻辑器件的开发流程及硬件测试方法; 3、掌握等精度频率计设计的基本原理。 4、掌握独立系统设计及调试方法,提高系统设计能力。 实验设备 EDA最小系统板一块(康芯)、PC机一台、示波器一台、信号发生器一台、万用表一个。 二、设计任务 利用单片机与FPGA设计一款等精度频率计,待测脉冲的检测及计数部分由FPGA实现,FPGA的计数结果送由单片机进行计算,并将最终频率结果显示在数码管上。要求该频率计具有较高的测量精度,且在整个频率区域能保持恒定的测试精度,具体指标如下: a)具有频率测试功能:测频范围 100Hz~5MHz。测频精度:相对误差恒为基准频率的万分之一。 b)具有脉宽测试功能:测试范围 10μs~1s,测试精度:0.1μs。 c)具有占空比测试功能:测试精度1%~99%。 d)具有相位测试功能。 (注:任务a 为基本要求,任务 b、c、d 为提高要求) 三、基本原理 基于传统测频原理的频率计的测量精度将随被测信号频率的下降而降低,在实用中有较大的局限性,而等精度频率计不但具有较高的测量精度,而且在整个频率区域能保持恒定的测试精度。 3.1 等精度测频原理 等精度频率计主控结构如图 1 所示

预置门控信号 CL 选择为 0.1~1s 之间(通过测试实验得出结论:CL 在这个 范围内选择时间宽度对测频精度几乎没有影响)。BZH 和 TF 分别是 2 个高速计数器,BZH 对标准频率信号(频率为 Fs)进行计数,设计数结果为 Ns;TF 对被测信号(频率为Fx)进行计数,计数结果为 Nx,则有 MUX64-8 模块并不是必须的,可根据实际设计进行取舍。分析测频计测控时序,着重分析 START的作用,完成等精度频率计设计。 3.2 FPGA 模块 FPGA模块所要完成的功能如图 1 所示,由于单片机的速度慢,不能直接测量高频信号,所以使用高速 FPGA 为测频核心。100MHZ 的标准频率信号由FPGA 内部的 PLL 倍频实现,待测信号 TCLK 为方波,由信号发生器给出待测方波信号(注意:该方波信号带有直流偏置,没有负电压,幅值3.3V)。预制

基于FPGA的数字频率计

基于FPGA的数字频率计 1前言 数字频率计是一种基本的测量仪器,是用数字显示被测信号频率的仪器,被测信号可以是正弦波,方波或其它周期性变化的信号。如配以适当的传感器,可以对多种物理量进行测试,比如机械振动的频率,转速,声音的频率以及产品的计件等等。因此,它被广泛应用与航天、电子、测控等领域。它的基本测量原理是,首先让被测信号与标准信号一起通过一个闸门,然后用计数器计数信号脉冲的个数,把标准时间内的计数的结果,用锁存器锁存起来,最后用显示译码器,把锁存的结果用液晶显示器显示出来。根据数字频率计的基本原理,本文设计方案的基本思想是分为四个模块来实现其功能,即整个数字频率计系统分为分频模块、计数模块、锁存器模块和显示模块等几个单元,并且分别用VHDL对其进行编程,实现了闸门控制信号、计数电路、锁存电路、显示电路等。而且,本设计方案还要求,被测输入信号的频率范围自动切换量程,控制小数点显示位置,并以十进制形式显示。本文详细论述了利用VHDL硬件描述语言设计,并在EDA(电子设计自动化)工具的帮助下,用大规模可编程器件(CPLD)实现数字频率计的设计原理及相关程序。特点是:无论底层还是顶层文件均用Verilog HDL语言编写,避免了用电路图设计时所引起的毛刺现象;改变了以往数字电路小规模多器件组合的设计方法。整个频率计设计在一块CPLD芯片上,与用其他方法做成的频率计相比,体积更小,性能更可靠。该设计方案对其中部分元件进行编程,实现了闸门控制信号、多路选择电路、计数电路、位选电路、段选电路等。频率计的测频范围:0~100MHz。该设计方案通过了Quartus Ⅱ软件仿真、硬件调试和软硬件综合测试。

等精度数字频率计的设计与实现

FPGA/SOPC课程设计报告书 课题名称:等精度数字频率计的设计与实现 姓名: 学号: 院系:电子与信息工程系 专业:电子信息工程 指导教师: 时间:2012年6月

课程设计项目成绩评定表设计项目成绩评定表

课程设计报告书目录 设计报告书目录 一、设计目的 (1) 二、设计思路 (1) 三、设计过程 (1) 3.1、系统方案论证 (1) 3.2、模块电路设计 (3) 四、系统调试与结果 (4) 五、主要元器件与设备 (6) 六、课程设计体会与建议 (6) 6.1、设计体会 (6) 6.2、设计建议 (7) 七、参考文献 (7)

一、设计目的 1、熟悉DE2_70电路板的引脚安排。 2、掌握芯片的逻辑功能及使用方法。 3、了解面包板结构及其接线方法。 4、了解等精度数字频率计的组成及工作原理。 5、熟悉等精度数字频率计的设计与制作。 二、设计思路 1、设计测量计算频率电路。 2、设计译码显示电路。 三、设计过程 3.1、系统方案论证 等精度测频的实现方法可简化为如图1 所示的框图。图中CNT l和CNT2 是两个可控计数器, 标准频率( fs ) 信号从CN Tl的时钟输入端CLK 输入, 经整 形后的被测信号( fx ) 从CNT 2 的时钟输入端CLK输入。每个计数器中的CEN 输入端为使能端, 用来控制计数器计数。当预置闸门信号为高电平( 预置时间开始) 时, 被测信号的上升沿通过D触发器的输入端, 同时启动两个计数器计数; 同样, 当预置闸门信号为低电平( 预置时间结束) 时, 被测信号的上升沿通过 D触发器的输出端, 使计数器停止计数。 图1 等精度数字频率计设计原理

相关文档
相关文档 最新文档