大连理工大学城市学院 邢晓鹏 刘搏飞 刘春池 隋盛誉 孙嘉成 谢印庆
制作一个纯三极管放大器,可切换输出五种不同波形,实现“正常波形”、“交越失真”、“顶部失真”、“双向失真”、“底部失真”五种输出波形,输出幅值大于2V。通过显示器观察ADC采集到的波形与计算出的THD值。同时使用ZYNQ与AD9226采集并测量出总谐波失真。
放大器处在理想工作状态时,其输入信号应与输出信号波形一致。而在实际电路工作时,放大器的输入信号与输出信号的波形总会存在一定的差别,这种现象叫失真。每一种失真都有不同的原因:
(1)正常波形:三极管静态工作点位于正常区间;
(2)顶部失真:对于NPN型三极管,静态工作点靠下,产生截止失真;对于PNP型三极管,静态工作点靠上,产生饱和失真;
(3)底部失真:对于NPN型三极管,静态工作点靠上,产生饱和失真;对于PNP型三极管,静态工作点靠下,产生截止失真;
(4)交越失真:三极管推挽电路会产生交越失真。
晶体管放大电路前、中级采用无反馈带输入和偏置电阻,后级仍然采用三极管差分推挽电路。该电路不仅可以实现输出大于2V的正常、顶部、底部、双向、交越失真,而且电路非常简易。它的前级由于没有了反馈电阻,当把三级管的静态工作点设置到最佳区域时,可以实现超过50倍的放大作用。而中级放大电路没有反馈后,可以直接调节偏置电阻实现顶部和底部失真,并且不会影响放大倍数。尤其是整个电路没有了反馈后,信号输出电压可最大无限接近电源电压。
本装置由STM32F103C8T6核心控制板、S9013三极管、碳膜电阻、电解电容组成,通过改变五个通道的放大器三极管的静态工作点,实现“无明显失真”、“顶部失真”、“底部失真”、“双向失真”、“交越失真”五种输出波形。
控制部分:
使用STM32F103C8T6控制达林顿管输出控制继电器,继电器控制晶体管放大电路的电阻器实现切换波形。本次方案选择ZYNQ作为ADC的控制器,使用PL部分采集ADC的数据,使用PS部分的一个ARM cortex-A9进行数据的处理。控制电路图如图1所示。
图1 控制电路图
在ZYNQ芯片内的PL部分使用FIFO缓冲ADC采集过来的数据,并在PL内添加Axi4-lite从机IP,使用Aix4-lite接口将FIFO映射到ARM的内存地址上,当FIFO存满数据后,使用ARM读取相应内存获取ADC数据,再在ARM中对数据进行傅里叶变换,求出THD。
PL部分使用verilog设计,包含HDMI输出、ADC采集与存储、Axi4-lite从机控制。其中HDMI输出使用的是digilent的参考IP,其余的采集与控制部分,全部为自主设计并仿真实现。
Axi4-lite采集控制:
本IP使用verilog书写,使用systemverilog进行仿真。实现了通过寄存器控制ADC采集的开关以及ADC采样时钟的分频系数,并将FIFO的数据输出端口映射为寄存器,可以通过ARM读取寄存器实现使FIFO输出数据。Lite2fifo为Axi4-lite接口的控制器,控制ADC数据采集,完整的ADC采集流程如下:
(1)通过寄存器3设置用户CLK分频系数;
(2)先通过寄存器1读取数据,清空FIFO;
(3)寄存器2写1使能FIFO从外部写入数据;
(4)寄存器2写0关闭FIFO写入;
(5)从过寄存器1读取数据。
使用SDK进行ADC采集得到程序设计。
ADC采集的完整流程如图2所示。
图2 ADC采集的完整流程
本文研究了基于晶体管放大器的非线性失真。通过改变三极管的静态工作点,从而实现四种不同的失真波形图,使用ADC采集晶体管放大器的输出电压,进行快速傅里叶变换之后,计算总谐波失真并显示出来。