引言
在各类电子系统中,数字电路所占比重越来越大。这主要是因为数字电路相对于 电路有一些突出的优点,例如:1 数字电路中的有源器件工作在饱和区 与截止区,工作状态稳定;2 数字电路处理的是二值信号,易于存储和再生;3 数字电路是由大量相同的基本单元,如门、触发器等所组成,易于大规模集成,易于自动化设计工具的应用等。再加上数字计算机和数字信号处理技术的迅速发展,使得数字电路从集成规模、应用范围及设计自动化程度等方面都大大超过了
1 变∑-Δ换的原理
∑-Δ变换采用过取样技术,将信号按时间分割,保持幅度恒定,具有高取样率、噪声整形和比特字长短的特点。变换可以在低取样率、高分辨率的量化器或者高取样率、低分辨率的量化器中进行,在数字音频中很有用,如用于音频信号数字化的∑-Δ
打个比方来说明如何用1比特替代16或更多比特:传统的阶梯变换器像16个电灯泡,连接到各自的开关上,每个都有不同的亮度,用各种组合方式可以得到216(即65536)种不同的亮度。然而,灯泡间的亮度差会引入误差,某种组合也并不总是能够产生所要求的亮度。1比特变换技术采用完全不同的方法,不用那么多灯泡和开关,只用一个灯泡和一个开关。房间亮度的变化可以通过简单的改变开、关灯泡的次数来得到。如果灯泡开的次数增加,房间的亮度就会增加。
∑-Δ变换是将信号按时间分割,保持信号幅度恒定。它用高电平或低电平的脉冲表示信号,例如可以采用脉冲密度调制(PDM),如图1所示恒定幅度的脉冲信号,不论电平高或低都能够重建输出信号波形。
2 ∑-Δ DAC的结构
传统的应用电流模技术的DAC当位数达到10位以上时,要在某一温度范围保持精度非常困难。本文的∑-Δ DAC运用了数字技术,因此与电流模DAC相比,不受温度变化的影响,且能在可编程逻辑器件如FPGA中实现。∑-Δ DAC实际上是高速1位DAC,应用数字反馈技术从输入二进制数字量产生等幅的脉冲串,脉冲串的平均占空比与输入二进制数字量成正比,脉冲串再通过一RC模拟低通滤波器就能重建模拟波形。∑-Δ 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也能实现,本文采用了Xilinx Virtex FPGA,图3给出了FPGA实现的顶层原理图。输入信号有8位宽的二进制数字量DACin[7:0]、时钟信号CLK和复位信号Reset;输出信号为等幅脉冲串DACout,通过一个驱动缓冲器OBUF_F_24(是Xilinx FPGA特有的SelecTI/O资源,OBUF表示输出缓冲器,F表示它的转换速率快,24表示它的驱动能力即输出驱动电流是24MA,基于LVTTL I/O标准)驱动FPGA外部的模拟RC低通滤波器,该缓冲器的输出端连接到FPGA的I/O端口,则它的驱动电压即为FPGA的I/O端口的供电电压VCCO。表1列出了∑-Δ DAC的接口信号。
图3虚线框内的电路都在FPGA里面实现,其中的DAC模块的原理图见图2,在本文中是用可以综合的VerilogHDL语句来描述的。VerilogHDL描述的可综合性是指其可被综合工具所识别,将其寄存器传输级(RTL)描述综合成门级网表,最终能通过FPGA的布局布线工具映射到FPGA当中成为能完成指定功能的硬件电路。VerilogHDL语言最初是面向建模和仿真的,只有10%可以被综合称为可综合子集。对于不同的综合工具,可综合子集的内容并不相同。IEEE的一个工作组目前正在撰写一个名为IEEE Std 1364.1RTL的综合子集的规范,定义了一个最小的可综合的Verilog语言要素的子集,以便得到各综合工具提供商的支持。
图3中缓冲器的输出端DACoutDrvr连接到FPGA的输出引脚上,驱动外部的
‘TImescale 100 ps / 10 ps
//This is a Delta-Sigma Digital to Analog Converter
module dac(DACout, DACin, Clk, Reset);
output DACout; // This is the average output that feeds low pass filter
reg DACout;
input [7:0] DACin; // DAC input
input Clk;
input Reset;
reg [9:0] DeltaAdder; // Output of Delta adder
reg [9:0] SigmaAdder; // Output of Sigma adder
reg [9:0] SigmaLatch; // Latches output of Sigma adder
reg [9:0] DeltaB; // B input of Delta adder
always @(SigmaLatch) DeltaB = {SigmaLatch[9],SigmaLatch[9]} << (8);
always @(DACin or DeltaB) DeltaAdder = DACin + DeltaB;
always @(DeltaAdder or SigmaLatch) SigmaAdder = DeltaAdder + SigmaLatch;
always @(posedge Clk or posedge Reset)
begin
if(Reset)
begin
SigmaLatch <= #1 1’bl << (8);
DACout <= #1 1’b0;
end
else
begin
SigmaLatch <= #1 SigmaAdder;
DACout <= #1 SigmaLatch[9];
end
end
endmodule该程序经过Xilinx的FPGA集成开发工具ISE6.2编译(含综合过程)、仿真后,再选择Virtex系列FPGA芯片进行配置。设置CLK=100MHz(最高可达219MHz)。
4 结论
∑-Δ DAC是高速FPGA芯片用于数字模拟混合信号系统设计的尝试,可应用于可编程电压源、波形发生器、声音发生器、RGB颜色发生器和
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)