基于FPGA的∑-Δ D/A转换器的设计与实现

引言

  在各类电子系统中,数字电路所占比重越来越大。这主要是因为数字电路相对于电路有一些突出的优点,例如:1数字电路中的有源器件工作在饱和区与截止区,工作状态稳定;2数字电路处理的是二值信号,易于存储和再生;3数字电路是由大量相同的基本单元,如门、触发器等所组成,易于大规模集成,易于自动化设计工具的应用等。再加上数字计算机和数字信号处理技术的迅速发展,使得数字电路从集成规模、应用范围及设计自动化程度等方面都大大超过了模拟电路,越来越多的由模拟电路实现的功能转由数字电路实现,进入了电子系统设计的数字化时代。

  1变∑-δ换的原理

  ∑-δ变换采用过取样技术,将信号按时间分割,保持幅度恒定,具有高取样率、噪声整形和比特字长短的特点。变换可以在低取样率、高分辨率的量化器或者高取样率、低分辨率的量化器中进行,在数字音频中很有用,如用于音频信号数字化的∑-δadc及可将已经数字化处理后的音频信号还原为模拟声音信号的∑-δdac。∑-δ变换有时根据采用的具体结构称为1比特或多比特变换,本文所描述的∑-δdac采用了1比特变换技术,克服了采用较多比特数时所带来的量化非线性误差、纠错困难的缺点。

  打个比方来说明如何用1比特替代16或更多比特:传统的阶梯变换器像16个电灯泡,连接到各自的开关上,每个都有不同的亮度,用各种组合方式可以得到216(即65536)种不同的亮度。然而,灯泡间的亮度差会引入误差,某种组合也并不总是能够产生所要求的亮度。1比特变换技术采用完全不同的方法,不用那么多灯泡和开关,只用一个灯泡和一个开关。房间亮度的变化可以通过简单的改变开、关灯泡的次数来得到。如果灯泡开的次数增加,房间的亮度就会增加。

  ∑-δ变换是将信号按时间分割,保持信号幅度恒定。它用高电平或低电平的脉冲表示信号,例如可以采用脉冲密度调制(pdm),如图1所示恒定幅度的脉冲信号,不论电平高或低都能够重建输出信号波形。

图1脉冲密度调制

  2∑-δdac的结构

  传统的应用电流模技术的dac当位数达到10位以上时,要在某一温度范围保持精度非常困难。本文的∑-δdac运用了数字技术,因此与电流模dac相比,不受温度变化的影响,且能在可编程逻辑器件如fpga中实现。∑-δdac实际上是高速1位dac,应用数字反馈技术从输入二进制数字量产生等幅的脉冲串,脉冲串的平均占空比与输入二进制数字量成正比,脉冲串再通过一rc模拟低通滤波器就能重建模拟波形。∑-δdac非常适合于低频、高精度的应用,尤其在数字音频领域应用广泛。

  作为例子,本文中所描述的∑-δdac的二进制8位输入数字量是无符号数,模拟输出电压值都是正值。输入“00000000”产生输出电压0v,“11111111”产生输出电压的最大值vmax,vmax非常接近vcco,其中vcco是fpga芯片i/o端口的供电电压。

  图2∑-δdac的内部结构图

术语“∑-δ”分别代表算术和与差,都可用二进制加法器来产生。虽然δ加法器的输入是无符号数,但δ和∑两加法器的输出被看作有符号数。δ加法器用来计算dac输入与当前dac输出之间的差值。由于dac的输出只有一位,非0即1,即全0或全1。如图2∑-δdac的结构图所示,δ加法器的另一个输入值由∑锁存器最高位l[9]的两个拷贝后面跟8个0产生,这也弥补了dac输入值是无符号数的问题。∑加法器将它的上一次输出(已经保存在∑锁存器)与δ加法器的当前输出求和。

  3∑-δdac的fpga实现

  如图2所示,∑-δdac的内部仅由2个10位的二进制加法器,1个10位的锁存器和一个d触发器组成,用fpga实现时只需耗费极少的逻辑资源,即使用最小的fpga也能实现,本文采用了xilinxvirtexfpga,图3给出了fpga实现的顶层原理图。输入信号有8位宽的二进制数字量dacin[7:0]、时钟信号clk和复位信号reset;输出信号为等幅脉冲串dacout,通过一个驱动缓冲器obuf_f_24(是xilinxfpga特有的selecti/o资源,obuf表示输出缓冲器,f表示它的转换速率快,24表示它的驱动能力即输出驱动电流是24ma,基于lvttli/o标准)驱动fpga外部的模拟r

  • 基于FPGA的∑-Δ D/A转换器的设计与实现已关闭评论
    A+
发布日期:2019年07月02日  所属分类:参考设计