DA卡设计微机原理课程设计.docx
《DA卡设计微机原理课程设计.docx》由会员分享,可在线阅读,更多相关《DA卡设计微机原理课程设计.docx(20页珍藏版)》请在冰豆网上搜索。
DA卡设计微机原理课程设计
微机原理课程设计
摘要
本文用DAC0832芯片构成16位D/A转换卡,它由控制逻辑电路、时序产生器、移位寄存器、D/A转换器及电压比较器组成。
DAC0832是8分辨率的D/A转换集成芯片,与微处理器完全兼容。
这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。
D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。
根据对DAC0832的数据锁存器和DAC寄存器的不同的控制方式,DAC0832有三种工作方式:
直通方式、单缓冲方式和双缓冲方式,将数字量转换为相应的模拟量。
数字量由二进制位组成,每个二进制的权,要把数字量转换为相应的模拟量电压,要先把数字量的每一位上的代码按权转换成为对应的模拟电流,再把模拟电流相加,最后由运算放大器将其转变成模拟电压。
关键词:
DAC0832;D/A转换卡;数据锁存器;双缓冲方式
目录
前言..............................................................................................................................3
一、设计的任务与要求................................................................................................4
1.1设计任务.......................................................................................................4
1.2设计要求.......................................................................................................4
二、总体设计和系统框图............................................................................................4
2.1方案选择.......................................................................................................4
2.2方案确定.......................................................................................................5
2.3系统框图.......................................................................................................5
三、设计方式................................................................................................................6
3.1缓冲工作方式...............................................................................................6
3.2将输入寄存器的内容写入DAC寄存器.......................................................6
3.3数模转换原理...............................................................................................6
3.4DAC0832芯片................................................................................................7
3.5DAC0832的引脚图........................................................................................9
3.6双极性电压输出.........................................................................................11
3.7正弦波程序产生流程图............................................................................12
四、系统仿真和调试..................................................................................................13
4.1系统仿真.....................................................................................................13
4.2软件程序设计.............................................................................................18
五、设计结果分析......................................................................................................21
5.1系统能实现的功能.....................................................................................21
5.2系统所选用器件一览表.............................................................................21
六、设计总结和体会..................................................................................................22
6.1设计总结.....................................................................................................22
6.2设计体会.....................................................................................................22
6.3设计分工.....................................................................................................23
致谢............................................................................................................................23
参考文献......................................................................................................................23
前言
自然界中存在的可测物理量,就其表现形式来看,可以分为模拟量和数字量两种。
模拟量的表现形式是连续的,数字量的表现形式是不连续的(离散的)。
由于数字信号更易存储和处理,使得数字处理系统在各个领域中的广泛应用,这样当处理模拟信号时需要将其转换成数字量,因为只有数字量才能被数字系统识别。
另一方面,在许多情况中,系统最后得到的数字结果又可能需要再变换成模拟量,来实现对某种控制和微调。
因此就要求模拟量与数字量之间相互能够进行转换的器件。
因此产生了两种不同的转换器:
将模拟量转换成数字量的装置称为模数转换器,它的输入是模拟量,输出是数字量,简称为A/D转换器或者ADC(AnalogDigitalConverter)。
反之,数字量转换成模拟量的装置称为数模转换器,它的输入是数字量,输出是模拟量,简称为D/A转换器或者DAC(DigitalAnalogConverter)[1-7].
一、设计的任务与要求
1.1设计任务
设计一块D/A卡,该卡具有对0~5V的模拟电压输出能力,该卡插在PC机的IMB—PC扩展总线插槽上,选择DAC0832作为DA转换器芯片。
选用芯片:
DAC0832等。
1.2设计要求
画出电路原理图,说明工作原理,编写利用该卡进行正弦波输出的程序。
二、总体设计和系统框图
2.1方案选择:
为了用DAC0832进行数/模转换,可以使用两种方法对数据进行锁存。
方案一:
本方案是使输入寄存器工作在锁存状态,而DAC寄存器工作在不锁存状态。
具体的说,就是使WR2和XFER都是低电平,这样,DAC寄存器的锁存端得不到有效电平;另一方面,使输入寄存器的有关控制信号中,ILE处于高电平,CS处于低电平。
这样,当WR1端来一个负脉冲时,就可以完成一次变换。
方案二:
本方案是使输入寄存器工作在不锁存状态,而使DAC寄存器工作在锁存状态,就是使WR1为低电平,CS为低电平而ILE为高电平,这样,输入寄存器的锁存信号处于无效状态;另外,WR2和XFER端输入一个负脉冲,从而使DAC寄存器工作在锁存状态。
这样做,也可以达到锁存目的。
2.2方案确定在此次设计中我们采用方案一对数据进行锁存。
2.3系统框图DAC0832进行数/模转换系统框图如图
(1)所示:
数/模转换系统框图
(1)
三、设计方式
3.1缓冲工作方式
利用D/A0832芯片的双缓冲工作方式将数字量转换成模拟量
3.2将输入寄存器的内容写入DAC寄存器
将输入寄存器的内容写入DAC寄存器即使WR1为低电平,CS为低电平而ILE为高电平,这样,输入寄存器的锁存信号处于无效状态,待转换的数据被写入输入寄存器;WR2和XFER端输入一个负脉冲,从而使DAC寄存器工作在锁存状态。
将数据写入DAC寄存器,同时启动变换。
3.3数模转换原理
数模转换原理如下:
1、D/A转换器可以视为微机的一种外围设备,实现D/A转换器和微机接口技术的关键是数据锁存问题。
当CPU向D/A转换器输出一个数据时,这个数据在数据总线上只持续很短的时间,必须有数据锁存器锁住这个数据,才能得到持续稳定的模拟量输出。
有些D/A转换器芯片本身不带锁存器,此时74LS273芯片以及可编程的并行I/O接口芯片8255A均可作为D/A转换的数据锁存器,有些D/A转换器芯片本身带有锁存器。
2、对于内部带数据输入寄存器的D/A芯片,使用时可以将D/A直接和数据总线相连。
以DAC0832为例来具体介绍D/A转换芯片的工作原理和使用方法。
D/A转换器原理图如图
(2)所示:
D/A转换器原理图
(2)
3、D/A转换器包括四个部分:
电阻解码网络,权位开关,相加器和参考电压。
4、D/A转换器的作用是将数字量转换为相应的模拟量。
数字量由二进制位组成,每个二进制的权,要把数字量转换为相应的模拟量电压(多数情况需要转换后的模拟信号以电压的形式输出),需要先把数字量的每一位上的代码按权转换成为对应的模拟电流,再把模拟电流相加,最后由运算放大器将其转变成模拟电压。
3.4DAC0832芯片
DAC0832芯片简单介绍如下:
1、DAC0832为8位电流DAC器件,该芯片为CMOS器件,单电源范围为+5V~+15V。
参考电压可在-10V~+10V范围内选择,转换速度约1us,输入待转换的数据保持时间应不小于90ns。
2、DAC0823内部有一个T型电阻网络,用来实现D/A转换,它需要外接运算放大器,才能得到模拟电压输出。
在DAC0832中有两级锁存器,第一级锁存器为输入寄存器,它的锁存信号为ILE,第二级锁存器称为DAC寄存器,它的锁存信号也称为通道控制信号XFER。
因为有两级锁存器,所以DAC0832可以工作在双缓冲器方式,即在输出模拟信号的同时可以采集下一个数字,于是可以有效的提高转换速度。
另外有了两级锁存器以后,可以在多个D/A转换器同时工作,利用第二级锁存器的锁存信号来实现多个转换器的同时输出。
3、数字量是由一位一位的数字构成的,每一个数位都代表一定的权。
比如,10000001,最高位的权是27=128,所以此位上的代码1表示数值1×128,最低位的权20=1,此位上的代码1表示数值1,其他数位均为0,所以,二进制数10000001就是十进制数129。
为了把一个数字量变成模拟量,必须把每一位上的代码按照权来转换为对应的模拟量,再把各模拟量相加,这样得到的总的模拟量对应于给定的数据。
在集成电路中,通常采用T型网络实现数字量向模拟电流的转换,再利用运算放大器来完成模拟电流到模拟电压的转换。
所以要把一个数字量变为模拟电压,实际上需要两个环节:
即先把数字量变为模拟电流,这是由D/A转换器完成的,再将模拟电流变为模拟电压,这是由运算放大器完成的。
在D/A转换时涉及的参数包括分辨率、转换精转换速率、建立时间、线性误差等。
4、根据能否直接和总线相连,目前市场上的D/A转换芯片可以分为两类。
其中有一类芯片内部没有数据输入寄存器,比如AD7520、AD7521、DAC0808等,内部结构比较简单,但是这些芯片不能直接和总线相连。
另一类芯片内部有数据输入寄存器,比如DAC0832、AD7524等,这些芯片使用时可以直接和系统总线相连。
3.5DAC0832的引脚图
DAC0832的引脚图如图(3)所示:
DAC0832的引脚图(3)
根据DAC0832的引脚图,图中各信号的定义如下:
CS片选信号,它和允许输入锁存信号ILE合起来决定WR1是否起作用。
ILE允许锁存信号。
WR1写信号1,它作为第一级锁存信号将输入数据锁存到输入寄存器中,WR1必须和CS、ILE同时有效。
WR2写信号2,它将锁存在输入寄存器中的数据送到8位DAC寄存器中进行锁存,此时传送控制信号XFER必须有效。
XFER传送控制信号,用来控制WR2。
D7~D08位数据输入端,D7为最高位。
IOUT1模拟电流输出端,当DAC寄存器中全为1时,输出电流最大,当DAC寄存器中全0时,输出电流为0。
IOUT2模拟电流输出端,IOUT2为一个常数和IOUT1差,也就是说,IOUT1+IOUT2=常数。
当DAC寄存器内容全为1时,IOUT1最大,IOUT2=0;当DAC寄存器内容全为0时,IOUT1=0,IOUT2=最大;
当DAC寄存器内容为N时,IOUT1=VREF×N/(256×Rfb),IOUT2=VREF/Rfb-IOUT1,
无论N值多大:
IOUT1+IOUT2=VREF/Rfb(1-28)=常数≌VREF/Rfb。
Rfb反馈电阻引出端,DAC083内部已经有反馈电阻,所以,Rfb端可以直接接到外部运算放大器的输出端,这样,相当于将一个反馈电阻接在运算放大器的输入端和输出端之间。
Vref参考电压输入端,此端可接一个正电压,也可接负电压,范围为-10~+10V。
外部标准电压通过VREF与T型电阻网络相连。
VCC芯片供电电压,范围为+5~+15V,最佳工作状态是+15V。
AGND模拟量地,即模拟电路接地端。
DGND数字量地。
即数字电路接地端。
3.6双极性电压输出
VOUT1=-IOUT1×Rfb=-VREF×N/(256×Rfb)×Rfb=-N/256×VREF,
VOUT1模拟输出电压的极性总是与VREF极性相反,为单极性输出。
VOUT2模拟输出电压可利用基尔霍夫节点电流定律列出方程:
VOUT2/10+VREF/10-VOUT1/10=0
代入VOUT1=-N/256×VREF,求解得:
VOUT2=(N-128)/128×VREF
当N=FFH时,VOUT2=5V
当N=00H时,VOUT2=0V
当N=80H时,VOUT2=2.5V.
VOUT2为双极性输出.可根据应用场合的需要,将D/A转换接口芯片接成单极性输出或双极性输出。
当要监视的物理量有方向性时,例如角度的正向与反向,速度的增大与减小等,与此相适应,要求D/A转换的输出必须是双极性的。
DAC0832对执行时序也有一定要求:
第一,选通脉冲应有一定宽度,通常要求≥500ns,当取VCC=+15V典型值时,宽度只要≥100ns就可以了。
此时器件处于最佳工作状态。
第二,数据输入保持时间应不小于90ns。
在满足这两个条件下,转换电流建立时间为1.0μs。
3.7正弦波程序产生流程图
正弦波程序产生流程图如图(4)所示:
正弦波程序产生流程图
四、系统仿真和调试
4.1系统仿真本设计采用的系统仿真软件为ISA卡,其资料如图(5)所示:
ISA卡资料图
ISA卡各引脚的名称及含义如下:
PinNameDescription
引脚名称含义
A1/I/OCHCKI/Ochannelcheck;activelow=parityerror
A2D7Databit7
A3D6Databit6
A4D5Databit5
A5D4Databit4
A6D3Databit3
A7D2Databit2
A8D1Databit1
A9D0Databit0
A10I/OCHRDYI/OChannelready,pulledlowtolengthenmemorycycles
A11AENAddressenable;activehighwhenDMAcontrolsbus
A12A19Addressbit19
A13A18Addressbit18
A14A17Addressbit17
A15A16Addressbit16
A16A15Addressbit15
A17A14Addressbit14
A18A13Addressbit13
A19A12Addressbit12
A20A11Addressbit11
A21A10Addressbit10
A22A9Addressbit9
A23A8Addressbit8
A24A7Addressbit7
A25A6Addressbit6
A26A5Addressbit5
A27A4Addressbit4
A28A3Addressbit3
A29A2Addressbit2
A30A1Addressbit1
A31A0Addressbit0
B1GNDGround
B2RESETActivehightoresetorinitializesystemlogic
B3+5V+5VDC
B4IRQ2InterruptRequest2
B5-5VDC-5VDC
B6DRQ2DMARequest2
B7-12VDC-12VDC
B8/NOWSNoWaitState
B9+12VDC+12VDC
B10GNDGround
B11/SMEMWSystemMemoryWrite
B12/SMEMRSystemMemoryRead
B13/IOWI/OWrite
B14/IORI/ORead
B15/DACK3DMAAcknowledge3
B16DRQ3DMARequest3
B17/DACK1DMAAcknowledge1
B18DRQ1DMARequest1
B19/REFRESHRefresh
B20CLOCKSystemClock(67ns,8-8.33MHz,50%dutycycle)
B21IRQ7InterruptRequest7
B22IRQ6InterruptRequest6
B23IRQ5InterruptRequest5
B24IRQ4InterruptRequest4
B25IRQ3InterruptRequest3
B26/DACK2DMAAcknowledge2
B27T/CTerminalcount;pulseshighwhenDMAterm.countreached
B28ALEAddressLatchEnable
B29+5V+5VDC
B30OSCHigh-speedClock(70ns,14.31818MHz,50%dutycycle)
B31GNDGround
C1SBHESystembushighenable(dataavailableonSD8-15)
C2LA23Addressbit23
C3LA22Addressbit22
C4LA21Addressbit21
C5LA20Addressbit20
C6LA18Addressbit19
C7LA17Addressbit18
C8LA16Addressbit17
C9/MEMRMemoryRead(Activeonallmemoryreadcycles)
C10/MEMWMemoryWrite(Activeonallmemorywritecycles)
C11SD08Databit8
C12SD09Databit9
C13SD10Databit10
C14SD11Databit11
C15