基于CPLD数据采集通道轮循的实现
【摘要】
在采集数据的时候,经常会遇到采集通道数不足实际需求的问题,本文将单片机和CPLD相结合,通过数据采集通道轮循的办法有效地解决了该问题,结果表明:该方法性能较好,实现方便,可作为一种通用的解决通道不足问题的方案。
【关键字】 通道轮循 数据采集
一、 引言
目前市场上出现的采集卡中,12位精度的采集卡居多,其通道数一般为64个,足以满足一般的工业需要。但14位精度的采集卡中,我们见到的通道数只有4路,根本不能满足对于较多通道的工业需求。因此我们就必须寻求别的途径或方法来满足目前的工业需求。本方案通过地址轮循的方法,实现了将4个通道的采集卡扩展为可以采集72个通道的采集卡,其方法简单,价格合理,完全可以满足设备要求。
本设计方案使用的采集卡是凌华科技(ADLINK)的 DAQ-2010 PCI 4通道、2MS/s同步A/D多功能采集卡,4个通道可以同时进行采集,但我们的设备要求72个通道可以同时进行采集,本方案采用了单片机地址轮循顺利地解决了通道不足的问题,实现了凌华卡的新用法,也为我们以后的进一步理论研究和实际应用开创了新的道路。
二、 理论分析
1、凌华科技(ADLINK)的 DAQ-2010简介
DAQ-2010是一款基于32位PCI插槽的高级数据采集卡,高性能设计和高技术水平使得这块卡非常适合在医学或控制领域中的数据记录和信号分析。它具有如下的优良性能:
l 32位PCI插槽,即插即用
l 4通道同步差分信号输入
l 采样速率可以达到2MS/s
l 14位的分辨率
l 可编程的单/双极模拟信号输入
l 通用触发源:软件触发,外部信号触发,模拟信号触发
…… ……
由于该卡只有4个采集通道,而我们项目要求必须同时可以采集72路以内的任意多个通道。这给设计带来很大的麻烦,也是本文所要解决的问题。经过足够的实验准备我们决定采用通道轮循的方法解决。
2、 CPLD简介
CPLD是Complicated Programmable Logical Device英文单词的缩写,中文为“复杂的可编程逻辑器件”。它的内部由若干逻辑门电路组成,其逻辑功能是由用户通过对器件编程来设定的。通过软件可以很容易地实现译码和循环逻辑功能,在本方案中我们采用的VHDL编程,来实现存储器地址的轮循,从而达到采集通道轮循的目的。
再结合单片机控制系统,经过我们充分的实验准备,我们在理论方面和应用方面已经完全可以解决该问题了。
三、 方案的实现
本方案采用单片机和CPLD相结合的方法,单片机负责存储器中数据的读写,CPLD负责存储器地址的轮循,而相应地址中存放的是多路开关通道的开通信息,多路开关可以根据该信息开通具体的采集通道。其系统框图如下所示:
图1 系统框图
计算机通过RS232串口通讯控制单片机系统进行数据采集,被采集的模拟信号通过传感器进来后经过调理电路处理,接入多路开关,多路开关由单片机控制电路控制选通,根据接收到的控制信号决定当前该开通哪路通道。其中调理电路的作用是采样和放大信号。本方案要求能同时采集72路通道以内的任意路通道,所以进来的模拟信号共72路,经过多路开关选通后只有一路信号可以进入A/D采集卡中,采集后的数据进入计算机进行处理。
系统得工作流程图如下:
图2 系统工作流程
1、 单片机控制整个系统的工作流程, 系统启动后单片机接到主机发来的控制信号,然后开通总线,将需要轮循的通道的地址写入存储器中。之后,单片机将通过CPLD隔离总线,CPLD开始地址的轮循。
2、 CPLD负责地址的轮循,比如需要轮循的通道个数为chanl_num,经多路开关后输出到采集卡上的通道个数为1个,如果chanl_num=4,其通道对应得地址为0x00,0x01,0x02,0x03。经过地址轮循以后结果为:
0x00,0x01,0x02,0x03,0x00,0x01,0x02,0x03,0x00,0x01,0x02,0x03,0x00……
本方案中采用的CPLD芯片为EPM7128-84,将频率信号接入CLK端,该频率决定了轮循的频率;将需要轮循的通道个数chanl_num写入I/O端,该个数决定了同时采集的通道数;将相应得控制信号接入,控制信号决定了CPLD的工作方式;使用VHDL语言编写循环程序,然后通过下载线下载到芯片中,CPLD即可实现地址轮循的功能。下图为6个通道轮循的仿真图。
图3 六个通道地址轮循的仿真图
3、 地址轮循,其实就是单片机不停地读存储器中的数据,而所读存储器中的地址在循环。存储器中的数据就是多路开关的选通信号。所谓选通信号就是图4中开通具体通道所需要在A0~A3脚和EN脚写入的数值。所以轮循的实质就是存放选通信号的地址在循环,该地址的循环是通过CPLD来实现的,而单片机是一直在该地址处读数据的。本方案中的多路开关选用MAX306芯片,16选1的多路开关,根据需要开通的具体通道,将相应的选通信号直接写入多路开关的A0~A3脚和EN脚。多路开关的电路图如下。
图4 多路开关的电路图
模拟信号的通道数多于16个时可以采取多个多路开关并联。本方案中是72个通道,所以采用了5个多路开关并联的方法。
4、 地址轮循后,信号循环地进入采集卡进行采集,又出现了一个新问题,我们如何区分这几个信号呢。比如A1,A2,A3三个通道轮循,如何知道第一个采集到的数据是哪路的信号呢?为了解决这个问题,我们另外接入一个标准5V信号,由于采集到此信号的值明显高于普通信号的值,所以轮循结果应为--5V--A1--A2--A3--5V--A1--A2--, 这样就可以辨别采集到的信号的顺序了。把采集到的数据放在相应的数组中就可以进行处理了。
四、 结论
通过采集通道的轮循,我们顺利地解决了通道不足地问题,完成了既定的任务,因此本方案经济可靠,方便灵活,完全可以满足一般工业的需求,对于解决类似的问题提供了一套通用的解决方案。对于将来理论研究及其实践应用都具有很重要的意义。
参考文献
[1] 王伟. Verilog HDL程序设计与应用. 人民邮电出版社. 2005。
[2] 廖裕评 陆瑞强.CPLD数字电路设计------使用MAX+plus II. 清华大学出版社. 2001。
[3] 李华. MCS-51系列单片机实用接口技术. 北京航空航天大学出版社. 1993。
[4] IEEE Std1364-1995,IEEE Standard Hardware Description Language Based on the Verilog
Hardware Description Language. The Institute
of Electrical
and Elec-tronics Engineers.
[5] DAQ2010 User’s Guide. ADLINK Technology Inc. 2002。