电子说
1 分辨率
当知道一个A/D或D/A转换器的位数n时,就可以知道其分辨率的大小。此时,A/D或者D/A转换器的都或许知道其分辨率的定义式( 选择D/A转换器来说明 ):
当模拟量的范围( 如电压范围[ UMIN, UMAX] )确定之后,分辨率就可以用来确定当D/A转换器内部二进制数变化1时对应的模拟信号的变化量:
左边的B列表示D/A转换器对应的二进制值,U列代表电压。第二行从左到右分别表示二进制数的范围及电压的变化范围,具体的物理含义可表示当二进制从最小变化到最大时对应的电压也从最小变化到最大[ 采用数学中的比例思想可得到下面的比例等式 ]。那么当二进制值增加1( 上图中的1可理解为下一个二进制与上一个二进制值的差,以增1的方式进行 )时电压差值U( 可理解为当二进制值变化1后的电压值与之前二进制值对应电压的差值 )会相应的为多少呢?根据比例式求解就可以得到U的表达式:
这个表达式就证明了之前说的一句话,当模拟信号的范围确定以后,D/A分辨率的大小将决定模拟量的最小变化量。对于相同的模拟信号范围,当n值越大时,二进制每增加1对应的模拟信号的变化就越小[ 对整个模拟量范围划分的阶段更多 ],能表示的模拟信号的精度就越高。如UMAX=1, UMIN=0,n=8则D/A能输出0.0039这一点压值,但此D/A转换器永远输不出在此基础之上小于U的电压值如0.0039 + 0.09( 低于二进制变化一位电压变化的值了 )。这就是分辨率的作用和所追求的东西。每两个二进制值之间形成一个模拟量增量。
2 A/D或D/A的计算
不管是对于数模转换还是模数转换,其实都是根据事先设计好的二进制增1时对应的模拟量的增量值来计算。根据以上对分辨率的讨论可知,模拟量值从原来设定值变化到当前值需要变化的二进制值为多少呢,每变化一个二进制值模拟量就增加一个值U,直到增加到当前模拟量值。一般的A/D或者D/A转换器低分辨率的为8位,中分辨率的的有10位和12位,高分辨率的有16位,别看这8位的低分辨率( 值为0.00392 ),有效值也在小数点后三位。由以上分析分变率可知,分辨率与模拟量的乘积就是二进制每增加1时对应模拟量的变化增量[ 若模拟量范围为个位级,若输出模拟量的精度不需要精确到小数点后3位,则二进制增1操作不能引起模拟量的改变,若模拟量范围为十位级,若输出模拟量值精度不需要精确到小数点后两位,则二进制增1时模拟量输出不会改变,依次类推 ],10/12/16位A/D或D/A同样的道理。
2.1D/A通道数模转换计算
同理,D/A通道数模转换计算是已知模拟信号范围及知道一个二进制值时对应的模拟信号值。根据以上分析二进制下的模拟量计算公式应该为:
M为上次二进制值到当前二进制值变化的二进制值。根据分析的模拟量输出精度可知,若模拟量范围为个位级且输出精度不要求精确到小数点后三位,则二进制的增/减一个值不会改变模拟量的值。故上面的对U的计算公式就可以改成:
同理,当给定的二进制值M有-1的情况,如给定二进制值FFH时,就可以省掉-1项( 不影响结果 )。
2.2A/D通道模数转换计算
A/D通道模数转换计算是已知模拟信号范围及知道模拟量范围内的一个值时求对应的二进制数值。根据表1,可得已知电压值计算二进制值的公式如下:
<1> 根据以上所提到的精度问题,在不影响精度的条件下可以将2的n次方后的-1项去掉。
<2> 如果整个计算结果为小数,而对应二进制时需要整数来对应,此时是将这个小数的小数部分直接省掉作为计算二进制的整数呢还是将小数省掉后加1作为计算二进制的整数呢?其实随便取哪一个都不是很准确,但是在一定的误差要求范围内,应该是随便取哪一个都是可以的,可以取两个整数值来分别计算得到二进制值,然后再用此二进制值计算出对应的输出模拟量,选择误差较小的一个对应的二进制对应的模拟量值( 保证大者在最大值以下,小者在下限以上的前提下 )。
原文标题:AD转换原理
文章出处:【微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。
责任编辑:haq
全部0条评论
快来发表一下你的评论吧 !