数-模(D/A)转换器
将实现数字信号到模拟信号的转换电流称为数模(D/A)转换器,简称为DAC(Digital - Analog Convert)。
目前常见的D/A转化器中,有:权电阻网络D/A转换器、倒T型电阻网络D/A转换器、权电流型D/A转换器、权电容网络D/A转换器、开关树形D/A转换器
一、数字信号的表达
在数字信号中,我们使用二进制对数字信号大小进行表达,比如一个n位二进制用Dn=dn-1*dn-2*……d1d0表示,其中一个多位二进制数中每一位的1所代表的数值大小称为这一位的权,从最高位(MSB)到最低位(LSB)的权依次为2^n-1、2^n-2、……、2^1、2^0
二、权电阻网络D/A转换器

如上图,S3、S2、S1和S0的状态分别受代码d3、d2、d1和d0的取值控制,代码为1时,开关接到参考电压Vref上,代码为0时开关接地。
该求和放大器是一个负反馈的运算放大器,理想放大器的开环放大倍数为无穷大,其输入电流为零(输入电阻为无穷大),输出电阻为零。
当参考电压经电阻网络加到V-时,只要V-稍高于V+,便在Vo产生很负的输出电压,V0经Rf反馈到V-端使V-降低,其结果必然使V-≈V+=0
在运算放大器输入电流为零的条件下可得:V0=-Rf*I=-Rf*(I3+I2+I1+I0)------------------①
由于V-≈0,因而各支路电流分别为

将各直流电流代入公式①中,并取Rf=R/2,可得:

对于n位的权电阻网络D/A转换器,当反馈电阻取为R/2时,输出电压的计算公式为

自此,我们可以提取出数字信号的表达形式:

即
,当Dn=0时,Vo=0,当Dn=11...11时,
这个电路的优点是结构比较简单,所用的电阻元件比较少,但它的各个电阻阻值相差比较大,尤其在输入信号的位数较多时,这个问题更加突出。如输入信号增加到8位时,如果取权电阻网络中最小的电阻为R=10K,那么最大的电阻阻值将达到2^7R=1.28M,其两者相差128倍之多。要想在极为宽广的阻值范围内保证每个电阻阻值都有很高的精度十分困难,尤其对于集成电路更为不便。
为解决该问题,可采用倒T形电阻D/A转换器.
三、倒T形D/A转换器

由图可知,电阻网络中只有R、2R两种阻值的电阻,这给集成电路的设计和制作带来了很大的方便
如下图,从AA、BB、CC、DD每个端口向左看过去的等效电阻都是R,因此参考电源流入倒T形电阻网络的总电流为I=Vref/R,而每个支路的电流依次为:I/2,I/4,I/8,I/16

若di=0时开关Si接地(即放大器的V+),而di=1时开关Si接放大器的V-,在求和放大器反馈电阻阻值等于R的条件下,
总电流:

在求和放大器反馈电阻为R的条件下,输出电压(Vo=-R*i∑):

同理,对于n位输入的倒T形电阻网络D/A转换器,在在求和放大器反馈电阻为R的条件下,输出电压

四、权电流型D/A转换器
在分析电阻网络D/A转换器和倒T型电阻网络D/A转换器的过程中,都把模拟开关作为理想开关处理,但实际中每个开关都有一定的导通电阻和导通压降,而且每个开关的情况也不完全相同,这些问题的存在会引起转换误差,影响转换精度。
如下图,权电流型D/A转换器,采用了恒流源,每个支路电流的大小不再受开关内阻和压降的影响。从而降低了对开关电路的要求。

对于恒流源电路,如下图:

只要电路保证Vb和和Vee稳定不变,则三极管的集电极电流即可保持恒定,不受开关内阻的影响,电流大小近似为:

当输入数字量的某位代码为1时,对应开关将恒流源接至运算放大器的输入端,当代码为0时,对应的开关接地,故输出电压为:

可见,Vo正比于输入的数字量
在相同的Vb和Vee取值下,为了得到一组依次为1/2递减的电流源就需要用到一组不同阻值的电阻,为减少电阻阻值的种类,在实际中经常利用倒T型电阻网络的分流作用产生所需的一组恒流源。如下图(为保证所有三级管的发射结压降相等,在发射极电流较大的三极管中按比例地加大了发射结的面积,在图中用增加发射极的数目来表示):

