基于FPGA的数字频率计_第1页
基于FPGA的数字频率计_第2页
基于FPGA的数字频率计_第3页
基于FPGA的数字频率计_第4页
基于FPGA的数字频率计_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于FPGA的数字频率计1前言数字频率计是一种基本的测量仪器,是用数字显示被测信号频率的仪器,被测信号可以是正弦波,方波或其它周期性变化的信号。如配以适当的传感器,可以对多种物理量进行测试,比如机械振动的频率,转速,声音的频率以及产品的计件等等。 因此,它被广泛应用与航天、电子、测控等领域。它的基本测量原理是,首先让被测信号与标准信号一起通过一个闸门,然后用计数器计数信号脉冲的个数,把标准时间内的计数的结果,用锁存器锁存起来,最后用显示译码器,把锁存的结果用液晶显示器显示出来。根据数字频率计的基本原理,本文设计方案的基本思想是分为四个模块来实现其功能,即整个数字频率计系统分为分频模块、计数模块

2、、锁存器模块和显示模块等几个单元,并且分别用VHDL对其进行编程,实现了闸门控制信号、计数电路、锁存电路、显示电路等。而且,本设计方案还要求,被测输入信号的频率范围自动切换量程,控制小数点显示位置,并以十进制形式显示。本文详细论述了利用VHDL硬件描述语言设计,并在EDA(电子设计自动化)工具的帮助下,用大规模可编程器件(CPLD)实现数字频率计的设计原理及相关程序。特点是:无论底层还是顶层文件均用Verilog HDL语言编写,避免了用电路图设计时所引起的毛刺现象;改变了以往数字电路小规模多器件组合的设计方法。整个频率计设计在一块CPLD芯片上,与用其他方法做成的频率计相比,体积更小,性能更

3、可靠。该设计方案对其中部分元件进行编程,实现了闸门控制信号 、多路选择电路、计数电路、位选电路、段选电路等。频率计的测频范围:0100MHz。该设计方案通过了Quartus 软件仿真、硬件调试和软硬件综合测试。2 总体方案设计2.1方案比较:方案一:本方案是利用电路的频率响应特性来测量频率值。任何具有适当频率响应特性的可调无源网络都可用来测量频率值。 测频方法:谐振测频法:利用谐振回路测量高频(微波)信号的频率值(图2.1.2)。调节C使回路在被测频率值上谐振,此时,可得到被测频率值fx 图2.2 谐振法测频工作原理图显示方法: CPLD直接输出控制显示 ,本设计采用双色(红色和绿色

4、)8*8LED 点阵作为终端显示器件,在CPLD 的ROM 数据控 制下,8*8LED 点阵的每个像素点能产生红色、绿色、$(红绿混合色),能够再现颜色 的多样化。由于一般的I/O 的驱动能力是有限的,CPLD 中的ROM 输出的显示数据需要经过驱动电 路后送至8*8LED 点阵的行选端(阳极),列选线(阴极)则受74HC138 输出的低电平译码信号的控制。方案二测频方法:CPLD测频:CPLD作为一种新型的可编程逻辑器件,具有集成度高、逻辑电路设计方便灵活、可靠性好、工作速度快等特点,显示方法:由单片机产生控制时序,通过总线送给CPLD再显示2.2方案论证:方案一:本方案主要对频率的模拟测量

5、:测频电桥是测量低频信号的频率值,谐振测量是利用谐振回路来实现对高频信号的测量。具体实现是通过调节图2.1.2中的C使回路在被测频率值上谐振,此时便可得到待测的频率值。然后在CPLD直接输出控制显示来控制输出部分。方案二:2.3 方案选择3 单元模块电路设计3.1 电路设计总体框图本设计主要由8个部分组成,以CPLD芯片部分为核心展开,待测信号输入,由外部电源,复位电路,单片机电路,液晶显示,标准时钟以及JTAG下载各个单元配合起来实现测试频率并在液晶显示屏上实时显示出数字频率信号。复位电路电源单片机电路待测信号CPLD芯片CPLD芯片JTAG下载液晶显示标准时钟 图3.1 电路设计总体框图3

