文档库 最新最全的文档下载
当前位置:文档库 › 论文

论文

存档日期:存档编号:

徐州师范大学科文学院本科生毕业论文(设计)

论文题目:基于FPGA的等精度数字频率计的设计

姓名:陈焕

学号: 078324133

专业:电气工程及其自动化

年级: 07 电气

指导教师:李桂林

科文学院教务部印制

摘要

随着微电子技术和电子信息技术的发展,频率计成为一种最基本的测量工具,普通频率计测量时误差较大,因此根据等精度测量的原则,提出了一种基于FPGA的等精度数字频率计设计方案。介绍了等精度的多周期同步测频原理,并对其测量精度、特点、误差和传统的测频方法进行了比较和分析,证明了等精度测频方法的优势,说明此方案具有可行性。

运用FPGA模块进行除法运算,并采用Verilog HDL语言进行程序编写及仿真,下载到单片机上进行数据转换,将结果送至数码管显示。

经仿真验证,能够实现等精度测频的功能,证明该方案可行,此频率计有较高的实用性和可靠性。

关键词:等精度;频率计;FPGA;单片机

Abstract

As microelectronics technology and electronic information technology development, the frequency of three become one of the most basic measuring tools, ordinary frequency meter is larger, so when measuring error according to the principle of such precision measurement is proposed, such as on FPGA digital frequency meter precision design scheme. Introduces more with such precision step frequency principle, cycle and the measurement precision, characteristics, error and traditional frequency measurement method for comparison and analysis, it is proved frequency measurement methods such as the advantage of precision, indicating that this scheme is feasible.

Using the FPGA modules, and divide by Verilog HDL language programming and simulation, downloaded to the single data transfer, will the results were sent to digital tube display.

Verified by simulation now, can realize the function such as frequency measurement precision, proof this scheme is feasible, and the frequency of a higher practicability and reliability.

Keywords:equal precision; frequency; FPGA; Microcontroller

目录

摘要..................................................... I Abstract...................................................II 1 绪论. (1)

1.1 前言 (1)

1.2 FPGA简介 (1)

1.3 AT89C51介绍 (2)

1.4 Verilog HDL 简介 (5)

2 系统方案的分析选择及设计 (8)

2.1 常用频率测量的方案比较 (8)

2.2 等精度测量原理分析 (8)

2.2.1等精度测量原理 (8)

2.2.2 等精度测量误差分析 (9)

2.4 电源电路设计 (11)

2.5 放大整形电路设计 (11)

2.6 频率值显示电路设计 (12)

2.7 三极管放大电路设计 (14)

2.8 复位电路设计 (14)

2.9 主控电路设计 (15)

3 系统软件模块设计及仿真 (16)

3.1 FPGA模块设计及仿真 (16)

3.1.1计数器模块 (16)

3.1.2分频模块 (17)

3.1.3预置闸门模块 (18)

3.1.4实际闸门模块 (18)

3.1.5计数Nx模块 (19)

3.1.6计数Ns模块 (19)

3.1.7通信控制模块 (20)

3.1.8计数器各模块连接详图 (21)

3.1.9除法器模块 (21)

3.1.10除法控制器 (22)

3.1.11除法运算器 (25)

3.1.12 通信信号转换模块 (27)

3.2 单片机软件设计 (30)

3.3 接口连接模块 (30)

4 结论 (33)

致谢 (34)

参考文献 (35)

附录(整体电路图) (37)

1 绪论

1.1 前言

随着微电子和电子信息技术的发展数字频率计变成一种基本的电子测量仪器,能够快速准确的捕捉到被测信号频率的变化。它被广泛应用与航天、电子、测控等领域。传统的测频方法有直接测频法和测周法,在一定的闸门时间内计数,门控信号和被测信号不同步,计数值会产生一个脉冲的误差。采用等精度频率测量方法消除了量化误差,具有测量精度保持恒定,不随所测信号频率的高低而发生变化的特点。采用FPGA作为控制核心的等精度频率计,可以充分利用FPGA 高速数据采集技术较容易实现等精度测频。通过FPGA对同步门的控制,使被测信号和标准信号在闸门时间内同步测量,为了提高精度,将电子计数功能转为测周期,采用多周期同步测量技术,实现等精度测量。利用AT89C51单片机与共阴极LED数码管对测量结果进行动态显示。

