1 引言
振动台的作用之一是将被测物件置于振动台上测量其受迫振动时的表现,一般振动台的振动是由振动分析仪控制的,但是由于振动台体积形状和考虑到成本等原因,不利于振动分析仪的研发,所以设计振动模拟器对振动分析仪的研发有重要的现实意义。
振动模拟器应尽量对振动台的实际振动情况进行模拟。振动台本身的振动将不可避免地受到噪声的影响,导致它的振动不一定是符合需求的振动。所以要使振动模拟器对振动台的实际振动情况进行模拟,就必需人为地在采样信号中加入噪声。而出于对振动分析仪研发调试的需要,尽量将噪声范围处理成可控的,这样便于调试振动分析仪。
利用FPGA开发振动模拟器研制开发费用低,不承担投片风险,通过开发工具在计算机上完成设计,电路设计周期短。所以本文采用FPGA实现振动模拟器设计,由ADC模块接收调频和调幅信号,传给FPGA模块,FPGA由调频信号计算出对应的时钟,且按此时钟输出经调幅的数字正弦波,驱动DAC输出模拟的正弦波,最终和模拟的噪声相叠加,实现对实际振动台的模拟。
2 原理框图和基本设计思想
振动模拟器的原理框图如图1所示,图中由ADC模块分别接收调频和调幅信号给FPGA模块,FPGA模块将串行的调频和调幅信号,经串并转换,分别变成一个16位的并行调频信号和一个16位的并行调幅信号。FPGA输出经调频调幅的数字的正弦波,并驱动串行DAC(输出理想信号)输出模拟的正弦波;用户通过按键确定想要产生的噪声的频率范围,FPGA经计算得到满足用户要求的频率,驱动并行DAC(输出噪声),产生模拟的噪声,经电流电压转换后由同相求和电路将信号与噪声相叠。
图1 硬件原理框图
整个系统最终输出0.1~5KHz的振动信号和200KHz以下的振动噪声相叠的模拟量。
3 FPGA功能模块介绍
3.1 芯片选择
在本设计中,选用Altera 公司的Cyclone系列,型号是EP1C6Q240C8的芯片,PQFP封装。这款芯片有240个引脚,其中用户可用185个引脚。有5980个逻辑单元,32列20行逻辑阵列块。有2个PLL锁相环,20个M4K的ROM,每块ROM为4Kbit,可以另加1位奇偶校验位。
3.2 原理说明
FPGA模块接收2个ADS1100的芯片,经串并转换,得到调频和调幅信号。
波形发生的基本原理是:对幅值是1的正弦波在一个周期内的波形按1/200倍周期的时间间隔取200个点,存储这200个时间点所对应的波形的幅度,存储到FPGA的片内ROM中。正弦波幅度表仅需200×16bit=3.2kbit的存储空间,可用FPGA的一块片内ROM实现。通过查表法产生一系列的值,将这些值和调幅信号相乘就得到一系列的幅度值,即串行DAC的数字输入,而这些幅度的输出频率是调频信号值的200倍。类似的,利用FPGA一块片内ROM以存储200KHz以下噪声的正弦波幅度表(一个周期内的波形按1/20倍周期的时间间隔取20个点)。
调频信号和调幅信号的分辨率16比特,输出的正弦信号的分辨率是16比特。
4 AD、DA芯片与FPGA的接口
考虑到本系统需要较多的高频时钟,而若时钟管理不当,则因DAC工作不稳定会导致系统工作出错;由于连线和逻辑单元的延迟作用,使输出信号出现毛刺,产生冒险现象。因此纯粹依靠传统的逻辑电路难以达到理想的性能要求,这时就必须依赖FPGA内部的专用硬件电路PLL和引入高频时钟的方法产生无有害毛刺的同步时钟辅助实现高性能的设计。
FPGA芯片和ADC、DAC芯片的接口电路原理图如图2所示。
图2 FPGA与AD、DA芯片的接口电路
4.1 FPGA对ADS1100芯片的控制
调频和调幅信号使用同一款芯片:ADS1100,16位串行,I2C接口,在本设计中数据更新率是8SPS,电压型输出。此芯片仅可在从件模式下工作。ADS1100将模数转换结果传给FPGA模块,由FPGA进行串并转换。
FPGA对ADS1100提供SCLK和SDA引脚,符合I2C协议。FPGA是主器件,在开始与ADS1100通信前先对SDA写2个字节,分别确定和哪个ADS1100进行通信和对ADS1100的配置寄存器(configuration register)进行写以确定对其的操作模式。FPGA外接24MHz的晶振,经分频得到4MHz的时钟,ADS1100按8SPS的数据更新率工作,FPGA探测数据线变化以产生SCLK时钟信号赋给SCLK引脚。篇幅受限,I2C的FPGA实现不一一赘述。
4.2 FPGA对DAC8581芯片的控制
信号输出使用芯片DAC8581,16位串行,SPI接口,在本设计中最高数据更新率是1.8MHz,电压输出。DAC8581接收从FPGA传送过来的串行数据,将其进行数模转换,产生振动信号,模拟实际振动台的理想振动情况。
FPGA中,由PLL倍频得到36MHz的时钟提供给DAC8581的SCLK引脚。由调频信号计算得到串行DAC的数据更新率,按此频率更新串行DAC的数字输入。由同一个PLL倍频得到240MHz的时钟捕捉将由DAC处理的数字输入信号和SCLK引脚信号的跳变沿,从而产生DAC8581的CS片选信号。
数据data一旦准备好,赋给register,240MHz时钟探测到第一次SCLK上升沿,就拉低CS片选,第二次探测到SCLK上升沿时已经至少是下一个240MHz的上升沿了,从而满足Tlead(见图3、图4)参数的要求。CS低时,一旦240MHz时钟探测到SCLK下降沿,将register的最高位数据赋给SDA,将register左移一位,SDA保持不变,直到下一个SCLK下降沿。当捕捉到SCLK的第17个下降沿时,将CS拉高。由此即可满足以上的图3、图4对时序的要求。
图3 DAC8581 时序图
图4 DAC8581时序要求
4.3 FPGA对DAC8820芯片的控制
DAC8820产生振动噪声。16位并行,最高数据更新率4MHz,是电流输出型。本系统设有2个用户按键,分别表示产生40KHz~100KHz,100KHz~200KHz的噪声频率范围,FPGA接收按键信号确定噪声的频率范围,在此频率范围内产生一个随机频率,由此计算得到DAC8820的数据更新率,FPGA按此频率准备数据以更新并行DAC的数字输入。由DAC8820将其进行数模转换,模拟实际振动台在可能受到外界各种干扰信号后产生的噪声情况。
DAC8820的引脚WR(低有效)是将16位数据加载到输入寄存器;LDAC(高有效)是将数据从输入寄存器加载到DAC寄存器;但是若将同一信号同时赋给WR和LDAC,则可在下降沿将16位数据加载到输入寄存器,在上升沿将数据从输入寄存器加载到DAC输出。
由FPGA将24MHz的晶振时钟分频得到数据更新率,由此得到的时钟信号经高频时钟同步赋给DAC8820的WR和LDAC。由于DAC8820是电流输出的,所以将电流输出经过OPA277电流电压转换输出,见图5。图中的C1是补偿电容,其作用是防止增益峰值的出现。
图5 DAC8820外部电流电压转换电路
5 结论
综上,此振动模拟器的调频信号的分辨率是16比特,可产生0 ~5kHz的清晰信号,所以频率精度可达到0.076Hz,并可与200KHz以下的确定频率范围的随机噪声进行合成,输出信号幅度分辨率可达16比特,而且噪声的频率范围是可控的。
本文作者创新点:充分利用了FPGA可现场编程的特点,给读者提供了一个实施简单,成本低,可按用户需求灵活改变,且易升级的振动模拟器的设计方案;且对有特殊要求的信号发生器的设计有一定借鉴意义。