6、.2 标准时钟(100MHz)产生部分本部分采用100M的有源晶振,因为有源晶振不需要DSP的内部振荡器,信号质量好,比较稳定,而且连接方式相对简单(主要是做好电源滤波,通常使用一个电容和电感构成的PI型滤波网络,输出端用一个小阻值的电阻过滤信号即可),不需要复杂的配置电路。有源晶振通常的用法:一脚悬空,二脚接地,三脚接输出,四脚接电压。相对于无源晶体,有源晶振的缺陷是其信号电平是固定的,需要选择好合适输出电平,灵活性较差,而且价格高。对于时序要求敏感的应用,个人认为还是有源的晶振好。R204图3.2 标准100M信号的产生电路3.3 CPLD程序下载。Altera器件编程下载电缆有:Byte

7、Blaster并行下载电缆,ByteBlasterMV并行下载电缆等等。本设计采用的是ByteBlaster并行下载电缆,它具有与PC机25针标准并行口相连的接口。通过PC机标准并行口在线编程MAX7000S(EPM7064SLC44-10)。与PCB电路板相连的是10针插座。具体原理图如图3.3:图3.3 CPLD程序下载接口注:上图中TCK为时钟;TDO为器件输出到数据;TMS为JTAG状态机控制;TDI为配置到器件的数据。JTAG各个接口与EPM570T144C5N相应接口相连,实现数据的下载。3.4 数字液晶显示部分。本设计用液晶显示屏显示被测量的频率值。设计通过单片机产生控制时序,然

8、后通过总线送给CPLD,然后通过CPLD送出数据通过接插件JP501直接连接液晶显示屏显示数字频率。CPLD的LCD_D7.0作为总线通过与外部接插件连接,实现与液晶显示屏相连。LCD_DD0- LCD_DD7,以及LCD_RES_X0-LCD_RES_X3、LCD_RESET、片选线等等外部都连接一上拉电阻。如图3.4.2所示。图液晶显示1图3.4.2 上拉电阻3.5 测频复位电路。设计要求在测试频率过程中可以随时按照需要复位显示频率,被测频率可以重新测试。如图3.5所示,按键K302-K306与总线KEY4.0相连。当按键K303按下后,KEY1得到一个低电平,然后CPLD分析得出结论将液

9、晶显示屏复位,等待重新测试新的频率信号。图3.5 测频复位电路3.6 核心部分(EPM570T1445N器件简介)图3.6 EPM570T1445N器件的管脚图EPM570T1445N器件属于Altera公司MAX7000S系列,EPM570T144C5N器件包含一个二维行和列的架构实现自定义逻辑。行和列的互连提供信号互连之间的逻辑阵列块(实验室)。逻辑阵列组成的实验室,10个逻辑单元,在每个实验室(LE)之间。一个LE是一小单位逻辑用户提供逻辑功能的有效实施。实验室分为行和列上的设备。多轨互连实验室提供快速颗粒之间的时间延迟。括约肌之间的快速路由提供最低的时间延迟逻辑电平的增加与全球路由互连

10、结构。MAX II器件的I / O引脚由我I/ O单元(雇主组织)在劳工顾问委员会的目的所在行和列周围设备的边缘。每个雇主组织包含一个双向I / O缓冲区的多种高级功能。 I / O引脚支持施密特触发输入和各种单端标准,例如66兆赫,32位PCI,和LVTTL等级。MAX II器件提供了一个全局时钟网络。全球时钟网络的组成4全局时钟线,在整个整个设备驱动器,提供对所有时钟内资源的设备。全球时钟线也可用于控制信号如明确,预设,或输出使能。如图为EPM570T1445N的逻辑阵列块。每个MAX II器件包含一个在其平面图闪存块。在EPM240设备,此区块位于设备的左侧。在的EPM570,EPM12

11、70和EPM2210器件,快闪记忆体区块位于左下区的设备。该闪存大部分分区的专用配置闪存(CFM)的块。采用CFM块提供了非易失性存储的SRAM配置的所有信息。采用CFM自动下载并配置逻辑和I / O上电时,提供即时的行动。f在有关配置上电时的信息,请参阅热插拔和上电的MAX II器件章重置了MAX II器件手册。一个闪存在MAX II器件部分划分为一个小用户数据块。这个用户快闪记忆体(UFM)的块提供了8,192位通用用户存储。该超滤膜提供可编程端口连接对阅读和写作逻辑阵列。劳有三个相邻的行本块,列由设备与人数不等。表2-1显示了每个设备的行和列数,以及行和列毗邻地区的快闪记忆体数量的EPM

