历史上的今天
返回首页

历史上的今天

今天是:2024年12月09日(星期一)

正在发生

2020年12月09日 | 基于FPGA和单片机的多功能计数器设计

2020-12-09 来源:elecfans

  一、系统方案

  方案1:采用中小规模数字电路构成系统,由计数器构成主要的测量模块。用定时器组成主要的控制电路。此方案软件设计简单,但外围芯片过多,且频带窄,实现起来较复杂,功能不强,而且不能程控和扩展。


  方案2:采用单片机实现。被测信号经调理后送入单片机,利用其内部的计数器完成计数,然后再进行数据处理和显示,但单片机在处理高速信号时略显吃力。


  方案3:利用FPGA对调理后的被测信号实现高速计数,单片机软件执行高精度浮点数运算并显示。单片机完成系统的数据处理、逻辑控制和人机交互功能;大规模现场可编程器件(FPGA)实现外围计数功能。电路框图如图1所示。

 
 图1 方案3系统框图


  方案比较与选择:方案1 采用中小规模集成电路来实现,系统电路较复杂,扩展性能差;方案2用外围电路配合单片机实现测量功能,信号频率比较高时需外加分频电路,影响测量精度和系统稳定性,且单片机任务繁重,给软件设计和调试工作带来不便;方案3用一片高度集成的可编程逻辑器件可完成有关电路所有模块的设计,大大降低了电路复杂度,减少引线信号间的干扰,提高电路的可靠性和稳定性。加上单片机控制,应用单片机的数学运算和控制功能,辅以有效的软件滤波算法,能够进一步提高测量精度,且控制灵活、易于扩展和调试简单,能够达到题目要求。故本设计采用方案3,系统框图如图1所示。


  二、理论分析与计算

  1、频率和周期测量方法分析

  由于频率和周期之间存在倒数关系(f=1/T),所以只要测得两者中的一个,另一个可通过计算求得。

  1)直接测量法 对测频在低频端1Hz时,若闸门时间为1s,其 ±1量化误差大到100%。为了满足测试精度的要求,显然不能采用直接测量法;

  2)直接与间接测量相结合的方法 需对被测频率和中界频率的关系进行判断,在中界频率附近仍不能达到较高的测量精度;

  3)等精度测量法 图2为等精度测频、测周原理方框图。

  
图2 等精度测频原理图

  2 相位差测量方法分析

  相位差的测量有很多种方法,如相位—电压转换法、数值取样法和相位差—时间转换法等。其中相位差—时间转换法实际上是测量两个正弦信号波形上两个相应点之间的时间间隔t,若两被测信号周期均为T,则时间间隔t对应的相位差为:

  如果只测量一个周期的t和T,无法满足宽频带被测信号的测量精度。如果时间间隔t和周期T测量值比较准确,再通过单片机对实测数据进行高精度浮点数运算及误差修正,就可以达到精度要求。按照这一思路,结合上面对等精度测频、测周原理及误差的分析可知,此方法是切实可行的。


  设门控信号的开启时间为tc ,计数值为N,则tc=NT0 (5)

  式中T0 为时标信号的周期,由(5)式和(6)式得

  式中f为被测信号频率,10HZ≤f≤100kHZ ,f0 为标准时基,N为计数值。

  3 宽带通道放大器分析

  因为三极管放大电路参数选择复杂,低频特性不好,抗噪性能差。因此,设计中采用了宽频带、低噪声、高输人阻抗的运算放大器组成高精度放大电路,以获得良好的频率特性和抗干扰能力。输入通道中的放大级设计主要考虑增益和带宽的指标。题目要求能够测量信号幅度峰值范围约为14mv~7.07v。这个范围是比较宽的,既涉及到小信号放大,又要考虑比较器输入电压限制问题,因此,应根据信号幅度大小分段选择放大器的增益。还有就是要满足运放增益带宽积的要求。


  三、电路与程序设计

  1 输入通道电路设计

  待测频率信号由于衰减、传输干扰等原因,不能直接用于测量,需要经过处理后才能适合逻辑控制器的输入。输入通道组成框图如图3所示。

 
 图3 输入通道组成框图

  图4 放大电路原理

  输入信号经电压跟随器缓冲后进入放大通路,灵敏度控制采用单片机控制继电器的通断来选择不同的放大倍数,被放大的信号经比较器输出与被测信号同频率的方波计数信号若要测相位差,则同频信号经放大后进入移相网络,然后经过零比较得到移相后的计数信号。


  比较器采用滞回接法,详细电路见附录一,从而避免了过零点信号的毛刺造成整形信号的误翻转。其中放大电路基本原理如图4所示,其中Rf为反馈电阻,R为输入端电阻,有

  Uo = - Ui × ( Rf / R ) (7)

  由式(7)知,调节Rf的大小即可调整电路的增益。

  移相网络电路如图5所示。

 
