通信原理实验报告LABVIEW21Word文件下载.docx
- 文档编号:20652756
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:27
- 大小:385.73KB
通信原理实验报告LABVIEW21Word文件下载.docx
《通信原理实验报告LABVIEW21Word文件下载.docx》由会员分享,可在线阅读,更多相关《通信原理实验报告LABVIEW21Word文件下载.docx(27页珍藏版)》请在冰豆网上搜索。
K
22
30
39
56
74
N-数据样点数;
K-随机变量取值范围量化的单元数。
实验中要求用计算机对所产生的随机数用直方图估计其概率密度函数,井打印出分布函数的图形
五、实验步骤
1.弄懂实验原理,设计结构框图:
2.利用LabVIEW编写程序:
六、实验结果
实验2相关噪声模型和相关函数计算
熟悉相关噪声模型,掌握相关函数的计算方法。
1.计算一下白噪声模型的相关函数。
2.计算相关噪声的相关函数,它应是指数型的。
3.计算正弦信号加噪声的相关函数,期望得到指数与余弦迭加的波形。
微型计算机及其它外围设备。
各态遍历的平稳随机过程x(t)自相关函数可表示为
而对于周期性信号,自相关函数可表示为
其中T0为周期。
自相关函数的离散数值计算公式
r=0,1,2,…,mm<
N
如果我们有N个数据记录,上式就可以在数字计算机上进行相关函数的估计。
实验内容中的三个模型:
1.白噪声模型:
产生的[0,1]均匀分布随机序列,都强调要求它的分布均匀性要好,独立性要强。
这独立性要求指的是前后相邻数据不相关。
实际上这就是一种白噪声模型,如果把它变换为[-
]均匀分布,则就是一种零均值的白噪声模型。
我们记理想的白噪声序列为{wk},则其自相关函数可表示为
其中
计算机产生的均匀分布随机数具有白噪声性质,就应该有尖峰自相关函数。
反过来说,这相关函数的尖峰形状能用来检验随机数独立性的好坏。
2.相关噪声模型
对于相应的数据序列来说,可由白噪声模型变换出相关噪声的模型,白噪声wi,经图示装置处理,产生的输出为
(0<
a<
1)
我们看到ni与其前面几个值(ni-1,ni-2,……,)有依赖关系。
这相关性的强弱取决于系数a的取值,这样得到的数据序列{ni}就是一个相关噪声模型。
相关噪声的相关函数应是指数型的。
3.正弦信号加噪声
这是加噪声模型,用一个正弦信号与相关噪声迭加,得到
其中正弦信号初相为零,当然也可随意指定一个初相,这随机相位正弦信号的数据样值只要利用函数赋值就可得到。
正弦信号加噪声的相关函数应该是指数与余弦迭加的波形。
2.利用LabVIEW编写程序(由于程序框图太大,这里分成部分贴出):
(a)白噪声及其自相关函数
(b)相关噪声及正弦信号与相关噪声迭加
(c)相关噪声的自相关函数及正弦信号与相关噪声迭加的自相关函数
实验3伪随机序列产生及其特性研究
1.了解伪随机序列产生的方法,观察其变换的不同码型。
2.研究m序列本原多项式与线性移位寄存器的反馈方式间的关系。
3.验证m序列的伪随机性。
4.验证伪随机序列的自相关函数的双值特性。
1.选择合适的m序列本原多项式,设计n级(n=3~8)线性反馈移位寄存器,产生m序列。
2.分析记录m序列的周期P与级数n之间的关系是否符合
。
3.讨论m序列的性质和相关函数特性。
1.直流稳压电源
2.示波器
3.单片计算机实验电路装置
1.m序列
在通信系统中,为了研究随机噪声对系统的影响,往往需要人为生成随机噪声。
而在20世纪60年代,人们发明了“伪随机噪声”,才真正满足了研究的需要。
伪随机噪声具有类似于随机噪声的某些统计特性,同时又能够重复产生,避免了随机噪声不可重现的缺点,因而获得了广泛的应用。
而伪随机噪声是由周期性数字序列经滤波等处理后得到的,这种周期性数字序列就是“伪随机序列”,有时也被称作伪随机信号或伪随机码。
至今,最广为人知的二进制伪随机序列是“最长线性反馈移位寄存器序列”,简称m序列。
m序列因其随机特性和预先可确定性及可重复实现的优点,在实际领域中得到广泛应用。
2.m序列产生原理
m序列是由带线性反馈的移存器产生的周期最长的序列。
图4-1为一般的线性反馈移存器产生m序列的原理饭框图。
图4-1线性反馈移位寄存器原理方框图
由于带有线性反馈,在移位脉冲作用下,线性移位寄存器各级的状态将不断变化,通常移位寄存器的最后一级做输出,当移位寄存器的级数及时钟一定时,输出序列就由初始状态和反馈逻辑完全确定。
输出序列为
,是一个周期序列。
经一次移位线性反馈,左端新得到的输入
为
(模2)
因此,一般说来,对于任意一个输入
,有
上式称为“递推方程”,它给出移位输入与移位前各级状态的关系。
按照递推方程,就可以用软件产生m序列。
当初始状态为全零状态是,移位寄存器输出全零序列,因此,因避免设置全0电路。
在递推方程中,
的取值决定了序列的结构,所以
是一个很重要的参量。
的取值情况可以用特征多项式(或特征方程)f(x)描述:
对于n阶m序列,最大能产生的周期为
其中能满足此要求的最简f(x)也称“本源多项式”。
其中3~8阶序列的本源多项式如表4-1所示。
级数n
8进制表示
代数式
3
13
x3+x+1
4
23
x4+x+1
5
45
x5+x2+1
6
103
x6+x+1
7
211
x7+x3+1
8
435
x8+x4+x3+x2+1
表4-1本源多项式表
3.m序列的性质
m序列具有几个有趣的性质和统计特性。
1.对n级m序列周期为
2.在一个周期中,“0”出现
次,“1”出现
次
3.在一个周期中,共有
个游程,其中:
长度为k的游程有
个,
;
长度为
的有1个“0”游程;
长度为n的有1个“1”游程。
4.归一化自相关函数为
且
的周期为P
五、设计要求
1.利用单片机编程实现,设计n级(n=3~8)m序列的发生器,每级可选择实现1种序列码型。
2.序列码元速率:
(推荐)100Baud。
3.为便于示波器观测m序列波形,给出序列周期同步信号作为示波器触发源,如图4-2示意。
图4-2m序列发生和序列周期同步信号
六、实验内容
1.m序列生成
本次试验由MCS51系列的AT89S52单片机完成m序列机器周期同步脉冲的生成。
其主要部分的程序设计如下:
a)m序列的移位寄存器生成法
m序列由移位寄存器法产生(详细原理见上面“实验原理”部分),反馈环路的设置采用了表4-1中的本源多项式的取值方法。
每当定时器T0中断输出m序列的一个二进制位,便把全局变量v置零。
在主程序中,每当检测到v的值为零,则根据当前要求的阶数移位产生新的位,将v置1,并等待定时器中断输出。
为保证在3~8阶都可生成,并避免移位寄存器出现全零状态,移存器(实际上是一个数组)的初值设置为{1,0,1,0,1,0,1,0},n阶m序列则取其前n个作为m序列的初值。
(详见“程序清单”主程序中无限循环部分)
b)定时中断输出m序列
我们选择m序列的波特率为400Baud,而单片机晶振为12.0592MHz,所以定时器的计数量为pwm_time=11059200/12/400=2304。
我们采用定时器T0作为m序列输出定时器,工作于模式1(即16位定时器)。
中断服务程序如下:
timer0()interrupt1using1//T0中断,发送m序列
{
EA=0;
TH0=vth0;
TL0=vtl0;
TR0=1;
pwm_out=pwm_status;
sync=sync_sta;
v=0;
EA=1;
}
2.实验结果及m序列性质验证
a)实验结果
实验观察到的m序列为:
n=3级m序列:
1010011
n=4级m序列:
101011001000111
n=5级m序列:
101011001000111101011001000111
n=6级m序列:
101010110011011101101001001110…
n=7级m序列:
101010100110011101110100101100…
n=8级m序列:
101010100110010111010001110110…
b)序列性质
1.M序列的周期
由表一可得生成的M序列的周期
,如n=3时,p=7;
n=4时,p=15…….
2.M序列的游程
由上表所得的M序列所得,当n=4时,共有
个游程,分别为1111,0,1,0,11,00,1,000;
其中长度为4的游程有1个(1111),长度为3的游程有1个(000),长度为2的游程有2个(11,00),长度为1的游程有4个(0,1,0,1)
综上长度为1(k=1)的游程占了总游程数的一半(1/2),长度为2(k=2)的游程占了
,长度为3(n-1)的游程是连续0的游程(000),长度为4(n)的游程为连续1的游程(1111)。
同理分析n=3,5,6,7,8时得到结论:
m序列的一个周期(p=2n-1)中,游程总数为2n-1。
其中长度为1的游程个数占游程总数的1/2;
长度为2的游程个数占游程总数的1/22=1/4;
长度为3的游程个数占游程总数的1/23=1/8;
……一般地,长度为k的游程个数占游程总数的1/2k=2-k,其中1≤k≤(n-2)。
而且,在长度为k游程中,连1游程与连0游程各占一半,长为(n-1)的游程是连0游程,长为n的游程是连1游程。
七、程序清单
#include<
absacc.h>
reg51.h>
/*///////////////////////////////////////////////////*/
/*/常量定义/*/
/*定时器初值*/
#defineV_TH10xee/*~5ms,!
notice:
crystal11.0592MHz*/
#defineV_TL10x00
/*数码管段驱动寄存器地址*/
#defineADDR_8SEGXBYTE[0x2000]
/*数码管位驱动和指示灯驱动寄存器地址*/
#defineADDR_SELXBYTE[0x4000]
/*按键*/
sbitKEY1=P1^0;
sbitKEY2=P1^1;
sbitKEY3=P1^2;
sbitKEY4=P1^3;
/*/变量定义/*/
/*//////////////////////////////////////////////////*/
/*数码管位驱动和指示灯驱动信号输出缓存,定义了一个可位寻址的变量*/
unsignedcharbdataoutput_sel;
sbitled_1=output_sel^5;
sbitled_2=output_sel^6;
sbitled_3=output_sel^7;
sbitled_4=output_sel^4;
/*数码管扫描驱动指针,为测试外部存储器(U36264),特使用xdata类型*/
unsignedcharxdatadigi_scaner;
/*测试用计数值十进制表示,为测试外部存储器(U36264),特使用xdata类型*/
unsignedcharxdatadigi[4]={0,0,0,3};
unsignedchartemp4;
//按键消抖
/*pwm控制的变量*/
unsignedintpwm_time;
unsignedcharvth0,vtl0;
bitpwm_status;
//信号
bitsync_sta;
//同步
intpower;
//2的乘方的结果,等于2的n次方
unsignedcharj;
//用于for循环
intprd;
//period,由于序列周期的计数
sbitpwm_out=P3^5;
//m序列输出
sbitsync=P3^4;
//序列周期同步信号
unsignedcharv=0;
//发送完一位置零
/*/函数定义/*/
/****7段数码显示译码
参数:
DATA:
需要显示的数字或符号;
返回值:
7段译码结果(D7~0=PGFEDCBA)
*****/
unsignedcharNUMTOSEG7(unsignedcharDATA)
{unsignedcharAA;
switch(DATA)
{case0:
AA=0xc0;
break;
/*‘0’*/
case1:
AA=0xf9;
/*‘1’*/
case2:
AA=0xa4;
/*‘2’*/
case3:
AA=0xb0;
/*‘3’*/
case4:
AA=0x99;
/*‘4’*/
case5:
AA=0x92;
/*‘5’*/
case6:
AA=0x82;
/*‘6’*/
case7:
AA=0xf8;
/*‘7’*/
case8:
AA=0x80;
/*‘8’*/
case9:
AA=0x90;
/*‘9’*/
case10:
AA=0x88;
/*‘A’*/
case11:
AA=0x83;
/*‘B’*/
case12:
AA=0xc6;
/*‘C’*/
case13:
AA=0xa1;
/*‘D’*/
case14:
AA=0x86;
/*‘E’*/
case15:
AA=0x8e;
/*‘F’*/
case'
-'
:
AA=0xbf;
/*破折号,此处原误为0xdf,系04级王资凯同学指正*/
_'
AA=0xf7;
/*下划线*/
'
AA=0xff;
/*消隐*/
default:
AA=0xff;
}
return(AA);
/****T1时钟中断服务程序在本例中,每5ms被执行一次*****/
timer1()interrupt3using0
EA=0;
/*关中断*/
/*重新对计数器赋初值,并启动定时计数*/
TH1=V_TH1;
TL1=V_TL1;
TR1=1;
EA=1;
output_sel=0xf0;
/*初值,令数码管驱动位无效,指示灯全灭*/
/*按键4消抖和按键4确认的处理*/
if(KEY4==0){led_4=0;
temp4++;
if(temp4>
20&
&
KEY4==1){
temp4=0;
if(++digi[3]>
8)digi[3]=3;
power=1;
prd=1;
for(j=0;
j<
digi[3];
j++){
power*=2;
/*数码管扫描驱动指针值从1到4重复变换,每5ms间隔对一个数码管进行驱动,20ms一个轮回*/
if(++digi_scaner>
=5)digi_scaner=1;
switch(digi_scaner)
{
case1:
/*驱动第一个数码管*/
output_sel|=0x01;
ADDR_8SEG=NUMTOSEG7(pwm_status);
/*输出到锁存器U5(在电路图中找)*/
break;
case2:
/*驱动第二个数码管*/
output_sel|=0x02;
ADDR_8SEG=0xff;
/*输出到锁存器U5*/
case3:
/*驱动第三个数码管*/
output_sel|=0x04;
ADDR_8SEG=0xff;
case4:
/*驱动第四个数码管*/
output_sel|=0x08;
ADDR_8SEG=NUMTOSEG7(digi[3]);
ADDR_SEL=output_sel;
/*输出到锁存器U6(在电路图中找)*/
}
/****主程序*****/
main()
{
intn;
inti;
intcount=0;
inttemp;
intyd[8]={1,0,1,0,1,0,1,0};
/*单片机系统初始化*/
P1=0XFF;
P3=0XFF;
/**中断工作寄存器初始化**/
IE=0X80;
//EA=1
IP=0;
PT0=1;
PT1=0;
/**定时器工作寄存器初始化**/
TMOD=0X11;
//T0/1workas16btimer
TCON=0;
/*定时器1的寄存器初始化*/
/**全局变量赋初值**/
digi_scaner=1;
//数码管计数
pwm_time=2304;
//机器周期数,对应400Hz
vth0=(0xffff-pwm_time)>
>
8;
vtl0=(0xffff-pwm_time);
prd=1;
power=8;
/**开定时器,定时器0中断允许**/
TR0=1;
TR1=1;
ET0=1;
ET1=1;
output_sel=0xf0;
temp4=0;
/*主循环,本例中,在T1中断服务程序未被执行的空余时间里,处理机在以下程序中不断循环*/
while
(1)
{
n=digi[3]-1;
//随机码的级数-1
if(n==2||n==3||n==5||n==6)
{
if(v==0)
{
if(prd==1){
sync_sta=1;
}else{
sync_sta=0;
}
prd+=1;
if(prd>
=power){prd=1;
temp=(yd[0]+yd[n])%2;
//取最低位与修高位异或运算
for(i=0;
i<
n;
i++)
{
yd[i]=yd[i+1];
//其余数字全部向前移动一位
yd[n]=temp;
//新的数据加入队列最末
pwm_status=temp;
//输入刚得到的新数据
v=1;
}
}
elseif(n==4)
temp=(yd[0]+yd[2])%2;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通信 原理 实验 报告 LABVIEW21