用FPGA+DSP实现数据采集的难点与解决方案
笔者采采用4片具有六路通道的AD7656芯片来实现24路模拟通道的数据采集。利用该方案实现多通道的数据采集并且完成对前端信号的模数转换的难点在FPGA与AD芯片的时序匹配设计和采样控制逻辑电路设计。
解决方案:下图为采样模块电路的原理图。其中,CONVSTA、B、C连接到一起后接到FPGA上,、W/B、RESET、、RANGE、REF、/S引脚均单独连接到FPGA上进行集中控制,BUSY信号直接送入FPGA内部,DB15-DB0数据直接送入FPGA。采用将REFIN/REFOUT硬件拉低,FPGA软件控制REF为高,来达到内部参考电压模式,通过跳线控制VDD电压,保证AD7656的输入端的电压。
下图为AD7656并行方式的时序图,AD7656的初始化过程为RESET接收到高电平复位信号,AD停止模数之间的转换,进行复位动作,复位之后,由FPGA将RESET置低,复位结束。控制CONVST出现上升沿,将产生一个典型脉冲宽度为3μs的BUSY脉冲,这标志着模数转换的开始,当BUSY信号自动拉低后,标志转换的结束,此时AD7656内部的6个寄存器中己经保存了转换的数据。然后控制片选信号和读信号,在为低电平时,开始读数据,在读操作之前,数据线DB0-DB15处于高阻态,只有当和均为低电平时,数据线DB0-DB15将不再是高阻状态。读数据时的脉冲宽度(图中t5)最小值为30ns,它的数据是按照通道1至6的顺序依次采集的,数据读出完了之后,CONVST信号再拉低,为下次转换做准备。数据读到预先在FPGA内部设置的FIFO缓冲区里,DSP通过查询FIFO的空信号或者FPGA通过FIFO的满信号给DSP外部中断,将FIFO缓冲区中存储的数据通过16位数据线读入到外挂的存储器中。