则称f(x)为本原多项式。
由本原多项式产生的序列一定是m序列。
所以多项式f1(x)为本源多项式。
其产生的m序列的循环周期(长度)为P=28-1=255。
2.1.2伪随机信号发生器部分的m序列的产生
该信号的本源多项式为f1(x)=1+x1+x4+x5+x12。
其产生的m序列的循环周期(长度)为P=212-1=4095。
2.2低通滤波器设计
2.2.1芯片选择
本设计选用linear公司的LT1568芯片,该芯片采用单+3V电源时的中心频率可高达10MH,采用单个电阻器阻值来设定低通截止频率(200kHz<=fC<=5MHz),不对称的电阻器阻值可将截止频率扩展100kHz-10MHz,采用不同的电阻器阻值可实现带或不带增益的低通转移函数(巴特沃斯、切比雪夫或定制),内部有一对2阶滤波器,可采用单3V(最小值为2.7V)至±5V电源运作,轨至轨输入和输出电压。
2.2.2二阶参数计算
图1LT1568的内部结构及外部测试电路
LT1568芯片的内部结构及外部测试电路如图1,图中包含左右两个二阶低通滤波,并连接成了两个独立的二阶低通滤波电路,单个二阶低通滤波的低通传输特性函数为:
其中,
并不是OUTA或者OUTB,且
C1、C2是内部电容,典型值为:
2.2.3四阶参数
为了获得更好的滤波特性,可以设置一个四阶滤波电路,如图2所示,其不同截止频率巴特罗斯低通滤波参数可在该芯片的datasheet中查到,如表1。
图2四阶滤波器接法
表1四阶滤波器参数设计
截止频率(kHz)
R11,R21
R31
R12,R22
R32
100
10.5k
15.8k
18.2k
8.87k
200
5.23k
7.87k
9.31k
4.42k
500
2.1k
3.16k
3.74k
1.78k
2.3同步信号提取
采用STM32单片机对传输的数字信号进行程序处理操作,从而提取处同步信号。
2.4眼图显示
2.4.1眼图形成原理
屏幕上的每个信号波形通过触发点对齐,眼图通过对信号多次触发采集后叠加生成,如图3。
图3眼图形成原理
2.4.2眼图显示方法
本简易数字信号传输性能分析仪使用示波器来显示眼图,数字信号分析电路输出数字信号及其同步信号,将分析电路的分析信号加到示波器的Y轴,将示波器的触发源选择在外接档,并将数字信号的同步信号通过示波器的外接输入探头输入,然后调整示波器的扫描时间间隔和其触发电平,就能得到稳定的眼图,如图4。
图4眼图形成原理
3电路与程序设计
本系统由数字信号发生器模块、伪随机信号发生器、滤波电路模块、加法器模块、数字电路分析模块,显示器模块组成,如图5所示。
图5系统总框图
3.1单元电路设计
3.1.1单元框图
图6子系统组成框图
3.1.2信号发生器单元设计
1、m序列产生模块的电路图如图6所示。
Clk输入端为同步时钟,经过线性移位寄存器后用一组门电路作为反馈函数网络。
该电路采用CPLD芯片EPM7128实现。
由于该CPLD资源有限,同时提供了信号发生器和伪噪声发生器所需要的的逻辑器件。
所以其输入时钟控制采用了一片STM32单片机,通过单片机按键可以实现对clk时钟从10kHz到100kHz步进10kHz可调,即是数字信号发生器的数据率从10kbps到100kbps步进10kbps可调,同时,用液晶显示数据率。
图7m序列产生电路
2、曼彻斯特码产生电路如图8所示。
其中的m_gen子模块为m序列产生模块,将m序列与对应的同步时钟信号V1_clock一起输入到一个二输入异或门就可以得到m序列的曼特斯特编码V1_m。
但由于异或门的输入端信号可能同时跳变产生竞争冒险现象,故在异或门后级加一个用晶振时钟同步的D触发器,以消除竞争冒险。
该模块由CPLD实现。
图8曼彻斯特编码电路
3.1.3伪噪声信号产生单元设计
1、伪噪声信号产生子系统系统电路图如图9所示,该模块同样由CPLD实现。
其输入时钟为20MHz的晶振时钟,经过二分频后得到10MHz的时钟,将之供给线性移位寄存器。
Qout
图9伪随机信号发生器电路图
3.1.4滤波器单元设计
通过查看LT1568的数据手册,针对滤波器不同的截止频率计算芯片外围电路中电阻的阻值,并
用该芯片的设计软件进行了设计验证,得到100kHz,200kHz,500kHz的滤波电路图分别为图10,图11,图12。
图10
图11
图12
因为要求滤波器要在0.2-4范围内增益可调,虽然LT1568这款芯片可以通过调整外围电路电阻的比值来实现增益的调整,但是因为其供电电压为±5V,如若滤波器的输入电压为TTL电平,则不能实现4倍放大,所以滤波芯片并没有设置放大,而采用在芯片后,级联一级反相放大电路,进行放大,同时,让滤波芯片的输出信号从/OUT端引出,反相放大电路如图13。
图13
3.1.5加法器单元设计
为实现数字信号与噪声信号的叠加,采用图14所示同相加法电路,该电路能够实现V2,V3信号的同相相加,通过电阻计算,若R25=2R25=2R28=2R30=2R29,就能够使V2A=V2+V3。
图14加法器模块电路
3.1.6数字信号分析单元设计
数字信号分析模块采用一片STM32单片机实现
主程序为函数初始化和等待中断,比较简单,不做赘述。
中断服务程序的流程图如下所示。
图15中断服务程序流程图
4测试结果
4.1测试条件与仪器
测试条件:
检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。
测试仪器:
YB4340G模拟示波器,TDS1012泰勒数字示波器,数字万用表,QF1750-2稳压稳流直流电源,YB1602P功率函数信号发生器。
4.2测试结果及分析
4.2.1基本要求部分
(1)数字信号发生器
仿真波形如下:
图16数字信号发生器的m序列仿真波形
数据率测试数据为:
表2数据率测试数据
理论数据率(kbps)
10
20
30
40
50
测试值(kbps)
10.00
20.00
29.94
40.00
50.00
误差
0
0
0.200%
0
0
理论数据率(kbps)
60
70
80
90
100
测试值(kbps)
59.90
70.10
80.20
90.05
100
误差
0.167%
0.143%
0.250%
0.005%
0
数据率误差均不大于0.25%,小于1%,满足题目要求。
CPLD输出的数字信号高电平为3.4V,是TTL电平,满足题目要求。
(2)低通滤波器
对低通滤波器截至频率测试时,输入信号为峰峰值为2V的正弦波
①100kHz低通滤波测试数据如下:
表3100kHz低通测试数据
信号频率(kHz)
10
30
50
70
80
90
输出电压p-p(V)
2.00
2.00
2.00
1.96
1.84
1.68
信号频率(kHz)
100
150
200
输出电压p-p(V)
1.42
400mV
250mV
测得其截止频率为101k,误差为1%
②200kHz低通滤波测试数据如下:
表4200kHz低通测试数据
信号频率(kHz)
10
30
50
70
90
110
输出电压p-p(V)
2.00
2.00
1.98
2.00
2.00
1.96
信号频率(kHz)
130
150
170
180
190
200
输出电压p-p(V)
1.93
1.90
1.76
1.52
1.42
1.30
信号频率(kHz)
250
400
输出电压p-p(V)
760mV
190mV
测得其截止频率为191k,误差为4.5%
③500kHz低通滤波测试数据如下:
表5500kHz低通测试数据
信号频率(kHz)
50
100
150
200
250
300
输出电压p-p(V)
2.00
2.00
1.96
1.96
1.96
1.92
信号频率(kHz)
350
400
450
500
700
1000
输出电压p-p(V)
1.88
1.76
1.62
1.36
440mV
128mV
信号频率(kHz)
1500
2000
输出电压p-p(V)
30mV
17.2mV
测得其截止频率为494k,误差为1.2%
经LT1568滤波之后的信号经反相端输出,然后经过一个反相放大器放大,测试得其放大倍数范围为0.03~6倍,满足0.2~4倍的题目要求。
带外衰减测试结果:
四阶滤波,带外衰减远大于4040dB/十倍频程,实际测试其十倍频程处信号已经mV级别,达到题目要求。
(3)伪随机信号发生器
其仿真波形如下
图17伪随机信号发生器m序列仿真波形
数据率测得为9.98Mbps-10.02Mbps,误差绝对值为0.2%,满足题目要求
输出信号峰峰值测试结果:
最低可到50mV,最大可到3V,达到TTL电平,满足题目要求。
(4)眼图观察
用数字信号发生器产生的时钟信号V1-clock进行同步得到眼图。
测试中数字信号码率为100kHz,滤波器分别为为100kHz、200kHz、500kHz时对应的眼图,如下图所示。
Fc=100kHzfc=200kHzfc=500kHz
图18眼图测试结果
眼图的具体测试数据如下表所示。
1测试条件:
100mV噪声信号,100kHz低通滤波
表6100kHz低通滤波下的眼图幅度测试数据
数据率/kbps
10
20
30
40
50
60
70
80
90
100
眼幅度/V
3.4
3.4
3.4
3.4
3.4
3.4
3.4
3.4
3.4
3.5
2测试条件:
100mV噪声信号,200kHz低通滤波
表7200kHz低通滤波下的眼图幅度测试数据
数据率/kbps
10
20
30
40
50
60
70
80
90
100
眼幅度/V
3.4
3.3
3.4
3.4
3.4
3.35
3.4
3.5
3.5
3.4
3测试条件:
100mV噪声信号,500kHz低通滤波
表8500kHz低通滤波下的眼图幅度测试数据
数据率/kbps
10
20
30
40
50
60
70
80
90
100
眼幅度/V
3.2
3.2
3.2
3.2
3.2
3.2
3.2
3.2
3.2
3.2
4.2.2发挥部分
(1)数字信号发生器输出的V1采用曼彻斯特编码
由CPLD做,仿真波形如下:
图19m序列和曼彻斯特编码仿真波形
(2)用单片机提取同步信号和数字信号仪器输入到示波器得到眼图。
滤波器截止频率为100kHz时的眼图结果
提取的同步信号与m序列的clock信号周期相同;同步信号不是标准方波,而是一个负脉冲,但是当眼图显示的外部触发源已经足够;两个信号有一点点的相位差,但是在眼图的显示时,只需稍加调节触发电平就可以很好的显示眼图。
Fc=100kHzfc=200kHzfc=500kHz
图20眼图测试结果
(3)伪随机信号发生器输出信号V3幅度可调,V3的峰峰值范围为100mV~TTL电平
此项已在基本要求数据测试中达到要求并说明
(4)高噪声下的眼图(噪声的Vpp=2.4V)
图21200kHz低通滤波后的眼图图22500kHz低通滤波后的眼图
4.2.3测试分析与结论
根据上述测试数据和测试现象,由此可以得出以下结论:
1、滤波器截止频率较高时,能更好的对数字信号进行滤波,也就是传输性能更好;当滤波器截止频率较低时,数字信号的边缘被平缓话,对信号的传输造成较大影响。
2、通过对眼图的观察,可以了解数字信号的失真量,信号幅度等信息。
由于系统架构设计合理,功能电路实现较好,系统性能优良、稳定。
综上所述,本设计达到设计要求。
参考文献
[1]杨素行.模拟电子技术基础.高等教育出版社.2006年.
[2]孙延鹏.VHDL与可编程逻辑器件.航空工业出版社.2006年.
[3]彭刚.基于ARMCortex-M3的stm32系列嵌入式控制器应用实践.电子工业出版社.2010年.
[2]黄志伟.常用电路模块制作.北京航空航天大学出版社.2011年.
附录1:
电路原理图
附录2:
源程序
主程序:
//头文件申明
#include"stm32f10x.h"
#include"fsmc_sram.h"
#include"stm32f10x.h"
//结构体申明
ErrorStatusHSEStartUpStatus;
TIM_TimeBaseInitTypeDefTIM8_TimeBaseStructure;
TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;
TIM_TimeBaseInitTypeDefTIM1_TimeBaseStructure;
TIM_OCInitTypeDefTIM8_OCInitStructure;
TIM_OCInitTypeDefTIM1_OCInitStructure;
TIM_BDTRInitTypeDefTIM8_BDTRInitStructure;
//子程序的申明
voidEXTI_Configuration(void);
voidNVIC_Configuration(void);
voidRCC_Configuration(void);
voidGPIO_Configuration(void);
voidTIM_Config(intaa);
voidTIM_Configuration(intaa);
voidTIM1_Configuration(intaa);
voidTIM2_Configuration(void);
voidLCD_Input1(void);
voidlcd_rst(void);
externvoidLCD_Init(void);
voidLCD_displaychar(u16Line,u16Row,u8Num);
voidLCD_displayABC(u16Line,u16Row,u8Num);
voidDelay(__IOuint32_tnCount);
intmain(void)
{
#ifdefDEBUG
debug();
#endif
//初始化
RCC_Configuration();
EXTI_Configuration();
NVIC_Configuration();
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC,ENABLE);
GPIO_Configuration();
GPIO_SetBits(GPIOC,GPIO_Pin_7);
FSMC_LCD_Init();
LCD_Init();
LCD_Input1();
TIM2_Configuration();
TIM_Cmd(TIM8,DISABLE);
TIM_Config(7200);
LCD_displayABC(150,224,1);
LCD_displayABC(150,208,0);
LCD_displayABC(150,192,46);
LCD_displayABC(150,176,37);
LCD_displayABC(150,160,51);
LCD_displayABC(150,144,54);
while
(1)
{
}
}
//按键引脚的中断配置
voidEXTI_Configuration(void)
{
EXTI_InitTypeDefEXTI_InitStructure;
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource2);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource4);
EXTI_ClearITPendingBit(EXTI_Line0);
EXTI_ClearITPendingBit(EXTI_Line2);
EXTI_ClearITPendingBit(EXTI_Line4);
EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_Line=E