2022年2022年简易多功能计数器 .pdf

上传人:Che****ry 文档编号:27190015 上传时间:2022-07-23 格式:PDF 页数:39 大小:1.03MB
返回 下载 相关 举报
2022年2022年简易多功能计数器 .pdf_第1页
第1页 / 共39页
2022年2022年简易多功能计数器 .pdf_第2页
第2页 / 共39页
点击查看更多>>
资源描述

《2022年2022年简易多功能计数器 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年简易多功能计数器 .pdf(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、2008 年 F 题 简易多功能计数器 时间:2009-04-09 09:35来源: 竞赛组委会 作者: 大纺武威海宗露等 点击: 2679次 指导教师 : 中科院纺院研究所特派教研员大纺武马骏教授, 教授特派助理 - 副教授孙建国 . 本文论述了电子计数式简易多功能计数器的原理、设计、应用及误差特性。以ATmega128 单片机为控制核心,由FPGA 模块、键盘输入模块、液晶显示模块、温度测量模块等功能模块组成,实现了周期 简易多功能计数器(F题) 参赛学生: 宗 露 林荣逸 吕彦锋 信息科学与工程学院 参赛学校:大纺武威海宗露等指导老师:马骏教授 孙建国副教授摘要 随着科学技术的发展, 频

2、率和时间测量的意义已日益显著,不仅与人们日常生活息息相关,而且在当代高科技中更是显得重要。可编程逻辑器件和EDA 计数给今天的硬件系统设计者实现了强而有力的工具,使得电子系统设计方法发生了质的变化。本文论述了电子计数式简易多功能计数器的原理、设计、应用及误差特性。本计数器以 ATmega128 单片机为控制核心,由FPGA 模块、键盘输入模块、液晶显示模块、温度测量模块等功能模块组成,实现了周期、频率、时间间隔的测量等功能。在设计方法上, 由传统的“电路设计硬件搭试焊机”的传统方式到“功能设计软件模拟下载”的电子自动化模式,以软件设计为主, 硬件设计为辅的指导思想, 将复杂硬件软件化, 从而大

3、大提高了系统设计的灵活性和稳定性。 关键字:电子计数式 ,测量精度 ,可编程逻辑器件 ,AVR单片机,门控信号 Multi-function Counter ABSTRACT The FPGA(Field Programmable Gate Array) provides a fast, accurate and flexible solution for digital system design. This paper discusses the design flow, scheme selection, and error control and analysis of a multi

4、-function counter. Based on ATmega128 as the microcontroller, it consists of the FPGA module, keyboard modules, liquid crystal display (LCD) modules, temperature measurement module etc. This system can be applied in the period, frequency, interval measurements. As for the design methods, the functio

5、nal design - software simulation - Download electronic 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 39 页 - - - - - - - - - automatic mode takes the place of the traditional circuit design - hardware test ride - welder methods. It mainly depends on the EDA Too

6、ls, supplemented by the hardware design and in this way it simplifies the hardware design, greatly improving the flexibility and stability of the system. Key words: Frequency Meter, Period Meter, Counter, Measurement Accuracy, FPGA, AVR 目 录 正文 1.1 设计要求 1.1.1 基本设计要求 -1 1.1.2 发挥设计要 -1 1.2 测量原理 1.2.1频率

7、测量原理 -1 1.2.2 时间间隔 -1 1.2.3 系统测量原 -2 1.3 系统总体方案 1.3.1 系统总体方案的比较与 -2 1.3.2 系统总框图 -3 1.4 各模块硬件电路实现 1.4.1 FPGA 模块-3 1.4.1.1 频率测量 -3 1.4.1.2时间间隔测量 -4 1.4.1.3 其他-5 1.4.2信号预处理 -6 1.4.3 AD采样测幅值 -7 1.4.4 温度测量模块 -7 1.4.5 键盘输入模块 -7 1.4.6 液晶显示模块 -7 1.4.7 语音报时模块 -7 1.4.8 自制电源 -7 1.4.9浮点数除法运算 -8 1.5 系统软件设计 2.5.1

8、 主程序流程图 -8 2.5.2 界面设计 -9 1.6 测试与结果分析 2.6.1 参数测量结果 -10 2.6.2 误差与结果分析 -11 1.7 设计总结-12 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 39 页 - - - - - - - - - 1.8 参考资料-12 附录 1.1 元件清单-13 1.2 电路设计原理图及相关仿真结构-13 1.3 源程序代码-13 正 文 1.1 设计要求 1.1.1 基本设计要求 (1)具有测量周期、频率、时间间隔的功

9、能; (2)可以用键盘选择上述三种功能; (3)周期、时间间隔测量:0.1mS1S ,误差0.1% ;频率测量:1Hz200KHz,误差 0.1% ; (4)能够显示至少六位数码,并自制计数器电源 1.1.2 发挥设计要求 (1)周期、时间间隔测量:1S10S ,误差0.1% ;频率测量:0.01Hz10MHz ,误差0.1% ; (2)可以记忆 10 个历史测量数据,且能够随时查看; (3)实现语音报数功能,并且显示被测信号的峰值; (4)其他(如温度、时间等功能)。 1.2 测量原理 1.2.1 频率测量原理 原理一般可分为模拟法和电子计数法两种,电子计数法具有测量精度高、 速度快、自动化

10、程度高、操作简单等优点而应用更为广泛。 图 1频率测量原理图 示, 由晶振分频及门控制电路得到具有固定宽度Ts 的方波脉冲作为门控信号, 加到闸门的控制端,控制闸门开、闭的时间。设被测信号频率为Fx,?,门控信号持续时间为 TS ,计数器计数为 N 。测频时,将计数器置零,待门控信号来到后打开闸门,允许被测脉冲通过,计数器开始计数,只到门控信号结束,闸门关闭,停止计数。此时 Fx=N/TS 。可见,此种测量方法中门控信号的选取是关键,门控名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第

11、 3 页,共 39 页 - - - - - - - - - 信号决定了所测频率的准确程度,如测量低频信号时, 在门控信号持续的时间内计数器计数较小,测量误差较大。 1.2.2 时间间隔测量原理 时间间隔测量可分为连续时间测量和单次测量。连续测量用于周期信号的多次测量,然后通过取平均值以达到较高的测量精度;单次测量就是以随机的一次测量为基础,其测量原理图12 所示: 图 1周期测量原理图设量化时钟的频率为T0,待测脉冲上升沿到来时量化时钟的初始计数为M,下一次待测脉冲上升沿到来时量化时钟技术为M,T1、T2为待测脉冲上升沿与下一个量化时钟脉冲上升沿之间的时间间隔,则时间间隔为 Tx=(N-M)*

12、T0+T1-T2。这种测量方法是测量Tx内的时钟量化时钟个数,对于高频信号而言,Tx时间内计数器计入量化时钟个数较小, 测量误差较大。 此种测量方法以被测信号本身作为门控信号,通过测量门控信号中的量化信号个数得出时间间隔。 1.2.3 本系统测量原理的选择 比较以上两种测量方法,前者(以下简称测频法)是在给定的闸门时间内测量被测信号的脉冲个数, 进行换算得出被测信号的频率。测频法的测量精度取决于闸门时间和被测信号频率。 当被测信号频率较低时将产生较大的误差,除非闸门时间取得很大(即要求晶振分频倍数大, 使门控信号能够达到足够小的频率)。后者(以下简称测周法) 是以给定信号为门控信号, 通过测量

13、门控信号时间内通过的量化信号的个数换算出时间间隔的。测周法的测量精度取决于被测信号的周期和计时的精度,当被测信号频率较高时,计时精度的要求就很高了。 实际上,测周法和测频法都存在一个字的技术误差问题:测频法存在门控信号内一个被测信号的脉冲个数误差, 测周法存在一个被测信号内量化信号脉冲个数误差。 为了提高系统测量精度,我们采用任何一种方法测量都应该保证计数个数N足够大。因此,对于周期测量分为高频档和低频档。低频信号直接测量,高频信号则先通过分分频器分频, 转化为低频信号后, 按照低频档的方法测量。 对于频率测量,依然分成高频、低频两档。对于低频信号我们采去测周法,然后根据公式 f=1/T,计算

14、出低频频率。由于单片机做浮点运算的精度有限,在编写单片机程序时,还应该注意采取有效算法控制运算精度。 1.3 系统总体方案 1.3.1 系统总体方案的比较与论证 方案一:传统 51 单片机和集成计数器。 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 39 页 - - - - - - - - - 传统 51 单片机功能简单,易于控制而且操作方便,但是工作速度慢,对于题中高频信号的测量会引起致命误差,而且传统51 单片机片内资源不丰富,I/O口数量很少,需要通过8155 扩

15、展端口。对于集成计数器,测量高频信号时,计数值可达 100000000 ,以 10 位计数器(74LS160 )为例,需串联8 个,单片机的外围电路非常复杂, 同时复杂的外接电路会影响整个系统的响应时间,导致很大误差。 方案二:高性能 AVR单片机与 FPGA 。 高性能 AVR单片机是在传统 51 单片机的基础上发展起来的,它继承了传统51单片机的优点,并在此基础上有所提高。 AVR单片机凭借高速、低功耗、丰富的片类资源等强大功能得到了广泛的应用。通过对FPGA 的编程将复杂而庞大的外部硬件计数电路软件化,FPGA 内自带的 50MHz 有源晶振保证了整个系统的响应速度,系统稳定性得到提高,

16、误差减小。 1.3.2 系统总方框图 如下图所示,FPGA完成测量功能,AVR控制液晶显示、温度测量、语音报时、峰值测量、键盘输入等功能。 图 3系统总框图 1.4 各模块硬件实现 1.4.1 FPGA 部分 FPGA 部分由频率测量模块、周期/ 时间间隔测量模块、SPI通信模块,PLL 等子模块组成。 1.4.1.1 频率测量模块 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 39 页 - - - - - - - - - 图 4频率测量模块 频率测量模块由分频模块、门

17、控模块, BCD 计数模块和数据锁存模块组成。其中分频模块将 FPGA 开发板的 50M的时钟分频为 2Hz门控时钟。门控模块收门控时钟的上升沿,对 BCD 计数器的使能(enable)、清零(clr )和数据锁存(lck )信号的时序进行控制图5 所示。 值得注意的是,本频率测量模块使用的BCD 计数器而不是普通二进制计数器。 BCD码很大程度上方便了单片机将其转换成字符型数据,最终显示在 LCD上。我们发现,二进制码转 BCD 码的算法较为复杂,同时占用的FPGA 的片内资源也较多,故直接采用 BCD计数方法。 图 5频率测量时序图 1.4.1.2 周期/ 时间间隔测量模块 周期测量使用两

18、个状态机(主状态机和sig_sel状态机)实现。 对于低频信号(signal_x ),我们直接计算其一个周期包含的量化时钟的数目。对高频信号,将其通过分频器分频后再计算包含的量化时钟的数目。由sig_sel状态机选择被量化的信号。(如图6 所示) 为达到精度 0.01% 的要求,每个signal时钟需包含大于 10000个量化时钟。因此,我们对周期小于100us 的信号进行 1000 倍分频。 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 39 页 - - - - -

19、- - - - 图 6自动转量程原理图 时间间隔测量原理与周期测量相同。区别在于时间间隔测量为单次测量,周期测量为连续测量。单脉冲周期无频率而言, 故不能经过分频器 (sig_sel始终为 0) 。为区别周期测量和时间间隔测量这两种模式,本模块引入一个模式选择信号(mode)当 mode=1时为侧周期模式,当mode=0是为测时间间隔模式。 主状态机: 测量一次上图中 signal信号周期需要用 3 个 signal的方波的周期。每一个signal周期对应一种状态,每种状态下执行不同的操作。状态转换图以及各状态的功能如表 1 所示。 表 1状态机功能 控制时钟 被测方波(signal )的上升

20、沿Hold,或者 rst 信号的下降沿: idle 周期计数器(cnt)清零,hold状态计数器(cnt_hold )*清 0, idle状态计数器(cnt_idle)*计数 hold 周期计数器(cnt)计数,idle状态计数器(cnt_idle)清0 counting 周期计数器(cnt)保持,hold状态计数器(cnt_hold )计数 * 设置 hold 状态计数器和 idle 状态计数器的目的是避免出现被测信号的频率过低而又被 1000 倍分频导致的电路所死 (长时间处于 idle或 hold 状态)的情况。sig_sel状态机: sig_sel状态用于控制被测方波是否经过分频,起到

21、了扩大量程和提高测量精度的作用。 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 39 页 - - - - - - - - - sig_sel两个状态的功能如下表2 所示 表 2功能表 1 被测方波经过分频 0 被测方波没有经过分频 控制时钟 量化时钟 clk_10M ,或者 rst 信号的下降沿: sig_sel状态机的 verilog描述: always (posedge clk) begin if(rst=0 | mode=0) sig_sel=1_0000_000

22、 | cnt_hold=1_0000_000 | cnt_idle=1_0000_000) sig_sel=0; else if (curr_s=hold & sig_sel=0 & cnt1_0000) sig_sel=1; else sig_sel=sig_sel; end 计数器: 周期测量同时使用BCD 码计数器和二进制计数器。 二进制值用于状态的判断和转换。BCD码方便了单片机处理和显示数据,这与频率测量模块相同。 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共