1.2 FPGA简介

FPGA是一种高密度现场可编程逻辑芯片,都能够将大量的逻辑功能集成于一个单片集成电路中,其集成度已发展到现在的几百万门。现场可编程门阵列(FPGA)是由掩膜可编程门阵列(MPGA)和可编程逻辑器件二者演变而来的,并将它们的特性结合在一起,因此FPGA既有门阵列的高逻辑密度和通用性,又有可编程逻辑器件的用户可编程特性。FPGA通常由布线资源分隔的可编程逻辑元(或宏单元)构成数组,又由可编程I/O单元围绕数组构成整个芯片。其内部资源是分段互联的,因而延时不可预测,只有编程完毕后才能实际测量。FPGA建立内部可编程逻辑连接关系的编程技术有三种:基于反熔丝技术的器件只允许对器件编程一次,编程后不能修改。其优点是集成度、工作频率和可靠性都很高,适用于电磁辐射干扰较强的恶劣环境。基于EEPROM内存技术的可编程逻辑芯片能够重复编程100次以上,系统掉电后编程信息也不会丢失。编程方法分为在编程器上编程和用下载电缆编程。用下载电缆编程的器件,只要先将器件装焊在印刷电路板上,通过PC, SUN工作站、ATE(自动测试仪)或嵌入式微处理器系统,就能产生编程所用的标准5V, 3.3V或2.5V逻辑电平信号,也称为ISP ( In System Programmable)方式编程,其调试和维修也很方便。基于SRAM技术的器件编程数

据存储于器件的RAM区中,使之具有用户设计的功能。在系统不加电时,编程数据存储在EPROM、硬盘、或软盘中。系统加电时将这些编程数据实时写入可编程器件,从而实现板级或系统级的动态配置。

本设计使用的是EasyFPGA030主芯片采用Actel的A3P030,封装为VG100。板上的外设包括四个按键、48MHz的晶振等,同时板上提供了FPGA 下载所需要的下载器,直接与PC机并口相连,并通过上位机软件MAX+plus II 即可下载[1]。

功能特点:

(1)I/O口全部引出,方便进行二次开发。支持最大81个用户I/O,热插拔和冷备份;

(2)可以通过芯片内部的FlashROM进行数据存储,提供1kbit的片内可编程非易失性FlashROM信息存储;

(3)板上集成了高性能的并口下载器,通过连接并口电缆即可下载;(4)基于非易失性Flash技术,单芯片解决方案,上电即行;

(5)高度的安全性,保护知识产权,高度的可靠性,固件错误免疫;(6)灵活高效的全局时钟网络,提高设计性能,开发板上提供48MHz的晶振频率;

(7)在封装上,A3P030有132-QFN和100-VQFP两种,此工程用的是开发板是100-VQFP封装型号。

1.3 AT89C51介绍

A T89C51是一个低功耗,高性能的单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATME 公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,AT89C51在众多嵌入式控制应用系统中得到广泛应用。其外形及引脚排列如图1-1所示。

图1-1 引脚图

主要特性:与MCS-51兼容;4K字节可编程闪烁存储器;寿命:1000写/擦循环;数据保留时间10年;全静态工作:0Hz-24MHz;三级程序存储器锁定;128×8位内部RAM;32可编程I/O线;两个16位定时器/计数器;5个中断源;可编程串行通道;低功耗的闲置和掉电模式;片内振荡器和时钟电路。

管脚说明:

·VCC:供电电压。

·GND:接地。

·P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

·P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘

