2022年2022年简易多功能计数器( .pdf
《2022年2022年简易多功能计数器( .pdf》由会员分享,可在线阅读,更多相关《2022年2022年简易多功能计数器( .pdf(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、简易多功能计数器( F 题)1.1 设计要求1.1 基本设计要求 -1 1.1.2 发挥设计要 -1 1.2 测量原理1.2.1 频率测量原理 -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 液晶显示模
2、块 -7 1.4.7 语音报时模块 -7 1.4.8 自制电源 -7 1.4.9 浮点数除法运算 -8 1.5 系统软件设计2.5.1 主程序流程图 -8 2.5.2 界面设计 -9 1.6 测试与结果分析2.6.1 参数测量结果 -10 2.6.2 误差与结果分析 -11 1.7 设计总结 -12 1.8 参考资料 -12 附录1.1 元件清单 -13 1.2 电路设计原理图及相关仿真结构-13 1.3 源程序代码 -13 正 文1.1 设计要求1.1.1 基本设计要求(1)具有测量周期、频率、时间间隔的功能;(2)可以用键盘选择上述三种功能;(3)周期、时间间隔测量: 0.1mS1S ,误
3、差 0.1%;频率测量: 1Hz200KHz ,误差 0.1%;(4)能够显示至少六位数码,并自制计数器电源名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 34 页 - - - - - - - - - 1.1.2 发挥设计要求(1)周期、时间间隔测量: 1S10S ,误差 0.1%;频率测量:0.01Hz10MHz ,误差 0.1%;(2)可以记忆 10 个历史测量数据,且能够随时查看;(3)实现语音报数功能,并且显示被测信号的峰值;(4)其他(如温度、时间等功能)。1.
4、2 测量原理1.2.1 频率测量原理原理一般可分为模拟法和电子计数法两种,电子计数法具有测量精度高、速度快、自动化程度高、操作简单等优点而应用更为广泛。图 1频率测量原理图示, 由晶振分频及门控制电路得到具有固定宽度Ts 的方波脉冲作为门控信号,加到闸门的控制端,控制闸门开、闭的时间。设被测信号频率为Fx,?,门控信号持续时间为TS ,计数器计数为 N 。测频时,将计数器置零,待门控信号来到后打开闸门,允许被测脉冲通过,计数器开始计数,只到门控信号结束, 闸门关闭,停止计数。此时 Fx=N/TS。可见,此种测量方法中门控信号的选取是关键,门控信号决定了所测频率的准确程度,如测量低频信号时, 在
5、门控信号持续的时间内计数器计数较小,测量误差较大。1.2.2 时间间隔测量原理时间间隔测量可分为连续时间测量和单次测量。连续测量用于周期信号的多次测量,然后通过取平均值以达到较高的测量精度; 单次测量就是以随机的一次测量为基础,其测量原理图 12 所示:图 1周期测量原理图设量化时钟的频率为T0,待测脉冲上升沿到来时量化时钟的初始计数为M,下一次待测脉冲上升沿到来时量化时钟技术为M,T1、T2为待测脉冲上升沿与下一个量化时钟脉冲上升沿之间的时间间隔, 则时间间隔为 Tx=(N-M)*T0+T1-T2。这种测量方法是测量Tx内的时钟量化时钟个数, 对于高频信号而言, Tx时间内计数器计入量化时钟
6、个数较小,测量误差较大。此种测量方法以被测信号本身作为门控信号,通过测量门控信号中的量化信号个数得出时间间隔。 1.2.3 本系统测量原理的选择名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 34 页 - - - - - - - - - 比较以上两种测量方法,前者(以下简称测频法)是在给定的闸门时间内测量被测信号的脉冲个数,进行换算得出被测信号的频率。测频法的测量精度取决于闸门时间和被测信号频率。当被测信号频率较低时将产生较大的误差,除非闸门时间取得很大 (即要求晶振分频
7、倍数大, 使门控信号能够达到足够小的频率)。后者(以下简称测周法)是以给定信号为门控信号,通过测量门控信号时间内通过的量化信号的个数换算出时间间隔的。测周法的测量精度取决于被测信号的周期和计时的精度,当被测信号频率较高时,计时精度的要求就很高了。实际上,测周法和测频法都存在一个字的技术误差问题:测频法存在门控信号内一个被测信号的脉冲个数误差,测周法存在一个被测信号内量化信号脉冲个数误差。为了提高系统测量精度,我们采用任何一种方法测量都应该保证计数个数N足够大。因此,对于周期测量分为高频档和低频档。低频信号直接测量, 高频信号则先通过分分频器分频,转化为低频信号后,按照低频档的方法测量。对于频率
8、测量,依然分成高频、低频两档。对于低频信号我们采去测周法,然后根据公式f=1/T,计算出低频频率。由于单片机做浮点运算的精度有限,在编写单片机程序时,还应该注意采取有效算法控制运算精度。1.3 系统总体方案1.3.1 系统总体方案的比较与论证方案一:传统 51 单片机和集成计数器。传统 51 单片机功能简单,易于控制而且操作方便,但是工作速度慢,对于题中高频信号的测量会引起致命误差,而且传统51单片机片内资源不丰富,I/O 口数量很少,需要通过8155扩展端口。对于集成计数器,测量高频信号时,计数值可达100000000,以 10 位计数器( 74LS160 )为例,需串联 8 个,单片机的外
9、围电路非常复杂, 同时复杂的外接电路会影响整个系统的响应时间,导致很大误差。方案二:高性能 AVR单片机与 FPGA 。高性能 AVR单片机是在传统 51 单片机的基础上发展起来的, 它继承了传统 51单片机的优点, 并在此基础上有所提高。 AVR单片机凭借高速、 低功耗、丰富的片类资源等强大功能得到了广泛的应用。通过对 FPGA 的编程将复杂而庞大的外部硬件计数电路软件化,FPGA 内自带的 50MHz有源晶振保证了整个系统的响应速度,系统稳定性得到提高,误差减小。1.3.2 系统总方框图如下图所示, FPGA 完成测量功能, AVR控制液晶显示、温度测量、语音报时、峰值测量、键盘输入名师资
10、料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 34 页 - - - - - - - - - 等功能。图 3系统总框图1.4 各模块硬件实现1.4.1 FPGA 部分FPGA 部分由频率测量模块、周期/ 时间间隔测量模块、 SPI 通信模块, PLL等子模块组成。1.4.1.1 频率测量模块图 4频率测量模块频率测量模块由分频模块、门控模块,BCD计数模块和数据锁存模块组成。其中分频模块将FPGA开发板的 50M的时钟分频为 2Hz门控时钟。门控模块收门控时钟的上升沿,对BCD
11、 计数器的使能(enable )、清零( clr )和数据锁存( lck )信号的时序进行控制图5 所示。值得注意的是,本频率测量模块使用的BCD 计数器而不是普通二进制计数器。BCD码很大程度上方便了单片机将其转换成字符型数据,最终显示在 LCD上。我们发现, 二进制码转 BCD 码的算法较为复杂,同时占用的FPGA 的片内资源也较多,故直接采用BCD 计数方法。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 34 页 - - - - - - - - - 图 5频率测量
12、时序图1.4.1.2 周期/ 时间间隔测量模块周期测量使用两个状态机(主状态机和sig_sel状态机)实现。对于低频信号( signal_x ),我们直接计算其一个周期包含的量化时钟的数目。对高频信号,将其通过分频器分频后再计算包含的量化时钟的数目。由sig_sel状态机选择被量化的信号。 (如图 6所示)为达到精度 0.01%的要求,每个 signal时钟需包含大于 10000个量化时钟。因此,我们对周期小于 100us 的信号进行 1000 倍分频。图 6自动转量程原理图时间间隔测量原理与周期测量相同。区别在于时间间隔测量为单次测量,周期测量为连续测量。 单脉冲周期无频率而言,故不能经过分
13、频器(sig_sel始终为 0)。为区别周期测量和时间间隔测量这两种模式, 本模块引入一个模式选择信号(mode)当 mode=1时为侧周期模式, 当 mode=0是为测时间间隔模式。主状态机:测量一次上图中 signal信号周期需要用 3 个 signal的方波的周期。每一个signal周期对应一种状态,每种状态下执行不同的操作。状态转换图以及各状态的功能如表1 所示。表 1状态机功能控制时钟被测方波( signal )的上升沿 Hold,或者 rst 信号的下降沿 : idle 周期计数器( cnt )清零, hold 状态计数器( cnt_hold )*清 0,名师资料总结 - - -精
14、品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 34 页 - - - - - - - - - idle状态计数器 (cnt_idle)*计数hold 周期计数器( cnt )计数 ,idle状态计数器 (cnt_idle)清 0 counting 周期计数器( cnt )保持 ,hold 状态计数器( cnt_hold )计数 * 设置 hold 状态计数器和 idle 状态计数器的目的是避免出现被测信号的频率过低而又被1000 倍分频导致的电路所死(长时间处于idle或 hold 状态)的情况。
15、sig_sel状态机:sig_sel状态用于控制被测方波是否经过分频,起到了扩大量程和提高测量精度的作用。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 | cnt_hold=1_0000_000 | cnt_idle=1_0000_000) sig_sel=0; else if (curr_s=hold &
16、 sig_sel=0 & cnt1_0000) sig_sel=1; else sig_sel=sig_sel; end 计数器:周期测量同时使用BCD 码计数器和二进制计数器。 二进制值用于状态的判断和转换。BCD码方便了单片机处理和显示数据,这与频率测量模块相同。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 34 页 - - - - - - - - - 图 8ATmega128 与 FPGASPI 通信本接口模块中所需实现的逻辑功能是,从机FPGA 在主机 ATme
17、ga128 提供的 CLK时钟信号下,按照SPI 接口规范,按照 SPI 时序图的规范接受数据,然后执行测量对象选择、液晶显示等操作。其工作流程如下, ATmega128 通过 MOSI向 FPGA 发送数据 ( 该数据低八位储存地址信息,高八位储存数据信息, FPGA 对地址译码,选择合适的数据输入端) ,AVR在 load 端产生下降沿, FPGA 将相应数据读入寄存器中,当CS=0 ,load=1 的情况下,在每一个SCLK时钟的上升沿 , 移位寄存器的数值左移一位。数据就通过MISO送到 MCU 中。图 9SPI 时序图(2)量化时钟周期的选择合适的量化时钟周期可以简化运算的复杂程度,
18、提高测量效率。我们选择10ns 为量化时钟信号,计算简单,而且保证了测量精度。1.4.2 信号预处理系统中计数是以上升沿或下降沿为标准的,因此一般信号需通过电压比较器整形为方波信号。FPGA中的计数器是边沿触发而不是电平触发,整形后波形边沿的陡峭程度显得非常重要。对于方波信号,我们应根据实际情况整形或者直接通过稳压管稳压后测量相关参数。对高频信号,我们采用精密TTL比较器 MAX941 ,该比较器具有低功耗、超高速(可达10ns)等优点,可以满足本系统中对高频信号的整形要求。对于低频信号,经比较器整形后, 由于采样速度快, 进过比较处理后边沿的陡峭程度受到很大制约,在某种程度上影响了FPGA
19、中计数器对这种非陡峭边沿的识别,从而导致测量中的计数误差。对于低频信号,我们采取可以外接其它整形电路(如施密特整形,滞回比较器整形等)以弥补MAX941的不足。1.4.3 AD 采样测幅幅度测量采用 ATmega128 自带的 AD转换器,对被测信号(初始信号)对此采样,每次采样与前一次采样比较,保留最大采样值,即可换算出信号的峰值。显然,对于高频信号,由于AD转化器采样速度的限制,所测峰值误差较大。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 34 页 - - - -
20、 - - - - - 1.4.4 温度测量模块方案一:采用热电偶或者热敏电子作为感温元件,但热电偶需要冷端补偿, 电路设计复杂, 热敏电阻虽然精度较高,但需要标准稳定的电阻匹配才能使用,而且重复性、可靠性都比较差。方案二: 采用集成温度传感器DS18B20 , 该传感器结构简单,不需要外接电路,数据传输用 onewire总线,可用一根 I/O 数据线既供电又传输数据, 在- 10+85 范围内精度为 0.5, 且分辨率较高,重复性和可靠性好。显然,我们采用方案二。1.4.5 键盘输入模块键盘输入有独立键盘和矩阵键盘两种选择。对于单片机最小板自带的8 个独立按键而言完全可以实现本系统的要求。 但
21、是对于同样的端口, 矩阵键盘多了一倍的按键, 易于通过多余的按键实现扩展功能的手动控制, 例如,单片机接受到某一按键信号后会执行温度测量并且显示温度的程序,接受到另一按键信号会执行峰值测量并显示的程序。本系统中按键的设置如下:选择测量对象?周期,频率,时间间隔;选择需储存记忆数据;是否显示峰值;是否温度测量;是否语音报数;是否返回主界面;返回上一页等。1.4.6 液晶显示模块2402 液晶模块,24 行*2 列字符显示,并行 8/4 数据通信,可以满足本系统中至少显示六位的要求。我们假期已经调过液晶显示的模块,利用 C语言模块的可移植性, 直接将模块移植过来, 根据实际情况更改数组内容,即可实
22、现测量参数的显示。1.4.7 语音报数模块语音报时使产品与使用者进行良性的互动,大大提高了本测量系统的竞争能力。我们选用智能型640秒语音录放模块实现语音报数功能。该模块由麦克风、 喇叭、语音芯片及应外围电路组成。该模块具有话筒录音、线路录音、直接驱动喇叭、支持按键和三线串口控制模式、断点信息不丢失等特点。对于本计数器中的报数功能,我们可以按照如下操作:ATmega128 单片机通过 SPI 外串行总线端口给语音模块发送FB+XXH (定时录音模式),然后通过麦克风将数据依次录音,存在合适的地址中,方便播放时寻找合适音频信号。单片机将FPGA 测得的数据按照相对应的规律,找到语音模块中的地址,
23、并发送FCH+XXH(播放模式),从而实现语音报数功能1.4.8 自制电源本系统中 FPGA 、ATmega128 、电压比较器等器件都需要合适的直流电源供电,因此我们自制了相应的直流电源。如下图所示,将输出的220V交流信号经变压器降压,整流桥整流,电容滤波,7805、7905 等集成稳压器稳压,从而得到满足相应要求的直流电源名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 34 页 - - - - - - - - - 图 10电源原理图1.4.9 浮点数除法运算的实现测
24、频法存在门控信号内一个被测信号的脉冲个数误差,对于高频信号而言, 门控信号内通过的被测信号脉冲的个数足够大,一个脉冲的缺失,对测量结构不产生影响;对低频信号而言,门控信号内通过的被测信号脉冲个数很小, 一个脉冲的缺失会引起很大的误差,故对低频信号我们采用测周期的方法,通过求倒数换算出周期。求倒数换算周期,浮点数的除法运算及浮点数显示是本设计中的两大难点。对于 0.1%的精度要求,不同频率范围内的周期求倒数后,小数点后需精确到的位数要求不一样,我们通过寻求第一位有效数字的位置,推测出小数点的位置,(如下表所示)根据相应位数精确度的要求截断无效数据,即可计算出误差范围内结果。 对于浮点数的显示,
25、鉴于八位单片机处理极限是65536 的数据,我们将浮点数依次扩大10000倍,取出小数点后的高四位按照整数方法显示,类似这样的操作取出小数位低四位并且显示 . 0 . 0 0 X0X1X2X3X4X5X60 . 0 X0X1X2X3X4X5X60 . X0X1X2X3X4X5X6X0. X1X2X3X4X5X6X0X1. X2X3X4X5X6X0X1X2.X3X4X5X6X0X1X2X3. X4X5X61.5 系统软件设计1.5.1 主流程图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - -
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年简易多功能计数器 2022 简易 多功能 计数器
限制150内