数字幅频均衡功率放大器赵碧杉等Word文档格式.docx
《数字幅频均衡功率放大器赵碧杉等Word文档格式.docx》由会员分享,可在线阅读,更多相关《数字幅频均衡功率放大器赵碧杉等Word文档格式.docx(23页珍藏版)》请在冰点文库上搜索。
![数字幅频均衡功率放大器赵碧杉等Word文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/4/e09edf1f-f30c-4af2-b9c0-e75d8fc54281/e09edf1f-f30c-4af2-b9c0-e75d8fc542811.gif)
低频功放模块由带通滤波器、预放大与功率放大电路组成,对数字均衡后的输出信号进行功率放大。
此外,系统还增加了带阻网络幅频特性的测量与显示功能。
其实现方法为:
采取复用ADC与DAC的方式,基于直接数字频率合成原理输出扫频信号,通过采样量化与数字峰值检波,测量经过网络后每个频点的峰峰值。
即可获得带阻网络的频率特性,进而利用MATLAB工具设计出FIR滤波器的系数。
同时,带阻网络的频率特性曲线可在液晶屏上显示出来。
二、理论分析与计算
1.前置放大电路设计
根据题目最小放大400倍的指标要求,同时综合考虑系统采用的ADC芯片的输入信号幅度范围为±
10V,我们设定增益为500,以保证A/D采样具有最佳精度。
由于输入正弦信号有效值小于10mV,则放大电路输出信号最大峰峰值为14.14V,满足ADC的输入幅值范围。
本设计中放大器的增益较大、处理频段较低,所以应选取适合的运放,影响输出效果的主要参数有运放增益带宽积、噪声电压密度、输入失调电压等。
为实现500倍增益的放大,采用两级运放级联。
第一级选取低噪声、高精度运放OPA228,其噪声电压密度为
,带宽为33MHz。
由于其为电压反馈型运放,增益增大时频宽变窄,用它来构建小信号的高增益放大器,可以较好地抑制高频噪声,设置增益为250。
第二级选取高精度运放OPA602,其最大输入失调电压为250uV,带宽为6.5MHz,实现增益为2的放大。
电路均采用同相放大接法,其输入阻抗高的特性有利于小信号的提取。
电路图如图2所示。
图2前置放大电路图
2.功率放大电路设计
图3功率放大电路图
功率放大器如果要输出较大的功率,晶体管必须大振幅地工作,因此一般要工作在其非线性特征区域。
一般来说晶体管电路高效率的同时,失真率也明显增大。
因此要在效率与失真率之间取最合适的工作点。
乙类功放效率高,但集电极电流只流通半周期,会产生波形失真,在低频信号功率放大器的应用中,为了减少波形失真,此电路常被做成推挽式放大器来使用。
甲乙类集电极电流的流通大于半个周期小于一个周期,为了减少失真,将工作点提高一点。
通过对晶体管加入一定的偏置,可以克服乙类功放产生的交越失真。
电路图如图3所示。
前级以AD844为核心组成增益约为3.5倍的预放大电路,后级由NMOS管与PMOS管组成互补推挽输出,通过调节电位器R4和R5为晶体管提供一个适当的偏置电压,可避免交越失真。
另外,为了提高功放效率,我们采用散热片对晶体管进行散热与保护。
3.数字幅频均衡电路设计
(1)A/D采样电路设计
采集信号的频率范围为20Hz~20kHz,为防止频谱混叠,采样速率应大于奈奎斯特频率。
若采样速率太低,一个周期内采集点数太少,波形输出时会存在较大失真;
若采样速率太高,相同条件下所需滤波器的阶数更高,增加了滤波器的空间和时间复杂度。
最终我们设定采样频率为最高频率分量的4倍,即80kHz。
为了减小量化噪声对系统的影响,应选择位数高、精度高的ADC。
选取高精度16位并行A/D转换器ADS8505,其最高采样速率为200ksps,输入电压范围为±
10V,无杂散动态范围高达105dB。
具体电路图见附录中图9。
(2)D/A转换电路设计
由于通频带内输出波形的电压幅度波动在±
1.5dB以内,应选择位数高、精度高的DAC。
选用高速、14位的DAC904,其最高更新速率达165Msps,功耗低至170mW。
由于采样频率为80kHz,对于频率为20kHz的信号一个周期只能采集4个点,为保证输出波形不失真,后级需接平滑滤波器。
鉴于开关电容滤波器具有陡峭的衰减特性,选用8阶低通椭圆滤波器MAX297,设定截止频率为20.6kHz,能较好地滤除高频噪声。
具体电路图见附录中图10。
(3)FPGA内部FIR滤波器电路设计
FIR滤波器的差分方程表达式为:
式中,y[n]和x[n]分别表示输出和输入序列,h[m]是滤波器系数,N是滤波器阶数。
由直接型结构图可见,N阶FIR滤波器要用N+1个系数表示,通常需要用N+1个乘法器和N个加法器来实现,即在FPGA内需完成相应的乘加运算。
并行FIR滤波器具有速度快、易于设计的特点,但滤波器阶数较高时需要占用大量的资源,采用串行优化算法可减少资源占用量。
图4直接型FIR滤波器结构图
4.数字处理算法设计
(1)线性均衡的数字滤波器设计
常用于均衡的线性滤波器是一个横向滤波器,它由若干个抽头延迟线组成。
可设计一个FIR数字带通滤波器,使通频带内信号经过带阻网络与数字幅频均衡后,获得平坦的幅频响应。
数字滤波器的设计过程为:
①测量带阻网络的幅频特性,得出所需FIR滤波器的频率响应。
②根据FIR滤波器的频响特性,利用Matlab计算出滤波器系数。
③通过Matlab仿真,验证所设计的系统是否符合题目要求。
(2)FIR滤波器的频率特性
为了获得较好的结果,应根据带阻网络的实测频响来设计数字滤波器。
需要得到fs/2范围内的频响特性(fs为采样速率即80kHz),故由DDS模块产生扫频信号,频率范围为20Hz~40kHz以20Hz步进。
扫频信号经过前级放大与带阻网络后,通过A/D采样与数字峰值检波,测出各频点的峰峰值,即可得到模拟部分的实际频率响应
,则FIR滤波器的频率响应
。
利用Matlab绘制两者的频率响应曲线,观察图5与图6可知,两者具有相反的频率响应特性。
图5带阻滤波器频率响应曲线图6带通滤波器频率响应曲线
(3)FIR滤波器系数与阶数设计
根据FIR滤波器的频率特性,利用MATLAB软件可以设计出滤波器系数。
我们采用切比雪夫逼近法(又称为等波纹逼近法),它基于最大误差最小准则,通过Park-McClellan算法,利用已知滤波器的特性,计算出所需滤波器的系数。
在MATLAB中,调用remez函数即可实现。
滤波器阶数越高逼近误差越小,但阶数太高会占用过多的资源开销和时间开销。
综合考虑FPGA的系统资源、运算时间与逼近误差,我们设置FIR滤波器的阶数为684阶。
(4)MATLAB仿真
得到滤波器系数后,利用MATLAB绘制其幅频响应曲线h1,同时绘制带阻滤波器的频率响应曲线h2(dB表示)。
将两者相加,可得到两滤波器级联后的频率响应。
仿真图见附录中图15,由图可知,输出信号电压波动在±
0.5dB范围内,设计符合系统要求。
三、总体电路设计
系统电路主要由前级信号调理与波形采集模块、波形输出与后级功放模块组成。
总体电路框图如图7所示,图中包含核心芯片以及部分电路特性。
图7总体电路框图
四、程序设计
系统软件主要有两种工作模式:
1.测量模式,用于计算所需数字滤波器的系数。
实现过程:
DDS模块产生扫频信号,通过A/D采样与数字峰值检波获得带阻网络的幅频特性,作为Matlab设计FIR滤波器的参考。
同时,可在液晶屏上显示幅频响应特性曲线。
2.工作模式,对当前波形进行数字幅频均衡处理。
对经过带阻网络的信号采样量化,经过FIR数字滤波器处理后,由D/A转换输出波形。
图8程序流程图
五、测试方案与测量结果
1.测试仪器
直流稳压稳流电源:
型号SG1733SB3A
数字信号源:
型号Agilent33120A
60M数字存储示波器:
型号TektronixTDS1002
万用表:
型号Fluke17B
2.测试方案与测试结果
(1)前置放大电路测试
①放大倍数测试。
由信号源输入有效值Vrms为5mV、频率为10kHz的正弦信号,用示波器测量前置放大电路的输出电压峰峰值Vo,计算其放大倍数G。
结论:
Vo=7.04V,则
②通频带测试。
设定输入信号为有效值5mV的正弦信号,在频率范围15Hz~22kHz的范围内抽取足够多的测试点,进行-1dB通频带的测试。
表1前置放大电路-1dB通频带测试
频率(Hz)
15
20
100
1k
10k
20k
22k
输出幅度(V)
5.24
6.32
7.12
7.16
7.08
6.24
6.12
经测试,-1dB通频带为20Hz~20kHz。
③输出电阻测试。
根据电阻分压原理,在放大电路输出端接入一300Ω电阻到地,测量信号源输出电压与经过输出电阻的输出电压,根据电压比值,即可计算出输出电阻阻值。
经测量输出电阻为:
600Ω。
具体测试电路见附录中图16。
(2)带阻网络最大衰减测试
设定输入信号为有效值5mV的正弦信号,在频率范围为20Hz~20KHz内抽取足够多的测试点,以10kHz时输出信号电压幅度为基准,测量其最大衰减。
表2带阻网络最大衰减测试
300
600
2k
2.80
0.768
0.664
0.640
0.784
2.16
2.60
经测试,带阻网络最大衰减为10.6dB。
(3)数字幅频均衡电路测试
①输入电阻测试。
根据电阻分压原理,在信号源与带阻网络输出之间接入一300Ω电阻,测量信号源输出电压与经过该电阻分压后的输出电压,由电压比值可计算出输入电阻阻值。
经测量输入电阻为:
具体电路见附录中图17。
②通频带电压幅度波动测试
设定输入信号为有效值5mV的正弦信号,在频率范围20Hz~20kHz的范围内抽取足够多的测试点,进行电压幅度波动的测试。
表3数字幅频均衡电路通频带电压幅度波动测试
400
4k
输出幅度(mV)
856
840
824
928
944
888
776
经测试,通频带电压幅度波动在±
1.2dB以内。
(4)功率放大电路测试
①无失真输出功率测试。
设定输入信号为有效值5mV,频率范围为20Hz~20kHz的正弦信号,在RL=8Ω负载上用示波器测量输出电压峰峰值Vo,利用公式
,计算出输出功率。
具体数据见附录中表9。
经测量,无失真输出功率不小于10W。
最大输出功率达到14.5W。
设定输入信号为有效值5mV的正弦信号,在频率范围1Hz~30kHz的范围内抽取足够多的测试点,进行-3dB通频带的测试。
表4功率放大电路通频带测试
200
500
22
27.4
28.8
27.6
30.4
20.2
经测试,-3dB通频带为20Hz~20kHz。
③功率放大电路效率测试。
设定输入信号为有效值5mV、频率10kHz的正弦信号,用示波器和万用表分别测量功率放大电路输出电流和电压,与其直流电源供给电流和电压,根据两者功率比值,从而计算出电路效率。
表5功率放大电路效率测试
正电流(mA)
负电流(mA)
正电压(V)
负电压(V)
输出功率(W)
效率
670
530
17.9
18
12.
64.5%
3.测试结果分析及总结
系统采用FIR数字滤波器与甲乙类功放,实现了数字幅频均衡功率放大器。
通频带内电压幅度波动在±
1.2dB以内,最大无失真输出功率达14.5W,效率达64%。
误差的主要来源有A/D采样的量化误差、放大器的非线性误差、有限字长效应等。
我们选取低噪声、高精度的器件,并采取一系列抗干扰措施以提高数字处理精度与波形输出质量。
此外,利用MATLAB进行参数设计,在FPGA内实现FIR数字滤波器,具有精度高、处理速度快、性价比高等特点。
附录
附录Ⅰ题目完成情况
题目要求
完成情况
基本部分
小信号放大倍数不小于400倍
完成,放大倍数约为500倍
-1dB通频带为20Hz~20KHz
完成
前置放大电路输出电阻为600Ω
带阻网络最大衰减≥10dB
完成,最大衰减为10.6dB
数字幅频均衡电路输入电阻为600Ω
幅频均衡处理后通频带20Hz~20kHz内的电压幅度波动在±
1.5dB以内
完成,扩展到±
1.2dB以内
发挥部分
8Ω负载输出功率≥10W,
输出电压波形无明显失真
完成,最大无失真输出功率为14.5W
功率放大电路-3dB通频带为20Hz~20kHz
功率放大电路的效率≥60%
完成,并扩展到64%
其它
完成,主要有扫频功能,
带阻网络幅频特性显示;
附录Ⅱ电路原理图
1.A/D采样电路图
图9A/D采样电路图
2.D/A转换电路图
图10D/A转换电路图
3.-1dB通频带为20Hz~20kHz带通滤波器电路图
图11带通滤波器电路图
4.-3dB通频带为20Hz~20kHz带通滤波器电路图
图12带通滤波器电路图
5.低通平滑滤波器电路图
图13低通平滑滤波器电路图
附录ⅢMatlab仿真图
图14带通与带阻滤波器频率特性曲线图15输出电压幅值波动曲线
附录Ⅳ详细测试数据
1.前置放大电路测试数据
①通频带测试数据
表6前置放大电路-1dB通频带测试
50
7.14
7.20
5k
8k
15k
18k
21k
7.04
6.84
6.60
②输出电阻测试。
根据电阻分压原理,在放大电路输出端接入一600Ω电阻到地,测量信号源输出端A电压与经过输出电阻后的输出端B电压,根据电压比值,即可计算出输出电阻阻值。
图16输出电阻测试网络
2.带阻网络最大衰减测试数据
表7带阻网络最大衰减测试
2.28
1.50
0.950
0.696
800
0.648
1.35
2.56
3.数字幅频均衡电路测试数据
根据电阻分压原理,在信号源与带阻网络输出之间接入一。
Ω电阻,测量信号源输出端A电压与经过该电阻分压后的输出电压,根据电压比值,即可计算出输入电阻阻值。
图17输入电阻测试网络
②通频带电压幅度波动测试数据
表8数字幅频均衡电路通频带电压幅度波动测试
872
904
14k
920
4.功率放大电路测试数据
①无失真输出功率测试数据
表9无失真输出功率测试
29.4
27
11.73
12.96
11.90
14.44
13.51
11.39
②通频带测试数据
表10功率放大电路通频带测试
20.3
附录Ⅴ重要的源程序
部分系统源程序代码:
always@(posedgeclkornegedgen_rst)
begin
if(!
n_rst)
begin
RC<
=1'
b1;
ad_over<
cc_max<
count<
=4'
d0;
cc<
=10'
clr<
b0;
choose<
max<
=16'
h8000;
min<
h7fff;
FF<
state1<
=S0;
end
else
case(next_state)
S0:
;
S1:
begin
if(!
FF)get_a_data;
else;
end
S2:
FF<
S3:
S4:
if(data_reg>
max)max<
=data_reg;
elseif(data_reg<
min)min<
elsebeginmax<
=max;
min<
=min;
end
S5:
if(cc<
10'
d600)
begin
cc<
=cc+1'
cc_max<
end
else
vpp1<
=max-min;
choose<
S6:
max<
min<
//---把最大值和最小值从头置位
S7:
if(!
else;
S8:
FF<
if(data_reg>
elseif(data_reg<
elsebeginmax<
S9:
if(cc<
begin
cc<
cc_max<
end
else
vpp2<
S10:
if(vpp1>
vpp2)vpp2<
=vpp1;
//---vpp2保存峰峰值
elsevpp2<
=vpp2;
S15:
ad_over<
default:
e