23、 39 页 - - - - - - - - - 图 8ATmega128 与 FPGASPI 通信 本接口模块中所需实现的逻辑功能是,从机FPGA 在主机 ATmega128 提供的 CLK时钟信号下, 按照 SPI 接口规范, 按照 SPI 时序图的规范接受数据, 然后执行测量对象选择、液晶显示等操作。其工作流程如下, ATmega128通过 MOSI向 FPGA发送数据(该数据低八位储存地址信息,高八位储存数据信息, FPGA 对地址译码,选择合适的数据输入端), AVR 在 load 端产生下降沿, FPGA 将相应数据读入寄存器中,当 CS=0 ,load=1 的情况下,在每一个SCL

24、K时钟的上升沿, 移位寄存器的数值左移一位。数据就通过MISO送到 MCU 中。 图 9SPI 时序图 (2)量化时钟周期的选择 合适的量化时钟周期可以简化运算的复杂程度,提高测量效率。我们选择10ns为量化时钟信号,计算简单,而且保证了测量精度。 1.4.2 信号预处理 系统中计数是以上升沿或下降沿为标准的,因此一般信号需通过电压比较器整形为方波信号。FPGA中的计数器是边沿触发而不是电平触发,整形后波形边沿的陡峭程度显得非常重要。 对于方波信号,我们应根据实际情况整形或者直接通过稳压管稳压后测量相关参数。 对高频信号,我们采用精密TTL比较器 MAX941,该比较器具有低功耗、超高速(可达

25、 10ns)等优点,可以满足本系统中对高频信号的整形要求。 对于低频信号, 经比较器整形后, 由于采样速度快, 进过比较处理后边沿的陡峭程度受到很大制约,在某种程度上影响了FPGA 中计数器对这种非陡峭边沿的识别,从而导致测量中的计数误差。对于低频信号, 我们采取可以外接其它整形电名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 39 页 - - - - - - - - - 路(如施密特整形,滞回比较器整形等)以弥补MAX941 的不足。 1.4.3 AD 采样测幅 幅度测

