基于等精度测量与spi传输协议的简易频率计.doc_第1页
基于等精度测量与spi传输协议的简易频率计.doc_第2页
基于等精度测量与spi传输协议的简易频率计.doc_第3页
基于等精度测量与spi传输协议的简易频率计.doc_第4页
基于等精度测量与spi传输协议的简易频率计.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

电子系统设计综合报告选题: 简易频率计成员:学号:专业: 电子信息科学与技术时间: 2014.7.23目录一 绪论 - 41.1 测量原理 - 41.1.1 等精度测量 - 41.1.2 SPI协议 - 41.2 系统指标 - 5二 硬件电路 - 6 2.1 系统设计 - 6 2.2 FPGA逻辑模块 - 6 2.3 单片机数据接收模块 - 7 2.4 波形变换电路 - 7三 软件设计 - 9 3.1 编译环境 - 9 3.2 VHDL语言 - 9 3.3 FPGA顶层设计 - 9 3.4 FPGA仿真波形 -12 3.5 ATmega16单片机编程 -13四 系统测试 -15 4.1 等精度测量理论分析 -15 4.2 实验测量数据 -15五 结束语 -16摘要 本设计利用FPGA进行测频计数, 单片机实施控制实现频率计的设计过程.该频率计利用等精度的设计方法, 克服了基于传统测频原理的频率计的测量精度随被测信号频率的下降而降低的缺点. 等精度的测量方法不但具有较高的测量精度,而且在整个频率区域保持恒定的测试精度.设计中用一块FPGA芯片(型号为Cyclone的EP2C5T144C8N)完成各种时序逻辑控制,计数功能. 在Quartus平台上,用VHDL语言编程完成了FPGA的软件设计,编译,调试,下载. 使用Modelsim软件对程序进行仿真与时序及信号的分析.用ATmega16单片机作为系统的主控部件,实现整个电路的测试信号接收,数据运算处理和显示输出. 系统将单片机的控制灵活性及FPGA芯片的现场可编程性相结合, 不但大大缩短了开发研制周期, 而且使本系统具有结构紧凑, 可靠性高, 测频范围宽, 精度高等优点.关键字: FPGA, ATmega16, VHDL, 等精度测量, spi总线协议一 绪论1.1 测量原理1.1.1 等精度测量等精度测量原理用以下结构图进行说明:64位寄存器D触发器1s10s可调门限信号待测信号fxFPGA分频产生10MHZ基准时钟信号32位计数器A32位计数器B图1-1 等精度测量频率计结构图 如结构图所示, 计数器A, 计数器B分别用于记录待测信号fx与基准时钟信号clk的高低电平跳变次数, 门限信号与待测信号fx通过D触发器分别通过计数器A,B, 以达到clk与fx在相同时间开始计数的目的,门限信号可设定计数器的计数时间, 为1s10s.当待测信号频率较低时, 应适当地上调门限信号的持续时间, 以增加fx的计数次数, 提高精确度.当一次计数完毕后, 依次将计数器A,B数据存入64位寄存器内,待传送至单片机进行数据处理. 假定计数器A在门限时间内计数为NA, 计数器B技术为NB,已知基准时间信号的频率为fclk,则待测信号fx频率为 fx=(NA/NB)*fclk,由于NB十分大,因此误差很小, 消除了直接测量法的1误差问题.1.1.2 SPI协议SPI, 是英语SerialPeripheralInterface的缩写, 顾名思义就是串行外围设备接口.SPI,是一种高速的, 全双工, 同步的通信总线, 并且在芯片的管脚上只占用四根线, 节约了芯片的管脚, 同时为PCB的布局上节省空间, 提供方便,正是出于这种简单易用的特性, 现在越来越多的芯片集成了这种通信协议.SPI是一个环形总线结构,由ss, sck, mosi, miso构成,其时序其实很简单,主要是在sck的控制下, 两个双向移位寄存器进行数据交换.当主从机之间进行单向传输时, 以主机向从机传输为例, 只需使用ss, sck, mosi三根总线.(1)mosi主设备数据输出;(2)miso主设备数据输入;(3)sck 同步时钟信号;(4)ss 从设备使能信号.ss为使能信号, 只有当ss有效时, 才可以实现双机通信. 当ss为有效信号时(高低电平由用户及硬件决定), 通信由sck, mosi, miso进行, mosi与miso根据sck提供的时钟脉冲进行数据传输, 数据输出通过mosi传输, 数据在时钟的上升沿或下降沿跳变, 在紧接着的下降沿或上升沿将数据读入8位移位寄存器, 完成一位数据的传输, 经过8个sck时钟脉冲后完成8位数据的的读取, 此时令ss使能信号无效, 接收机将不再读取信号, 至此完成一次数据的传输.图1-2 spi串行传输数据波形示例 图1-2中, sck卫同步时钟, mosi为主机向从机发送数据, 使能信号为ssmark, 高电平有效, 当sck到达上升沿, 从机进行数据的读取, 读取结果为8位2进制数00110001.引脚SPI主机SPI从机MOSI 用户定义输入用户定义输入MISO 输入用户定义输入用户定义SCK 用户定义输入用户定义输入SS 用户定义输入用户定义输入表1-1 spi总线配置1.2 系统指标(1)在0.1Hz10MHz 测试误差0.01%(最大闸门时间10s)条件下,进行大信号(信号幅度:0.5V5V)的频率测量. 十进制数字显示,显示刷新时间110 秒连续可调.(2)在1Hz1MHz 范围内及测试误差0.1%的条件下,进行小信号的频率测量.二 硬件电路2.1 系统设计数码管显示门限信号时间等精度测量频率计涉及加,减,乘,除运算,由于运算量大考虑到资源的消耗,本设计使用单片机与FPGA相结合的方案, 系统结构图如下所示, FPGA进行测频计数,单片机进行运算以及显示.ATmega16单片机进行数据处理1602显示器FPGA测频计数整形放大电路信号输入门限时间设定按键图2-1 系统总体结构图系统主要部分功能如下:1. 波形变换电路: 将输入信号转换成FPGA能够正确识别的信号;2. FPGA: 作为SPI主机对待测信号与基准时钟进行计数,使用3个IO口分别输出使能信号ss, 同步时钟sck以及存有计数器A, B数值的64位数, 进行SPI数据发送;3. ATmega16单片机: 作为SPI从机, 利用引脚PB7,PB5,PB4的第二功能, 对sck, mosi, ss进行接入, 实现数据传送, 接收到的前32位数与后32位数分别保存, 计算两者比值, 再与基准频率10mhz相乘的测得频率. 再通过其他引脚连接1602显示器, 将测得频率显示在1602显示器上.2.2 FPGA逻辑模块FPGA数据流图如下:图2-2 数据流图图中SS0, sck, mosi分别输出使能信号, 同步时钟信号以及计数数据,它们分别于AVR单片机的PB4, PB7, PB5口相连, 进行SPI单向数据传输.2.3 单片机数据接收模块ATmega16是基于增强的AVR RISC结构的低功耗8 位CMOS微控制器. 由于其先进的指令集以及单时钟周期指令执行时间,ATmega16 的数据吞吐率高达1 MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾. ATmega16具有32 个可编程的I/O 口, 其封装包括40引脚PDIP 封装, 44 引脚TQFP 封装, 与44 引脚MLF 封装, 本设计使用了40引脚的PDIP封装, 其引脚图如下.图2-3 ATmega16封装 本设计使用了端口B的PB7, PB5, PB4引脚的第二功能, 使ATmega16作为SPI数据传输中的从机,读取来自FPGA传送的计数数据.2.4 波形变换电路 频率计的前置放大电路使用了TI的OPA 690高速运放构成反向比例放大电路对输入信号进行放大,输入端加入电阻电容,滤去杂波. 放大后通过74ls14施密特触发器对波形进行整形,其原理图及PCB图如下. 图2-4 放大整形电路原理图图 2-5 pcb图三 软件设计3.1 编译环境本设计FPGA部分使用QUARTUS II 进行程序的编写与烧录, 使用Modelsim对编写程序进行信号波形的仿真与校对; AVR单片机C语言编程使用ICCV7 FOR AVR , 在线调试使用了AVR Studio.3.2 VHDL语言 VHDL语言是一种用于电路设计的高级语言. 它在80年代的后期出现. 最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言 . VHDL翻译成中文就是超高速集成电路硬件描述语言,主要是应用在数字电路的设计中. 它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中. 当然在一些实力较为雄厚的单位,它也被用来设计ASIC. VHDL主要用于描述数字系统的结构,行为,功能和接口. 除了含有许多具有硬件特征的语句外,VHDL的语言形式, 描述风格以及语法是十分类似于一般的计算机高级语言. VHDL的程序结构特点是将一项工程设计,或称为设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分. 在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体. 这种将设计实体分成内外部分的概念是VHDL系统设计的基本点. 3.3 FPGA顶层设计门限信号时间的设定与显示产生门限信号的描述SPI数据传输同步时钟SCK10mhz基准时钟clk, D触发器, 计数器A, B的描述64位寄存器6433位保存计数器A数值,321位保存计数器B数值,其描述如下寄存器中的数据分8次在不同时刻从高位到低位依次从MOSI发送数据, 每次8位3.4 FPGA输出波形仿真 为验证程序的正确性, 我们使用Modelsim对程序进行了仿真, 设定待测信号为fx, 频率为2khz.其仿真信号波形如下.图3-1 SPI数据发送波形分析:波形图中, clk为基准时钟, 大小为10mhz, fx为2khz待测信号, sck为SPI数据传输同步时钟, mosi向AVR单片机数据, SS0为使能信号, 低电平有效.取第二段发送数据分析, 当SS0低电平, 从第一个SCK时钟开始, 单片机在SCK时钟的上升沿从mosi上采数据, 每次1位, 直到8位数据采集完毕, 图3-1中采集数据为00110001, 64位寄存器DataBase中第5649位数据为00110001, 数据传输正确.下面验证计数器结果的正确性:DataBase中, 6433位保存着计数器A数值, 321位保存着计数器B数值.DataBase数值大小为 00000001 00110001 00101101 00000000 00000000 00000000 00001111 10100000, 设NA为6433位32位数, NB为321位32位数, 转换为十进制大小NA=20000000, NB=4000, NBNAclk=2khz, 大小与fx相等, 仿真结果正确.3.5 ATmega16单片机编程 在本设计中, ATmega16用于完成数据的接收, 运算以及显示输出. 由于ATmega16端口B的PB7, PB5, PB4的第二功能为SPI传输的时钟sck, 数据传输mosi以及传输使能, 因此用于SPI从机接收十分便捷, 只须配置SPI控制寄存器SPCR的使能SPE位为1即可.当使能信号SS低电平, 单片机在每个同步时钟的上升沿(默认使用SPI模式0)读取数据, 存至SPI移位寄存器中SPDR中, 当数据发送完毕SPI状态寄存器SPSR的SPI中断标志位SPIF将置1, 故可用SPIF位判断一次传输数据是否完成, 程序流程图见图3-6.图3-2 端口B的第二功能图3-3 SPCR寄存器图3-4 SPDR寄存器图3-5 SPSR寄存器显示输出开始1602初始化, SPCR的SPE位置1读数据读取完毕?计算频率计算完毕图3-6 程序流程图四 系统测试4.1 等精度测量理论分析本系统的测频公式为:Fx = ( FsNx ) / Ns8其误差分析如下:设所测频率值为Fx,其真实值为Fxe,标准频率为Fs. 在一次测量中,由于Fx计数的起停时间都是由该信号的上跳沿触发的,在Tpr时间内Fx的计数Nx无误差;此时内的计数Ns最多相差一个脉冲,即|Ns|1则:Fx/Nx=Fs/NsFxe/Nx=Fs/(Ns+Ns)由此推得:Fx=(Fs/Ns)NxFxe=Fs/(Ns+Ns) Nx根据相对误差公式有:Fxe/Fxe=|Fxe-Fx|/Fxe可以得:Fxe/Fxe=|Ns|/Ns|Ns|1 |Ns|/Ns1/Ns即相对误差Fxe/Fxe1/Ns又Ns=TprFs由此可知:(1)相对测量误差与频率无关;(2)增大Tpr或提高Fs,可以增大Ns,减少测量误差,提高测量精度;(3)本测频系统的测量精度与预置门宽度和标准频率有关,与被测信号的频率无关. 4.2 实验测试数据为反应本设计的实际情况, 我们利用信号源产生5Vpp的方波进行测试实际频率测试频率门限时间误差0.5hz0.49hz2s2%1hz0.99hz1s1%10hz9.99hz1s0.1%50hz49.99hz1s0.02%100hz99.99hz1s0.01%1khz999.99hz1s0.001%5khz4999.95hz8s0.001%50khz49999.11hz8s0.00178%500khz499989.90hz10s0.00202%1mhz999981.31hz10s0.001869%5mhz4

温馨提示

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

评论

0/150

提交评论