首页 > 范文大全 > 正文

16位数字二阶Σ-Δ调制器的分析与设计

开篇:润墨网以专业的文秘视角,为您筛选了一篇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)如果ε

A: 改变分母的极点;

B:返回到第(2)步。

由系统稳定性,令分母等于零,可以求得系统的极点,同时要求极点在单位圆内才能保证系统的稳定,可以得到与系数的关系,A=0.5,B=0.25,C=0.83,D=0.5。为了得到不同的系统前向增益,可以通过改变A/D的比值,并调节输入信号的幅值来实现。

由于四个增益作为乘法器在芯片中的面积较大,本设计将用Verilog代码以简单移位的方法描述出四个增益的系数值,并实现乘法功能,这样便减小了芯片的面积。

3.3仿真及FFT分析

激励与设置:

(1)信号源:幅值为32767,输入为频率1KHz频率、采样时间为500ns的信号。

(2)单位延迟模块设置:采样时间为500ns。

(3) 比较器的参数设置:通过阈值控制输出结果为1或-1。

(4)模拟低通滤波器参数设置:选择Butterworth低通模拟滤波器,其结构为8级,通带的边缘频率为25120rad/sec。

经过仿真,利用scope来观察各个节点处的波形。在这里主要观察三个节点的波形,自上而下分别为信号源的输出波形,数字输出的波形和经过低通模拟滤波器的波形,如图1.6所示。

经过低通滤波器的模拟波形,与信号源波形的幅值,相位完全一致,只是出现些许延迟,这是正常现象。由此可以判断,该系统的传递函数和系统模型是吻合的。

3.3.1信噪比

假设量化过程只有量化误差,量化的位数为N,奈奎斯特采样后量化,则信噪比SNR由下式(1.12)给出:

SNR■=6.02・N+1.76(dB)(2.2)

而过采样在进行量化时的信噪比如式(2.3)所示:

SNR■=6.02・N+1.76+101g M(dB)(2.3)

其中M为过采样率。所以过采样每增加一倍,SNR提高3dB,有效位数可以增加0.5bit。

3.3.2 matlab系统模型的FFT分析

数字的输出结果经过B-FFT分析后的输出波形如图1.7所示,可以观察到SNR的结果为120Db,输出频率为 1KHz。该参数可以满足之前的设计目标(SNR=96dB)。

4Verilog代码的描述与仿真

为了减小面积而又满足模拟Σ-Δ调制器的性能,以下用Verilog代码描述一个16位数字二阶Σ-ΔA/D转换器中的调制器的系统结构。

根据matlab搭建的系统框架模型,调制器主要分为以下几个功能模块:积分器(2个),比较器(1个),加法器(2个,做减法运算也属于加法器的一种),乘法器(4个),1位DAC(1个)。调制器的设计思路是:利用Verilog HDL将基本部件的功能描述清楚,并对各部件的输入、输出逻辑关系进行仿真验证,再利用结构建模的方法将基本部件组合成一个顶层模块,由此完成了调制器顶层设计。

(1)积分器(integrator):实际上是累加的关系,针对积分器的时域特性编写源代码。

根据integrator1的传输函数,

Y(z)(z-1-1)=X(1+z-1)

得到其时域关系:

y(n)=y(n-1)-x(n)-x(n-1)

根据上式得到integrator1源码。

Moduleintegrator1 (reset,clk,din,dout);

input reset;

input clk;

input[15:0] din;

output[16:0] dout;

reg[16:0] a;

reg[16:0] b;

reg[16:0] dout;

always@(posedge clk or posedge reset)

begin

if(reset == 1'b1)begin

a[16:0]

b[16:0]

dout[16:0]

end

else begin

a[16:0]

dout[16:0]

end

end

endmodule

同理,根据integrator2的传输函数,

Y(z)(z-1-1)=X(z)z-1

得到:y(n)=y(n-1)-x(n-1)

根据上式得到integrator2源码:

Module integrator2(reset,clk,din,dout);

input reset;

input clk;

input[16:0] din;

output[16:0] dout;

reg[16:0] a;

reg[16:0] b;

reg[16:0] dout;

always@(posedge clk or posedge reset)

begin

if(reset == 1'b1)begin

a[16:0]

b[16:0]

dout[16:0]

end

else begin

a[16:0]

b[16:0]

dout[16:0]

end

end

endmodule

(2)加法器(adder):整个数字系统采用的是二进制补码的数据格式,对加法器的设置主要是考虑数据宽度,编写代码时可以直接描述减法操作。

Adder1的描述:

moduleadder16s1(ina,inb,sum);

input[15:0] ina;

input[15:0] inb;

output[15:0] sum;

本文为全文原貌 未安装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浏览器用户请先下载安装 原版全文