基于vhdl语言设计数字频率计说明书网络版

2021-04-25 13:15:56本页面

基于vhdl语言设计数字频率计说明书网络版


【正文】

基于VHDL语言设计数字频率计 摘要: 该频率计采用STC公司生产的STC89C51单片机和Altera公司所生产的FPGA芯片EP1C6Q240C8N。FPGA的软件用VHDL语言描述实现在单片机的控制信号下进行计数。单片机的软件采用C语言编写,很方便处理运算由FPGA传给单片机的数据。 关键字: 一、引言 频率检测是电子测量领域的最基本也是最重要的测量之一。频率信号抗干扰能力强、易于传输,可以获得较高的测量精度,所以测频率方法的研究越来越受到重视。以往的测频仪都是在低频段利用测周的方法、高频段用测频的方法,其精度往往会随着被测频率的下降而下降。该设计采用等精度测量方法,解决了这个问题。

本设计中采用的STC89C51是一种低功耗、高性能的8位CMOS单片机,片内有4KB的闪烁可编程/擦除只读存储器,并且与MCS51引脚和指令系统完全兼容,并且有宽工作电压范围、存储数据保存时间长(10年)等优点,是一款性价比较高的单片机。EP1C6Q240C8N可容纳各种各样、独立的组合逻辑和时序逻辑函数,可以快速而有效的重新编程,并保证可编程擦除100次,这样可以进行重复烧录,比较方便系统的调试。FPGA的各种功能块用VHDL语言描述实现。该测频仪将FPGA的高速高可靠性、单片机的灵活控制功能和等精度测频原理较高的测量精度相结合,具有速度快、功能全、精度高等特点。 二、设计原理 1、设计内容 设计一数字频率计。

测量功能如下: (1)能测量正弦波、方波等信号的频率(周期); (2)能测量脉冲信号的宽度、占空比; (3)由键盘选择确定测量功能; (4)能实时显示被测信号的频率(周期)、脉宽等参数; (5)具有自校功能,时标信号频率为2MHz; 系统可由单片机控制单元与FPGA测量单元两部分构成。其中,单片机控制单元主要实现处理运算FPGA测量单元送来的信号并产生反馈信号,通过单片机处理键盘的键值来选择区分各功能并控制液晶显示测量值。FPGA测量单元主要实现频率、周期及脉宽等参数的测量。 2、系统技术指标 本系统设计的基本指标如下: (1)对于频率测试功能,测频范围为1Hz2MHz;对于测频精度。

测频全域相对误差小于0.1%。 (2)对于周期测试功能,信号测试范围和精度要求与测频功能相同。 (3)对于脉宽测试功能,测试范围为≧100us,测试误差小于1%。 (4)对于占空比测试功能,测试误差小于1%。 3、本系统采用的设计方案 电路系统框图如图1所示,其中单片机完成整个测量电路的测试控制、数据处理和显示输出;FPGA完成各种测试功能;键盘控制命令直接通过单片机I/O口读入单片机,实现测频、测脉宽及测占空比等功能;单片机从FPGA读回计数数据并进行运算,向显示电路输出测量结果。显示器电路使用1602液晶显示屏实时显示所测参数值,液晶显示屏(LCD)具有耗电量低,可视面积大,画面效果好。

分辨率高,抗干扰能力强等特点,而且可以显示各种西文字符,在本系统中可以方便直观的显示出各测量参数的单位。输入通道主要对被测信号进行限幅和电压比较器整形后得到满足FPGA所能测量的信号后送入FPGA。FPGA测试的标准频率为50MHz的有源晶振。电源部分采用220V交流电经变压、滤波、稳压后得到5V及12V电压供整个系统使用。单片机由外接12MHz标准晶振提供时钟电路。本系统中的自校信号也是由12MHz标准晶振提供。 图1系统框图 三、设计实现 1、基于STC89C51单片机的硬件设计方案 ①单片机控制电路的设计 如图2所示,为本系统单片机控制电路的设计。 图2单片机控制电路 ②液晶显示电路的设计 如图3所示。