12、570,EPM1270和EPM2210器件。长排满行延长从一排I/ O块到其他。简短的行毗邻超滤膜块,其长度是在列的宽度显示。每一个LAB包括驱动控制信号LES的专用逻辑。控制信号包括两个时钟,两个时钟使能,两个异步清除,1同步清除,异步预置/负载,同步载荷,加/减控制信号,提供了一次10个控制信号最大。虽然同步负载和清除的信号通常用于执行时计数,也可以用于其他功能。每个LAB可以使用两个时钟,两个时钟使能信号。每个LAB的时钟和时钟使能信号联系。例如,任何一个LE在一个特定的LAB场合时使用labclk1信号也使用labclkena1。如果同时使用LAB时钟上升沿和下降沿,它也同时使用LAB

13、全时钟信号。 Deasserting时钟,使能信号关闭,LAB宽的时钟。每个LAB可以使用两个异步明确信号,异步加载/预置信号。默认情况下,Quartus II软件使用非门的回推技术,实现预设。如果您禁用非门推回选项或指定某一登记电力成立的高科技使用Quartus II软件,预设然后通过使用该异步异步加载数据输入负荷信号并列高。最小的逻辑了MAX II结构单位是LES,它结构紧凑,提供高效利用先进的逻辑功能。每个LES包含4输入LUT,这是一个函数发生器,可以实现任何四个变量的函数。另外,每个lES包含一个可编程的登记和进位链选择能力。单一LES还支持动态的单位加法或减法模式LAB选择一个全控

14、制信号。每个LES驱动所有类型的互连:局部的,行,列,LUT链,显示链和DirectLink互连。每个LE的可编程寄存器可配置为D,T,JK,或SR操作。每个寄存器有数据,真正的异步加载数据,时钟,时钟使能,清除,异步加载/预设的投入。全球信号,通用I / O引脚,或任何LES可驱动登记的时钟和明确的控制信号。无论通用的I / O引脚或括约肌可以驱动时钟使能,预设,异步加载,和异步数据。异步加载数据输入来自为LES输入的data3。为了组合功能,LUT的输出绕过登记和直接驱动的LE产出。每个LE有三个输出,推动本地,行和列的布线资源。那个或注册LUT的输出可以驱动这三个独立的产出。双LE产出驱

15、动器列或行和DirectLink路由连接和一个本地驱动器互连资源。这使得LUT的一个输出驱动,而寄存器驱动器的另一个输出。这个寄存器包装功能改善了设备的利用率因为该设备可以使用选民登记册和功能,用户终端无关。另外的特殊包装模式允许寄存器的输出反馈到同一LUT的回LE以便登记的包装有自己的扇出LUT的。这提供了另机制改善配件。3.7 电源部分CPLD芯片工作电压在3.3V,单片机 工作电压为5V。所以,在要求进行电压转换时,用到芯片LM1117进行5V电压到3.3V电压。3.8 单片机部分3.8.1 STC12_LQFP芯片介绍如图3.8.1所示,STC12系列单片机为增强型 8051 芯片,1

16、T,单时钟/ 机器周期,指令代码完全兼容传统8051单片机。通用I/O 口(27/23/15 个),复位后为: 准双向口/ 弱上拉(普通8051 传统I/O 口)可设置成四种模式:准双向口/ 弱上拉,推挽/ 强上拉,仅为输入/ 高阻,开漏每个I/O 口驱动能力均可达到20mA,但整个芯片最大不得超过55mA。ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片,EEPROM 功能,看门狗定时器内部集成MAX810 专用复位电路(外部晶体20M 以下时,可省外部复位电路)。时钟源:外部高精度晶体/ 时钟,

17、内部R/C 振荡器用户在下载用户程序时,可选择是使用内部R/C 振荡器还是外部晶体/ 时钟常温下内部R/C 振荡器频率为:5.2MHz 6.8MHz精度要求不高时,可选择使用内部时钟,但因为有制造误差和温漂,应认为是4MHz 8MHz。 STC12_LQFP芯片是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC12_LQFP为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。ST

18、C12_LQFP具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,STC12_LQFP可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。3.8.2 控制单元如图所示,STC12_LQFP芯片具有4个串口P0-P3,各个串口不仅作为普通的I/O口用,还可以作为第二功能用。