26、量采用 ATmega128 自带的 AD转换器,对被测信号 (初始信号) 对此采样,每次采样与前一次采样比较,保留最大采样值,即可换算出信号的峰值。显然,对于高频信号,由于AD转化器采样速度的限制,所测峰值误差较大。 1.4.4 温度测量模块 方案一:采用热电偶或者热敏电子作为感温元件,但热电偶需要冷端补偿, 电路设计复杂, 热敏电阻虽然精度较高, 但需要标准稳定的电阻匹配才能使用,而且重复性、可靠性都比较差。 方案二:采用集成温度传感器DS18B20 ,该传感器结构简单,不需要外接电路,数据传输用 onewire 总线,可用一根 I/O 数据线既供电又传输数据,在-10+85 范围内精度为0

27、.5, 且分辨率较高,重复性和可靠性好。 显然,我们采用方案二。 1.4.5 键盘输入模块 键盘输入有独立键盘和矩阵键盘两种选择。对于单片机最小板自带的8 个独立按键而言完全可以实现本系统的要求。但是对于同样的端口, 矩阵键盘多了一倍的按键,易于通过多余的按键实现扩展功能的手动控制,例如,单片机接受到某一按键信号后会执行温度测量并且显示温度的程序,接受到另一按键信号会执行峰值测量并显示的程序。 本系统中按键的设置如下:选择测量对象?周期,频率,时间间隔;选择需储存记忆数据;是否显示峰值;是否温度测量;是否语音报数;是否返回主界面;返回上一页等。 1.4.6 液晶显示模块 2402液晶模块,24