单片机控制1602液晶显示各参数的值。1602的数据口接单片机的P1口,RS、RW、E分别接单片机的P2.4、P2.3、P2.5。 图3显示电路 ③键盘控制电路的设计 经对本系统中单片机的口资源分配,可以用单片机的口单独控制各按键,在口资源足够分配的情况下,这样比较简单,也比较容易处理。本系统中,设定了五个按键,分别用五个口去控制,如图4所示P3.7控制占空比的测量,当占空比按键按下时,该系统会通过P3.7传送单片机一信号,经处理后,单片机控制液晶显示占空比的值;同理P3.6控制脉宽的测量;P3.5控制周期的测量;P3.4控制频率的测量;P3.1控制液晶复位。 图4键盘控制电路 2、基于STC89C51单片机的软件设计方案 等精度数字频率计涉及到的计算包括加、减、乘、除。

耗用的资源比较大,用一般中小规模FPGA芯片难以实现且较麻烦。因此,我们选择单片机和FPGA的结合来实现。利用单片机C语言处理数据的加、减、乘、除很方便这个特点,我们可以很方便的处理FPGA计数所得的两个32位数据。[8] ①单片机主程序的设计 图5为单片机主程序流程图。 图5主程序流程图 系统初始化后,开始测量参数的选择。测量参数选择子程序中包含键盘扫描子程序以及如何测量参数和对参数的处理等,其流程图见图6。然后将运算的频率值或周期值或脉宽值或占空比值送给液晶进行显示。程序不断在测量参数的选择以及显示之间循环,这样可以做到实时显示各参数的值。 占空比子程序是在脉宽子程序和周期子程序的基础上。

分别得到被测信号的脉宽M和周期T,根据式(1)占空比计算公式即可计算占空比。 Z=M/T*100%(1) 图6测量参数的选择 ②显示子程序的设计 显示子程序流程图,如图7所示: 图7显示子程序流程图 ③键盘扫描子程序的设计 键盘扫描子程序流程图,如图8所示,逐一判断各按键有没按下,若某一按键按下则相应的置state为某值。 图8键盘扫描子程序流程图 ④测频、测周期、测脉宽及测占空比子程序的设计 如图9为测频率子程序的流程图 图9测频子程序流程图 如图10为测周期子程序的流程图 图10测周期子程序流程图 如图11为测脉宽子程序的流程图 图11测脉宽子程序流程图 如图12测占空比子程序的流程图 图12测占空比子程序流程图 4、系统外围电路的设计 ①输入信号整形模块 本系统不仅要测方波信号的频率还需测量正弦波信号的频率。

FPGA测量单元的输入信号必须是脉冲信号,当输入信号是正弦波时必须经过处理送给FPGA,这样才能测量出正弦波的各参数值。所以在信号的输入端进行限幅、整形处理,如图13所示,信号首先经过限幅,防止输入信号幅度过大而损坏FPGA,然后经过LF353构成的跟随器使信号能与后级电路阻抗匹配,然后经过LM393电压比较器,让正弦波转换成同频率的方波信号,整形级的输出端还需加一跟随器进行阻抗匹配,而且其输出端还需进行上拉,使其输出的方波有一定的幅度。[4] 图13输入信号整形模块 ②电源电路的设计 如图14所示:~220V交流电压经变压器降压到~18V,经四个二极管桥式整流后,在经电容滤波,然后经7812、7912稳压块稳压得到+12V和—12V电压。

7812的输出端经7805稳压块后得到+5V电压;7912的输出端经稳压块7905稳压后得到—5V电压。在输出端分别加1000uf的电解电容和0.1uf的磁片电容可进一步滤除低频和高频的纹波[5]。这样就可以给本系统各单元进行供电。 图14电源电路 5、基于QuartusⅡ的测频模块设计 ①FPGA模块等精度测量的实现 等精度测频的实现方法可以简单地用图15和波形图16来简化说明。[9] 图15等精度测频原理框图 图15中“门控信号”CL由单片机发出,可以证明,在1秒至0.1秒间选择的范围内,CL的时间宽度对测频精度几乎没有影响,在此设其宽度为Tpr。BZH和TF模块是两个可控的32位高速计数器。

