二阶调制器 [16位数字二阶Σ-Δ调制器的分析与设计]
摘要:文章阐述了Σ-Δ调制器的基本工作原理,构建了二阶Σ-Δ调制器的基本结构,提出了一种用Verilog HDL语言描述二阶Σ-Δ调制器的实现方法,其中采用了简单的移位方法来描述调制器的四个增益系数,以实现乘法操作,进而减小了芯片的面积。在此基础上,运用MATLAB系统工具建立了二阶Σ-Δ调制器系统的模型,并完成了系统仿真验证。在电路级完成了它的Verilog语言描述,同时运用modelsim仿真工具对电路进行仿真验证,对数据进行FFT分析,最终证明了MATLAB系统模型和Verilog代码的一致性。
关键词:调制器;信噪比;延时积分器;量化器;采样
Abstract: In this article, the principles of the Σ-Δmodulater are shown below, and the basic structure of the second order Σ-Δmodulater is analyzed, A realization method for second order Σ-Δmodulater which is described by the Verilog HDL code is presented, the methed of replacement is adopted to describe four gains in order to carry out multiplicative operation ,then reducing using space of the chip. On this basis, the system model is established by using of MATLAB system Tool, and the simulation and validation of system are accomplished. In circuit-level, the Verilog code of second order Σ-Δmodulater is compiled. At the same time, the simulation and validation of the whole circuit are accomplished through the software of modelsim, datas are analyzed through FFT. At last, the coherence of the model of MATLAB system and Verilog HDL code are proved.
Key words: modulater,Signal-to-Noise, time-lapse integraph, Quantized utensil,sampling.
1引言
Σ-ΔA/D转换器由两个主要的部分构成:一个模拟Σ-Δ调制器(modulator) 和一个数字抽取滤波器(digital decimation filter)。Σ-ΔA/D转换器中调制器的部分,拥有良好的噪声整形能力,利用过采样技术将信号频带内的噪声功率推至高频范围内,然后由降采样滤波器将高频噪声滤除,从而提高了信号频带内的信噪比,这就是调制器的工作原理。由于模拟Σ-Δ调制器占用的芯片面积较大,为了减小面积而又满足模拟Σ-Δ调制器的性能,所以我们设计一个16位Σ-ΔA/D转换器中的数字二阶Σ-Δ调制器。
我们的目标是运用MATLAB系统工具建立二阶Σ-Δ调制器系统的模型,并完成了系统仿真验证,用Verilog代码描述其电路的各个模块,同时运用modelsim工具对电路进行仿真验证,分别对二者的数据进行FFT(快速傅立叶变换)分析,最终证明了MATLAB系统模型和Verilog代码的一致性,通过调节Σ-Δ调制器的四个增益,实现调制器的最佳性能。
2二阶Σ-Δ调制器系统模型的建立
一阶Σ-Δ调制器在时域下表达式如下:
Y[nTs]=X[(n-1)Ts]+E [nTs]-E [(n-1)Ts](1.1)
其中E [nTs]表示量化器引入的量化误差。
(1.1)式表示输 出是量化噪声一阶差分E[nTs]-E[(n-1)Ts]的函数。可以看出,如果Ts越小,即采样速率越快,数字输出Y[nTs] 越接近模拟输入信号X[nTs]。
再将式(1.1)转化成Z域下的表达式如下:
Y(z)=z■・X(z)+(1-z■)E(z) (1.2)
由式(1.2)可知,调制器输出由延时一个单位时间的输入信号X与经过一次差分后的量化误差组成,而且积分器的输入输出均与输入信号有关,这样当输入信号摆幅很大时,积分器的输入输出也很大,在多位量化时更是如此。
我们可以推出二阶Σ-△调制器的Z域表达式:
Y(z)=z■X(z)+(1-z■)■E(z)(1.3)
式(1.3)说明有更多的噪声被推到高频处,但对于信号仍呈现低通的特性。现在用拓扑结构进一步表达信号传递函数和噪声传递函数。由调制器的基本结构出发,如图1.1所示。
传递过程的表达式如下:
Y(z)=■X(z)
+■E(z)(1.4)
式(1.3)和(1.4)联立可得:
(1)信号传递函数STF(z):
STF(z)=■=z■ (1.5)
(2)噪声传递函数NTF(z):
NTF(z)=■=(1-z■)■(1.6)
那么由(1.5)式和(1.6)式可以得到:
A(z)=■=■・■ (1.7)
B(z)=2-z■=1+(1-z■)(1.8)
A(z)明显是由两个积分模块相乘得到的,现在分别将其拆分成反相积分器和同相延迟积分器,数学表达式分别为■和■。B(z)也可以表示成调制器输出与调制器输出的差分(1-z■)之和。所以基本结构可以表示为图1.2。
为了进一步简化二阶调制器的结构,减小系统信号的失真,提高系统的稳定性,可以把图1.2转换成如图1.3所示的那样,这将更有助于二阶调制器的实现。
在输入和反馈通道上加入增益环节可以减小积分器的输入,同时也避免了积分器饱和现象的发生。通过选择增益a,b,c,d使输入信号对积分器输入输出幅度影响减轻,如图1.4所示。
3matlab系统建模、仿真及FFT分析
3.1.matlab系统建模
综合以上各个环节的建模过程,同时参照之前得到的传递函数可以得到图1.5所示的整体系统模型结构。模型主要包括以下模块,信号源sine wave,增益模块gain,单位延迟模块unitdelay,加权器,比较器comparator,FFT波谱分析模块,巴特沃斯低通模拟滤波器butter,示波器scope和内存simout_pdm。
在这里,可以将四个增益系数A、B、C、D带入传递函数,这样可以更清楚地了解他们所起到的作用。得到表达式(1.9):
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文 Y(Z)=■
X(Z)+■E(Z) (1.9)
其中:
S■=■(2.0)
N■■ (2.1)
3.2二阶Σ-Δ调制器增益系数的选择
由于Σ_Δ调制器的不稳定状态主要与调制器噪声传递函数的带外增益有关。为了限制噪声传递函数的带外增益,本设计的噪声传递函数的表达式被写成式(2.1), 通过合理地选择分母就可以有效地达到限制噪声传递函数带外增益地目的。选择分母的步骤可简述如下:
(1)根据上述方法对噪声传递函数的零点进行配置;
(2)选择初始分母并计算极点;
(3)由此得到噪声传递函数,并计算其带外增益Gain[NFT];
(4)设定值ε=Gain[NFT];
(5)如果ε 本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文 assign sum[15:0] = ina[15:0] - inb[15:0] ;
endmodule
Adder2的描述:
moduleadder22(ina,inb,sum);
input[21:0] ina;
input[21:0] inb;
output[21:0] sum;
assign sum[21:0] = ina[21:0]-inb[21:0];
endmodule
(3)乘法器:针对特定的情况,如果乘数是小于1的具有2的幂次倒数的性质,那么就可以用简单的移位的方法来实现乘法操作.
乘数为0.5的乘法器的描述:
Modulemult_5(din,dout);
input[15:0] din;
output[15:0] dout;
assign dout[15:0] = {din[15],din[15:1]};
endmodule
乘数为0.25的乘法器的描述:
modulemult_250(din,dout);
input[21:0] din;
output[19:0] dout;
assign dout[16:0]={{2{din[16]}},din[16:21]};
endmodule
乘数为0.83的乘法器的描述:由于它的乘数不具有2的幂次倒数的性质,需要另外考虑。
modulemult_830(din,dout);
input[21:0] din;
output[21:0] dout;
wire[21:0] a;
wire[21:0] b;
wire[21:0] c;
wire[21:0] d;
wire[21:0] e;
wire[21:0] f;
wire[21:0] g;
wire[21:0] h;
assign a[21:0] = {din[21],din[21:1]};
assign b[21:0] = {{2{din[21]}},din[21:2]};
assign c[21:0] = {{4{din[21]}},din[21:4]};
assign d[21:0] = {{6{din[21]}},din[21:6]};
assign e[21:0] = {{10{din[21]}},din[21:10]};
assign f[21:0] = {{11{din[21]}},din[21:11]};
assign g[21:0] = {{12{din[21]}},din[21:12]};
assign h[21:0] = {{13{din[21]}},din[21:13]};
assign dout[21:0] = a[21:0] + b[21:0] + c[21:0] +d[21:0] + e[21:0] + f[21:0] +g[21:0] + h[21:0] ;
endmodule
(4)比较器(comparator):比较器的具体运算是根据其输入是正还是负来决定输出是1或者是0,即PDM码。对于二进制补码的数据格式,只须判断其输入信号的符号位即最高有效位是1或是0即可,如果是1则表示是负数,如果是0则表示是非负数。
modulecomparator(din,dout);
input[16:0] din;
output[16:0] dout;
assigndout=
(din [16:0]== 1"b0)?(1"b1):(1"b0);
endmodule
(5)DAC转换器:一位DAC位于反馈回路中,将输出的PDM码转换成相应的满刻度模拟信号值反馈到输入端。
moduledac(din,dout);
input din;
output[15:0] dout;
assign dout[15:0]=
(din==1"b1)?(16"h7FFF):(16"h8000);
endmodule
(6)顶层模块及其描述
根据调制器的结构,连接各模块,得到调制器的顶层模块及其描述:
Module digital_modulator(reset, clk,din,dout);
input reset;
input clk;
input[15:0] din;
output dout;
wire[15:0] dout_mult500;
wire[15:0] dout_mult500s1;
wire[16:0] dout_mult250;
wire[16:0] dout_mult830;
wire[16:0] dout_inte1;
wire[16:0] dout_inte2;
wire[15:0] dout_adder16;
wire[16:0] dout_adder22;
wire[15:0] dout_dac;
wire dout_pdm;
mult_500 umult500(.din(din), .dout
(dout_mult500));
mult_250 umult250(.din(dout_inte1), .dout
(dout_mult250));
mult_830 umult830(.din(dout_inte1), .dout
(dout_mult830));
mult_500 umult500s1(.din(dout_dac), .dout
(dout_mult500s1));
adder1 uadd1(.ina(dout_mult500), .inb
(dout_mult500s1), .sum(dout_adder16));
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文 adder2 uadd2(.ina(dout_inte2), .inb
(dout_mult830), .sum(dout_adder22));
integrator1 uinteg1(.reset(reset), .clk(clk), .din
(dout_adder16), .dout(dout_inte1));
integrator2 uinteg2(.reset(reset), .clk(clk), .din
(dout_mult250), .dout(dout_inte2));
comparator ucom(.din(dout_adder22[21]), .dout
(dout_pdm));
dac udac(.din(dout_pdm), .dout
(dout_dac));
assign dout = dout_pdm;
endmodule
4.2仿真并对输出数据进行FFT分析:
digital_modulator的仿真结果如下:
digital_modulator的仿真结果经过FFT分析后的输出波形如图2.1所示,可以观察到SNR的结果为120dB。该参数不但满足设计目标(SNR=96dB),输出频率为 1KHz,而且与matlab系统模型的输出结果经过B-FFT分析后的输出波形比较,二者得到的频率相一致都是1KHz,SNR的结果相一致都是120dB,进而证明了最终证明了Matlab系统的模型和verilog代码描述的一致性。
5总结
本文根据Σ-△调制器的原理和采用Verilog HDL硬件描述语言方法实现了16位数字二阶Σ-Δ调制器的设计。首先从系统上分析了modulater的基本原理,根据modulater传递函数的数学变形,在Matlab中搭建出系统的模型,进行仿真和FFT分析。然后用Verilog HDL硬件描述语言将基本部件的功能描述清楚,并对各部件的输入、输出逻辑关系进行仿真验证,再利用结构建模的方法将基本部件组合成一个顶层模块,最后完成FFT分析.通过FFT分析,最终证明了Matlab系统的模型和verilog代码描述的一致性。设计得到16位数字二阶Σ-Δ调制器,其输入输出满足:input:16bit, 2MHz; output:1bit,2MHz.本设计采用TSMC 90nm工艺对综合后的网表进行自动布局布线,整个硬件电路所占用的版图面积约为0.445mm。电路工作在8M时钟,1.2V电源电压条件下的功耗为500μA。既达到了Σ-△调制器对于数据精度的要求,同时也缩减了芯片的面积,降低了系统的功耗。
参考文献
[1]胡广树著:《数字信号处理导论》,北京,清华大学出版社,2006。
[2]丁玉美等著:《数字信号处理导论》,西安,西安电子科技大学出版社,2000.12。
[3]张华清等著:《信号与系统分析》,北京,机械工业出版社,2005.7。
[4]洪志良,王晓月,李天望,曹先国. 过采样Σ_ΔA/D转换器. [J]. 微电子学1998, 28(4).
[5]夏宇闻著:《Verilog数字系统设计教程》,北京,北京航空航天大学出版社,2003.7。
[6]薛年喜著:《MATLAB在数字信号处理中的应用》,北京,清华大学出版社,2003。
[7]Phillip E.Allen等著;冯军等译:《CMOS模拟集成电路设计》, 北京,电子工业出版社,2005.3.
[8] Del Signore B P. A monolithic 20-b delta-sigma A/D converter. [J] Solid-State Circuits, 1990; 25 (6) : 1311~ 1316
[9] Northworthy S R,Schreier R, Temes G C, etal Delta sigma data converters [M]. Piscataway: IEEE Press,1996.
[10] J.C. Candy, “Decimation for Sigma Delta Modulation”,IEEE Transactions onCommunications, Vol. COM-34, No. 1,pp. 72-76, Jan. 1986.
作者简介
赵以诚,硕士研究生,研究方向:集成电路的设计与研究;
宋强国,硕士研究生,研究方向:集成电路的设计与研究;
吴春瑜,教授,硕士生导师,主要从事集成电路及半导体器件的教学与研究;
梁洁,北京美新华微电子技术有限公司技术总监。
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文