28、 行*2 列字符显示,并行8/4 数据通信,可以满足本系统中至少显示六位的要求。 我们假期已经调过液晶显示的模块,利用 C语言模块的可移植性,直接将模块移植过来, 根据实际情况更改数组内容, 即可实现测量参数的显示。 1.4.7 语音报数模块 语音报时使产品与使用者进行良性的互动,大大提高了本测量系统的竞争能力。我们选用智能型 640 秒语音录放模块实现语音报数功能。 该模块由麦克风、喇叭、语音芯片及应外围电路组成。该模块具有话筒录音、线路录音、直接驱动喇叭、支持按键和三线串口控制模式、 断点信息不丢失等特点。 对于本计数器中的报数功能,我们可以按照如下操作:ATmega128 单片机通过 S

29、PI 外串行总线端口给语音模块发送 FB+XXH(定时录音模式),然后通过麦克风将数据依次录音,存在合适的地址中,方便播放时寻找合适音频信号。单片机将FPGA 测得的数据按照相对应的规律,找到语音模块中的地址,并发送FCH+XXH(播放模式),从而实现语音报数功能 1.4.8 自制电源 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 39 页 - - - - - - - - - 本系统中 FPGA 、ATmega128、电压比较器等器件都需要合适的直流电源供电,因此我们

