用FPGA设计的采样控制器AD_CONTROLLER与ADS7844的接口电路如图2所示,基本时序如上所述。AD_CONTROLLER的输入时钟取12 MHz,经内部4分频后输出至ADS7844的CLK引脚。cs_all为来自CPU的启动信号,当其为低时AD_CONTROLLER开始工作。addr[3..0]为对应的ADS7844的通道地址,data[15..0]为某地址所对应通道的A/D转换结果,当某一通道转换结束,oe信号由低电平变为高电平并持续1个周期。
AD_CONTROLLER主要由分频模块(fq),A/D转换周期形成模块(fq_cs);A/D转换器片选信号模块(cs_pulse);通道地址及控制字形成模块(addr_1);A/D转换数据输出模块(from_ad)和控制字移位输出模块(to_ad)组成,其结构如图3所示。
取FPGA工作频率10 MHz,经分频器4分频得2.5 MHz作为A/D转换器的时钟。分频器通常用计数器实现,各VHDL教材上都已详细讲述,这里不再赘述。信号cs每隔28个clk1时钟周期发出1个clk1周期的高电平脉冲并转换1次模拟输入通道,28个cIk1周期中,A/D转换器片选cs_ad信号占用4个周期,控制字的串行输出(di)占用8个周期,ADS7844芯片由Din引脚接收到控制字后,在下一个周期的下降沿开始将A/D转换后的数据串行输出至Dout引脚,由from_ad模块进行串/并转换并输出(data[15..0]),此串并转换需16个周期。信号stld的下降沿将由状态机产生的控制字(control_word[7..0])锁存入to_ad模块内部的并/串移位寄存器(74165),经过8个周期后控制字由di引脚输入ADS7844芯片。cs脉冲的产生由计数器实现,这里不做详细介绍。cs_ad片选信号通过cs_ad模块将cs信号展宽2个周期而得到,其电路结构如下: