![FPGA实现等精度数字频率计设计方案_第1页](http://file3.renrendoc.com/fileroot_temp3/2021-12/21/5ce1193e-9d44-41a9-9594-29883963b55f/5ce1193e-9d44-41a9-9594-29883963b55f1.gif)
![FPGA实现等精度数字频率计设计方案_第2页](http://file3.renrendoc.com/fileroot_temp3/2021-12/21/5ce1193e-9d44-41a9-9594-29883963b55f/5ce1193e-9d44-41a9-9594-29883963b55f2.gif)
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、封面作者: PanHongliang仅供个人学习漳州师范学院毕业论文(设计)基于 FPGA 实现等精度数字频率计设计Cymometer of Equal Precision Based On FPGA2010 年 1 月 15 日摘要本文基于 FPGA 的等精度测频原理,给出了通过FPGA 来设计等精度频率计的具体方法。并在此基础上增加了测量周期、脉冲宽度、占空比的功能。设计中,以 Alteta FPGA 系列 CyclonenEP2C5T144C8 器件为核心;运用 VHDL 语言设计功能模块;运用 SOP(设计技术来配置 Niosll 系统,进行信号的控制、数据读取、运算处理、液晶的显 示
2、。关键词:等精度频率计; FPGA; Niosn;AbstractThe principle of cymometer of equal precision based on FPGA is introduced in this paper.The specific methods are given to design the system through the FPGA. lt is also adds muchmore function such as cycle, pulse width, duty cycle measurement. ltuses Altera Corporati
3、onCyclonell series ship-EP2C5T144C8 as a core 。adopts Verilog Hardware DescriptionLanguage to implement function module 。 adopts the SOPC technique toconfiguration Niosllsystem. the Niosnsystemis used for signal controlling, data processing , calculation, anddisplay。Key Word: equal precision frequen
4、cy mete。FPGA。 NiosU。目录摘要 IIAbstractII1 引言 12 系统设计 22.1 设计要求 22.2 方案论证与比较 32.3 设计思路 32.4 系统的总体设计 43 模块电路的设计 53.1 CycloneUSOPC Board 简介 53.2 频率、周期测试模块 53.2.1等精度测频法原理 53.2.2等精度测周期法原理 73.2.3实现方法 73.2.4仿真 73.3 脉宽、占空比测试模块 83.3.1脉宽测量原理 83.3.2占空比测量原理 83.3.3实现方法 83.3.4仿真 93.4 液晶显示 10341 LCM128645ZK 液晶概述 103.
5、4.2液晶的控制 104 NIOSH系统的设计 114.1 NIOSH系统的分析 114.2 基于 NIOSHIDE 的软件设计 124.2.1主要的库函数说明 124.2.2系统流程图 135 系统测试 145.1 测试仪器 145.2 数据记录与分析 145.2.1频率、周期测试 145.2.2脉宽测试 175.2.3占空比测试 175.3 设计不足 186 结束语 18 致谢 19 参考文献 19附录 201 引言在电子测量技术中,频率测量是最基本的测量之一。工程中很多测量,如用振弦 式方法测量力、时间测量、速度测量、速度控制等,都涉及到频率测量,或可归 结为频率测量。常用的直接测频方法
6、对被测信号的计数都会产生1 个数字误差1;基于传统测频原理的频率计的测量精度将随着被测信号频率的下降而降 低,在实用中有很大的局限性,而等精度频率计不但有较高的测量精度,而且 在整个测频区域内保持恒定的测试精度。 等精度测频方法是一种在直接测频方 法基础上发展起来的测频方法, 该方法测量精度高、频段宽, 在频率测量中具 有广泛的应用前景。 采用等精度频率测量方法具有测量精度保持恒定,不随所 测信号的变化而变化;结合现场可编程门阵列 FPGA ( Field Programmable GateArray) ,具有集成度高、高速和高可靠性的特点。设计人员只需要完成对 系统功能的描述,就可以由计算机
7、软件进行处理,得到设计结果,而且修改设 计如同修改软件一样方便,可以极大地提高设计效率2。NiosU嵌入式处理器是 Altera 公司于 2004 年 6 月推出的第 2 代用于可编程逻 辑器件的可配置的软核处理器, 性能超过 200DMIPS 基于哈佛结构的 RISC1用 嵌入式处理器软核, NiosU处理器系统的外设配置具有很大的灵活性,设计者 可以根据自己的系统需求来添加必要的外设,NiosU能与用户逻辑相结合,编程至 Altera 的 FPG 中,降低了用户的系统总体成本。无论是外设、存储器接 口、性能特性,还是成本,这些优势的体现都借助于再 Altera 的 FPG 上创建一 个定制
8、的片上系统,或者更精确地说,创建一个可编程单芯片系统3。本次的毕业设计将通过等精度数字频率计的设计,对FPGA 技术、SOPC 的开发流程、 Quartus II 开发软件有了一个比较全面、直观的介绍。2 系统设计2.1 设计要求基于传统测频原理的频率计的测量精度将随被测信号频率的下降而降低 , 在 实用中有较大的局限性 ,而等精度频率计不但具有较高的测量精度 , 而且在整个 测频区域内保持恒定的测试精度4. 本系统设计的基本指标如下 :1 对于频率测试功能,测频范围为 1 Hz90 MHz 对于测频精度,测频 全域相对误差恒为百万分之一。2 对于周期测试功能,信号测试范围与精度要求与测频功能
9、相同。3 对于脉宽测试功能,测试范围为 0.1 卩 s1 s,测试精度为 0.01 卩s。4 对于占空比测试功能,测试精度为 1%99%。5 利用液晶显示测量结果。2.2 方案论证与比较本设计是以 Altera 公司的 CycloneU为核心,其实现方案有四种:方案一:将单片机和 FPGA 吉合起来实现。其中单片机完成整个测量电路的 测试控制、数据处理和显示输出;FPG 毗成各种测试功能。方案二:将 ARM 和 FPGA 吉合起来实现。其中利用 ARM 技术来完成测量电路 的测试控制以及数据处理等。方案三:利用 FPGA 实现。在 EDA 工具软件平台上以硬件描述语言 VHDL 为 系统逻辑描
10、述手段完成的设计文件,自动地完成逻辑编译、逻辑化简、逻辑分 割、逻辑综合、吉构综合经及逻辑优化与仿真,直到实现既定的电子线路系统 功能。方案四:在方案二的基础上稍加改进,通过在 FPGA!嵌入 NiosU系统, 在 IDE 环境下采用 C 或者 C+寸各种逻辑器件进行控制。另外在 FPGAk 采用 VHDL 或者 VERILOG硬件描述语言编写各种逻辑器件的驱动,从而完成各种测 试功能。下面寸三种方案进行论证: 方案一实现起来比较简单,但是由于该系统板上的资源充足,可以完成等 精度数字频率计涉及到的计算(包括加、减、乘、除),没必要增加资源,另 外单片机的处理频率一般不是很高,易受外部条件的干
11、扰,功耗也高。方案二中使用到得 ARM 技术性能较好,但是相对于 FPGA 来说其处理速度还 是稍逊一筹的,另外在灵活性上不如 FPGA。方案三中,采用 VDHL 编程设计实现的数字频率计,整个设计过程变得十 分透明、快捷和方便 , 特别是对于各层次电路系统的工作时序的了解和把握显 得尤为准确 , 而且具有灵活的现场可更改性。在不更改硬件电路的基础上 , 对系 统进行各种改进还可以进一步提高系统的性能和测量频率的范围。该数字频率 计具有高速、精确、可靠、抗干扰性强、而且可根据需要进一步提高其测量频 率的范围而不需要更改硬件连接图 , 具有现场可编程等优点。方案四在 FPGA 中嵌入 NiosU
12、系统,用户可以根据设计要求对 NIOSU及其 外围设备进行构建,实现单芯片片上系统(SOPC。由于要进行乘除运算,采 用 VHDL 语言设计时,使用FPGA 勺资源较大,相比之下,嵌入一个 NiosU系统 可以节约资源,另外灵活性也比较好,信号的处理也比较简单。综上所述,采用方案四。2.3 设计思路根据系统设计功能的要求,确定系统由 7 个模块电路组成:频率测量模块、周期测量模块、脉宽测量模块、占空比测量模块、NiosU微处理器(控制器)模块、PLL 模块、液晶显示,系统框图如图 1 所示。2.4 系统的总体设计系统总体原理图如图 2 所示。各模块的说明如下:1. f_d_test为测试模块,
13、即测试输入信号的频率、周期、脉宽、占空比,通过四个输入信号(CLR START W_D QH 来控制该模块的工作。该模块 的各个端口功能说明如下:BCLK 是频率为 fs 的标准信号输入端;TCLK 是频率为 fx 的待测信号输入端;CLR 为清零端,为 1 时对计数值进行清零;QH 为功能选择控制端,为 0 时进行频率/周期测量,为 1 时进行脉宽/ 占空比测量;START 为频率/周期测量的预置门控信号,当 START 为高电平后,同时 启动两个计数器对标准信号和系统测信原理进行计数,当 START 为低电平 后,两个计数器同时关、心八闭,NiosU处理器读取计数值;图1系统框图W_D 为
14、脉宽/占空比测试的允许位,当 W_D=1 时,进行脉宽/占空比测 试。2. nios2c5 是由 SOPC Builder 创建的 NiosU系统,该内核主要有五个作 用:第一,检测按键, 根据按键来设置工作的状态; 第二, 产生控制测试模块 f_d_test 的信号, 即 CLR STARTW_D QH 第三,读取两个计数器的计数 值;第四,对读取的计数值进行运算;第五,控制液晶显示。3. Icd_delay 模块用于产生满足 LCD 的时序。4. LCD_EN 模块用于产生 LCD 的使能信号 EM5. DEBOUNCIN 模块用于按键去抖。6. delay_reset_block 模块用
15、于保证 PLL 稳定工作才产生复位信号。7. PLL 模块用于产生系统时钟、标准信号和 SRA 啲时钟。3 模块电路的设计3.1CycloneHSOPC Board 简介本课题所用的开发板为 CycloneHSOPC Board,开发板的实物图见附录 1。开发板上的主要配置如下:Cyclone 系列的 EP2C5T144C 芯片:采用全铜层、1.2 伏 SRA 工艺设计,具 体内部资源如下表 1 所示。另外该芯片还支持 SOP 的开发,用户可以使 用 NiosU嵌入式处理器。表 1 EP2C5T144C8 的资源列表冋逻辑单 元(LE)M4K RAM块RAM 数 量嵌入式 18*18乘法器锁相
16、环(PLL)最大可用 I/O口460826119808132142Am29LV160D16 兆位的闪存 FLASH 另外,FLASKSRA 共用数据总线 和地址总线。IS61LV25616: 256KX16bit,高速异步的 CMO 静态 RAM50M 勺晶振JTAC 配置:将 ByteBlasterU或 USB Blaster 下载电缆连接到 JTAC 接 口,通过QuartusU软件就能直接对 FPG 进行配置。3.2 频率、周期测试模块3.2.1 等精度测频法原理等精度测频法是指利用二个计数器分别计算标准信号的脉冲个数与实测信 号的脉冲个数,最后由公式进行换算。此方法的优势是,不用再进行
17、多个频段 的转换,如果标准频率高,测量的精度也是会相应提高。等精度测频方法是在直接测频方法的基础上发展起来的。它的闸门时间不 是固定的值,而是被测信号周期的整数倍,即与被测信号同步,因此,消除了对 被测信号计数所产生土 1的误差,并且达到了在整个测试频段的等精度测量。图 3 测频原理时序其测频波形图如图 3 所示。由图 3 可看出,在测量过程中,有 2 个计数器分别对标准信号和被测信号同 时计数。首先给出闸门开启信号(预置门限上升沿),此时计数器并不开始计数 而是等到被测信号的上升沿到来时,计数器才真正开始计数。然后预置闸门关 闭信号(下降沿) 到来时, 计数器并不立即停止计数 , 而是等到被
18、测信号的上升沿 到来时才结束计数 , 完成 1 次测量过程。若所测频率值为 fx ,标准频率为 fs ,计数器 1 测得的被测信号的脉冲数值 为 Nx,计数器 2 测得的标准信号的脉冲值为Ns,贝尼们之间存在如下的关系8:.下面由 (1) 可推得.(2)等精度数字频率计误差的证明: 若所测频率值为 fx ,其真实值为 fxe ,标准频率为 fs ,一次测量中,由于 fx 计数的起停时间都是由该信号的上升沿触发的,因此在 Tpr 时间内对 fx 的 计数Nx 无误差,在此时间内的计数 Ns 最多相差一个脉冲,即 et 1,则下式 成立:.可推得.根据相对误差的公式 (2)(4) 推得.经整理可得
19、到.(6)因厶 et 1,故4et/Ns 1/Ns,即.(7).(8) 结论:误差在频率范围内恒定,取决于标准频率,标准频率越大,误差越 小,所以又称等精度测试。3.2.2等精度测周期法原理为提高周期测量的精度,采用等精度周期测量法。该方法在测量电路和测量精度上与等精度频率测量完全相同,只是在进行计算时公式不同,用周期 1/T 代换频率 f 即可,计算公式为8.(9)3.2.3 实现方法测试模块 f_d_test 内部的原理图如图 4 所示89。当 QH=0 时,测试模块 进行频率或周期测量,其工作步骤如下:(1) 在 CLR 端加以正脉冲信号以完成测试电路状态的初始化(2)将预置门控信号 S
20、TART 端置高电平,预置门开始定时,此时由被 测信号的上升沿打开计数器 CNT1 和 CNT2,两计数器开始工作。(3)预置门定时结束信号 START 端置为低电平(由 NIOSU微处理器 来完成)。在被测信号的下一个脉冲的上升沿到来时,两个计数器停止工作。(4)计数结束时,count_end 端口输出低电平,NIOSU微处理器读取 该信号后,就对两个计数器的计数时进行读取,再根据公式进行运算,计算出 被测信号的频率或周期值。3.2.4 仿真周期/频率测试仿真图如图5 所示。测试信号 TCLK 的频率值设置为10MHz,即 fx=10MHz ;标准信号 BCLK 的频率值设置为 100MHz
21、,即 fs=100MHz。仿真情况分析如下:1. 计数器 CNT1 的计数值为 4, 即卩 Nx=4;计数器 CNT2 的计数值为 40,即 Ns=40;则由公式计算可得:,与设置的频率值一致,故满足设计要求。2.由图可看出:当 START=1 时,测试信号的第一个上升沿到来时,计数器使能 端 BENA=1 但是相对于计数器时钟信号的上升沿,使能端会有些延时,以至于 计数器无法计数打开使能端图 4 测试模块的原理图的这个测试信号的脉冲,只能从下一个脉冲开始计数;同理,当 START=0时,计数器仍然会对关闭计数器的这个测试信号的脉冲进行计数,只有等到下 一个脉冲的上升沿到来时才停止,故在软件编
22、写上要注意延时,以确保测试正 常。3.3 脉宽、占空比测试模块3.3.1 脉宽测量原理测量电路在检测到脉冲信号的上升沿时打开计数器,在下降沿时关闭计数器,设脉冲宽度为 Twx 计算公式为图 5 周期/频率测试仿真图.(10)3.3.2 占空比测量原理测一次脉冲信号的脉宽,记录其值为Twx1,然后将信号反相,再测一次脉宽并记录其值为 Twx2,通过下式计算占空比:.(11)333 实现方法脉宽测量原理图如图 6 所示,编译生成为图 4 中的 MAIKUAN(模块。当 QH=1 测试模块进行脉宽或占空比测量。当 W_D=1 时,测试的是信号高电平的 脉宽;当 W_D=O 时,测试的是信号高电平的脉
23、宽;具体工作步骤如下 :在 CLR 端加以正脉冲信号以完成测试电路状态的初始化。(2) 在被测信号的上升沿到来时,标准频率信号进入计数器CNT2o(3) 在被测信号的下升沿到来时,计数器 CNT2 被关断。3.3.4 仿真脉宽/占空比测试仿真图如图7 所示。测试信号 TCLK 的频率值设置为10MHz,即 fx=10MHz ;标准信号 BCLK 的频率值设置为 100MHz,占空比为图6脉宽测量原理图60%,即 fs=100MHz。仿真情况分析如下:1. 当 W_D=1 寸,计数器 CNT2 的计数值为 6, 即卩 N 仁 6;当 W_D=0 寸,计数器 CNT2的计数值为 4,即 N2=4,
24、则由公式计算可得:脉宽为,与设置的脉宽值一 致,故满足设计要求; ,与设置的测试信号的占空比一致,故满足设计要求。2. 由图可看出:初始化后,计数器工作在测试信号的第二个高电平或者低电平期间,即此时才对标准信号进行计数。这是因为脉宽测试模块(见图 6)中只有等到第二个测试信号的上升沿到来时,PUL 端口才有输出值,这样才能打开后面的计数器。故在软件编写上要注意延时,以确保测试正常。3.4 液晶显示3.4.1LCM128645ZK 液 晶概述中文液晶显示模块 LCM128645ZK 勺字型 ROM 内含 8192 个 16*16 点中文字型 和 128个 16*8 半宽的字母符号字型;另外绘图显
25、示画面提供一个 64*256 点的 绘图区域 GDRAM 而且内含CGRAM!供 4 组软件可编程的 16*16 点阵造字图7脉宽/占空比测试仿真图功能,可实现汉字、ASCII 码、点阵图形的同屏显示。与单片机等微控器的接口模式有三种,分别 为:并行 8 位/4位,串行。LCM128645Z 液晶引脚说明见附录 2。3.4.2 液晶的控制SOPC Builder 中有已经定制好的液晶显示的内核,液晶屏内部带有液晶控制器 ST792CX液晶驱动电路如图 8 所图 8 液晶驱动电路示。由于液晶屏是 Motorala 接口,不能直接使用 Avalon 总线接口来操作,要 对LCD_EN言号进行必要的
26、逻辑转换,转换由LCD_EN莫块来实现10,其中的具体逻辑如图 9 所示。可以看出只有当片选和读(或写)低电平有效时才产生高 电平有效的LCD_EN 满足控制要求。查看 ST7920 的数据手册,从 CPU 写数据到 ST790 的时序图中可看出,数据 是在使能信号(LCD_EN 高有效)的下降沿写入,并要求RS(由地址信号 A0 产生)信号有一定的保持时间(大于 20ns),相当于写数据时要求地址信号有一定的保持时间;另一方面,Aval on 三态接口中的选通信号与地址信号是同时结 束,不能满足液晶屏的写控制时序。这个问题可通过将控制液晶屏的地址信号 A0 (RS 和 A1 (R/W 延时解
27、决图因LC增加一模块的逻辑图delay 模块,其内部逻辑 如图 10 所示。lcd_delay 模块内部逻辑中,有一个多路选择开关,其选择由 LCD_nC 来控制,因此只有对液晶屏进行操作时,A0(RS 和 A1 (R/W 才可延时10。4NIOSH系统的设计4.1NIOSH系统的分析1、根据系统要实现的功能和开发板配置,系统需要使用的外围器件包括:LCD 液晶显示:显示待测信号的频率、周期、脉宽、占空比等信息; 按键(四个):用于测试模块功能的选择;Flash 存储器:存储硬件和程序; SRAM 存储器:程序运行时将其导入 SRAM2、 根据用到的外设和器件特性,在 sopc builder
28、 中加入的内核及各内核的作 用如下11:CPU 用来对系统各外设的逻辑控制JTAG UAR( JTAG 通用异步通信总线):用于 Flash 存储器的读写控制,在参数设置时一般保持默认不变系统 ID 外设:当 SOPCBuilder 生成图10 lcd_delay模块的逻辑图NIOSH系统时,将为每个 NIOSU系统生成一个标识符。该标识符会被写入systemid 寄存器中,供编译器和用户辨别所运行的程序是否与目标系统匹配 timer (定时器内核):作为系统的周期性时钟源、定时器等SRAM 用作程序运行时所要的内存FLASH 用于存放最终的程序和数据,掉电时,数据不会丢失Aval on Tr
29、istate Bridge(Avalon三态桥):是 Avalo n 交换结构与片外夕卜设相连的桥梁,它产生片外器件所需的数据、地址、读 /写、片选以 及其他控制信号PIO 口 :用作功能选择及控制信号LCD 显示:显示所测量的结果NIOSII系统的配置情况如图 11 所示。图 11 NIOSI微处理器的配置4.2 基于 NIOSIIDE 的软件设计本系统的软件设计是以 C 语言形式在非操作系统环境下,利用Altera 公司的软件集成开发工具 IDE 所提供的硬件抽象层(HAL 的函数支持下来完成编写 的。4.2.1 主要的库函数说明系统中用到的主要的 NIOSI库函数如下所示:1. I/O
30、操作IORD_ALTERA_AVALON_PIO_DATA(b:s 读取 I/O 口 的值。IOWR_ALTERA_AVALON_PIO_DATA(base, data 往 I/O 口写入数据。IOWR_ALTERA_AVALON_PIO_IRQ_MASK(base, data 中 断屏蔽寄存器。参 数 data为向中断屏蔽寄存器写入的数据。IOWR_ALTERA_AVALON_PIORQ_EDGE_CAP(base,器。参数 data 为向边沿捕获寄存器写入的数据alt_irq_register(alt_u32 id,void *con text,void(* isr)(void*,alt_
31、u32):登记中断源2.液晶显示LCDn it(void):液晶显示初始化LCD_BacklightCo n(alt_u8 status) :打开背光LCD_pri ntf(alt_u8 row,alt_u8 col,alt_u8 *pdata,alt_u8 len):显示字符ST7920_ClearScreen():清屏3. 定时函数alt_busy_sleep( un sig ned int us):延时4.2.2 系统流程图系统总流程图如图 12 所示。系统外部共有四个按键,分别控制频率测试、周期 测试、脉宽测试、占空比测试。主程序中主要是检测按键,根据键值 Test_Mode 来选择系
32、统的工作状态。频率、周期、脉宽、占空比测试的子程序分别如图13、14、15、16 所示。对于频率/周期测试,不同的待测信号频率采用不同的预置门限。原因如下:当 高频时,若系统采用的门限时间太长的话,FPGA 内部的 32 位计数器可能会溢出,另外也会影响系统的实时性;当频率低时,若系统采用的门限时间太短 时,计数器可能就无法计数了。本系统中,划分了三个频率段,每个频率段的 门控信号的时间不同:Fx1KHz 时,门控信号,即闸门时间为 2s,1KHzFx 1MHz 时,闸门时间为 1s。5 系统测试5.1 测试仪器表 2 仪器列表序号仪器名称及型号数量1TDS 1002 数字示波器12SP164
33、1B 型函数信号发生器13EE1461 型 DDS 合成信号发生器15.2 数据记录与分析5.2.1 频率、周期测试1. 利用1S脉宽测试型函数信号发生器产生方波,图出电空比噥子V序占空比为- 图 12 系统总流程图 -图 14 频率测试子程序图 13 周期测试子程序50%数据记录如表 3 所示。相对误差值的计算公式如下:REL= . (12)表 3 频率测试数据记录表 仪器测试信号发生器OSC示波器测试IDE液晶显示DES相对误差(%)REL频率(Hz)1.0951.0951.090.456周期-920.00ms0.92s0频率(Hz)1.3051.2991.30-0.077周期-780.0
34、0ms0.779s0.128频率(Hz)2.2252.2222.220.090周期-450ms0.449s0.222频率(Hz)11.7911.796211.790.052周期-84.77ms84.77ms0频率(Hz)66.4966.490366.490周期-15.03ms15.03ms0频率(Hz)604.51604.533604.530.0004周期-1.65ms1.65ms0频率(Hz)6.4182K6.41830K6.418K0.005周期-155.8us0.156ms0.128频率(Hz)70.619K70.6199K70.619K0.001周期-14.16us14.16us0频率
35、(Hz)742.15K742.173K742.173K0周期-1.35us1.35us0频率(Hz)1148.7K1.14882M1.1488M0.001周期-870.5ns0.870ms0.057频率(Hz)3403.6K3.40368M3.4037M0.0005周期-293.8ns0.294ms0.0682.利用 EE1461 型 DDS 合成信号发生器产生一正弦波,数据记录如下表4所示。相对误差值的计算公式如下:REL= .(13)表 4 频率、周期测试数据记录表、 、 仪 器、测试信号发生器OSC示波器测试IDE液晶显示DES相对误差()REL频率(MHZ2.0212002.02120
36、2.02120周期(ns)494.755500.00494.7550频率(MHZ5.0212005.021205.02120周期(ns)199.155200.00199.156-0.0005频率(MHZ10.02120010.021210.02120周期(ns )99.788100.0099.7880频率(MHZ30.02120030.021230.02120周期(ns )33.31034.0033.3100频率(MHZ50.02120050.021450.0214-0.0004周期(ns )19.992-19.9900.0050频率(MHZ70.02120070.0215-0.0004周期(
37、ns )14.281-14.280频率(MHZ85.02120085.0215-0.0006周期(ns )11.762-11.7600.0070频率(MHZ87.02120087.0215-0.0006周期(ns )11.491-11.4900.0087频率(MHZ92.02120092.00410.0186周期(ns )10.867-10.869-0.0184频率(MHZ100.021200-3.数据分析与总结:当被测信号频率在 01kHz 时,精确到小数点后两位;当被测信号频率在1kHz1MHz 范围内时,精确度为小数点后三位;当被测信号频率在1MH100MHz范围内时,精确度为小数点后四
38、位。用 SP1641B 型函数信号发生器产生信号时,由于仪器的精度问题,测试时 参考示波器测到的频率/周期;在用 EE1461 型 DDS 合成信号发生器产生信号 时,参考信号发生器上的频率值 /周期。由于系统设计时,液晶显示的位数有 限,与参考的频率/周期的位数不一致。所以由表 3、4 可知,用公式计算出的 相对误差比较大,但在整个频率范围内,其精度都近乎相等,且精度都保持在 0.05%之 内。综上所述:频率/周期测试的测量范围为1Hz90MHz 且精度达到设计要求。5.2.2 脉宽测试利用 SP1641B 型函数信号发生器产生方波,输出电压为 2.5V。数据记录如 表 5 所示。表 5 脉
39、宽测试数据记录表示波器测得的脉宽液晶显示的脉宽相对误差(%)176.0 ns0.174us1.14500.0ns0.500us05.200us5.190us0.1947.00us47.00us0500.0us0.499ms0.204.600ms4.5183ms1.7850.00ms50.186ms-0.37490ms0.485s1.02980ms0.977s0.31数据分析与总结:由表 5 可知,测试范围无法测到 0.1us,这是由于该信号发生器最大的输 出频率为 3MHz相对误差最大为 1.78%,测试精度略超出 0.01 卩 s。另外,由 于信号的周期是手动测量,也存在人为误差。综上所述:
40、由于未设计外部整形电路,无法得到高频的矩形波,导致无法测量高频,故测量范围未达到要求,精度有待提高。5.2.3 占空比测试信号发生器输出一矩形波,其频率 f=1.0007kHz,幅度 Vpp=2.7V,改变占空比 测试如表 6 所示。表 6 占空比测试数据记录表高电平(US)低电平(us)占空比(%)显示的占空比(%)误差(%)90016084.985-0.1264036064.065-1.5640062039.240-2.0424082022.624-6.1916098014.014050050050.0500数据分析与总结:由表 6 可知,由示波器测出该仪器输出的矩形波的占空比的范围为 1
41、4%r85%,本设计均能较准确地测出占空比。综上所述:由于仪器问题,无法测试设计要求中的占空比的范围,在可测 范围内,本设计基本可以准确的测出信号的占空比,达到设计要求。5.3 设计不足频率/周期测试模块的实时性不是很高。NIOSU系统对频率/周期测试的门控信号进行控制,系统是通过延时以等待计数的完成,若在计数期间,外部的 待测信号的频率值发生改变,系统无法马上进行判别,只能等待计数完成后, 才能对该频率值进行测试。6 结束语本次设计的等精度数字频率计不仅能够很好地对被测信号的频率进行测 量,并且实现了周期、脉宽、占空比测量等功能,测量结果通过液晶很直观地 显示。另外本系统利用 SOPC 技术
42、,嵌入一个 IP 核,节约了 FPGA 芯片的资 源,便于添加外设。所测得的指标如下:对于频率测试功能, 测频范围为 1HZ90MHZ 对于测频精度,测频全域相 对误差为 0.05%之内。对于周期测试功能,测周期范围为7ns90ms 对于测量精度,测周期全域相对误差为 0.2%之内。对于脉宽测试功能,被测范围为 176 ns980ms对于占空比测试功能,被测范围为 14%r85%用字符型液晶来显示测试的结果,直观明了。它与传统的频率计的比较,其优点是:软件开发效率高,易于很好的扩展 功能,并且在整个测量范围内都能保持一定的精确度,对于高频信号的测量准确更高,速度更快,稳定度更高。致谢在本次毕业
43、设计的过程中,王灵芝老师在论文的选题、开题、 设计构思到最后定稿的各个环节上都给予了悉心的指引与教导,使 我对 FPGA SOPC 勺设计、开发软件的应用有了深刻的认识。更为重 要的是王老师教会了我面对困难时不要轻言放弃。王老师精益求精 的治学态度、丰富渊博的知识以及诲人不倦的师者风范是我终生学 习的楷模。在此,谨向老师表示崇高的敬意和衷心的感谢!同时我要感谢吴一纯老师在我课题研究期间给予了很大的帮 助、提出了宝贵的意见和建议。最后,感谢我的家人,他们一直默默的支持和鼓励着我。参考文献1张梦梨 韩国松基于 FPGA 勺等精度数字频率计的研究与实现J.商丘职业技术学院学报, 2006 年第 2
44、期,第 5 卷:7981.2褚振勇,齐亮,田红心,高楷娟编著.FPGA 设计及应用(第二版)M.西安电子科技大学出版社 2006.12 8 323周立功等.SOPC 嵌入式系统基础教程M.北京:北京航空航天大学出版社,2006 年 11月.3 12.4莫琳.基于 FPGA 勺等精度频率计的设计与实现J.现代电子技术,2004(10):8182唐亚平王学梅.基于 FPGA 勺等精度频率计的设计J.电子元器件应用,2005( 10): 6365.Altera Corporation. CyclonenDevice HandbookK.7张杰 姚剑 叶林 李昌禧 . 频率测量的新方法 J. 工业仪表
45、与自动化装置, 2003 年,第 1 期: 6365.8谭会生 瞿遂春 .EDA 技术综合应用实例与分析 M. 西安:西安电子科技大学出版社,2007.217 251.9潘松黄继业.EDA 与 VHDL 第二版)M.北京:清华大学出版社.2007.251 253.10周立功等 .SOPC 嵌入式系统实验教程(一)M. 北京:北京航空航天大学出版社,2006 年 11 月. 134 135.11周立功等 .SOPC 嵌入式系统基础教程 M. 北京:北京航空航天大学出版社, 2006 年 11 月 .73 132.附录1. 开发板实物图2. LCM128645ZK 液晶引脚说明3.基于 NIOSn
46、IDE 的软件设计的程序#include stdio.h / 标准输入 /输出函数头文件#include system.h /SOPC 生成的 cpu 信息#include #include alt_types.h#include sys/alt_irq.h/ 中断操作函数头文件#include altera_avalon_pio_regs.h /该文件定义了内核的寄存器映射并提供硬件设备访问 宏定义#include zlg_avalon_lcd128_64.h #include sys/alt_alarm.h#include altera_avalon_timer_regs.h#includ
47、e priv/alt_busy_sleep.h #include hello_world_small_1.h hello_world_small_1.h#ifndef HELLO_WORLD_SMALL_1_H_ #define HELLO_WORLD_SMALL_1_H_ #define Tdata_BASE0 x00502070 #define Bdata_BASE 0 x00502080#define button_BASE 0 x00502090 #define CLR_BASE 0 x005020a0#define count_end_BASE 0 x005020b0#define
48、SPUL_BASE 0 x005020c0#define START_BASE 0 x005020d0 #define w_d_end_BASE 0 x005020e0#define W_D_BASE 0 x005020f0#define button_IRQ 3 #define count_end_IRQ 4#define w_d_end_IRQ 5#endif /*HELLO_WORLD_SMALL_1_H_*/float Fs=100000000.0 。 /标准频率 fs=100MHzfloat Fx 。 / 待测频率float Tx 。 / 待测周期float Twx 。 /待测信号脉
49、宽float Duty 。/ 待测信号的占空比alt_u32 Ns 。 /标准频率计数器 BZQ 中的计数值alt_u32 Nx 。 / 待测频率计数器 TZQ 中的计数值alt_u32 N1 。 / 高电平时 ,标准频率计数器 BZQ 中的计数值alt_u32 N2 。 / 低电平时 ,标准频率计数器 BZQ 中的计数值 alt_u8 Test_Mode=0 。 /模式选择alt_u8 Operation=0 。 / 频率测量或者占空比测量或者暂停标志alt_u8 gata_time 。alt_u8 number1=0 。alt_u8 number2=0 。alt_u8 number3=0
50、。alt_u8 number4=0 。alt_u8 i 。alt_u8 j 。alt_u8 k 。alt_u8 l 。alt_u8 byte1 。/ 显示测量的频率、周期的位数不同时,转换前清零所设的标志位alt_u8 byte2 。alt_u8 byte3 。alt_u8 byte4 。alt_u8 byte5 。alt_u8 byte6 。alt_u8 duty 。alt_u8 aa 。alt_u8 danwei 。alt_u8 danwei2 。char a。 /显示数据缓冲区char b。char c。char d。char e。char f 。int edge_capture。voi
51、d Init() 。 / 初始化设置void Freq_Test() 。/ 频率测量void Time_Test() 。/周期测量void Duty_Test() 。 /占空比测量void Width_Test() 。 /脉宽测量void display() 。 /刚上电时的显示void key_Scan() 。 /按键扫描void init_button_pio() 。void judge() 。void count_end_interrupts(void *context,alt_u32 id) 。void judge() 。void Init_pio() 。void w_d_end_in
52、terrupts(void *context,alt_u32 id) 。 /* 按钮的初始化* */void handle_button_interrupts(void*context,alt_u32 id)int*edge_capture_ptr=(int*)context 。*edge_capture_ptr=IORD_ALTERA_A VALON_PIO_EDGE_CAP(button_BASE) 。 / 储存按钮 的值到边沿捕获寄存器中IOWR_ALTERA_A VALON_PIO_EDGE_CAP(button_BASE,0) 。 /复位边沿捕获寄存器void init_button
53、_pio()/ 初始化 button_piovoid *edge_capture_ptr=(void*)&edge_capture 。IOWR_ALTERA_A VALON_PIO_IRQ_MASK(button_BASE,0 xf) 。 /开放全部 4 个按钮的中break。IOWR_ALTERA_A VALON_PIO_EDGE_CAP(button_BASE,0 x0) 。/ 复位边沿捕获寄存器alt_irq_register(button_IRQ,edge_capture_ptr,handle_button_interrupts) 。 /登记中断源/* 频率、周期测试时,计数器
54、停止计数时,产生中断,中断初始化* */ void InitPIO(void)IOWR_ALTERA_A VALON_PIO_DIRECTION(count_end_BASE,0 x0) 。 / 初始化 count_end 为输入IOWR_ALTERA_A VALON_PIO_IRQ_MASK(count_end_BASE,0 x1) 。/ 开 count_end 的中 断alt_irq_register(count_end_IRQ,NULL,count_end_interrupts) 。 /注册中断服务子程序* 主函数* *int main()init_button_pio() 。Init(
55、) 。display() 。/ InitPIO() 。while(1)key_Scan() 。if(Operation=1)switch(Test_Mode)case 1: Freq_Test()。IOWR_ALTERA_A VALON_PIO_EDGE_CAP(count_end_BASE,0 x0)。/清边沿捕获寄存器case 2: Time_Test() 。break 。case 3: Width_Test() 。break 。case 4: Duty_Test() 。break 。/* 初始化设置* */void Init() / 初始化设置number1=0 。number2=0 。
56、number3=0 。number4=0 。byte1=0 。byte2=0 。byte3=0 。duty=0 。IOWR_ALTERA_A VALON_PIO_DATA(CLR_BASE,0 x1) 。 /清零 BZQ,TSQ 计数器IOWR_ALTERA_A VALON_PIO_DATA(START_BASE,0 x0) 。 /初始化预置门控信号 ,0 x0 为 占空比测量IOWR_ALTERA_A VALON_PIO_DATA(SPUL_BASE,0 x1) 。 /0 x1 为频率测 ,0 x0 为占空比测 量return。/* 刚上电时的显示break。* */ void displa
57、y() /LCD_init() 。LCD_BacklightCon(LCD_BACKLIGHT_ON) 。 / 打开背光Test_Mode=1 。Operation=1 。 break。 case 0 x02:Test_Mode=2 。Operation=1 。 break。case 0 x04: Test_Mode=3 。 Operation=1 。break。case 0 x08:Test_Mode=4 。Operation=1 。ST7920_ClearScreen() 。 / 清屏alt_busy_sleep(5000) 。LCD_printf(0,0, 频率测试请按LCD_print
58、f(1,0, 周期测试请按LCD_printf(2,0, 脉宽测试请按LCD_printf(3,0, 占空比测试按return 。/* 按键扫描* */ voidkey_Scan()switch(edge_capture)/ 检测按钮case 0 x01:psw1,strlen( 频率测试请按 psw1) 。psw2,strlen( 周期测试请按 psw2) 。psw3,strlen( 脉宽测试请按 psw3) 。psw4,strlen( 占空比测试按 psw4) 。default:Test_Mode=0 。Operation=0 。return 。/* * 频率测试子程序* */void F
59、req_Test() / 频率测量number2=0 。number3=0 。number4=0 。 i=number1+ 。if(i=0) / 第一次执行该程序时要先进行清屏ST7920_ClearScreen() 。 /清屏 alt_busy_sleep(2000) 。LCD_printf(1,1,频率测试中”,strlen(”频率测试中)。/IOWR_ALTERA_A VALON_PIO_DA TA(CLR_BASE,0 x0) 。 /清零 IOWR_ALTERA_AVALON_PIO_DATA(SPUL_BASE,0 x0) 。IOWR_ALTERA_A VALON_PIO_DATA(
60、CLR_BASE,0 x1) 。 /一个正脉冲,完成初始化alt_busy_sleep(20000)。IOWR_ALTERA_A VALON_PIO_DATA(CLR_BASE,0 x0) 。alt_busy_sleep(10000) 。if(gata_time=0)/ 此次读数用于门限判断IOWR_ALTERA_A VALON_PIO_DA TA(START_BASE,0 x1) 。/开始alt_busy_sleep(100000)。 /门控信号时间 100msIOWR_ALTERA_A VALON_PIO_DA TA(START_BASE,0 x0) 。 /结束 if(gata_time=1)/ 频率小于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年切管机分切圆刀片项目投资价值分析报告
- 2025年药妆项目项目风险识别与评估综合报告
- 2025年防静电帘项目申请报告
- 2025年铜门吸项目可行性研究报告
- 环保产业发展政策及支持措施
- 广告安装外包合同范本
- 科技产品中的绿色设计理念
- 加盟店转让合同范本
- 2025年手持式SF6检漏仪项目可行性研究报告
- 2025年重交沥青项目规划申请报告
- 小学道德与法治课堂生活化教学的策略讲座稿
- 大学生返家乡志愿服务证明
- (新版)网络攻防知识考试题库(含答案)
- 建筑工程资料档案盒侧面标签
- 工程设计变更工程量计算表
- 动力工程及工程热物理专业英语课件
- 幼儿系列故事绘本课件达芬奇想飞-
- 出纳收入支出日记账Excel模板
- 给水排水用格栅除污机通用技术条件
- 一年级下册综合实践活动课件-身边的水果和蔬菜全国通用16张
- 市政工程主要施工机械设备
评论
0/150
提交评论