故。在FLASH编程和校验时,P1口作为第八位地址接收。

·P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

·P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口除了作为普通I/O口,还有第二功能:

P3.0 RXD(串行输入口)

P3.1 TXD(串行输出口)

P3.2 /INT0(外部中断0)

P3.3 /INT1(外部中断1)

P3.4 T0(记时器0外部输入)

P3.5 T1(记时器1外部输入)

P3.6 /WR(外部数据存储器写选通)

P3.7 /RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

I/O口作为输入口时有两种工作方式,即所谓的读端口与读引脚。读端口时实际上并不从外部读入数据,而是把端口锁存器的内容读入到内部总线,经过某种运算或变换后再写回到端口锁存器。只有读端口时才真正地把外部的数据读入到内部总线。89C51的P0、P1、P2、P3口作为输入时都是准双向口。除了P1口外P0、P2、P3口都还有其他的功能。

·RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

·ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁

存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

·PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

·EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA 将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH 编程期间,此引脚也用于施加12V编程电源(VPP)。

·XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

·XTAL2:来自反向振荡器的输出。

振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度[2]。

1.4 Verilog HDL 简介

Verilog HDL是一种硬件描述语言(HDL:Hardware Discription Language),是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。 Verilog HDL 和VHDL是目前世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。前者由Gateway Design Automation公司(该公司于1989年被Cadence公司收购)开发。两种HDL均为IEEE标准。

下面列出的是Verilog HDL硬件描述语言的主要能力:

· 基本逻辑门,例如and、or和nand等都内置在语言中。

· 用户定义原语(UDP)创建的灵活性。用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。

· 开关级基本结构模型,例如pmos 和nmos等也被内置在语言中。

· 提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时序检查。

· 可采用三种不同方式或混合方式对设计建模。这些方式包括:行为描述方式—使用过程化结构建模;数据流方式—使用连续赋值语句方式建模;结构化方式—使用门和模块实例语句描述建模。

· Verilog HDL中有两类数据类型:线网数据类型和寄存器数据类型。线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。

· 能够描述层次设计,可使用模块实例结构描述任何层次。

· 设计的规模可以是任意的;语言不对设计的规模(大小)施加任何限制。

· Verilog HDL不再是某些公司的专有语言而是IEEE标准。

· 人和机器都可阅读Verilog 语言,因此它可作为E D A的工具和设计者之间的交互语言。

· Verilog HDL语言的描述能力能够通过使用编程语言接口(PLI)机制进一步扩展。P L I是允许外部函数访问Verilog 模块内信息、允许设计者与模拟器交互的例程集合。

· 设计能够在多个层次上加以描述,从开关级、门级、寄存器传送级(RTL)到算法级,包括进程和队列级。

· 能够使用内置开关级原语在开关级对设计完整建模。

· 同一语言可用于生成模拟激励和指定测试的验证约束条件,例如输入值的指定。

· Verilog HDL 能够监控模拟验证的执行,即模拟验证执行过程中设计的值能够被监控和显示。这些值也能够用于与期望值比较,在不匹配的情况下,打印报告消息。

· 在行为级描述中,Verilog HDL不仅能够在RT L级上进行设计描

述,而且能够在体系结构级描述及其算法级行为上进行设计描述。

· 能够使用门和模块实例化语句在结构级进行结构描述。

· 在Verilog HDL 的混合方式建模能力,即在一个设计中每个模块均可以在不同设计层次上建模。

· Verilog HDL 还具有内置逻辑函数,例如&(按位与)和|(按位或)。

· 对高级编程语言结构,例如条件语句、情况语句和循环语句,语言中都可以使用。

· 可以显式地对并发和定时进行建模。

· 提供强有力的文件读写能力。

· 语言在特定情况下是非确定性的,即在不同的模拟器上模型可以产生不同的结果;例如,事件队列上的事件顺序在标准中没有定义。

2 系统方案的分析选择及设计