BZH为标准频率计数器,TF为被测信号频率计数器,BENA和ENA分别是它们的计数允许信号端,高电平有效。 标准频率信号从BZH的时钟输入端BCLK输入,设其频率为Fs;经整形后的被测信号从与BZH相似的32位计数器TF的时钟输入端TCLK输入,设其真实频率值为Fxe,被测频率为Fx。测频原理说明如下: 测频开始前,首先单片机发出一个清零信号CLR,使两个计数器和D触发器置0,同时通过信号ENA,禁止两个计数器计数,这是一个初始化操作。 然后由单片机发出允许测频命令,即令预置门控信号CL为高电平,这时D触发器要一直等到被测信号上升沿通过时Q端才被置1(即令START为高电平),与此同时,

将同时启动计数器BZH和TF,进入图16所示的“计数允许周期”。在此期间,BZH和TF分别对被测信号(频率为Fx)和标准频率信号(频率为Fs)同时计数。当Tpr秒后,预置门控信号被单片机置为低电平,但此时两个计数器仍没有停止计数,一直等到随后而至的被测信号的上升沿到来时,才通过D触发器将这两个计数器同时关闭。由图52可见,CL的宽度和发生的时间都不会影响计数使能信号(START)允许计数的周期总是恰好等于待测信号TCLK的完整周期数这样一个事实,这正是确保TCLK在任何频率条件下都能保持恒定精度的关键。而且,CL宽度的改变以及随机的出现时间造成的误差最多只有BCLK信号的一个时钟周期,如果BCLK由精确稳定的晶体振荡器(50MHz)发出。

则任何时刻的绝对测量误差只有0.5亿分之一秒。 图16等精度测频波形图 ②测频/测周期模块的设计 1.测频/测周期的实现 (1)在控制端的CLR端加一正脉冲信号以完成测试电路状态的初始化。 (2)由单片机给出控制信号,令SPUL=1,选择测频/测周,再接下来单片机给出一门控信号CL,当被测信号的上升沿到来时将两个计数器同时打开对被测频率和标准频率同时进行计数,同时将START置为高电平。 (3)门控信号时间结束后,在被测信号的下一个脉冲的上沿到来时,TCLK停止计数,同时关断BCLK对Fs的计数,在被测信号下降沿到来时将START端置为低电平。 (4)计数结束后由STAR

单片机即可通过P2.0、P2.1、P2.2分别读回标准频率和被测频率的计数值。 2.控制部件设计 图53是控制部分电路。如图所示,当CL为高电平时,紧接着TCLK的下一个高电平使Q端置高,使两个计数器开始工作,将被测频率由TCLK送入TF进行计数,将标准频率由BCLK送入BZH进行计数,同时将START置为高电平,作为结束状态标志。当START为低电平时,紧接着的TCLK的下一个脉冲上升沿将两个计数器通道切断,并将START置为低电平产生一下降沿通知单片机计数已结束。 图17测频、测周期控制部分 3.计数部件设计 图24中的计数器BZH、TF是32位二进制计数器,通过SEL[0。

.2]模块的控制,单片机可分8次将其64位数据全部读出。 4.频率、周期的计算 根据以上分析,可得到如图54所示的波形图[11] tclk:待测频率时钟信号; bclk:标准频率时钟信号; spul:区分测频率还是测脉宽,spul=1测频率,spul=0测脉宽; clr:清零信号; cl:当spul为高电平时cl为预置门控信号用于测频计数的时间控制,当spul为低电平时cl为测脉宽控制信号,cl高电平时测高电平脉宽,cl低电平时测低电平脉宽; eend:由低电平变到高电平时指示脉宽计数结束; sel:数据读出选择控制; data:8位数据读出; start:起始计数标志信号。

设计规范相关推荐  
三九文库 www.999doc.com
备案图标苏ICP备2020069977号