30、自制了相应的直流电源。如下图所示,将输出的220V交流信号经变压器降压,整流桥整流,电容滤波,7805 、7905等集成稳压器稳压,从而得到满足相应要求的直流电源 图 10电源原理图 1.4.9 浮点数除法运算的实现 测频法存在门控信号内一个被测信号的脉冲个数误差,对于高频信号而言, 门控信号内通过的被测信号脉冲的个数足够大,一个脉冲的缺失, 对测量结构不产生影响;对低频信号而言, 门控信号内通过的被测信号脉冲个数很小,一个脉冲的缺失会引起很大的误差, 故对低频信号我们采用测周期的方法,通过求倒数换算出周期。 求倒数换算周期, 浮点数的除法运算及浮点数显示是本设计中的两大难点。对于0.1% 的

31、精度要求, 不同频率范围内的周期求倒数后,小数点后需精确到的位数要求不一样,我们通过寻求第一位有效数字的位置,推测出小数点的位置,(如下表所示)根据相应位数精确度的要求截断无效数据,即可计算出误差范围内结果。对于浮点数的显示, 鉴于八位单片机处理极限是65536的数据,我们将浮点数依次扩大 10000倍,取出小数点后的高四位按照整数方法显示,类似这样的操作取出小数位低四位并且显示. 0 . 0 0 X0X1X2X3X4X5X60 . 0 X0X1X2X3X4X5X60 . X0X1X2X3X4X5X6X0. X1X2X3X4X5X6X0X1. X2X3X4X5X6X0X1X2.X3X4X5X6