数-模(D/A)转换器的更多相关文章
- 当Python与数模相遇
数模有一个题目要处理杭州自行车在每个站点可用数量和已经借出数量,这数据在www.hzbus.cn上可以获取,它是10分钟更新一次的.这些数据手动获取,需要不停的刷页面,从6:00am到9:00pm,显 ...
- Python数模笔记-Sklearn(1) 介绍
1.SKlearn 是什么 Sklearn(全称 SciKit-Learn),是基于 Python 语言的机器学习工具包. Sklearn 主要用Python编写,建立在 Numpy.Scipy.Pa ...
- Python数模笔记-(1)NetworkX 图的操作
1.NetworkX 图论与网络工具包 NetworkX 是基于 Python 语言的图论与复杂网络工具包,用于创建.操作和研究复杂网络的结构.动力学和功能. NetworkX 可以以标准和非标准的数 ...
- Python数模笔记-NetworkX(3)条件最短路径
1.带有条件约束的最短路径问题 最短路径问题是图论中求两个顶点之间的最短路径问题,通常是求最短加权路径. 条件最短路径,指带有约束条件.限制条件的最短路径.例如,顶点约束,包括必经点或禁止点的限制:边 ...
- Python数模笔记-StatsModels 统计回归(4)可视化
1.如何认识可视化? 图形总是比数据更加醒目.直观.解决统计回归问题,无论在分析问题的过程中,还是在结果的呈现和发表时,都需要可视化工具的帮助和支持. 需要指出的是,虽然不同绘图工具包的功能.效果会有 ...
- Python数模笔记-StatsModels 统计回归(1)简介
1.关于 StatsModels statsmodels(http://www.statsmodels.org)是一个Python库,用于拟合多种统计模型,执行统计测试以及数据探索和可视化. 2.文档 ...
- Python数模笔记-Scipy库(1)线性规划问题
1.最优化问题建模 最优化问题的三要素是决策变量.目标函数和约束条件. (1)分析影响结果的因素是什么,确定决策变量 (2)决策变量与优化目标的关系是什么,确定目标函数 (3)决策变量所受的限制条件是 ...
- Python小白的数学建模课-A3.12 个新冠疫情数模竞赛赛题与点评
新冠疫情深刻和全面地影响着社会和生活,已经成为数学建模竞赛的背景帝. 本文收集了与新冠疫情相关的的数学建模竞赛赛题,供大家参考,欢迎收藏关注. 『Python小白的数学建模课 @ Youcans』带你 ...
- 【数学建模】数模day13-灰色系统理论I-灰色关联与GM(1,1)预测
接下来学习灰色系统理论. 0. 什么是灰色系统? 部分信息已知而部分信息未知的系统,我们称之为灰色系统.相应的,知道全部信息的叫白色系统,完全未知的叫黑色系统. 为什么采用灰色系统理论? 在给定信息不 ...
随机推荐
- [WCF编程]10.操作:流操作
一.流操作概述 在默认情况下,当客户端调用服务时,服务只有在接收到完整的消息后才会被调用,同样,客户端只有在包含了调用结果的返回消息被完整接受时,才会解除对它的阻塞. 对于数据量小的消息,这种交换模式 ...
- EC笔记,第二部分:6.若不想使用编译器默认生成的函数,就该明确拒绝
6.若不想使用编译器默认生成的函数,就该明确拒绝 1.有的时候不希望对象被复制和赋值,那么就把复制构造函数与赋值运算符放在private:中,但是这两个函数是否需要实现呢?假设实现了,那么你的类成员方 ...
- cursor.MySQLCursorDict Class
5.9.6.4 cursor.MySQLCursorDict Class The MySQLCursorDict class inherits from MySQLCursor. This class ...
- jquery实现表格动态添加
//点击追加触发$(function(){$("#button").click(function(){var div_ = $("#sel").val();va ...
- 【夯实PHP基础】PHP 面向对象
1. 对象中的属性或者函数是 private 或者是 protect的时候,当实例化这个对象的时候,外部是不能访问到这个属性和函数的. <?php class TestClass { //pri ...
- Android 实现QQ扩展listview(expandlistview)
Android 实现QQ扩展listview(expandlistview) <?xml version="1.0" encoding="utf-8"?& ...
- LoadRunner 实现监控Tomcat
LoadRunenr没有监控Tomcat的专用监控器,为了用lr达到监控tomcat的目的可以通过打开Tomcat自带的Status页面之后,利用lr的关联技术得到相关的数据,把数据输出到lr自定义的 ...
- 取出session中的所有属性与值的方法
如果你想取出session中所有的属性和值,可以通过getAttributeNames()方法来实现,具体代码如下 //获取session HttpSession session = request. ...
- 低调奢华 CSS3 transform-style 3D旋转
点击这里查看效果:http://keleyi.com/a/bjad/s89uo4t1.htm 效果图: CSS3 transform-style 属性 以下是代码: <!DOCTYPE html ...
- 软件开发流程 Software development process
软件开发流程(Software development process)即软件设计思路和方法的一般过程,包括设计软件的功能和实现的算法和方法.软件的总体结构设计和模块设计.编程和调试.程序联调和测试以 ...