19、外围有一个无源晶振,晶振为11.0592MHz的,为单片机提供时钟信号,从XTAL1和XTAL2输入,RESET信号连接到芯片复位引脚上面,提供芯片复位作用。图 3.8.2 单片机控制单元4 软件设计4.1 Verilog HDL和原理图输入模块组成框图。数字频率计基本原理是用计数器来计算1s内输入信号周期的个数。如图3-1所示是6位六位七段显示器数字频率计的系统方框原理图,它由一个测频控制信号发生器,一个有时钟使能的计数器,一个锁存器REG,一个译码电路组成和一个实现位扫描电路。分频控制模块6进制计数器计数 锁存器38译码器选择器译码器数码管显示1Hz500Hz位扫描待测信号标准时钟 图4.

20、1 软件设计模块原理框图图4.2 原理图输入设计总图4.2 分频电路4.7 .1 1Hz的标准时钟信号。1Hz的标准时钟信号是由对2M Hz的信号进行2M分频得到的。其文本输入设计(Verilog HDL)为:module mediv(clk,clkdiv);/clk为2MHz的信号输入,clkdiv为输出1Hz标准信号input clk;output clkdiv;reg clkdiv;reg 19:0q;always (posedge clk)beginif(q=999999)/当计数计到999999后再将clkdiv取反;beginclkdiv<=!clkdiv;q<=0;e

21、ndelse /如果不够999999则继续计数; q<=q+1;endendmodule4.2.2 500Hz的扫描时钟。500Hz的标准时钟信号是由对2M Hz的信号进行4000分频得到的。其文本输入设计(Verilog HDL)为:module mediv2(clk,clkdiv);/clk为2MHz的信号输入,clkdiv输出500Hz标准信号input clk;output clkdiv;reg clkdiv;reg 19:0q;always (posedge clk)beginif(q=1999)/当计数计到1999后再将clkdiv取反;beginclkdiv<=!cl

22、kdiv;q<=0;endelse /如果不够1999则继续计数; q<=q+1;end4.8 测频控制信号发生器模块:输入信号:clkdiv2.输出信号:tsten 计数使能信号;clr 计数器清零信号;load锁存信号。逻辑功能:产生1s脉宽的周期信号,并根据测频需要产生相应的计数器清零信号和锁存信号。源程序为:testcontrol.vmodule testcontrol(clkdiv2,tsten,clr,load);input clkdiv2;output tsten,clr,load;reg clr;wire tsten,load;reg div2clk;always

23、(posedge clkdiv2)div2clk<=!div2clk;always (clkdiv2 or div2clk)if(!clkdiv2 & !div2clk)clr<=1;elseclr<=0;assign load=!div2clk;assign tsten=div2clk;endmodule4.9 十进制计数模块.4.4.1 单个十进制计数模块。输入信号:ena输入时钟使能信号;clk为输入清零信号;clr为输入时钟触发信号。输出信号:cq3.0 输出BCD码;cot为输出计数器进位信号。逻辑功能:ena为高电平时计数,CLK为输入时钟变量,CLR为高

24、电平时计数器清零,当计数器到9时,COT为高电平。源文件为mecount10.vmodule mecount10(ena,clk,clr,cq,cot);input ena,clk,clr;output cot;output 3:0cq;reg cot;reg 3:0cq;always (posedge clk or posedge clr)beginif(clr)cq<=0;else if(ena)beginif(cq=9)begin cq<=cq+1;cot<=0;endend endendmodule4.4.2 6位十进制计数器模块。输入信号:ena输入时钟使能信号;c

25、lk为输入清零信号;clr为输入时钟触发信号。输出信号:dout3:0到dout23:0输出6个计数器的计数值(BCD码)。逻辑功能:ena为高电平时计数,为低电平时保持所计的值。Clk为时钟信号输入。Clr为高电平是计数器清零。图4.3 6位计数器原理图4.5输出信号锁存器输入信号:LOAD 锁存器锁存信号DIN0,DIN1,DIN2,DIN3,DIN4,DIN5,6个计数器输出的4位BCD码。输出信号:DOUT23.0 6位输出显示逻辑功能:当LOAD信号上跳时,将输入的BCD码送到输出端,由于接收的是6个计数器的输出信号,因此输入信号是6个4位而不是一个24位。由六位七段显示器显示。源文