2.1 常用频率测量的方案比较

方案一:采用测量周期法。这种方法通过测量待测信号的一个周期内,记录标准信号的脉冲数来测量频率,这种方法的计数值会产生最大为±1个脉冲误差,并且测试精度与计数器中记录的数值有关,这种测频率的方法适合于低频测量,信号频率越低,相对误差越小。

方案二:采用直接计数法。直接测频法就是在一定的时间间隔内,记录被测信号的脉冲个数。由于闸门时间通常不是待测信号的整数倍,这种方法的计数值也会产生最大为±1个脉冲误差。进一步分析测量准确度:设待测信号脉冲周期为Tx,频率为Fx,当测量时间为T=1s时,测量准确度为&=Tx/T=1/Fx。由此可知直接测频法的测量准确度与信号的频率有关:待测信号频率越高测量准确度也越高,反之测量准确度越低。所以直接测频法只适合测量频率较高的信号,无法满足在整个测量频段内的测量精度保持恒定的要求。

方案三:采用等精度频率测量法,测量精度保持恒定,不随所测信号的高低变化而变化。在快速测量的要求下,要保证较高精度的测频,必须采用较高的标准频率信号。采用高集成度、高速的现场可编程门阵列FPGA强大的逻辑功能使被测信号和标准信号同步,为实现高速、高精度的测频提供了保证。

2.2 等精度测量原理分析

2.2.1等精度测量原理

本方案设计所采用的测频方法就是等精度频率测量法,下面将对等精度频率测量法做详细介绍。

传统的测频方法在一定的闸门时间内计数,门控信号和被测信号不同步计数时荣一产生一个脉冲的误差,等精度测量是在直接测频法上发展起来的,它的闸门时间不固定,是被测信号的整数倍,即和门控信号是同步的消除了量化误差,所以可以保持在测频周期的高精度不变。其测频原理如图2-1所示。

图2-1 等精度测频原理波形图

在测量的过程中有二个计数器分别对被测信号和标准信号同时计数。具体的方法是:首先给一个闸门开启信号(预置闸门上升沿),此时计数器并不开始计数,而是等被测信号的上升沿到来时,计数器才开始计数,然后预置闸门信号关闭信号(下降沿)到时,计数器并不立即停止计数,而是等到被测信号的上升沿再次到来时才停止计数,完成一次测量过程。预置闸门信号1t 和实际闸门信号t 不相等,但两者差值不会相差被测信号的一个周期。但从图2-1中可得实际闸门控制信号与被测同步,因此消除了1±的脉冲误差,并且此测频方法不仅对被测信号进行计数,而且对标准信号s N 也计数,所以称为多周期同步测频法[3]。

2.2.2 等精度测量误差分析

计数器对标准信号的计数是s N ,被测信号的计数是x N ,标准信号的频率为

s f ,被测信号的频率

s s x x f N N f = (2-1)

由式(2-1)可知,若忽略标频的s f 误差,则等精度测频可能产生的相对误差为

