当前课程知识点:微机原理与接口技术 > 第13周 模拟量的输入输出 > 第53讲 D/A转换器 > D/A转换器_02
0832这个内部结构图大家看到里
这个虚线框这就是0832的
这个外部的结构
也就是这个虚线框是这个芯片的外延
那么外面就是所有它的引脚
那么这个虚线框里面
就是它的内部的结构
在这个内部结构里
我们现在看最右侧
这个是DA转换器
也就是说它是负责将D转换成A的
就是刚才我们讲的主要核心的
那个纯电阻网络
和运算放大器
那么它的前边还有这样两个框
最左边的这个我们叫
8位输入寄存器
后边的这个叫DAC寄存器
DA转换器我们已经知道了
它是一个接口啊
接口里的寄存器是什么昵
实际上就是端口
那么每一个端口它都要有一个地址
对于这样子的一个
DAC寄存器DAC0832
这样的一个接口来讲
它里面非常明确的告诉你
有2个叫寄存器的东西
也就是说它应该有两个端口
2个端口按我们之前
学数字接口电路我们可以
推理出来它应该
有一柜片内地址信号
用来区分这两个端口地址
但是在我们所有这个外延的
引脚信号里头
我们没有看到我们熟悉的
A1A0这样子的地址信号
那么就是意味着什么
意味着2个端口或者说两个寄存器
它们的端口地址
都是直接由外部移码电路来确定的
也就是说它们不是说先选中这个芯片
再去选这个芯片当中哪个地址
而是每一个端口
都独立对外有地址
好现在我们来看它们怎么个
独立对外有地址法
它的工作过程是这样
系统要或者简单的说CPU
现在要把数字信号转换成模拟信号了
所以CPU先输出一个数字信号
这个数字信号经过数据总线
就走到了这个输入寄存器的门口
但是进不去
输入寄存器我们现在因为大家
在我们这门课里
唯一接触到的带锁存能力的这个端口
就是D触发器
我们现在就可以想象成这个是
8个D触发器
好走到门口以后
D触发器总是要打开的对吧
怎么样打开昵
好我们现在看它的开门信号
是LII这个是低电平有效的开门信号
也就是说必须要在这里有
低电平有效的时候
这个输入寄存器才是开门
那么如何让这个LII低电平有效昵
我们看它的前边
必须是LE1是高电平
WR1是低电平
CS必须为低电平
那么这个LE1就为低电平
CS是我们已经很熟悉的片选信号
所以CS一定连接到哪里
连接到移码器的输出端
那么移码器的输入就是各位地址信号
那么在这里可能就是高位地址信号
或者是全部的端口地址信号
那么也就是说当你的
A0最多有可能是A0到A15
这16位端口16位地址信号
出现某一个编码组合的时候
这个移码器正好输出低电平
这个低电平正好连接到CS端
那么如果这个时候你同时
产生了一个LOW信号
也就说你执行了一条OUT指令的话
那么这个LW信号
会连接到这个WR1端
然后这两个都是低电平的时候
它们的或非门会输出高电平
如果这个时候L L1这个引脚
也同时为高电平的话
2个1就会使得与非门输出低电平
好了LE1就为低电平了
那么这个输入寄存器就开门了
一旦开门
刚才它处于它门口的这
现在红颜色的这个8位的数据信号
就通过它出去了
出去到哪了
就出去到了DAC寄存器的门口
同样的我们现在DAC寄存器也没有开门
这个数据进不去
所以下面我们就要把数
DAC寄存器要开门
那么现在刚才我们说寄存器
从输入寄存器这就
已经缓存一道了
缓冲了一下了
我们说D触发器我们也可以说是
保持有保持功能
由缓冲缓存功能
有锁存功能等等
这些意思都对它来讲都是一样的
那么现在我们也可以认为这个
8位的输入寄存器
我们也可以说它是一个缓冲缓冲器
好缓了一下冲出去了
冲到DAC寄存器的门口了
那么它也没开门
现在我们又缓不进去了
又冲不进去了
我们怎么样我们把它再
要它开门它怎么能够开门昵
它要求LI2必须低电平
如何实现LE2低电平昵
这个WR2必须低电平
WR2我们知道实际上就是写允许
也就是说这个时候我们要产生
再使得LW信号有效
怎么样使LW信号有效
这是我们要再来一条OUT指令
那么另外一个就是XFER
XFER实际上
大家现在能够感觉到
它就是片选信号的意思
也就是说它是DAC寄存器的片选端
那么它那么既然是片选信号
它也就连接到移码器的输出
那么移码器的输入就是还是
16位的地址信号
也就说这个时候可能A0到A15
出现了另外一种编码组合的时候
这个移码器的输出
产生低电平正好连接到XFER段
好了如果这个时候
它们2个都同时为低电平有效了
那么DAC寄存器就开门了
DAC寄存器一旦开门
这个数据门口的数据就进去了
进去以后就进去了
进去以后怎么办昵
进去以后
它就从它那里就直接出去了
按照我们触发器的原理
就一旦进去它就到了它的门口
好了到了它的门口之后
就进到了DAC转换器
因为DAC转换器已经不需要控制了
它就直接开始转换
因此这个电路就带给我们了什么
带给我们了这里头首先有两
到缓冲的这样的一个门
我们刚才的描述过程里头
我们先开了输入寄存器的门
接着又开了DAC寄存器的门
就说我们缓冲了2次
这就是0832它的一种工作模式
叫做双缓冲模式
那么这个听上去很麻烦
就说如果我们假设这个
外面这个虚线框是我们总个家的话
我们只要大门打开就OK了
我们进去的是卧室门是不需要开的
不需要锁的了
所以这样的话我们
可以让卧室一直开门
也就是如果我们假设LI2
就是我们的卧室门的话
我们正常我们一家人的话
我们可以让LE2一直是低电平
也就是DAC寄存器始终是开门状态
为了让它开门
我们WR2和XFER
就让它始终是0是低电平
那么这个时候
我们只要把这个8位输入寄存器开门
数据就可以进去转换了
这就是一道缓冲门铃
当然还有一种可能我们
大家总天都开着门
以后我们到了共产主义
我们大门都是开着的
那么这个时候就没有缓冲
大家都不缓冲
所以这个0832就有了这样
3种工作模式
我们下面把3种工作模式
简单给大家介绍一下
首先刚才我们说的是单缓冲
也就是说DAC寄存器始终处于
长通状态始终处于开门状态
我们只需要控制输入寄存器
因此这个时候我们只需要一次写操作
让WR1有效
我们只需要一次选中
也就是产生一个片选端
就是说一个端口地址
使得CS端有效
我们让LL1
保持在需要的时候保持高电平
我们就可以把数据输出到里头了
到了它以后
因为它一接一旦开门
如果DAC寄存器始终处于开门状态的话
那么从输入寄存器进去的数据
就可以一直进去
走到DAC转换器那个地方了
因此昵这种工作模式下
它的软件控制
也就变得比较简单了
也就说一个端口地址就是8位输入
输入寄存器端口的地址
然后要转换的数据就是DATA
然后要转换的内容就是AL的值
这就是单缓冲工作模式
我们现在把刚才那张图翻回去
这是我们其实是
左侧这些输入
从连接系统的这边的信号
实际上刚才我们还忘记了
输出端还有一些信号
输出端的信号大家可以看一下
刚才我们说它是一个差动输出的
所以它有LOT1 LOT2两路输出
我们如果要把2个电流输出
变成电压输出的话
外面再要加运算放大器
另外还有一个反馈电阻的输入端
以及模拟量接地
数字接地端
这些我们不在一一介绍了
好下面我们来通过一个事例来
看一下单缓冲模式是怎么应用的
这个这底下这个图我们很容易看出来
它就属于单缓冲模式
为什么昵这里大家可以看到
XFER和WR2都直接接地了
一旦接地说明它们都是
始终处于低电平状态
因此DAC寄存器就属于长通状态
一直开门状态
这个时候我们要控制的就是8位输入
寄存器了
我们现在这个题目是要求希望
通过这样一个芯片
能够在它的输出端
产生一个3角波的
这样的一个波形信号
3角波是个什么样子的波形昵
是这样一个波形
也就是说从假设我们一开始是
是0的话
它就可以爬爬爬爬到最高
然后到了最高昵
然后又兜兜兜降到最低
如果我们没有其他附带的要求
我们这个DAC寄DA变换器
它的输出端的输入端
输入的数字量最小的就是0
那么我们其实就是从0开始
那么它的最大输入的数字信号
就是FF
假设这里的按照这个图里面
它接着电压最大的峰值电压是5伏
那么也就说0对应的就是0伏
数字量FF对应输出的就应该是5伏
所以等它爬到最高到5伏的时候
它就又要降低
然后直接一致下去
这就是一个连续的3角波信号
怎么样能产生这个三角波信号昵
光有这个硬件电路是不行的
所以我们下面需要通过软件
来实现这个三角波
从这个三角波的波形
大家能够想得到怎么实现了
实际上
我们就是先要变成输出一个数字0
通CPU输出一个数字的0
然后通过它就转换成0伏
接着我们要输出数字1
然后它就然后是2然后
这样慢慢慢慢三角波就上上去了
虽然这三角波不可能
如果直接输出一个三角波
不会是这样平滑
它一定是一个台阶式的
但是它毕竟是一个三角波的形状对吧
因此我们下面来编写这个程序
就是这样
首先我们假设这刚才这个图里头
可以看出来它的端口地址也就是
CS这个端的端口地址
是0278
那么现在首将AL清零
然后我们就把AL输出
输出完了以后我们把AL加一
然后只要它不等于FF
我们就一直出一直出
直到它等于FF了
怎么办了现在要减
再接着把AL再减一减一
一直减到什么时候一致减到0
然后直到结束
直到它减到0了
然后又开始回去让它再加
这就是构成一个三角波的波形
这个程序里头我们没有考虑
它的幅度是不是
一定是0到最高到5伏
也没有考虑它输出波形的频率
那么如果我们直接执行这个程序
在我们今天的这样子的一个
高速的微型计算机上产生的话
大家会看到的根本不是我们刚才
画出来的那样一个
非常清晰地平滑的晃
就是缓慢的一个三角波
而是一个全部类似于尖峰波这样子的
甚至有可能就是一条线
你根本看不出来
因此了我们希望大家考虑一下
如何实现
对于通过软件实现
对这个三角波幅度和频率的调整
也就是说我们希望它
真正的实现这样的一个比较
缓的这样一个坡度的三角波
这个程序就希望大家自己来编写
或者考虑
这个是单缓冲模式
那么单缓冲模式昵
它主要应用在什么昵
就是这一个芯片
带驱动一个执行机构的时候
我们需要我们可以用单缓冲
因为它毕竟线路可以简单一些
让另外一个缓冲器不要控制
那么如果我们有多个执行机构
希望能够同时进行转换的时候
我们用单缓冲模式
就不合适了
为什么昵
我们现在想我们就一个CPU
或者说一台计算机
我们现在要控制8个执行机构
同时工作
那么这8个执行机构
每一个执行机构的前端
前边实际上就是它的模拟量输出通道里
都有一个DA转换器
对于CPU来讲
一次次能输出一位数据
假设我们第一次让第一个
给控制第一个转换器启动
我们给它发了一个命令
然后这个命令是数字信号
通过连接到的DA
通过它连接的DA转换器
把它转成模拟信号
然后控制它启动
接着我们才能从系统又发送
第二个执行机构的控制信号
然后利用第二个
连接的DA转换器
转换成模拟信号
让第二个执行机构开始工作
依此类推
那么这样子不论CPU
工作的时间工作的速度有多么快
因为DA转换器
和未来的线路
和它的执行机构
它毕竟有一些器件的延迟
这样就会产生一个什么效果
就这8个执行机构
不会同时开始工作
那么假设我们现在就要求8个执行机构
必须同时工作
必须同步工作的话
这种方式就达不到了
因为同步控制在很多场合
实际上都有应用
比如现在我们轧钢车间的钢板
那个每一个滚轮的调整
比如大家要快要慢啊
都必须要同步进行
因为一旦不同步
这个钢板轧出来的
不是厚了就是拉断
所以这个就会影响它的产品的质量
那么我们怎么样又想
达到这样一个功能
我们就可以用到双缓冲模式
双缓冲模式就是
还是我们刚才那个案例
我们对第一个执行机构的控制命令
我们从系统发出来以后
写入到它第一个执行机构
前面的那个DA转换器里头
但是写进去以后我们
只写到了这个
DA转换器的输入寄存器里
我们刚才已经知道
进入输入寄存器之后
实际上它根本不可能开始转换
因为DAC寄存器还没通过昵
好我们把那个数
存到它里面的输入寄存器里
接着我们再对
第二个控制执行机构的控制命令
我们在输出到它第二个执行机构
的那个连接的DA转换器
送到它里面的输入寄存器里
也存在这里
然后把8个都输出完了以后
好了现在我们发一道命令
同时打开这8个DAC
转换器里面的DAC寄存器
这样的话命令8个命令就同时发出
这就是双缓冲模式主要应用场合
所以双缓冲模式
就是当你需要有多个设备
同时进行工作的时候
或者同步控制的时候
我们必须要用到这样
这种时候昵
这个芯片它就占
对外占有2个端口地址
它的优点就是可以
实现这样同步控制
当然它的缺点
就相对的要复杂一点
所以双缓冲工作模式
主要用在分时写入
同步转换这样的工作场合
我们看一下它的工作时序
也就是说首先我们把要控制的命令
写入到它的输入寄存器里
在这3位信号有效的时候写进去
然后昵我们接着发出
DAC寄存器的控制信号
这样在它们有效的时候
数据进入到它们对应的DAC寄存器
然后就开始转换
这个是它的工作时序
我们也用这样一个示意图
来描述一下双缓冲工作模式
下的工作力
在这个示意图里头
首先我们通过PORT1这个端口
将控制命令写入到
第一片0832的输入寄存器里
接着昵我们再通过PORT2这个端口
将控制命令写入第二片0832的
输入寄存器里头
然后呢我们同时
产生一个控制信号
使得这两片0832的
XFER端同时有效
这样的话也就说同时打开了
这两片0832的DAC寄存器
然后它们就同步开始转换
这个图用这个工作
用软件来实现就是这样子的一个方式
我们首先把PORT1的端口地址
以及要输出的数据输入到
写入到第一片0832的输入寄存器里
接着昵我们还是把这个数据
通过PORT2写入到第二片
0832的输入寄存器里
当然这里的PORT1
就是第一片0832的输入寄存器
的端口地址
PORT2就是第二片0832的
输入寄存器的端口地址
那么二片0832
它们的DAC寄存器具有同样的地址
也就是它们的XFER要并联在一起
共同使用了PORT3这个地址
然后通过OUT指令
产生一个WR2的有效信号
所以这样子的话
2片0832的DAC寄存器
就同时开门了
这个时候AL的值
已经是无所谓了
因为这个时候2片0832它们
DAC寄存器所接受的信号
是它们各自输出的值
那么最后我们来说一下5缓冲
刚才我们举了家里的这个例子
我们说单缓冲模式
就类似于你们家的大门是锁的
但是里面所有的卧室都是打开的
因为在一个家里
通常我们的卧室是不需要再上锁
双缓冲模式昵就相当于你们
2个人共租了一套房子
那么打开了大门之后
各自还要打开各自的卧室门
这就相当于双缓冲
那么5缓冲模式昵
等于就是大门都不打开了
当然今天我们还没有到共产主义社会
所以不可能这样家里大门是不锁的
如果你的家里大门不锁
那么一定外头有一个
更严谨的外墙的所锁把它锁起来
所以5缓冲模式昵
我们是不能直接跟CPU去连接的
那么如果你一定要让你的
DAC转换器工作在5缓冲模式下
那么外边
它的前边一定要加数字接口
也就是说DAC0832
和系统之间
要再加一层数字接口
虽然今天实际的工程应用中
他们中间一定有个数字接口
但是理论上它们可以在
除了5缓冲模式之外
它们的之间是可以不加这个数字接口
DA转换器在工业中的应用
主要有两个方向一个就是
作为信号发生器
产生各种我们需要的波形
比如刚才我们那个例子里
看到的三角波
还可以产生各种锯齿波
有正向锯齿波反向锯齿波等等
当然它更多的应用
就是作为工业闭环控制系统中
模拟量输出通道中的核心器件
来使用的
有关那方面的应用
不是我们这门课程的主要内容了
所以我们下边就不在给大家做事例了
好了有关DA转换器的介绍
我们今天就到这里
-第1讲 关于本课程
--关于本课程
-第2讲 微型计算机系统
--微机系统_01
--微机系统_02
-第3讲 微型计算机一般工作过程
-第4讲 数制与编码
--计算机中的编码
-第5讲 计算机中数的表示与运算
--数的表示
--符号数的表示
--数的表示与运算
-第6讲 基本逻辑运算与逻辑电路
-第7讲 本周小结
--本周小结
-第1周 微型计算机基础概论--第一周单元测验
-第8讲 8088微处理器
-第9讲 8088 CPU主要引线及机构
-第2周 8088微处理器--第二周单元测验
-第10讲 实模式存储器寻址
-第11讲 8088系统总线
--8088系统总线
-第12讲 微处理器小结
--微处理器小结
-单元测验--作业
-第13讲 指令概述
--指令概述
-第14讲 寻址方式
--寻址方式
-第15讲 通用数据传送指令
-第16讲 地址传送指令
--地址传送指令
-第17讲 输入输出指令
--输入输出指令
-第4周 数据传送指令--第四周单元测验
-第18讲 算术运算指令
--加法运算指令
--减法指令
--乘除运算指令
-第19讲 逻辑运算指令
-第20讲 移位操作指令
--移位操作指令
-第5周 算术运算、逻辑运算与移位操作指令--第五周单元测验
-第21讲 关于串操作指令的说明
--串操作指令说明
-第22讲 串传送与串比较
--串传送与串比较
-第23讲 串扫描指令
--串扫描指令
-第24讲 串装入与串存储指令
-第六周单元测验--作业
-第25讲 程序控制指令说明
-第26讲 转移类指令
--无条件转移指令
--条件转移指令
-第27讲 循环控制指令
--循环控制指令
-第28讲 过程调用指令
--过程调用指令
-第29讲 中断指令
--中断指令
-第30讲 处理器控制指令
--处理器控制指令
-第31讲 指令系统小结
--指令系统小结
-第7周 程序与处理器控制--第七周单元测验
-第7周 程序与处理器控制--第七周作业
-第32讲 汇编语言源程序
-- 汇编语言源程序_01
-- 汇编语言源程序_02
-第33讲 伪指令
--数据定义伪指令
--其它伪指令
-第34讲 系统功能调用
-第35讲 汇编语言程序设计示例详解
--程序设计示例1
-第36讲 汇编语言程序设计小结
-第8周 汇编语言程序设计--第八周单元测验
-第8周 汇编语言程序设计--第八周作业
-第37讲 半导体存储器概述
--半导体存储器概述
-第38讲 内存单元编址
--存储单元编址
-第39讲 随机存取存储器RAM
-- RAM_01
--RAM_02
-第40讲 只读存储器ROM
--ROM_01
--ROM_02
-第九周单元测验--作业
-第41讲 半导体存储器扩展
--存储器扩展_2
-第42讲 半导体存储器小结
--半导体存储器小结
-第十周单元测验--作业
-第十周作业--作业
-第43讲 基本I/O接口
-第44讲 简单接口芯片
--简单接口芯片
-第45讲 基本输入输出方法
--基本I/O方法
-第46讲 简单I/O控制系统设计
-第47讲 中断技术
--中断技术1
--中断技术2
-第48讲 输入输出与中断技术小结
--本周小结
-第十一周单元测验--作业
-第49讲 可编程定时计数器
-第50讲 可编程并行接口
-第51讲 可编程接口小结
--本周小结_01
--本周小结_02
-第十二周单元测验
-第52讲 模拟量的输入输出
--模拟量的输入输出
-第53讲 D/A转换器
-第54讲 A/D转换器
-- A/D转换器_01
-第十三周单元测验--作业
-第55讲 I/O接口系统综合设计示例详解I
-第56讲 综合设计示例详解II
-第57讲 结束语
--结束语