于小龙
(山西省机电设计研究院有限公司,山西 太原 030009)
在仪器仪表等领域中,模拟信号的采集和转换在系统检测中具有十分重要的意义。传统上是用单片机对模数转换器进行控制,其优点是编程简单,但也存在着周期长、速度慢的缺点[1]。而FPGA具有速度快、灵活性强的特点,非常适合AD控制器的设计。本文采用型号为EP4CE6E22C8的FPGA芯片对模数转换器MAX191进行实时采样控制,经测量,所得的数据具有较高精度,达到了实际使用要求。
MAX191是MAXIM公司生产的单片CMOS、12位AD转换器,它既可以采用+5 V单电源供电来测量单极性信号,也可以采用±5 V双电源供电来测量双极性信号,并具有内部采样保持、电压参考电路,既可以采用内部时钟工作,也可以利用外部时钟工作。MAX191的采样保持时间为2 μs,数据转换时间为7.5 μs。它与控制器之间采用串行或者并行接口来传输数据。MAX191具有功耗低、速度快和精度高的特点,非常适合弱信号的实时采集系统。MAX191引脚如图1所示。
图1 MAX191引脚图
具体引脚功能为:引脚1:掉电控制端;引脚2:-5 V;引脚3:待测模拟量输入端;引脚4:模拟量输入返回端;引脚5:参考电压输入/输出端;引脚6:参考电压调整端;引脚7:模拟地;引脚8:极性选择端;引脚9:转换结束标志;引脚10~11:数据输出端;引脚12:数字地;引脚13~18:数据输出端;引脚19:读控制输入端;引脚20:片选;引脚21:高字节使能;引脚22:串并行选择;引脚23:时钟;引脚24:+5 V。
MAX191含有内部时钟电路,在CLK和DGND之间接120 pF的电容,就可以产生1 MHz的内部时钟。MAX191在工作时,通过在REF和AGND之间连接一个4.7 μF的电解电容,然后该电容再并联一个0.1 μF的无极电容,就会在REF端产生4.096 V的参考电压[2]。
图2 MAX191时序图
图3 FPGA与MAX191的连接
AD转换控制器采用硬件描述语言Verilog进行编程设计。通过分析MAX191的时序图,可以发现采用状态机来设计比较合适。本文把AD整个工作流程分为8个状态,分别是①Reset_ad,复位状态,MAX191未开始工作,此时控制器HBEN、RD_CS_N引脚皆输出高电平;②Start_ad_1,准备启动AD转换,此时控制器HBEN输出低电平,RD_CS_N输出高电平;③Start_ad_2,启动AD转换,HBEN继续输出低电平,RD_CS_N输出低电平;④Read_ad_low,读取转换的低8位数据,HBEN继续输出低电平,RD_CS_N继续输出低电平;⑤Read_ad_high1,读取低8位数据完毕,HBEN继续输出低电平,RD_CS_N输出高电平;⑥Read_ad_high2,准备读取高4位数据,HBEN输出高电平,RD_CS_N继续输出高电平;⑦Read_ad_high3,数据总线送出高4位数据,HBEN继续输出高电平,RD_CS_N输出低电平;⑧Read_ad_high,读取高4位数据。转换完毕后控制器进入复位状态,等待下次转换。控制器编译后的RTL视图如图4所示。本设计250 ms启动一次AD转换,转换结果通过RS232发送至分辨率为(800×400)像素的LCD上实时显示。
图4 控制器RTL视图
软、硬件设计完成后,即可接入实际的模拟信号进行测试,本文中接入的待测信号为直流电压值。由开关电源输出的±5 V电压经电阻分压后输入MAX191,将该系统测得的电压值与高精度5位半数字万用表测得的电压值进行比对。由于MAX191是±5 V双电源供电,REF端产生的参考电压为4.096 V,所以该系统的测量范围±2.048 V,如需扩展量程可选择合适的分压电阻将高电压转为测量范围的区间。实测结果如表1所示。
表1 测量结果比对
由表1数据可见,最大相对误差为1.7%,准确度较高。
采用FPGA芯片EP4CE6E22C8实现对模数转换芯片MAX191的采样控制,充分利用了FPGA高可靠性和高速度的特点,测量的电压数据准确度较高,该系统具有较高的实用价值。