FPGA Peripheral ADC调试
FGPA外设中ADC是比较常见的,最近,调试的是来自于ADI公司的AD4001
本文的目的是从ADC内部的结构开始讲解,理清手册上时序的细节,和需要注意的地方
AD4001结构
AD4001采用差分输入,内部带有钳位电路
虚线框标注的高阻态模式、跨度压缩都是可以通过控制寄存器进行使能控制
信号到达内部16-BIT SAR ADC经过采样以后,通过数字部分缓存,然后经过SPI接口对外输出
SAR结构示意图
内部通过电容采样电路对外部信号进行采样
在采集阶段,电容阵列与外部输入信号相连, 外部信号对ADC内部电容进行充电
在比较阶段,电容阵列与外部输入信号断开,然后内部电容从MSB到LSB开关逐次打开,然后驱动后级比较器,输出比较结果,保存于后端的数字存储空间中
在输出阶段,SPI Master通过SPI接口将转换结果读出
AD4001支持很多种接口模式,这里以最简单的CS三线模式进行讲解
根据之前对ADC结构的介绍,这里就可以很好理解时序要求的原因
ADC通过CNV信号的上升沿,接通外部信号与内部采样电路,然后ADC会给出 t c o n v t_{conv} tconv最小值和最大值,并提供一个典型值,分析官方的demo程序,这个地方ADI采用的是max值
从采集结果的 MSB到SPI的第一个上升沿,可能存在延迟,所以转换完成结束以后,有个小的延迟
接下来就是标准的SPI波形,通过串行移位读采集的结果
钳位电路
钳位在电路中是限制电压的意思,钳位二极管是指用于在电路中将某点的电位进行限制的二极管。
分析与作用
在分析钳位二极管时,钳位二极管其中的一端所接的电位必须是恒压的,即假设该端的电位不会发生变化,作为参考电位端。而另一端则为被钳端,该端的电位是会发生改变的,是需要进行限制的端。通过二极管的钳位作用将被钳端的电位强制拉向参考端,这就称之为钳位。
钳位与稳压的区别:
钳位是将某点的电位进行限制,使其不大于或者不小于参考端的值,该点的电位是可变的,是利用二极管的正向导通特性来进行钳位。
稳压是将某点的电位稳定在某个恒定的值,电位不可改变,是利用二极管的反向击穿特性来进行稳压。
应用
在图中,若忽略二极管正向导通压降,则可认为Pin点电位范围被限制在[GND,VDD]。
假设二极管D1和D2的正向导通压降都是uD,反向击穿电压大于VDD+uD,Pin点的电位记作Upin,则:
①当Pin点的电位Upin ≥ (VDD+uD)时,此时D1会导通而将Pin点的电位限制在VDD+uD,D2截止;
②当Pin点的电位在范围(GND-uD) < Upin < (VDD+uD)时,D1截止,D2截止;
③当Pin点的电位Upin ≤ (GND-uD)时,D1截止,D2会导通而将Pin点的电位限制在GND-uD。
综上所述,Pin点的电位范围会被限制在(GND-uD) ≤ Upin ≤ (VDD+uD)。
若VDD=5V、GND=0V、uD=0.7V,则Pin点电位范围被限制在 -0.7V ≤ Upin ≤ 5.7V;
若忽略D1和D2的正向导通压降,则可认为Pin点电位范围被限制为 0V ≤ Upin ≤ 5V。
钳位二极管CLAMP会在电压高于 V r e r f V_{rerf} Vrerf之前导通,防止ADC被击穿。