32、X0X1X2X3. X4X5X6名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 39 页 - - - - - - - - - 1.5 系统软件设计 1.5.1 主流程图 图 7周期测量模块 1.4.1.3 其他 (1)SPI 通信 本测量系统中不可避免地要实现FPGA 和 ATmega128 间的通信。我们可以选择UART 协议、I2C 协议、SPI 协议。其中串行外接口设计SPI(Serial Peripheral Interface )的实质是同步串行总线接口,由于

33、其接线简单, 使用起来非常方便,广泛应用于各种外设与单片机之间的通信。本系统就是通过 SPI 实现 ATmega128和 FPGA 之间通信的。SPI 总线有四根组成:串行时钟线(SCK )、主机输出/ 从机输入线(MOSI ),从机输入线(MISO ),从机选择线(SS )。 1.5.2 用户界面设计 随着科学技术的日益发展, 很多测量工具除了提供相应的测量功能意外,还友好的人性化的界面向导, 这不仅有利于引导客户进行正确的操作,也有利于扩大测量工具本身的潜在市场。 因此我们设计了友好的人机交换界面(如“欢迎使用本计数器”“您可以选择1 频率测量 2 周期测量 3 时间间隔测量”“16 键返

34、回主页面”“如果您想储存此数据,请按5,否则按 6”)。用户可以根据自己的需要输入相应的按键,实现相应的功能。 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 39 页 - - - - - - - - - 图 12用户界面方框图 1.6 测试与结果分析 1.6.1 参数测试结果 考虑到不同基准信号本身有着不同的精确程度,我们选择的测试信号分别为EDA实验箱(ZY11EDA13BE)中信号、高频信号发生器(YB1051 )、FPGA内部处理产生信号(50M 有源晶振,经过

35、内部PLL两倍频,再分频)。 (1) 周期测量数据 表 3周期测量数据 信号源 信号类型 实际周期 测量周期 误差值 EDA实验箱 方波 83.333ns 83.365ns 0.039% EDA实验箱 方波 666.667ns 666.930ns 0.038% EDA实验箱 方波 0.122s 122008ns 0.0066% EDA实验箱 方波 0.19531s 195327ns 0.0087% EDA实验箱 方波 1s 1000075370ns 0.00753% EDA实验箱 方波 0.25s 250018830ns 0.01883% FPGA 方波 20ns 20000ps 0% FPG

36、A 方波 10ns 10000ps 0% FPGA 方波 0.122s 122008ns 0% FPGA 方波 0.9765625s 9765625ns 0% FPGA 方波 10s 10000000000ns0% FPGA 方波 20s 20000000000ns0% (2) 频率测量数据 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 39 页 - - - - - - - - - 前两组为 EDA中信号,后两组为FPGA 内部分频引出后在接入待测端口 表 4频率测量

37、数据 信号源 信号类型 实际频率(Hz) 测量频率(Hz)误差值 EDA实验箱 方波 12M 11995138 0.04% EDA实验箱 方波 32,768 32766 0.006% EDA实验箱 方波 1024 1023.918 0.008% EDA实验箱 方波 128 127.9903 0.0076% EDA实验箱 方波 1 0.999929 0.071% FPGA 方波 50,000,000 50,000,000 0% FPGA 方波 95.367432 95.36796 0.0000536% FPGA 方波 5.960464 5.960459 0.000008388% FPGA 方波

