大量设备都使用数/模转换器(DAC)来实现各种各样的功能。高精度、电压输出DAC的常见应用有仪器仪表、自动测试以及测试/测量设备。在这些应用中,DAC产生直流电压或任意波形。
对于这些电路,使用电压输出DAC进行设计的最具挑战的部分就是真实了解这种怪兽在其规定精度范围之内到底能够跑多快。如果某款设备的时钟频率为50MHz,那么就电压输出更新速度来说,这意味着什么?或者,除了知道时钟频率之外,还需要更多信息吗?
电压输出DAC采用FIFO方式,也就是先进先出(图1)。通常情况下,用户将DAC的输入数字数据(DIN)装载到DAC内部串行输入寄存器,而将之前的数据编码锁存到N位DAC。
图1. 高精度、电压输出DAC的通用方框图
LDAC(装载DAC)引脚为高电平时,串行数据流与SCLK(串行时钟)配合,装载DAC的串行输入寄存器(图2)。输入寄存器填满之后,LDAC低电平则将串行输入寄存器装载到N位数据锁存器。LDAC再次变为高电平,模拟输出电压通过OUT引脚输出并稳定到最终值。在建立时间期间,串行输入寄存器接收下一个编码。
图2. 高精度、电压输出DAC的通用时序图
理想情况下,DAC的理论吞吐速度等于SCLK/N,其中SCLK为外部时钟速率,N为DAC的位数。例如,对于16位DAC,最大时钟速率为50MHz,吞吐率为50MHz/16,即3.125MHz。
这是很了不起的DAC吞吐率!然而,这是非常不现实的,特别是如果您将模拟输出电压设置为满幅或满摆幅输出。在这种情况下,您需要时间使输出稳定到其满幅值。
建立时间决定一切
所以,我们还是回到现实吧。高精度应用中的建立时间决定DAC的有效更新率,而不取决于时钟的数据率。DAC的模拟输出频率结构通常是一阶的。对于较大的信号,很容易利用R/C电路建立这种响应的模型。对于这种电路,可用以下公式描述模拟输入/输出行为。
VOUT = VIN(1 – e-t/RC)
式1式中:
VOUT ➔ 模拟输出电压
VIN ➔ 模拟输入电压
R ➔ DAC输出电阻
C ➔ DAC输出电容
图3所示为DAC系统的模拟信号建立时间响应,包括死区时间、摆动及线性建立部分。
图3. DAC的理论输出建立时间
死区时间是DAC使用数据锁存寄存器更新模拟输出的时间。如果发生较大的模拟输入阶跃,DAC将进入摆动区。在该信号响应结束时,最终值为理论最终值的±1/2 LSB。
DAC的数据手册会列出建立时间指标。以MAX5717 16位、50MHz、电压输出DAC为例,建立时间为0.75us。初看之下,会以为DAC的吞吐率为50MHz除以16,即2.33MHz。如果您将DAC的建立时间考虑在内,该DAC的实际吞吐率为建立时间的倒数,即1.33MHz。
重要的工作优先
大量使用DAC的设备都要求DAC行为实现最优化,这取决于系统要求。对于仪器仪表、自动测试和测试/测量应用,吞吐率是主要技术指标。DAC精度性能的细节非常重要,但切记建立时间是使您能够立即洞察DAC速度是否足够满足电路的最佳指标。
关键字:寄存器 dac
编辑:王磊 引用地址:DAC产生直流电压或任意波形
推荐阅读最新更新时间:2023-10-12 21:05
什么是单片机特殊功能寄存器?作用是什么?
什么是特殊功能寄存器?
答:特殊功能寄存器是用来对片内各功能模块进行管理、控制、监视的控制寄存器和状态寄存器,是一个特殊功能的RAM区。
MCS-51单片机特殊功能寄存器的作用是什么?
答:特殊功能寄存器的作用是对片内各功能模块进行管理、控制和监视。
[单片机]
多个AD9779 TxDAC器件的同步
简介
AD9779 TxDAC的DAC输出采样速率最高可达1 GSPS.在某些应用中,例如需要波束导引的应用,用户可以同步多个AD9779.因此,当AD9779以接近最高速度工作时,TxDAC时序特性变得至关重要。
本应用笔记不讨论AD9779运作涉及到的全部细节。若要全面了解其内部数字引擎,用户应参阅AD9779数据手册。本应用笔记扩展了SYNC_I的使用,使多个AD9779器件实现相同的REFCLK/DATACLK同步。
在传统的插值TxDAC中,当DAC采用DAC输出采样速率时钟驱动时,会产生两个问题。第一,可能难以确定输入数据在哪一个DACCLK沿锁存。多数DAC解决这一问题的方法是提供
[电源管理]
STM32 HAL库学习系列第1篇 ADC配置 及 DAC配置
ADC工作均为非阻塞状态 轮询模式 中断模式 DMA模式 库函数: HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef* hadc);//轮询模式,需放在循环中不断开启 HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef* hadc); HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout);//等待转换结束,只适用于轮询 HAL_StatusTypeDef HAL_ADC_PollForEve
[单片机]
51单片机串口通信
这节我们主要讲单片机上串口的工作原理和如何通过程序来对串口进行设置,以及根据所给出的实例实现与PC 机通信。
一、原理简介
51 单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;能同时接收和发送的串行口称为全双工串行口。串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本,适合远距离通信。其缺点是传输速度较低。
与之前一样,首先我们来了解单片机串口相关的寄存器。
SBUF 寄存器:它是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据,可通过指令对SBUF 的读写来区
[单片机]
ATmega48 状态寄存器
状态寄存器包含了最近执行的算术指令的结果信息。这些信息可以用来改变程序流程以实现条件操作。如指令集所述,所有ALU 运算都将影响状态寄存器的内容。这样,在许多情况下就不需要专门的比较指令了,从而使系统运行更快速,代码效率更高。 在进入中断服务程序时状态寄存器不会自动保存,中断返回时也不会自动恢复。这些工作需要软件来处理。 AVR 中断寄存器 SREG 定义如下: ·Bit 7 – I: 全局中断使能 I 置位时使能全局中断。单独的中断使能由其他独立的控制寄存器控制。如果I 清零,则不 论单独中断标志置位与否,都不会产生中断。任意一个中断发生后I 清零,而执行RETI 指令后I 恢复置位以使能中断。I 也可以通过SEI 和CL
[单片机]
STM8学习笔记---寄存器操作之位或和位与运算
刚开始学习STM8单片机时,看别人的代码,在设置寄存器的时候经常使用,位或、位与、左移、右移等运算,就很不理解,为什么不直接给寄存器赋值,非要搞的这么复杂。直到后来程序写的多了,才明白这样写的好处。比如我们现在要设置PB5口为输出口。首先我们需要设置PB口的方向寄存器PB_DDR。 我们要设置PB5口为输出,那么就要把DDR5位设置为1。那么要设置的寄存器PB_DDR寄存器二进制数据为 0010 0000,转换为16进制为 0x20。设置寄存器的语句为 PB_DDR = 0x20; 这样操作寄存器看起来没什么问题,也挺方便。唯一的问题就是每次要先将设置的二进制数确定好,然后再转换为16进制数,再赋值给寄存器。代码少的时
[单片机]
缓冲寄存器的结构和工作原理
它是用来暂存某个数据,以便在适当的时间节拍和给定的计算步骤将数据输入或输出到其它记忆单元中去,下图是一个并行输入、并行输出的4位缓冲器的电路原理图,它由4个D触发器组成。 启动时,先在清零端加清零脉冲,把各触发器置0,即Q端为0。然后,把数据加到触发器的D输入端,在CLK时钟信号作用下,输入端的信息就保存在各触发器中(D0~D3)。 图片1
[单片机]
关于PLC编程的12个建议
编程建议 1、PLC和上位机(或触摸屏)组成监控系统时,在画面上很多时候需要有“手动”、“自动”等控制模式(一般都是多个只能一个时)。在程序里面可以用“MOV”指令。如:当选择“手动”就将常数1 MOV到一个寄存器VB10里面,当选择“自动”就将2 MOV到同一寄存器VB10。只要判断寄存器的数据是多少,就知道系统是那种控制方式。这样的思路好处是容易理解,不需要互锁之类的麻烦程序。 2、程序有模拟量控制时,如果读取的模拟量基本上没误差,可以采取时间滤波的方式,延时一段时间。如果读取的数据误差很大,就需要采取其它的滤波方式,如算平均值等。可以查阅相关的资料。 3、在程序调试过程中(特别是设备改造时,你的程序是加入到原来设备的程序中时
[嵌入式]