FPGA/ASIC技术
在内部时钟模式,系统将以较快的速率达到最大的吞吐量,并由内部时钟控制采样,用户只需提供一个字节的SCLK,再拉高CSn,即可启动转换。和外部采样模式相同,SSTRB上跳变表示转换完成,此时,用户便可提供两个字节的SCLK来读取转换结果。
在外部采样模式,系统将以最慢的转换速率达到最大的吞吐量,并由用户直接控制采样,用户可提供两个字节的SCLK,再将CSn拉高,以启动转换。SSTRB上跳变表示转换完成,用户提供两个字节的SCLK可读取转换结果。
MAX1032总共有三个控制字:模拟输入配置字、模式控制字和转换启动字。图2所示是模拟输入控制字和模式控制字的工作时序图。三个控制字均为8位。
对于模拟输入配置字,DO~D2是选择量程的,MAX1032总共有10种量程可以选择;D3是差分/单端选择位,为低表示采样信号为单端输入.为高表示差分输入。D4~D6是输入通道选择,总共有8个采样通道。D7是字开始位,置高表示字输入开始。
对于模式控制字,D0~D2必须为低,D3必须为高。D4~D6用于工作状态选择,总共有6种工作状态。D7是字开始位,同样,置高表示字输入启动。
转换启动字D7是字开始位,D4~D2是输入通道选择。用法和模拟输入配置字相同,操作时DO~D3必须为低。
三个控制字的输入顺序是模拟输入配置字,模式控制字,转换启动字。
3 硬件设计
图3所示是本系统的结构框图。由图3可见,模拟采样信号先经过一个运放。运放的作用是降低输入阻抗。以达到MAX1032输入阻抗小于17kΩ的要求。之后,再将利用CPLD控制MAX1032进行采样,采样结果回送至CPLD,之后经过处理后的数据传到系统,由系统再将一系列二进制数换算成最终的结果。框图里的系统可以是嵌入式微控制器,也可以是数字输入输出卡等控制系统。
图4所示是MAX1032的应用电路图。由于MAX1032只允许输入阻抗小于17 kΩ,而有的采样信号不一定能满足这一要求,故需要对采样信
号进行一定处理,以降低信号的输出阻抗。由于射极跟随器的输出阻抗趋于零,故将待采样信号连到射极跟随器上可以有效降低其输出阻抗。本文选用的运放为OP07,该运放具有很低的输入失调电压和漂移,而且精度相当高,适合作为模拟信号前置运放。如将OP07接成负反馈模式,使输出等于1+R1/R2,并将滑动变阻器R1调至0Ω,那么它就可以当做电压跟随器使用。
图4中,MAX1032的外部参考电压由LTC6652提供。LTC6652是高精度电位参考芯片,本文使用4.096 V作为MAX1032外部参考电压。REFCAP在此模式下可接到5 V电源。由于MAX1032是由CPLD控制,故将DVDDO连到3.3 V。
4 CPLD逻辑设计
CPLD和MAX1032的连接图如图5所示。其中,CPLD可以选用Ahera公司的MAXII系列器件EPM240或EPM570。
CPID的程序设计主要由两部分组成,第一部分是产生MAX1032的控制信号,第二部分是对MAX1032的输出结果进行处理。
clk_1MHZ为CPLD时钟,选1 MHz。通过CPLD可在内部对时钟进行分频,输出SCLK可作为MAX1032的输入时钟。DI由系统给CPLD输入,作用是选择MAX1032的控制字,同时也是CPLD的复位控制。DIN_out是给MAX1032加载的串行控制字,其加载时序可利用计数器控制。本例采用外部时钟模式,模拟输入配置字为10000110。第七位1是字开始标志;六到四位为0表示选择CH0通道输入,第三位为0表示采样信号单端输入;二到零位为110,表示量程选择0~12 V。模式控制字为10001000,第七位1是字开始标志,六到四位为0表示使用外部时钟模式。三到零位为100 0是芯片强制输入。加载完模拟输入配置字和模式控制字之后,就可以启动采样,以加载转换启动字开始采样。转换启动字为10000000时,第七位1是字开始标志,六到四位为0表示选择CH0通道输入,三到零位为0000是芯片强制输入。MAX1032控制协议和SPI类似,在SCLK的上跳沿输入,下跳沿输出。片选信号CSn时序利用计数器控制,每个控制字之间的CSn必须有一个高脉冲,脉宽至少40 ns(tCSPW),每个控制字输入完后,CSn可以立即拉高(tCSH)。以下是可综合的MAX1032控制程序的主要代码:
图6所示是Modelsim的仿真波形。SCLK上跳沿DIN_out的数据被MAX1032读取。
程序的第二部分的作用是将MAX1032输出的串行采样结果存入CPLD内部的一个14位寄存器。采样结果DOUT_in_S是14位的串行序列。CPLD在SCLK的上跳沿读取数据后,可将其存到一个内部寄存器,再由DOUT选择输出寄存器的高或低八位数据读出。最后的采样结果是并行输出的。总共2个字节,末两位数据无效。对于外部时钟模式,可从加载转换启动字开始计算,在第16个SCLK下跳沿,芯片将输入采样结果。得到结果即可按照公式(采样电压=12x(转换成十进制的输出结果)/16384)进行计算。以下是这部分功能的可综合代码:
图7所示是Moddsim仿真的CPLD读取MAX1032的采样结果并将其存入寄存器DOUT_P_buf的仿真图。由图可见,在启动采样后的第16个SCLK的下跳沿,MAX1032输出14位串行采样结果,CPLD将其存入内部寄存器中以待系统读取。一般在下一次采样之前,需要将CPLD复位来清除上一次采样的数据。由于外部时钟模式下的SSTRB始终为低,故本例没有对该信号进行处理。
5 结束语
本文介绍了利用CPLD控制MAX1032进行采样的实现方法,包括CPLD的内部逻辑设计和对采样信号的处理等。实验证明,该方法能够适用
需要使用CPLD控制外围电路的场合。
全部0条评论
快来发表一下你的评论吧 !