38、0.372529 0.372529 0% FPGA 方波 0.01 0.009999924 0.0076% 高频信号发生器 正弦波 176K 176057 0.323% 高频信号发生器 正弦波 224K 223671 0.1468% 高频信号发生器 正弦波 320K 319866 0.0418% 高频信号发生器 正弦波 1110K 1108997 0.0903% 高频信号发生器 正弦波 3751K 3747657 0.0891% 高频信号发生器 正弦波 11M (示数不精确) 11852014 7.7% 时间间隔测量 对于时间间隔测量部分,受到实验室测量设备的限制,暂无数据。据理论分析,而且时

39、间间隔测量和周期测量共用一个模块,推测误差范围也应该满足要求。 峰值测量数据 分别测量方波,三角波,正弦波的峰值入下表所示: 表 5峰值测量数据 方波 实际值 测量值 正弦波 实际值 测量值 三角波 实际值 测量值 10M 5V 4.63V 10M 5V 3.21V 10M 5V 2.01V 65536HZ 5V 4.87V 65536HZ 5V 4.02V 65536HZ 5V 3.10V 1024HZ 5V 4.85V 1024HZ 5V 4.52V 1024HZ 5V 4.30V 512HZ 5V 4.9V 512HZ 5V 4.58V 512HZ 5V 4.03V 10HZ 5V 4.

40、97V 10HZ 5V 4.85V 10HZ 5V 4.65V 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 39 页 - - - - - - - - - 1.6.2 误差与结果分析 (1)周期测量误差与结果分析 考虑到实验箱信号本身的精确程度, 我们也选择了 FPGA50MHz有源晶振经锁相环倍频、分频器分频后引出的信号作为测量信号,以作为参考。 有表格一分析可知:EDA 试验箱中信号测量数据与实际数据存在较大差异,而FPGA 引出的信号测量数据与实际数据完全一致。

41、由于 FPGA 中有源晶振经 PLL倍频锁定后,输出的信号具有和固定基准信号同样的频率稳定性,我们有理由相信是 EDA实验箱中先好自身存在误差,本计数器的周期测量功能成功实现。 另外, 对 EDA中高低频信号的测量误差进行分析可以证实原理中提到的“对于周期测量,高频信号产生的误差比低频信号产生的误差大”的观点。 (3) 频率测量误差与结果分析 与周期测量类似,我们采用两种信号作为测试信号。由表4 中的分析数据可知,无论对于方波还是正弦波, 频率测量的误差满足设计要求。 我们顺利的完成了关于周期的所有基本和发挥的设计要求。对于FPGA 内部产生的信号,其精确度近似为 100% 。高频信号发生器中

42、产生的信号残生较大误差的原因是,高频信号发生器中所示的信号精确度很小, 相对于我们所测得的精确到小数点后三围甚至六位而言,误差是不可避免的。 (4) 峰值测量误差与结果分析 AD对此采样,每次采样数据保留最大采样数据,理论上可以采到峰值并且显示。但实际对于高频信号而言,由于信号自身变化速度很快,甚至超过了AD采样的速度,有可能在短时间内采不到峰值点的数据,而使得测量结果偏小。分析表5中数据可得以下结论: 对于方波信号, 只存在两中采样情况, 因此高频或低频多容易猜到峰值电压;对于正弦波、三角波信号,存在多种采样情况,采到峰值的可能性随频率的增高而减小, 因此低频时交易测得峰值信号, 高频测量误

43、差很大。1.7 设计总结 经过四天三夜的奋战, 我们完成了题目基本要求和发挥要求,但由于时间和硬件资源的限制, 个别指标做的不是非常完善。首先,我代表我们小组感谢本次竞赛的主委会和全体评审老师以及我们的辅导老师,谢谢你们给我们一个提高和展现自己的舞台, 让我们在以后的人生中更加自信和坚定,另外也要感谢美信公司给我们提供了不少高质量芯片, 使我们的电子设计进行得更加顺利。回想这四天三夜紧张生活,短暂而充实,从焊板到编程、从示波器上波形的跳动到稳定,从手动测量到自动测量当我们看着液晶显示屏上显示出精确的数据时,那种喜悦是无法用语言形容的。有付出,所以有收获,就我们组而言,大家在许多方面都有了明显的