26、件为alereg.vmodule alereg(din0,din1,din2,din3,din4,din5,dout,load);input 3:0din0,din1,din2,din3,din4,din5;input load;output 23:0dout;reg 23:0dout;always (posedge load)dout23:0<=din53:0,din43:0,din33:0,din23:0,din13:0,din03:0;endmodule4.6 244选择器。module xz24_4(din,a,dout);input 2:0a;input 23:0din;out

27、put 3:0dout;reg 3:0dout;always (a)case(a)3'b000: dout<=din3:0;3'b001: dout<=din7:4;3'b010: dout<=din11:8;3'b011: dout<=din15:12;3'b100: dout<=din19:16;3'b101: dout<=din23:20;3'b110: dout<=din3:0;3'b111: dout<=din7:4;endcaseendmodule4.7译码动态扫描。译码

28、器。输入信号:din3:0输入4位BCD码。输出信号:dout7:0输出4位BCD码对应的7位二进制码。源文件为trans48.v。module trans48(din,dout);input 3:0din;output 7:0dout; reg 7:0dout;always (din)case(din)4'b0000: dout<=8'b11111100;4'b0001: dout<=8'b01100000;4'b0010: dout<=8'b11011010;4'b0110: dout<=8'b0011

29、1110;4'b0111: dout<=8'b11100000;4'b1000: dout<=8'b11111110;4'b1001: dout<=8'b11110110;default: dout<=8'b00000000;endcaseendmodule 动态扫描电路。(1)6进制计数器。module meadd(clk,q);input clk;output 2:0q;reg 2:0q;always (posedge clk)if(q=3'b101)q<=0;elseq<=q+1;endm

30、odule(2)38译码器。module yima38(a,y); input 2:0a; output 7:0y; reg 7:0y; always ( a ) case ( a) 3'b000: y=8'b11111110; 3'b001: y=8'b11111101; 3'b010: y=8'b11111011; 3'b011: y=8'b11110111; 3'b100: y=8'b11101111; 3'b101: y=8'b11011111; 3'b110: y=8'b1

31、0111111; 3'b111: y=8'b01111111; endcaseendmodule注意:244选择器,500Hz的扫描脉冲,6进制的计数器和38的译码器要配合使用才能实现6位动态数码管的显示。5 系统调试由于本次设计没有作出相应的硬件来,故只存在软件调试。5.1 分频模块调试。由于本方案采用的标准时钟是由2M有源晶振产生2mHz的全局时钟。而且都是2M和4000分频这对于Quartus II 6.0软件来说无法仿真,故后续仿真均建立在输入的门口信号为1Hz,扫描信号为2Hz的基础上。5.2 测频控制信号发生器模块调试。调试方法为设定其输入量,观察其输出是否符合设计

32、要求。其仿真波形为:图5.1 测频控制信号发生器模块仿真波形注:ena信号为对clk输入信号的2分频。在5.1中我们假设过输入信号为1Hz,经过2分频后就产生了脉宽为1s的计数使能信号。并根据测频需要产生相应的计数器清零信号clr和锁存信号load;仿真结果符合要求。5.3 6位十进制计数器模块调试。调试方法相同,其最后的输出波形图为: 图5.2 6位十进制计数器模块仿真波形由图5.3我们看到当ena为高电平是计数使能,即开始计数,符合要求。5.4输出信号锁存器调试。其软件仿真的结果为:图5.3 信号锁存器仿真波形由图5.4我们发现当load信号的上升沿到来时,信号开始锁存,直到下次信号的上升

33、沿来之前,输出的信号保持不变。5.5 244选择器模块的调试。仿真后的波形为:图5.4 244选择器模块仿真波形根据上图的仿真结果,我们注意到当输入为000时,选择器输出的是din的24位数据的最低4值,为001时,选择器输出的是din的24位数据的4位到7位的值。以下如此类推。仿真的结果基本满足设计要求。5.6 最后总的仿真结果。图5.5 总的仿真波形由图5.6,我们知道当门控脉宽为1s,待测脉冲假设给定为40Hz(25ms),最后的仿真结果是:当位选为1111101时输出的七段码为01100110即数字“4”的七段码,位选的其他情况,输出均为11111100,即数字“0”的七段码。最后的输出结果满足要求。6 系统功能、指标参数6.1 系统功能。 本设计是由检测人员,任意输

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论