状态机的各个状态描述如下:
(1)conv_init:状态机的初始状态。
(2)mode_set:设置ADS1255内部的控制寄存器。
(3)conv_start:启动A/D转换。
(4)conv_wait:等待A/D转换结束。如果转换结束则进入下一状态,否则将继续保持在该状态。
(5)conv_read:A/D转换结束后读出每个bit信息,同时使能移位寄存器进行串并转换。
(6)read_next:判断数据是否读完。如果没有返回conv_read状态,否则进入下一状态。
(7)conv_next:判断是否需要继续转换数据。如果没有就进入下一状态,否则返回conv_start状态。
(8)cony_end:表示本次采样任务结束。状态机保持在该状态,直到采样启动脉冲触发重新开始新的一次采样任务,状态机复位到conv_init状态。
2.5 串并转换模块
由于ADS1255是以串行输出转换结果的,故需要该模块将串行输出的数据转换为井行输出。该模块主要采用移位寄存器来实现,其移位控制信号由AD采样控制模块提供。
2.6 数据存储控制模块
该模块的作用是将5通道24 bit经过串并转换的采样数据按通道顺序,以从低字节到高字节的次序,一个一个字节将其写入双口RAM中,实际上相当于一个字节意义上的并串转换。该模块输入为5路采样数据reg24Data_0~4,dataF为输出的字节数据,wrenF为双口RAM的写控制信号。图5是一个五通道数据存储的仿真示意图。输入数据值分别为0x030201、0x060504、0x090807、0x121110、0x151413,输出字节数据为01~15,同时使能写RAM,满足设计要求。
2.7 ARM接口控制模块
该模块为ARM与FPGA及其双口RAM交互提供桥梁。当ARM向控制寄存器写入采集参数信息时,接口模块要将该信息通知通道和采样率选择模块;当ARM读取双口RAM中的数据时,接口模块对ARM的访问地址进行译码,选中对应的存储空间取出数据。
本文采用FPGA和ARM结合设计,很好地完成了多通道高精度的数据采集与处理,并且还详细介绍了FPGA逻辑的设计方法。FPGA逻辑通过硬件描述语言Verilog实现,已应用到磁数据采集系统中。本方案设计灵活,能很容易地扩展为更多路的数据采集,也能很容易地修改为与其他的A/D转换芯片接口。所以该方案可根据不同的应用进行扩展,进一步增强了系统应用的灵活性。