可编程逻辑
1、 引言
Σ-Δ调制在数字信号处理以及通信系统方面的应用正越来越引起大家的重视,因为Σ-Δ调制实现时主要采用数字技术而且对模拟端的精度要求不高,Σ-Δ调制通常都是对模拟信号进行调制产生一位数字信号。但很多情况下,输入信号本身就是数字信号,这时就非常有必要研究对数字信号的Σ-Δ调制实现方式。
在本文中,将就数字Σ-Δ调制器的基本原理进行阐述和研究,然后对数字Σ-Δ调制器结构进行阐述和设计,并最终FPGA实现,最后进行总结。
2、 Σ-Δ调制器的原理
Σ-Δ调制器是一个非线性的系统,由一个滤波器,一个带反馈回路的一比特量化器和一个减法器组成,其中量化器工作频率要远比奈奎斯特采样频率要高,整个系统原理图如图一所示,输入信号经调制后得到的比特流信号可以很好的恢复出信号。
信号与反馈信号的差值在累加器(滤波器)中累加,然后由量化器量化。在此假设量化器引入的噪声为e(n),则,很容易得到y(n)和输入u(n)及噪声e(n)之间在Z域的关系,即:
由式(2.0)可以看出,一阶Σ-Δ系统对输入信号的传输函数STF为
它对信号产生一个单位的延迟,而对于噪声的传输函数NTF为
噪声传递函数在直流处有个零点,所以呈现一阶高通滤波的性质,由此可以看出,噪声被推挤到较高频段,在信号带宽以内,量化噪声被大大削弱。
3、 数字Σ-Δ调制器的设计
图二显示的是一个一阶的数字Σ-Δ调制器的系统框图,这个Σ-Δ调制器对输入的8位信号进行调制。
这个一阶数字Σ-Δ调制器中,减法器加法器和量化器都是对8位信号进行的运算,减法是两个8位信号的运算,所以必须是一个九位的减法,其后的加法器与延迟单元组成了一个累加器,对前面的减法电路得到的值进行累加,我们对累加器端的输入进行估计,由于Σ-Δ调制器的特点,如果累加器前一个累加结果的是一个正信号,那么反馈回输入端的是一个负值,反之,反馈回输入端的是一个正值,这样,累加器的累加结果将一直在一个有限的范围内,所以,我们可以估计,累加器的位数有可能将只需要9位。图三,图四所显示的仿真波形是减法器和加法器在Σ-Δ调制器对八位信号进行调制时的输出范围,横坐标表示的是输入范围,纵坐标表示的是在各种输入情况下输出的最大值。仿真结果证实了我们的猜想。
从图三、图四可以看出,对八位信号调制时,减法器和累加器电路的输出的绝对值不会超过256,实际电路的信号都是补码表示,运算也都是补码运算,所以设计时只需要设计一个九位的减法器和一个九位的累加器就可以满足系统需要。
本系统设计中,各运算单元的操作数都是补码,最高位为符号位,所以量化器就是一个简单的选择器,符号位为正得1,符号位为负得-1,反馈回路中的转换器则是一个简单的数据选择器,在此考虑到反馈信号将做减法运算,所以在+1时选择输出负值,在-1时选择输出正值,这样,减法器就直接设计成一个加法器,这样可以简化设计。
4、 Σ-Δ调制器的FPGA实现
经过对图二的具体单元分析,我们可以得到一个如图五所示的具体的FPGA可实现的结构图。
这样一个数字一阶Σ-Δ调制器在FPGA实现的时候只需要两个9位的加法器,一个锁存器,一个简单量化器和一个数据选择器,而且,量化器和数据选择器都是极其简单的,所以在FPGA实现时只需耗费很少的逻辑资源。。本文采用Xilinx Spartan 3系列的XC3S200-PQ208实现。输入信号为8位宽的二进制数据Data_in[7:0],时钟信号为Clk,复位信号为Reset,输出信号为单比特信号Data_out[0:0]。
本设计使用verilogHDL语言描述,经过xilinxISE6.i编译综合,综合工具使用xilinx XST。下面给出该模块的主要可综合的verilogHDL描述:
//一阶数字Σ-Δ调制器
module sdelta(data_in,clk,reset,data_out);
input [7:0] data_in; //输入信号
input [0:0] clk,reset;
output [0:0] data_out; //输出信号
reg [0:0] data_out;
reg [8:0] sum1; //减法器端的输出
reg [8:0] sum2; //累加器端的输出reg
reg [8:0] latch_out; //锁存器端的输出
reg [7:0] choose_out;//数据选择器输出
always @(data_in or choose_out) sum1 = data_in + choose_out;
always @(sum1 or latch_out) sum2 = sum1 + latch_out;
always @(posedge clk or posedge reset)
begin
if(reset)
begin
data_out 《= 1‘b0;
latch_out 《= 9’b000000000;
choose_out 《=8‘b00000000;
end
else
begin
latch_out 《= sum2;
data_out 《= latch_out[8]?0:1;
choose_out《=latch_out[8]?8’b01111111:8‘b1000000;
end
end
endmodule
5、结论
本文我们从Σ-Δ调制原理开始,逐步给出了一阶数字Σ-Δ调制器的系统设计以及最终可实现的FPGA模型。Σ-Δ调制器可以很方便的应用在各种数字系统中,比如单比特神经网络权值调整,单比特运算单元信号的产生,由此可以大大的降低系统结构的复杂性,并大规模的减少电路单元之间的连线。在解决超采样频率产生的情况下,应用将是十分广泛的。
本文作者创新点:Σ-Δ调制器通常用于模数信号的转换,对多比特数据转换成单比特数据研究比较少,本文给出了一种切实可行的数字Σ-Δ调制器结构和实现方式,并且由于对加法器做了必要的范围估计仿真,大大降低了系统所需占用资源,可以很方便的应用于各种需要保证精度的单比特数字信号处理场合下。
责任编辑:gt
全部0条评论
快来发表一下你的评论吧 !