本系统以AD7892SQ和CPLD(复杂可编程逻辑器件)为核心设计了一个多路信号采集电路,包括模拟多路复用、集成放大、A/D转换,CPLD控制等。采用硬件描述语言Verilog HDL编程,通过采用CPLD使数据采集的实时性得到提高。
1 硬件设计
针对多路信号的采集,本系统采用4/8通道ADG508A模拟多路复用器对检测的信号进行选择,CMOS高速放大器LF156对选中的信号进行放大,AD7892SQ实现信号的A/D转换,CPLD完成控制功能。电路如图1所示。
AD7892SQ是美国AD公司生产的LC2MOS型单电源12位A/D转换器,可并行或串行输出。
AD7892SQ A/D转换器具有如下特点:单电源工作(+5 V或+10 V);内部含有采样保持放大器;具有高速的串行和并行接口。
AD7892SQ控制字的功能如下:
a)MODE:输入控制字,低电平时为串行输出,高电平时为并行输出,本系统为并行输出;
b)STANDBY:输入控制字,低电平时为睡眠状态(功耗5 mW),高电平时正常工作,一般应用时接高电平;
c)CONVST:启动转换输入端,当此脚由低变高时,使采样保持器保持开始转换,应加一个大于25 ns的负脉冲来启动转换;
d)EOC:转换结束信号,转换结束时,此脚输出100 ns的低电平脉冲;
e)CS:片选,低电平有效;
f)RD:低电平有效,与CS配合读,使数据输出。
MODE脚接高电平时,AD7892SQ为并行输出,时序如图2所示。
在EOC下降沿时间内开始采样,就是转换一结束就开始下次采样,采样时间fACQ应大于等于200 ns或400 ns,转换结束后(即E0C的下降沿),当CS和RD有效时,经过t6=40 ns的时间,就可以在DB0-DB11上获得转换之后的12位数据,CS和一般的片选信号相同,可以一直有效,外加RD的时间T5也应大于35 ns。CONVST信号t1应大于35 ns,在上升沿时采样保持器处于保持状态,开始A/D转换,转换所需的时间tCONV为1.47μs或1.6μs,转换结束后,EOC脚输出的t2为大于等于60 ns的负脉冲用来进行中断或数据锁存。由此得出下次采样和本次的输出可以同时进行,因此最小的一次采样转换输出的时间为1.47+0.2=1.67μs(600 kSPS(千次采样每秒)),最大1.6+0.4=2 μs(即5 00 kSPS),图2中的t9大于等于200 ns,t7近似为5 ns,t3、t4、t8可为0,(此时t9=tACQ)。
2 程序设计
2.1 系统介绍
系统中的CPLD是结构比较复杂的可编程逻辑器件,硬件描述语言设计的控制程序写入CPLD内即可实现其功能。系统采集的数据常常放在数据缓存器中,数据缓存区要求既要有与A/D转换芯片的接口,又要有与系统DSP的接口,以提高数据吞吐率,本系统选用FIF0(先进先出),并且FIF0具有不需要地址寻址的优点[1]。
2.2 系统的软件描述
本系统采用Verilog HDL语言进行描述。VerilogHDL被近90%的半导体公司使用,成为一种强大的设计工具。其优点是[2]:
a)Verilog HDL是一种通用的硬件描述语言,易学易用;
b)Verilog HDL允许在同一个电路模型内进行不同抽象层次的描述,设计者可以从开关、门、RTL或者行为等各个层次对电路模型进行定义;
c)绝大多数流行的综合工具都支持VerilogHDL,这是Verilog HDL成为设计者的首选语言的重要原因之一;
d)所有的制造厂商都提供用于Verilog HDL综合之后的逻辑仿真的元件库,因此使用Verilog HDL进行设计,即可在更广泛的范围内选择委托制造的厂商;
e)PLI(编程语言接口)是Verilog HDL语言最重要的特性之一,它使得设计者可以通过自己编写C代码来访问Verilog HDL内部的数据结构。
2.3 AD7892SQ描述
描述AD7892SQ模块,可以把模块用于采集系统的仿真,以验证FSM(有限状态机)设计的正确性。该模块主要有4个输入信号和1个输出信号,与芯片的控制信号一致。程序如下:
AD7892SQ仿真波形见图3。
2.4 FSM描述
FSM为异步工作。当convst有效时停留在convst_ad状态,且rd和cs都为1,convst为0且处于clock的上升沿时FSM会处于4个状态中的一个状态。图4为FSM仿真波形。
2.5 FIFO描述
FIFO为同步工作。当reset有效且处于clock的上升沿时,dout为O;reset为1且处于clock上升沿时,read和write组合的4种情况分别对应各自的工作状态。图5为FIFO仿真波形。
3 结束语
Verilog HDL硬件描述语言已越来越广泛地应用于EDA(电子设计自动化)领域,多数EDA设计工程师都用它进行ASIC(专用集成电路)设计和CPLD/FPCA开发。用高级语言进行电路设计,能够灵活地修改参数,而且极大地提高了电路设计的通用性和可移植性。最后需要指出的是,采用IP核的方法设计电路,不但可以单独使用,而且可以嵌入到ASIC或CPLD/FPGA的电路设计中,同时缩短了产品的开发周期,应大力推广。