图5 移相网络电路图

  图6 FPGA功能实现框图

  对图5电路分析知,两级网络的振幅特性均为A(ω)=1 ,前级网络相频特性为

前级网络相频特性

       可见此为超前网络;后级网络相频特性为

后级网络相频特性

 

  所以相位发生滞后,通过改变阻值r即可实现相移量调整。两级级联后移相范围为0~360°。

  2 FPGA 功能实现模块

  FPGA实现部分主要分为信号同步处理,等精度计数和数据处理及传输3部分,如图6所示。FPGA采用Altera公司的EP2gC5Q208C8,经分析知能够实现题目要求。


  (1) 同步处理电路 待测信号从外时钟域进入,属于异步信号,对测量精度乃至整个系统的稳定都有很大的影响,在这里,先对输入信号进行一次采样进行消抖,滤去可能存在的毛刺, 然后进行一级同步处理,尽可能有效地对异步信号进行同步处理。

  (2)计数测量 采用等精度法测频率,利用相位~时间转换法进行相位差测量,并将测得数据进行寄存。

  (3) 数据存储 将得到的并行数据转换为串行数据 再通过时序控制将数据写入双口RAM,然后单片机以其自身的时钟频率进行读取,从而有效地消除跨时钟域数据处理时所造成的不稳定影响。


  3 单片机控制模块

  在本系统中,单片机采用MSP430F149,主要完成放大通路灵敏度选择、读取实测数据及处理和键盘与显示接口等三种功能。其中灵敏度选择是通过控制继电器的通断来实现通路切换;按键采用红外遥控方式,其中发射部分采用 PT2221,接收部分采用高灵敏度、高度集成的一种新型红外遥控接收光电模块HS0038,然后通过单片机直接软件解码处理,进而执行与之对应的中断服务子程序;因为要同时显示较多数据,所以我们采用字符型液晶显示。


  4 主程序流程图

  单片机系统主要流程图如图7所示,具体程序见附录三。

  图7 主程序流程图


  四、测试方案与测试结果

  1.测试仪器

  (1)任意波形/函数发生器(Tektronix AFG3022B)

  (2)等精度通用计数器/相位计(Sample SP312B)

  (3)双通道数字示波器(Tektronix TDS1002)

  2.测试方法与步骤

  本设计采用先分别进行子系统测试,待均测试成功后再将之组装成总体系统,仔细检查连接无误后通电进行总体功能和性能测试,并记录所测数据。

  

图8总体系统测试方案

 

  图8总体系统测试方案


  测试条件:闸门时间为1s;

  3主要测试结果及分析

  测试结果:(1)本设计实现了对正弦信号的频率、周期和相位差的测量功能;

  (2)性能方面能够基本达到基础部分误差要求;

  测量误差主要来自

  1.信号前级处理电路,由隔直电容和运放等集成芯片产生;

  2.信号传输过程中的延时;

  3.异步信号对fpga测量计数造成的影响;

  4.等精度测量所产生的绝对误差随信号频率增大而被直接放大导致在对高频信号测量时出现大的数据局部不精确


  五、结论

  1、频率、周期测量误差达到频率、周期测量误差

;相位差测量准确度达到1度;能够实现小信号测量;

  2、由于本地时基的计数结果依然存在±l的计数误差,制约了频率和周期测量精度的提高。如果辅以模拟内插法,可以进一步提高测量精度。

推荐阅读

史海拾趣

General Microcircuits Corp公司的发展小趣事
对于温度敏感的电路,可以采用温度补偿技术来减小因温度变化引起的漂移。
BALLUFF公司的发展小趣事

BALLUFF公司的历史可以追溯到1921年,由格布哈德·巴鲁夫(Gebhard Balluff)创建的一家机械修理厂开始。这家修理厂起初规模较小,但巴鲁夫凭借其对机械技术的精湛理解和不懈追求,逐渐将业务发展壮大。他通过不断的技术创新和产品升级,使得修理厂逐渐转型为一家专注于生产精密部件、车件和铣件的企业。这一转变不仅奠定了BALLUFF公司的工业基础,也为其日后在传感器领域的崛起打下了坚实基础。

宝乘(baocheng)公司的发展小趣事

