我有一个14位ADC。但是,查看数据表(请参阅第5页的表2),有效位数(ENOB)始终小于12位。
为什么我的DAC仅具有12位精度时却声称自己是14位ADC?如果多余的两位毫无意义,那又有什么意义呢?
我有一个14位ADC。但是,查看数据表(请参阅第5页的表2),有效位数(ENOB)始终小于12位。
为什么我的DAC仅具有12位精度时却声称自己是14位ADC?如果多余的两位毫无意义,那又有什么意义呢?
Answers:
你被迷住了!
14位代表营销,硬件也给您带来了便利,因此他们会说您没有什么可抱怨的。数据表中ENOB的正上方提供了SINAD(信号噪声和失真)编号。那是72 dB,1位对应于6 dB的电平,因此72 dB的确是12位。最低的2位是噪声。
可以检索低于本底噪声的数据,但是它需要非常好的相关性,这意味着它必须非常可预测。
假设有人希望使用ADC为每次测量返回一个8位值来尽可能精确地测量一个稳定电压。进一步假设指定了ADC,以便对于(N-0.5)/ 100和(N + 0.5)/ 100伏之间的电压,名义上将返回N代码(例如,代码47将名义上表示介于0.465和0.475之间的某个值)。伏)。如果馈入精确为0.47183伏的稳态电压,人们希望ADC输出什么?
如果ADC始终输出代表输入落入的上述定义范围的值(在这种情况下为47),那么无论一个读数取多少,该值都将显示为47。不可能。
假设构造ADC,以便在将其转换为整数之前,将从-0.5到+0.5线性分布的随机“抖动”值添加到每个读数中?在这种情况下,47.183伏的电压将返回48的读数,大约是时间的18.3%,其他47.7%的时间返回47的值。如果一个人计算出10,000个读数的平均值,则应该期望它约为47.183。由于随机性,它可能会更高或更低,但应该非常接近。请注意,如果获取足够的读数,则可以达到任意级别的期望精度,尽管每个额外的位都需要将读取次数增加一倍以上。
对于ADC而言,精确地添加一个LSB的线性分布抖动将是非常好的行为。不幸的是,实现这种行为并不容易。如果抖动不是线性分布的,或者其幅度不是一个LSB,那么无论使用多少个样本,从平均中获得的实际精度将受到严重限制。如果不是增加一个线性分布的随机性的LSB,而是增加多个LSB的价值,那么达到一个给定的精度水平将比使用理想的一个LSB随机性需要更多的读数,但最终极限是可以达到的精度通过获取任意数量的读数将对抖动源中的缺陷不那么敏感。
注意,在某些应用中,最好使用不会抖动其结果的ADC。在人们对观察ADC值的变化比对精确值本身更感兴趣的情况下尤其如此。如果要快速解决+3单位/采样与+5单位/采样的增加速率之间的差异比知道稳态电压精确地是13.2或13.4单位更重要,那么非抖动ADC可能比静态电压ADC更好。抖动一个。另一方面,如果要比单次读数更精确地测量事物,则使用抖动ADC可能会有所帮助。
奖励课程:您确实确实获得了14位精度,但是只有12位精度。
一个额外的警告...有时您实际上想要随机性。
例如:
在加密(安全性/真实性)应用程序中,需要纯的“不可使用的”随机性。使用转换器的LSB(低于本底噪声的LSB)是生成纯随机数的快速方法。
当ADC硬件可用于其他目的(传感器等)时,这是一种快速而简便的方法来播种安全通信。您可以通过最大化输入放大器的增益(如果有的话)来增强效果(许多MCU提供了这样的功能),并使输入浮动。
ADC随机性主要来自两个物理原理:量化噪声和热噪声。
这些影响在宏观水平上具有阈值。例如,距离位边界足够远的数字不需要四舍五入,因此不会遇到量化误差或随机性。在大多数情况下,热噪声不会影响转换中的更高有效位。
通过扩展,您可以看到,改变转换参数(采样时间,深度,速率,参考电压)将通过移动随机性阈值(通过增大阈值来增大或减小阈值来减小结果)来影响结果的随机性。 )。通过改变环境/系统参数(温度,电源等)可以达到类似的效果。
就是说,许多成功的商业硬件随机数生成器都依赖于此技术,因为外部影响只会降低随机性-它们绝不会消除随机性(实际上是不可能的)。
您可以通过执行更多的转换并附加结果来补偿随机性的降低。STM32 Nucleo软件狗,FST-01(包括NeuG 1.0),LE Tech的Grang系列设备以及许多其他设备都使用了这种位扩展过程(连续转换的低位串联)。
Grang设备通过每秒进行超过4亿次转换(每次转换1位)来生成位。如果进行足够的转换,即使面对环境条件,也可以保证高度的随机性。