CPLD在多路高速同步数据采集系统中的应用
摘要:采用VHDL语言设计,用CPLD控制模/数转换电路,完成多路模拟输入的高速同步数/模转,具有容错和自检能力。CPLD与处理之间采用并行接口,具有很好的移植性、可靠性。
关键词:VHDL CPLD 高速同步数/模转换 容错和自检 并行接口 移植性
引言
CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)是在传统的PAL、GAL基础上发展而来的,具有多种工作方式和高集成、高速、高可靠性等明显的特点,在超高速领域和实时测控方面有非常广泛的应用。与FPGA相比,CPLD比较适合计算机总线控制、地址译码、复杂状态机、定时/计数器、存储控制器等I/O密集型应用,且无须外部配置ROM、时延可预测等。目前的CPLD普遍基于E2PROM和Flash电可擦技术,可实现100次以上擦写循环。部分CPLD支持ISP编程或者配置有JTAG口,对于批量小、品种多的模板开发极为有利。而用VHDL设计的程序,借助EDA工具可以行为仿真、功能仿真和时序仿真,最后通过综合工具产生网表,下载到目标器件,从而生成硬件电路。
javascript:window.open(this.src);" style="cursor:pointer;"/>
1 系统设计原理及框图
以Altera公司7000S系列CPLD产品之一EPM7128S-10为控制核心,控制模/数转换电路,最多可完成32路模拟数据的16位高速同步A/D转换。
图1为与A/D转换电路相关的系统外围电路框图。外部32路模拟输入通过调理电路后,CPLD控制多路切换器选通某一路信号送入A/D转换器(AD676)进行A/D转换,转换结果经过数据缓冲在合适的时候通过总线被读入处理器。一般的设计思路如下:①主处理器直接控制A/D转换电路,完成模拟输入信号的采集保持、A/D转换器的控制、通道的切换、数据的读取以及控制注入信号完成模拟通道的自检等。这种解决方案占用主处理器大量的I/O资源和处理时间,在高速采集与大计算量的时实系统中是不可取的:一方面因为处理器的I/O资源极其有限,同时又要求大量的汇编软件配合,不利于设计的移植;另一方面由于频繁地执行I/O操作完成相对定时关系,来实现高速数据采集,不利于系统调度软件的设计的其它软件模块的时实执行,由于此段I/O操作类似于原子操作,很难解决其它模块响应时间可能较长的矛盾。②采用其它廉价的从处理器,如MCS-51单片机来控制上述过程,使之与主处理器并行化。但此时从处理器与主处理器之间的高速数据实时交换就成为瓶颈,而且由于MCS-51单片机亦为软件化流程控制,存在跑飞的可能,两处理器的同步又成为新的问题。应用CPLD器件就可以很好地解决上述矛盾,实现配置随意可改写和高速硬件流控制等。随着ISP器件的发展,CPLD已经日益广泛地应用到高速数据采集系统中,但都是很考虑设计本身的容错、自检能力和使用的灵活性,不利于故障的定位和嵌入式应用的移植。本设计中采用CPLD作为A/D转换电路的控制器,和主处理器并行交互数据,很好地解决了上述矛盾。
为突出重点,EPM7128S、AD676、LF398等器件的简介此处不作介绍,仅列出AD676的控制时序,如图2所示。
图2
多路模拟信号的同步采样一般有两种实现方法:一种为多个A/D转换器同时进行转换;另一种为仅有一个A/D转换器,各通道同时采样,然后分时转换。考虑到16位高速A/D转换器AD676的价格因素,采用后一种方案。AD676有三个控制信号:SAMPLE、AD-CLK、CAL。它们需要一定的时序配合才能正常工作,如图2所示。由于AD676的转换结果不具备三态输出功能,所以需增加74F574和总线进行隔离,为此配置控制信号WRAD、RDAD;同时要考虑到32路模拟信号的采样保持控制S/H、多路切换器的控制信号M1A4~M1A0,以及输入模拟信号选择M0A1~M1A0、数据准备好信号INT1等共14个。CPLD和处理器采用并行接口,因此其输入信号有:系统复位信号RST、处理器的读/写信号RD/WR、片选信号IOSTROBE、外部时钟输入CLK、辅助地址信号A20~A17和A5~A0、AD676的反馈输入BUSY,共22个输入。外加双向数据总线D07~D00。设计中没有将总线隔离器74F574集成到CPLD中,主要考虑到保留适当的I/O等资源用于系统的地址译码和其它辅助功能。地址译码等辅助模块比较简单且与特定的处理器相关,故此处不作介绍。
虽然有复位默认值,但CPLD为灵活控制多路模拟量的同步A/D转换,要求处理器正确设置两个控制参数,即进行数/模转换的模拟量通道的总个数SUM和数/模转换的初始通道号chan;然后再对CPLD写入启动A/D转换命令,这样CPLD即可脱离处理器,控制A/D转换电路。CPLD首先按照LF398的时序要求产生其所需的采样保持信号S/H完成32路模拟量的同步采样,然后按照图2所示的通常转换时序控制AD676去完成一次转换。一旦该次转换完成,使能WRAD信号,锁存转换结果到74F574,并发出数据准备好信号INT1,同时标识内部状态信号,作为中断请求通知处理器,或者供处理器查询状态。CPLD将一直等待处理器将该次转换结果取走才取消此标示信号。在CPLD等待的过程中,处理器亦可命令CPLD提前结束转换,以适应不同的应用要求。转换结果取走后,CPLD清除内部的标识信号和数据准备好信号,SUM的映像减1,若不为0,chan的映像加1,输出到M1A[4..0]去切换至下一通道,继续按照图2所示的通常转换