作为淄博市的重大项目,宝乘公司得到了各级政府的大力支持。这些支持不仅体现在资金扶持上,还包括政策优惠、人才引进等多个方面。在政府的助力下,宝乘公司得以快速发展,不断壮大。同时,公司也积极响应政府的号召,参与新旧动能转换等重大项目,为地方经济的发展做出了贡献。

Amphenol Thermometrics公司的发展小趣事

在激烈的市场竞争中,宝乘公司始终坚持质量为本的原则。公司建立了严格的质量管理体系,从原材料采购到生产加工、产品测试等各个环节都严格把关。正是这种对质量的执着追求,让宝乘的产品赢得了客户的信赖和好评。许多知名企业都成为了宝乘的长期合作伙伴,共同推动电子行业的发展。

杰力(EMC)公司的发展小趣事

杰力(EMC)公司成立于XXXX年,由一群具有丰富电子行业经验的专业人士创立。公司初期专注于功率组件和集成电路(IC)的设计与开发,以满足不断增长的电子市场需求。通过引进先进的生产设备和工艺,杰力迅速建立起一条高效的生产线,并开始为一些小型电子厂商提供定制化的产品。随着产品质量的不断提升和客户口碑的积累,杰力逐渐在市场中树立了良好的品牌形象。

Goldentech Discrete Semiconductor Inc公司的发展小趣事

进入21世纪后,随着全球电子市场的竞争加剧,Goldentech意识到单靠技术创新已不足以维持其市场地位。因此,公司开始积极寻求与行业领先企业的战略合作。通过与一家知名芯片设计公司的深度合作,Goldentech成功将其高性能离散半导体器件集成到对方的芯片设计中,从而实现了产品的广泛应用。这一合作不仅扩大了Goldentech的市场份额,还提升了其品牌知名度和行业影响力。

问答坊 | AI 解惑

这段是在运算什么?

有哪位高手能看懂下边程序在做什么? MOV   A,4AH                        MOV   R0,A           &n ...…

查看全部问答>

C++ 设备驱动 交互

在做C++编程的时候,常常要用到和摄像头什么的做信息采集 这时候常常会需要得到系统设备驱动,这是如何做到的,设备驱动号是什么东西,怎么用啊? 系统的设备是不是都是统一编号的? 设备驱动是如何在系统中存储和使用的啊?…

查看全部问答>

无法卸载驱动模块

把驱动装到开发板上后无法卸载,执行rmmod my_bdri.ko后提示: rmmod: chdir(2.6.29.4-FriendlyARM): No such file or directory 执行lsmod: [root@FriendlyARM /]# lsmod my_bdri 3348 0 - Live 0xbf000000 该怎么办啊????…

查看全部问答>

研华PCL 816

第一次调试板卡,我想了解一下板卡是怎么初始化的,还有通道的选择以及AD转化的触发,数据的读取等。 为什么每次读取AD数据后,BASE+13的DRDY位仍为0啊?…

查看全部问答>

《Linux驱动入门》学习

一、典型linux驱动代码包含?     驱动程序的注册和注销、 设备的打开和释放、 设备的读写、 设备的控制操作、 设备的中断或轮询处理。     二、BootLoader     Bootloader操作系统内核运行之前运行的一 ...…

查看全部问答>

winCE能否生成类似DLL的第三方程序供他人调用?

如题 因为我是初学者 但公司的新项目是做一个外包 而这个外包是在手机平台上运行的 所以来问问是否有相关参考文档 多谢达人指点~~~~~~…

查看全部问答>

阻塞与非阻塞语句的区别

module DataBusOfBus(DataBus,link_bus,write); inout[11:0] DataBus; input link_bus; reg [11:0] outsigs;   assign DataBus=(link_bus)?outsigs:12\'hzzz;   always @(posedge write)       &n ...…

查看全部问答>

自已做的STM32F103ZET6的板调完了!

                                 SRAM.NOR,NAND都好用了!晚上回家上图片!…

查看全部问答>

想要多少个跑马灯?用74hc595来扩展输出口

  先用两片扩出16个输出,不够还可以再增加     grace生成的USI初始化,还用翻译么?   /* *  ======== USI_init ======== *  Initialize Universal Serial Interface */void USI_init(void){& ...…

查看全部问答>

关于Xilinx调用IPcore 与 原语的区别

Xilinx FPGA中有的可以通过原语(Primitives)调用来例化一些特殊功能,比如: ODDR2、IOBUF、ISERDES2、OSERDES2等。   有的可以用IP core来例化一些特殊功能,比如: DCM、加法/减法器 等。   有两个问题想跟各位高手讨论: &nb ...…

查看全部问答>