简易数字信号传输性能分析仪.docx
- 文档编号:24607046
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:26
- 大小:217.01KB
简易数字信号传输性能分析仪.docx
《简易数字信号传输性能分析仪.docx》由会员分享,可在线阅读,更多相关《简易数字信号传输性能分析仪.docx(26页珍藏版)》请在冰豆网上搜索。
简易数字信号传输性能分析仪
简易数字信号传输性能分析仪
吴肖伟
桑骉
徐婕
2011-9-3
1.目标与要求
1.1目标:
本实验主要是设计一个数字信号传输性能分析仪,实现数字与信号传输与性能测试同时设计三个低通滤波器和一个伪随机信号发生器用来模拟传输信道。
该设计的数字信号发生由CPLD来编写,通过低通滤波器来滤除高频,再与伪随机信号一起通过加法器,最后进行数据信号分析电路,通过示波器来观察眼图来决定数字信号传输性能。
1.2要求:
(1)设计并制作一个数字信号发生器:
a)数字信号V1为f1(x)=1+x2+x3+x4+x8的m序列,其时钟信号为V1-clock;
b)数据率为10~100kbps,按10kbps步进可调。
数据率误差绝对值不大于1%;
c)输出信号为TTL电平。
(2)设计三个低通滤波器,用来模拟传输信道的幅频特性:
a)每个滤波器带外衰减不少于40dB/十倍频程;
b)三个滤波器的截止频率分别为100kHz、200kHz、500kHz,截止频率误差绝对值不大10%;
c)滤波器的通带增益AF在0.2~4.0范围内可调。
(3)设计一个伪随机信号发生器用来模拟信道噪声:
a)伪随机信号V3为f2(x)=1+x+x4+x5+x12的m序列;
b)数据率为10Mbps,误差绝对值不大于1%;
c)输出信号峰峰值为100mV,误差绝对值不大于10%。
(4)利用数字信号发生器产生的时钟信号V1-clock进行同步,显示数字信号V2a的信号眼图,并测试眼幅度。
(5)要求数字信号发生器输出的V1采用曼彻斯特编码。
(6)要求数字信号分析电路能从V2a中提取同步信号V4-syn并输出;同时,
利用所提取的同步信号V4-syn进行同步,正确显示数字信号V2a的信号
眼图。
(7)要求伪随机信号发生器输出信号V3幅度可调,V3的峰峰值范围为
100mV~TTL电平。
(8)在完成基本要求时,数字信号发生器的时钟信号V1-clock送给数字信号分
析电路(图1中开关S闭合);最好能提取出书中信号不用V1-clock送给数字信号分析电路(开关S断开)。
.
2.设计思路和原理(含芯片介绍)
2.1系统总体思路
用VHDL语言编程来产生数字信号与伪随机信号(数字信号频率为10K—100K,步进为10K,伪随机信号频率为10M),三个低通滤波器都使用模拟滤波器,截止频率分别为100K,200K,500K。
低通滤波器的书处于伪随机信号相叠加。
最后相叠加的信号经过带宽为10K,中心频率为20K的带通滤波器。
开关S是选择同步时钟,闭合时选择数字发生器时钟信号,段开时选择提取的同步时钟信号。
如图1--1
图1--1
2.2EPM570T100C5原理介绍
嵌入式系统在日常生活中的大量使用,人们也对其性能和速度提出了更高的要求。
微控制器和可编程逻辑器件的结合,更能充分发挥嵌入式系统的优势。
本文设计和实现的微控制器与可编程逻辑器件之间总线读写方式通信比传统的串行通信更可靠、速度更快。
之所以用MAXII是因为由于伪随机信号频率要求为10M而单片机的时钟远不如FPGA的,所以选择FPGA。
EPM570自带100M晶振。
端口又多,所以极为合适。
2.3低通滤波器原理介绍
2.3.1定义:
低通滤波器是一个让某一频率以下的信号分量通过,而对该频率以上的信号分量大大抑制的电容、电感与电阻等器件的组合装置。
2.3.2分类:
(a)巴特沃斯滤波器:
巴特沃斯滤波器在通频带内外都有平稳的幅频特性,但有较长的过渡带,在过渡带上很容易造成失真。
(b)切比雪夫滤波器:
切比雪夫滤波器的过渡带很窄,但内部的幅频特性却很不稳定。
(c)滤波设计:
此处我们选择了巴特沃斯滤波器,因为我们需要很好的扶贫特性,其次我们对于巴特沃斯比较了解。
我们设计的是3个4阶滤波器。
截止频率分别为100K,200K,500K。
主要为了滤除一些高频,使得数字信号(10K—100K)能很好的表达出来。
2.3.3OPA820介绍:
该OPA820提供了一个宽带,单位增益稳定,电压反馈放大器具有非常低的输入噪声电压和高输出电流使用低5.6毫安电源电流。
在单位增益,使该OPA820在<1dB的峰值的带宽为800MHz。
该OPA820补充这一高速操作与卓越的DC在低功率器件的精度。
最坏情况下的输入失调电压为±750μV和偏移为±400nA电流提供较好的绝对直流精度脉冲放大器应用。
最小的输入和输出电压摆幅净空让OPA820操作在单一+5V的>2Vpp信号转换输出电源摆动。
虽然不是一个轨至轨(RR)的输出,这将挥杆大多数人支持新兴的模拟到数字转换器(ADC)低功耗和噪音比典型的居民代表输入范围。
2.3.4基本电路:
此处滤波器,我们用了3个opa820,第一个opa820是电压跟随器,其余2个是组成一个4阶滤波器。
滤波器的参数是通过FilterPro来设计出来的,具体值有点差别,所以我们尽量用电位器,保证能够达到理想的标准。
opa820如附录图1--1
2.4加法器原理介绍
2.4.1定义:
加法器是产生数的和的装置。
加数和被加数为输入,和数与进位为输出的装置为半加器。
若加数、被加数与低位的进位数为输入,而和数与进位为输出则为全加器。
2.4.2opa2690:
2690内部有2个运算放大电路,一个信号由2脚进入,1脚输出,加至另一个信号输入,进行相加,最后一起由6脚进入,7脚输出。
Opa2690如附录图1--2
2.4.3基本电路:
数字信号由2脚输入至伪随机信号,进行相加,最后由7脚输出。
在信号输入与反馈之间加个电位器是为了能够达到滤波器的通带增益AF在0.2~4.0范围内可调。
电路图中的另外一个电位器是调伪随信号的幅度(100mv—TTL电平)。
2.5带通滤波器原理介绍
2.5.1定义:
一种专门设计的数字、电子或机械系统,它可以抑制一定频带间隔外的所有信号,而频带内的信息通过时基本上不改变。
2.5.2TL082:
TL082是一通用的J-FET双运算放大器。
其特点有:
较低的输入偏置电压和偏移电流;输出设有短路保护;输入级具有较高的输入阻抗;内建频率补偿电路较高的压摆率。
TL082如附录图1--3
2.5.3基本电路:
为了保证输出电压与输入电压一致,所以前一个TL082构成一个电压跟随器,后一个TL082构成一个4阶带通滤波器,带宽为10K,中心频率为20K,目的是为了能够保证能很好的抑制20K以外的频率。
2.6数字示波器
数字滤波器是为了检查自己的各级输出波形的正确性,最终的眼图是在其上显示的。
具体做法:
用一个示波器的探头连接在接收滤波器的输出端,外接同步时钟,然后调整示波器的扫描周期,使示波器水平扫描周期与接受码元的周期严格同步并适当调整相位,使波形的中心对准取样时刻,这样在示波器上可以看到像”眼睛”的图形,称之为眼图,从“眼图”上可观察出码间串扰和噪声的影响,从而估计系统优劣。
眼睛张开大小反映着码间串扰的强弱。
3.系统原理图
3.1系统总体框图:
4.程序设计
4.1系统总体流程图:
4.1子程序1设计
4.1.12分频模块(fpi)
此模块为2分频,其目的是把100M时钟分成50M。
程序如附录C1:
4.1.2DDS模块(dds)
此模块为相当于DDS产生10K—100K步进为10K。
程序如附录C2:
4.1.3m序列信号(xlgen8)
此模块为m序列信号输出。
程序如附录C3:
4.1.410M时钟(fenpin)
此模块为产生10M频率
程序如附录C4:
4.1.5伪随机信号(xlgen12)
此模块为产生伪随机频率
程序如附录C5:
4.1.6曼切斯特信号(code)
此模块为产生曼切斯特信号
程序如附录C6:
4.1.7产生同步时钟(tfp)
此程序是产生同步时钟
程序如附录C7:
5.测试
5.1m序列信号发生
10KHZ—100KHZ的m序列:
m序列的频率由4个开关决定,如下表:
S3
S2
S1
S0
m序列频率/KHZ
0
0
0
0
10
0
0
0
1
20
0
0
1
0
30
0
0
1
1
40
0
1
0
0
50
0
1
0
1
60
0
1
1
0
70
0
1
1
1
80
1
0
0
0
90
1
0
0
1
100
5.2滤波器的频谱
5.2.1低通滤波器的频谱
截止频率为100KHZ:
截至频率为200KHZ:
截至频率为500KHZ:
带通滤波器频谱:
5.2.2电压增益测试表格:
截止频率
测试频率
Vi(V)
Vo(V)
Af=Vo/Vi
100kHz
10kHz
0.60
2.56
4.267
2.64
0.42
0.152
50kHz
0.64
3.12
4.875
2.64
0.42
0.152
100kHz
0.64
2.80
4.375
2.64
0.40
0.152
200kHz
10kHz
0.64
3.08
4.812
2.72
0.456
0.168
100kHz
0.64
3.00
4.688
2.72
0.44
0.162
200kHz
0.64
2.60
4.062
2.72
0.472
0.174
500kHz
10kHz
0.64
2.65
4.051
2.80
0.472
0.169
250kHz
0.64
2.60
4.062
2.72
0.464
0.171
500kHz
0.64
2.88
4.537
2.68
0.392
0.137
5.3眼图:
5.3.1无噪声眼图:
5.3.2有低幅度噪声眼图:
5.3.3有大幅度噪声眼图:
5.3.4曼切斯特眼图
6.结论
本实验完成了基本要求与发挥部分,通过VHDL实现了频率可调的m序列的TTL电平。
完成的3个低通滤波器与一个带通滤波器,噪声幅度的值可调,外接时钟与信号有眼图出现,曼切斯特信号也有眼图出现。
虽然在设计制作过程中还遇到很多困难和不足,但是通过此次比赛,我们学会了如何以团队的合作与个人的勤奋来完成一项设计,这对我们在以后的学习工作中都会产生长远的影响。
7.附录
7.1原理图
图1—1
图1—2
图1--3
7.2程序代码
C1:
Libraryieee;
Useieee.std_logic_1164.all;
Useieee.std_logic_arith.all;
Useieee.std_logic_unsigned.all;
entityfpiisport(
clkin:
instd_logic;//时钟输入(100M)
clkout:
outstd_logic);//时钟数出(50M)
endfpi;
architecturebehaveoffpiis
signalcnt:
std_logic;
begin
process(clkin)
begin
if(clkin'eventandclkin='1')then
cnt<=notcnt;
endif;
endprocess;
clkout<=cnt;
endbehave;
C2:
Libraryieee;
Useieee.std_logic_1164.all;
Useieee.std_logic_arith.all;
Useieee.std_logic_unsigned.all;
entityddsisport(
clkin:
instd_logic;//50M时钟输入
ctrin:
instd_logic_vector(3downto0);//分频控制
rst:
instd_logic;//复位端
clkout:
outstd_logic);//分频时钟输出
enddds;
architecturebehaveofddsis
signalcount1:
std_logic_vector(10downto0);//20K
signalcount2:
std_logic_vector(9downto0);//40K
signalcount3:
std_logic_vector(8downto0);//60K
signalcount4:
std_logic_vector(8downto0);//80K
signalcount5:
std_logic_vector(7downto0);//100K
signalcount6:
std_logic_vector(7downto0);//120K
signalcount7:
std_logic_vector(7downto0);//140K
signalcount8:
std_logic_vector(7downto0);//160K
signalcount9:
std_logic_vector(7downto0);//180K
signalcount10:
std_logic_vector(6downto0);//200K
signalfpclk:
std_logic;
signalfpclk1:
std_logic;
signalfpclk2:
std_logic;
signalfpclk3:
std_logic;
signalfpclk4:
std_logic;
signalfpclk5:
std_logic;
signalfpclk6:
std_logic;
signalfpclk7:
std_logic;
signalfpclk8:
std_logic;
signalfpclk9:
std_logic;
signalfpclk10:
std_logic;
begin
process(clkin,rst)
begin
if(rst='1')then
count1<="00000000000";
elsif(clkin'eventandclkin='1')then
if(count1="10011100010")then
count1<="00000000000";
fpclk1<=notfpclk1;
else
count1<=count1+1;
endif;
endif;
endprocess;
process(clkin,rst)
begin
if(rst='1')then
count2<="0000000000";
elsif(clkin'eventandclkin='1')then
if(count2="1001110001")then
count2<="0000000000";
fpclk2<=notfpclk2;
else
count2<=count2+1;
endif;
endif;
endprocess;
process(clkin,rst)
begin
if(rst='1')then
count3<="000000000";
elsif(clkin'eventandclkin='1')then
if(count3="110100000")then
count3<="000000000";
fpclk3<=notfpclk3;
else
count3<=count3+1;
endif;
endif;
endprocess;
process(clkin,rst)
begin
if(rst='1')then
count4<="000000000";
elsif(clkin'eventandclkin='1')then
if(count4="100111000")then
count4<="000000000";
fpclk4<=notfpclk4;
else
count4<=count4+1;
endif;
endif;
endprocess;
process(clkin,rst)
begin
if(rst='1')then
count5<="00000000";
elsif(clkin'eventandclkin='1')then
if(count5="11111010")then
count5<="00000000";
fpclk5<=notfpclk5;
else
count5<=count5+1;
endif;
endif;
endprocess;
process(clkin,rst)
begin
if(rst='1')then
count6<="00000000";
elsif(clkin'eventandclkin='1')then
if(count6="11010000")then
count6<="00000000";
fpclk6<=notfpclk6;
else
count6<=count6+1;
endif;
endif;
endprocess;
process(clkin,rst)
begin
if(rst='1')then
count7<="00000000";
elsif(clkin'eventandclkin='1')then
if(count7="10110010")then
count7<="00000000";
fpclk7<=notfpclk7;
else
count7<=count7+1;
endif;
endif;
endprocess;
process(clkin,rst)
begin
if(rst='1')then
count8<="00000000";
elsif(clkin'eventandclkin='1')then
if(count8="10011100")then
count8<="00000000";
fpclk8<=notfpclk8;
else
count8<=count8+1;
endif;
endif;
endprocess;
process(clkin,rst)
begin
if(rst='1')then
count9<="00000000";
elsif(clkin'eventandclkin='1')then
if(count9="10001010")then
count9<="00000000";
fpclk9<=notfpclk9;
else
count9<=count9+1;
endif;
endif;
endprocess;
process(clkin,rst)
begin
if(rst='1')then
count10<="0000000";
elsif(clkin'eventandclkin='1')then
if(count10="1111101")then
count10<="0000000";
fpclk10<=notfpclk10;
else
count10<=count10+1;
endif;
endif;
endprocess;
process(clkin)
begin
casectrinis
when"0000"=>fpclk<=fpclk1;
when"0001"=>fpclk<=fpclk2;
when"0010"=>fpclk<=fpclk3;
when"0011"=>fpclk<=fpclk4;
when"0100"=>fpclk<=fpclk5;
when"0101"=>fpclk<=fpclk6;
when"0110"=>fpclk<=fpclk7;
when"0111"=>fpclk<=fpclk8;
when"1000"=>fpclk<=fpclk9;
when"1001"=>fpclk<=fpclk10;
whenothers=>null;
endcase;
endprocess;
clkout<=fpclk;
endbehave;
C3:
Libraryieee;
Useieee.std_logic_1164.all;
Useieee.std_logic_arith.all;
Useieee.std_logic_unsigned.all;
entityxlgen8isport(
clk,load,en:
instd_logic;//时钟,2个使能
lout:
bufferstd_logic);//m序列码输出
endxlgen8;
---------------------------------------------------
architecturebehaveofxlgen8is
constantlen:
integer:
=7;
signallfsr_val:
std_logic_vector(lendownto0);
signaldout:
std_logic_vector(lendownto0);
signalfp:
std_logic;
signalcnt:
std_logic;
begin
process(clk,en,dout)
begin
if(load='1')then
lfsr_val<="00000001";
elsif(en='1')then
lfsr_val(0)<=dout(7)xordout(5)xordout(4)xordout(3);
lfsr_val(lendownto1)<=dout(len-1downto0);
endif;
endprocess;
----------------------------------------------------
process(clk)
begin
if(clk'eventandclk='1')then
dout<=lfsr_val;
lout<=lfsr_val(len);
endif;
endprocess;
endbehave;
C4:
Libraryieee;
Useieee.std_logic_1164.all;
Useieee.std_logic_arith.all;
U
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易 数字信号 传输 性能 分析