CPLD在多路高速同步数据采集系统中的应用
图3
为达到以上的功能,在设计中主要设置了四大功能模块,分别为时钟分频模块、控制译码模块、总线接口模块、状态机模块,设计原理如衅3所示。时钟分频模块用于产生AD767的转换时钟。为简化设计,达到高速和简化的目的,此模块的分频系数由设计固化。控制信号译码模块用于完成处理器对CPLD片内模块的寻址和译码,为一简单译码逻辑和触发电路。总线接口模块用于完成处理器和A/D转换控制器的数据交换;同时完成AD767的自校准信号CAL的控制,如图2所示的自校准时序。需要注意一点的是,在自校准的过程中,SAMPLE信号必须保持低电平,否则出错。状态机模块用于产生A/D转换的时序,如图2所示的通常转换时序。在转换的过程中,CAL信号必须保持低电平,否则出错;状态机模块同时完成对多路切换器的控制。图2所示的各信号的相对定时关系此处不作说明,请查阅AD676的数据手册。
为达到图2所示SAMPLE、CAL时序的相互闭锁关系,从状态机模块引出其内部状态信号到总线接口模块,一方面,状态机的状态可以随时被处理器感知;另一方面用于闭锁CAL信号,即闭锁自校准。详细地说,就是在A/D转换期间,在图2所示的通常转换时序中,从SAMPLE变高到BUSY信号再次变低以前,即使处理器再次写入了启动自校准命令,CPLD亦闭锁CAL信号的产生。为便于安全启动CAL信号,在本次转换完成或全部转换完成时,满足一定的相对时序即可启动。同理,将总线接口模块内控制CAL信号的状态机的状态引入状态机模块,用于在自校准期间,闭锁SAMPLE信号的产生,即闭锁处理器启动A/D转换的命令。这样,A/D转换控制器就具有很好的容错能力。无论何时,处理器都可以通过读取SAMPLE、CAL、BUSY、中断请求、状态机的状态,来监测CPLD、AD676等的工作和判断损坏与否。通过处理器的配合就使CPLD支持系统的在线自检,解决了以往类似设计中存在错误而处理器又无法进行故障定位的问题。
图4
2 系统仿真和验证
以上设计用VHDL语言描述完成后,首先在ACTIVE-HDL5.1环境下进行编译、综合、适配后再时序仿真;但这只是纯逻辑验证,此时时序仿真图中没有包含任何硬件延迟信息。结果正确后,在MAX+PLUSII 10.0环境下进行编译、综合、适配后,再进行时序仿真验证。由于考虑了硬件因素,选择MAX7000S系列的EPM7128STC100-10器件后,该器件的摆率位Turbo bit必须选中,否则在高速时钟输入时,MAXPLUS的仿真结果不正确。图4即为在MAXPLUS下的时序仿真结果,模拟40 MHz的CPLD时钟输入和主处理器50ns的外部存储器访问周期,可以达到AD676的最快转换速度。实际电路也验证了这一点。
考虑到CPLD也完成系统的一部分译码功能,此时,MAXPLUS所产生的报告文件表明资源利用情况,如表1所列。在文章的最后详细给出了状态机模块的时序电路的VHDL设计程序。
表1