100)(0

0?=-f f f x

σ (2-2)

其中0f 为被测信号频率的准确值。

在测量中,由于x f 计数的起停时间都是由该信号的上升测触发的,无字误差。

而对s f 的计数s N 最多相差一个数的误差,即1≤?s N ,其测量频率为

s s s x f N N N fx ???????+= (2-3)

将式(2-1)和(2-3)代入式(2-2),并整理得

s s s

f t N N ?≤?=1σ (2-4)

从公式(2-4)可以看出等精度算法产生的误差和被测信号的频率无关,仅与闸门时间和标准信号频率有关,从而实现整个频率段的等精度测量[4]。

2.3 系统总体方案设计

首先由系统时钟提供的48MHz 的晶振频率进行分频,利用分频所得的频率通过计数的方法产生一个预置闸门信号,再利用预置闸门信号和被测信号产出一个实际闸门信号,预置闸门信号和实际闸门信号分别控制对被测信号和标准信号计数。利用V erilog HDL 语言编写一个除法器程序,用FPGA 做除法运算,所得结果送单片机进行数据转换并用LED 实现,设计主体框图如图2-2所示。

图2-2 主体框图

通过以上分析不难看出,本设计由放大整形电路、FPGA 计数电路、89C51主控电路、数码显示电路和功能选择组成。由主控电路发出启动等信号,然后FPGA 对标准和被测信号计数,随后将数据分次送给主控电路,单片机进行运算后将结果送至数码管显示出来。通过设计主体图可以清晰地知道此多周期同步测

频法在FPGA上实现的过程。方案总体硬件图见附录。

2.4 电源电路设计

电源电路包括整流电路、滤波电路、稳压电路等模块组成,使用LED 进行电源工作状态指示。LM78XX系列三端稳压IC来组成稳压电源所需的外围元件极少[5],电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜,因此使用LM7805稳压芯片进行5V的电源电路设计。具体的5V电源电路如下图2-3所示。

图2-3 5V直流电源电路

2.5 放大整形电路设计

由于输入的信号可以是正弦波,三角波。而后面的闸门或计数电路要求被测信号为矩形波,所以需要设计一个整形电路则在测量的时候,首先通过整形电路将正弦波或者三角波转化成矩形波。在整形之前由于不清楚被测信号的强弱的情况。所以在通过整形之前通过放大衰减处理。当输入信号电压幅度较大时,通过输入衰减电路将电压幅度降低。当输入信号电压幅度较小时,前级输入衰减为零时若不能驱动后面的整形电路,则调节输入放大的增益,使被测信号得以放大[6]。

通常来说仪器室不能影响被测信号的传输的。为增加输入阻抗第一级输入采用了MOS管,其输入端电阻很大,但耐压不高,所以为保护MOS管。使用了1S1588作为电压钳位电路。输入第二级采用双极型三极管以适合后面的数字电路的TTL输入特性。采用分立的三极管及电阻电容组成高频、高输入阻抗的放大电路,作为输入端。整形部分采用二个施密特除法器组成。具体放大整形电路如图2-4所示。

图2-4 放大整形电路

2.6 频率值显示电路设计

常见的数码管由七个条状和一个点状发光二极管管芯制成,叫七段数码管,根据其结构的不同,可分为共阳极数码管和共阴极数码管两种。根据管脚资料,可以判断使用的是何种接口类型[8]。两种数码管内部原理如图2-5所示。

图2-5 两种数码管内部原理图

LED数码管中各段发光二极管的伏安特性和普通二极管类似,只是正向压降较大,正向电阻也较大。在一定范围内,其正向电流与发光亮度成正比。由于常规的数码管起辉电流只有1~2 mA,最大极限电流也只有10~30 mA,所以它的输入端在5 V电源或高于TTL高电平(3.5 V)的电路信号相接时,一定要串加限流电阻,以免损坏器件。

数码管电路设计不加三极管驱动时,数码管显示数值看不清,不便于频率值的测量与调试。因此加入三极管8550进行驱动数码管。使用4位数码管进行频率值显示,选择共阴极数码管显示,需要8个三极管进行驱动,用共阴极数码管进行动态显示,具体数码管设计电路如图2-6所示(以四个为例)。

图2-6 数码管显示电路

2.7 三极管放大电路设计

在位选信号上,利用三极管的放大功能对电流进行放大,使数码管显示更亮,器电阻参数选择和设计如图2-7所示(以四个为例)。

图2-7三极管放大电路

2.8 复位电路设计

有时系统在运行过程中出现程序跑飞的情况,在程序开发过程中,经常需要手动复位。所以本次设计选用手动复位。如图2-8所示。

图2-8复位电路

2.9 主控电路设计

主控电路是以单片机为核心,加上外围拓展的双四位计数器,和上升沿检测电路组成的等精度模块。核心电路如图2-9所示。

图2-9主控电路

相关文档