44、进步和收获, 无论是拼搏精神还是团队精神都是我们这一辈子的精神财富。所以不管结果如何,我们都会继续发扬这种精神,不断提高和完善自己。坚定不移地在电子设计这条路上努力,奋斗。 1.8 参考文献 1 谭丙煜. 怎样撰写科学论文. 沈阳:辽宁人民出版社,1982 :59 2 童诗白 华成英 模拟电子技术基础 高等教育出版社,2000 :12 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 39 页 - - - - - - - - - 3 吴继华 王诚 Verilog HDL

45、设计与论证人民邮电出版社,2006 :8 4 夏雨闻 数字系统设计教程 北京航空航天大学出版社,2003 :1 5 洗 进 Verilog HDL数字控制系统设计实例中国水利出版社, 2004 :7 6 袁文波 中国电力出版社 2007 7 刘韬, 楼兴华 编著 北京人民邮电出版社 2005 附 录 附录一:元件清单 ATmega128 最小系统板 FPGA 最小系统板 MAX943 2402 液晶显示屏 4*4 矩阵键盘 智能型 640秒语音模块 自制电源 EDA实验箱(ZY11EDA13BE) 高频信号发生器 YB1051 表 6元件清单 附录三:电路设计原理图及相关仿真图 名师资料总结

46、- - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 39 页 - - - - - - - - - 附录四:部分源程序代码 AVR部分源代码 /*= 头文件名:ad.h 功能:AD转换 =*/ uchar volatge10; uint adc() /读取AD转换结果的 2 进制值 uint ad_data; DDRF=0X00; PORTF=0X00; ADMUX=(0X40|BIT(MUX4); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -

47、- - - - - - 名师精心整理 - - - - - - - 第 17 页,共 39 页 - - - - - - - - - ADCSRA=0 x80; ADCSRA|=BIT(ADSC); while(!(ADCSRA&BIT(ADIF); ad_data=ADCL; ad_data|=(uint)(ADCH8); return ad_data; convert(uint data) /读取AD转换结果的 2 进制值 voltage4=data%10+0; data=data/10; voltage3=data%10+0; data=data/10; voltage2=data%10+0

48、; data=data/10; voltage0=data+0; /= /*= 头文件名:DS18B20.h 功能:DS18B20驱动程序 =*/ /= / 宏定义部分,如果要使用本头文件,直接修改此部分即可 /= #define CLR_DIR DDRC&=BIT(0) #define SET_DIR DDRC|=BIT(0) #define CLR_OP PORTC&=BIT(0) #define SET_OP PORTC|=BIT(0) #define CHECK_IP (PINC&0X01) uchar temperature10= ;/读取温度缓存区 /= / 延时函数,此延时函数能

49、满足DS18D20 的时序要求 /= 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 39 页 - - - - - - - - - void delay_1us(void) /1us延时函数 asm(nop); void delayus(unsigned int n) /N us延时函数 unsigned int i=0; for (i=0;in;i+) delay_1us(); /= / DS18D20 复位函数 /= void reset() SET_DIR; SE

50、T_OP; CLR_OP; delayus(480); SET_OP;/ 要先把他置1,DDRNX 清 0,这样才有上拉,不然是高阻态 CLR_DIR; delayus(20); while(!CHECK_IP); SET_DIR; SET_OP; delayus(140); /= / DS18D20 写数据/ 命令 /= void writebyte(uchar dat) unsigned char m; for(m=0;m=1; /= / DS18D20 读数据 /= uchar readbyte() uchar i,dat; for(i=0;i=1; SET_DIR; CLR_OP; S

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