宽带前置放大器设计报告概要.docx
《宽带前置放大器设计报告概要.docx》由会员分享,可在线阅读,更多相关《宽带前置放大器设计报告概要.docx(25页珍藏版)》请在冰豆网上搜索。
![宽带前置放大器设计报告概要.docx](https://file1.bdocx.com/fileroot1/2023-8/19/e5d74180-3ede-4dc7-b6dc-152dac27a8f6/e5d74180-3ede-4dc7-b6dc-152dac27a8f61.gif)
宽带前置放大器设计报告概要
宽带前置放大器设计报告
专业:
电气自动化
班级:
自动化111班
成员:
王梦瑶学号:
116040094
成员:
方炜敏学号:
116040158
成员:
覃坤勇学号:
116040069
指导老师:
邬杨波、李宏、谢建军、励金祥
摘要:
本设计是一个通过50
和1M
的输入阻抗切换,用THS3091芯片做电压跟随器,经过可以按键切换的衰减1倍和10倍的两个无源衰减网络和两个可以按键切换的由THS3091构成的1倍和10倍的有源放大网络,构成一个可以把输入信号放大1倍,衰减10倍,放大10倍,和先衰减10倍再放大10倍的频带宽度为10M的宽带放大器。
本设计还通过外接一个波形整形电路,经过FPGA分频后接入单片机C8051F020的P0.0口,用等精度测量频率方法来测量输入的频率,并通过数码管分三个频段显示。
关键字:
阻抗切换,波形整形,无源衰减,有源放大,FPGA,单片机
1方案设计与论证
1.1FPGA前的波形整形电路设计
方案一:
选择用MAX913芯片构成的比较器来整形,整形电路如图1。
图1MAX913比较器波形整形电路图
方案二:
选择用高频三极管9018放大至失真后和与非门构成的门电路组合整形。
方案三:
选择使用比较器LM311构成的波形整形电路。
如图2所示。
图2LM913比较器构成的波形整形电路图
总结:
由于本设计的的频带宽度要求甚高,方案三在高频时反应时间过慢,无法使用,故排除方案三,而方案一的MAX913是高频比较器,可以在设计要求的全频段内实现整形,但因其价格过高,故排除方案一,方案二的价格低廉,又因9018是高频三极管,其工作频率高达1GHz,故选用方案二。
1.2阻抗匹配单元:
方案一:
使用六个300Ω的电阻并联来提供50Ω的输入阻抗匹配,一个1MΩ的电阻为第二输入阻抗。
方案二:
使用一个50Ω的电阻来实现,一个1MΩ的电阻为第二输入阻抗。
总结:
对于输入信号为5V时,单个50Ω电阻承受功率约为0.5W,功率过大,且实验室没有50Ω的电阻,选用6个300Ω电阻并联时每个电阻所承受的功率为0.083W,功率不大,且实验室有300Ω电阻,在36V的输入信号时,单个1MΩ的电阻所承受的功率为0.0013W,功率亦不大,故选择方案一作为输入阻抗单元。
1.3无源衰减网路电路的设计
方案一:
典型的PI型衰减电路,如图3所示,其中
(1)
(2)
(3)
方案二:
典型的T型衰减电路,如图4所示,其中
(4)
(5)
(6)
方案三:
典型的桥式衰减电路,如图5所示,其中
(7)
(8)
(9)
(说明:
L=需要的衰减值;zin=需要的输入阻抗;zout=需要的输出阻抗)
方案四:
串联电阻分压电路,这种设计可以对信号进行1倍和10倍的衰减,将200Ω分成180Ω和20Ω两个部分,其中20Ω由5Ω的电阻和50Ω的滑阻组成以方便更准确地测量,在20Ω部分取输出,可以对信号10倍衰减;取100Ω的电阻可以对信号进行1倍衰减。
图3PI型衰减图4T型衰减
图5桥式衰减
总结:
由于根据题目要求输出阻抗尽量小,输入阻抗尽量大,所以当使用方案二时假如当输入阻抗为1MΩ时它的输出阻抗会变得很大,不符合题目要求;使用方案三其输出阻抗和输入阻抗要求相同,有一定的局限性。
方案一与方案四相比较,方案四更灵活简单,所以最后选择方案四作为无源衰减网络部分。
1.4有源放大电路部分:
方案一:
使用TI公司生产的THS3091型高精度运算放大器来实现的,通过选择合适电阻,可以达到放大1倍、10倍的效果。
方案二:
使用低通滤波电路进行放大,电路如图四所示。
图6低通滤波电路
总结:
方案一与方案二都可以完成该实验的要求,由于方案一的电路设计更为简单且不会在高频信号输入时产生更多的衰减,而方案二在高频时会衰减输入信号,因此本设计选用方案一。
2系统总体设计
系统整体设计流程图如图3所示,经过一个匹配的输入阻抗后再经过匹配好的无源衰减和有源放大电路输出。
图7系统总体设计流程图
3系统硬件电路的设计
3.1FPGA前的波形整形电路设计
波形整形电路是通过高频三极管对输入信号放大至失真,然后通过由三个与非门和一个二极管构成的简易施密特触发器对输入的正弦信号整形成FPGA所识别的TTL信号,其电路图如图8所示。
图8波形整形电路图
3.2输入阻抗匹配单元电路设计
根据题目要求,直流输入阻抗50Ω和1MΩ可选,用开关切换,为了达到题目要求的输入过载能力,选用6个300Ω电阻并联,其设计电路如图9所示。
图9输入阻抗匹配电路
3.3无源衰减网络单元电路设计
如果无源衰减网络直接连接输入阻抗电路会改变输入阻抗的值,因此我们在两者之间串联一个电压跟随器来保护输入阻抗不被改变。
电压跟随器的运放用THS3091设计,从而不影响电路带宽要求。
根据电阻分压来确定各阻值的大小,并用单刀双掷开关来进行选择,其设计电路如图10所示。
图10无源衰减网络电路图
3.4有源放大单元电路设计
根据题目的带宽要求,此处放大器运放选用THS3091,用开关选择放大倍数,开关断开时,运放作为电压跟随器,放大倍数为1,闭合时,通过放大倍数公式(10)选择合适电阻。
(10)
图11有源放大电路图
4系统软件设计
由于单片机的外部晶振最大为24MHz,故单片机最大的检测频率越为1MHz左右,但是在测量10MHz的高频时就需要对信号先进行分频,其实现方案是:
经过波形整形电路后,将信号送入FPGA的PIO4口,通过编程FPGA实现对低频信号不分频直接输入单片机中,而对高频信号进行100倍的分频后通过PIO8口送入单片机,控制其分频与否在单片机的P0.2口,输出低电平不分频,高电平则分频。
单片机程序设计流程图如图12所示。
图12单片机系统程序设计流程图
5系统测试
5.1测试使用仪器
测试仪器如下表1:
表1系统测试所用仪器列表
序号
仪器
数量
1
SP-F10A信号发生器
1台
2
DF2172A交流毫伏表
1台
3
LPS-305数控式线性直流稳压电源
1台
4
UT53数字万用表
1只
5
GDS-2064数字存储示波器
1台
6
MOS-620B模拟示波器
1台
5.2测试数据及其处理
5.2.1输入阻抗测试
在整体电路的输入端串联一个R=982Ω的电阻,当切换到理论输入阻抗为50Ω时,从信号发生器中引出峰值为1V的正弦波到电阻的一端,用模拟示波器分别观察电阻两端波形的电压值,得Us=1.00V,Ui=48mV,由图13得公式(11),算得输入阻抗Ri=49.51Ω。
误差为0.98%。
当切换到理论值为1MΩ时,在其输入端串联一个R=9.85kΩ的电阻,从信号发生器中引出峰值为2V的正弦波到电阻的一端,用模拟示波器分别观察电阻两端波形的电压值,得Us=2.02V,Ui=2.00V,由公式(11)计算得输入阻抗Ri=985kΩ。
误差为1.5%。
输入阻抗皆符合不超过2%的误差,设计可行。
(11)
图13输入阻抗示意图
5.2.1大信号1倍放大宽带特性
直流零点0.14mV
最大过冲15%
其具体数据如表2所示。
表2大信号1倍放大宽带特性测试数据表
频率(Hz)
输入幅值(V)
输出幅值(V)
增益(dB)
显示频率(V)
频率误差(%)
DC
1.00
0.015
-50.56
0
0
50
1.00
1.00
0
50
0
100
1.00
1.00
0
99
1
500
1.00
1.00
0
498
0.4
1k
1.00
1.00
0
995
0.5
5k
1.00
1.00
0
4987
0.26
10k
1.00
1.00
0
9.96k
0.4
20k
1.00
1.00
0
19.9k
0.5
50k
1.00
1.00
0
49.8k
0.4
100k
1.00
1.00
0
99.7k
0.3
200k
1.00
1.00
0
199.5k
0.25
500k
1.00
1.00
0
498.7k
0.26
1M
1.00
1.00
0
997.3k
0.27
2M
1.00
1.00
0
1.99M
0.5
5M
1.00
1.00
0
4.98M
0.4
8M
1.00
1.05
0.42
7.97M
0.375
10M
1.00
1.15
1.21
9.97M
0.3
5.2.2大信号衰减10倍带宽特性
直流零点0.14mV
最大过冲0
其具体数据如表3所示。
表3大信号衰减10倍宽带特性测试数据表
频率(Hz)
输入幅值(V)
输出幅值(V)
增益(dB)
频率
(Hz)
输入幅值(V)
输出幅值(V)
增益(dB)
DC
5.00
0.015
-50.56
100k
5.00
0.46
-20.72
50
5.00
0.46
-20.72
200k
5.00
0.46
-20.72
100
5.00
0.46
-20.72
500k
5.00
0.46
-20.72
500
5.00
0.46
-20.72
1M
5.00
0.42
-21.51
1k
5.00
0.46
-20.72
2M
5.00
0.40
-21.94
5k
5.00
0.46
-20.72
5M
5.00
0.38
-22.38
10k
5.00
0.46
-20.72
8M
5.00
0.36
-22.85
20k
5.00
0.46
-20.72
10M
5.00
0.34
-23.40
50k
5.00
0.46
-20.72
5.2.3小信号10倍放大带宽特性
直流零点0.14mV
最大过冲0
其具体数据如表4所示。
表4小信号10倍放大宽带特性测试数据表
频率(Hz)
输入幅值(V)
输出幅值(V)
增益(dB)
频率
(Hz)
输入幅值(V)
输出幅值(V)
增益(dB)
DC
0.10
0.015
-50.56
100k
0.10
1.00
20
50
0.10
1.00
20
200k
0.10
1.00
20
100
0.10
1.00
20
500k
0.10
1.00
20
500
0.10
1.00
20
1M
0.10
1.00
20
1k
0.10
1.00
20
2M
0.10
1.00
20
5k
0.10
1.00
20
5M
0.10
0.85
18.59
10k
0.10
1.00
20
8M
0.10
0.80
18.06
20k
0.10
1.00
20
10M
0.10
0.75
17.50
50k
0.10
1.00
20
5.2.4小信号衰减10倍放大10倍带宽特性
直流零点0.14mV
最大过冲0
其具体数据如表5所示。
表5小信号衰减10倍放大10倍宽带特性测试数据表
频率(Hz)
输入幅值(V)
输出幅值(V)
增益(dB)
频率
(Hz)
输入幅值(V)
输出幅值(V)
增益(dB)
DC
0.10
0.015
-50.56
100k
0.10
0.10
0
50
0.10
0.10
0
200k
0.10
0.10
0
100
0.10
0.10
0
500k
0.10
0.10
0
500
0.10
0.10
0
1M
0.10
0.095
-0.45
1k
0.10
0.10
0
2M
0.10
0.09
-0.92
5k
0.10
0.10
0
5M
0.10
0.08
-1.94
10k
0.10
0.10
0
8M
0.10
0.075
-2.50
20k
0.10
0.10
0
10M
0.10
0.07
-3.10
50k
0.10
0.10
0
6设计总结
本设计通过测试,输入阻抗误差不超过2%,频率测试误差不超过1%,且大信号与小信号在各种情况下的频带宽度均超出DC~10MHz范围,且在小信号衰减10倍放大10倍过冲为0,本项目基本完成了设计指标。
附录
1FPGA源程序:
1.1分频模块源代码
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYfenpinIS
PORT(clk:
INSTD_LOGIC;
y:
OUTSTD_LOGIC);
ENDfenpin;
ARCHITECTURErtlOFfenpinIS
SIGNALq:
STD_LOGIC_VECTOR(6DOWNTO0);
SIGNALa:
std_logic;
BEGIN
PROCESS(clk,q)
BEGIN
IFclk'EVENTANDclk='1'THEN
q<=q+'1';
IF(q=50)THEN
q<="0000000";
a<=NOTa;
ENDIF;
ENDIF;
y<=a;
ENDPROCESS;
ENDrtl;
1.2切换模块源代码
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYqiehuanIS
PORT(clkin1,clkin2,en:
INSTD_LOGIC;
y:
OUTSTD_LOGIC);
ENDqiehuan;
ARCHITECTURErtlOFqiehuanIS
BEGIN
PROCESS(clkin1,clkin2,en)
BEGIN
IFen='1'THEN
y<=clkin1;
ELSE
y<=clkin2;
ENDIF;
ENDPROCESS;
ENDrtl;
1.3顶层设计图
2单片机源代码:
#include
unsignedchara[8]={0,0,0,0,0,0,0,0};
unsignedlongf=0,fx=0,temp00=0;
unsignedchartime=0,X=0;
sbitout=P0^2;
intkey_num;
/*******************系统初始化函数**********************/
voiddelay10ms(inti)//长延时
{
intj,k;
for(k=0;k<120;k++)
for(j=0;j
}
voidshortdelay()//短延时
{
inti;
for(i=0;i<1000;i++);
}
voidinit_gmg()//关门狗初始化
{
EA=0;
WDTCN=0xDE;
WDTCN=0xAD;
}
voidsystem_clk()//系统时钟初始化
{
OSCXCN=0xE7;//选择外部时钟24M
shortdelay();
while(!
(OSCXCN&0x80));
OSCICN=0x18;
}
voidinit_jckg()//交叉开关初始化
{
XBR0=0X00;
XBR1=0X08;//使能T1E,T1EXE
XBR2=0x40;//使能交叉开关
}
voidinit_zlg()//周立功初始化
{
delay10ms(10);//延时100ms等待ZLG稳定
ZLG7289_Init(100);
key_num=0xff;
}
voidTimer0_init()//定时器初始化
{
TH0=(65536-40000)/256;
TL0=(65536-40000)%256;
}
voidTimer1_init()//定时器初始化
{
TH1=255;
TL1=255;
}
voidInterruptInit()//中断7初始化
{
EIE2=0x20;//外部中断7中断允许
P3IF=0x00;//下降沿触发,软件清零
EIP2=0x20;//设置外部中断7为高优先级
}
/*****************显示函数**********************/
voidxianshi1()
{
unsignedchari;
ZLG7289_Reset();
a[0]=X%10;
a[3]=temp00/10000%10;
a[4]=temp00/1000%10;
a[5]=temp00/100%10;
a[6]=temp00/10%10;
a[7]=temp00%10;
ZLG7289_Download(0,0,0,a[0]);
for(i=3;i<=7;i++)
ZLG7289_Download(0,i,0,a[i]);
}
voidxianshi2()
{
unsignedchari;
ZLG7289_Reset();
a[0]=X%10;
a[4]=temp00/1000%10;
a[5]=temp00/100%10;
a[6]=temp00/10%10;
a[7]=temp00%10;
ZLG7289_Download(0,0,0,a[0]);
for(i=4;i<=7;i++)
if(i==6)
ZLG7289_Download(0,i,1,a[i]);
else
ZLG7289_Download(0,i,0,a[i]);
}
voidxianshi3()
{
unsignedchari;
ZLG7289_Reset();
a[0]=X%10;
a[4]=temp00/1000%10;
a[5]=temp00/100%10;
a[6]=temp00/10%10;
a[7]=temp00%10;
ZLG7289_Download(0,0,0,a[0]);
for(i=4;i<=7;i++)
if(i==5)
ZLG7289_Download(0,i,1,a[i]);
else
ZLG7289_Download(0,i,0,a[i]);
}
/******************中断处理函数********************/
voidT1_ISR(void)interrupt3
{
f=f+1;
}
voidT0_ISR(void)interrupt1
{
TH0=(65536-40250)/256;
TL0=(65536-40250)%256;
if(++time==50)
{
time=0;
TR1=0;
fx=f;
f=0;
if(X==0)
{
temp00=fx;
xianshi1();
}
elseif(X==1)
{
temp00=fx;
xianshi2();
}
else
{
temp00=fx/100;
xianshi3();
}
TR1=1;
}
}
voidservice_int1()interrupt19//外部中断7
{
key_num=ZLG7289_Key();
P3IF=0x00;//中断标志位清零
}
/***********************复位函数***************************/
voidqingchu()
{
if(key_num==0)
{
TR0=1;
TR1=1;
key_num=0xff;//复位按键值
}
elseif(key_num==1)
{
TR0=0;
TR1=0;
temp00=0;
xianshi1();
key_num=0xff;//复位按键值
}
elseif(key_num==2)
{
X=0;
out=0;
key_num=0xff;//复位按键值
}
elseif(key_num==3)
{
X=1;
out=1;
key_num=0xff;//复位按键值
}
elseif(key_num==4)
{
X=2;
out=1;
key_num=0xff;//复位按键值
}
}
/*************************主函数*******************************/
voidmain()
{
system_clk();//系统时钟初始化
init_gmg();//关门狗初始化
init_jckg();//交叉开关初始化
init_zlg();//周立功初始化
InterruptInit();//中断7初始化
TMOD=0x61;
Timer0_init();//定时器0初始化
Timer1_init();//定时器1初始化
EA=1;
ET0=1;
ET1=1;
ZLG7289_Reset();
while
(1)
{
qingchu();
}
}