通信原理实验报告-LABVIEW2.1_第1页
通信原理实验报告-LABVIEW2.1_第2页
通信原理实验报告-LABVIEW2.1_第3页
通信原理实验报告-LABVIEW2.1_第4页
通信原理实验报告-LABVIEW2.1_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

通信原理实验报告实验项目:实验1 掌握用Labview 产主随机数的方法实验2 统计随机数的概率分布密度函数及相关函数特性实验3产生m序列信号源,验证m序列的伪随机性以及伪随机序列的自相关函数的双值特性。实验4 模拟产生 AWGN 及ISI信道,添加到数字通信仿真系统中实验1随机数产生及直方图统计实验1 随机数产生及直方图统计一、实验目的(1)掌握在一般微型计算机上产主随机数的方法。(2)统计随机数的概率分布密度函数。二、实验内容1.用计算机产生 [0,1]均匀分布的(伪)随机数。2.由[0,1]均匀分布随机数产生其它分布的随机数,例:正态 N(0,l)分布的随机数。3.用直方图统计随机数的分布密度。三、实验设备微型计算机及其高级程序语言编译环境,例 C++、FORTRAN、PASCAL等,也可以应用工程计算工具软件如 MATLAB等。四、实验原理计算机产生均匀分布随机数在计算机算法中,为实现方便,通常使用伪随机数(序列)来代替(真)随机数。伪随机序列是有周期性的数值序列,当其周期N相对很大时,统计特性一定程度上逼近随机序列,故效果与(真)随机数相近。高斯分布随机数的获得实际研究当中,高斯(正态)分布是经常被使用到的数学模型,可以近似描述很多随机事件的统计特性。,我们可以采用非线性变换法,对比较容易产生的均匀分布随机序列进行变换,(近似)得到高斯分布随机序列。Xc (2lnR1)1/2cos2R2公式中,若R1和R2是[0,1]区间两个均匀分布随机变量,理论上可以证明XC是标准正态分布(均值为0,方差为1的高斯分布)的随机变量。直方图对于一个随机变量,假如我们知道它是正态的(或其它分布形式)我们可以从随机变量的抽样估计它的均值和方差,从而得到它的分布密度函数。预先对一个随机变量分布一无所知,要估计它的分布密度函数可借助于直方图统计方法:fx(x)20 1 2 3 x1实验1随机数产生及直方图统计设有图1所示密度函数fx(x)把随机变量X的取值量化,量化阶为2ε,例如对于以x=2为中心的量化阶内,如果ε足够小。有2fx(2)P[2X2]当X抽样X1,X2,⋯⋯,XN,是独立且同分布时,则P[2XX1,X2,...,XN中落在(2,2)中的个数2]2N当N较大能用频率代替概率。所以可以得到概率密度的估计值Xk在(2,2)中的个数k=1,⋯,Nfx(2)2N显然x=2并不特殊,可以重复进行其它x值上的密度估计。这样我们就得到密度函数fx(x)的离散估计值。这就是直方图方法。这种直方图估计的准确度可以进行专门分析。分析它的方差可以知道,N和ε的选择有一定的要求。显然,数据样点数N越大越好,而区间密度ε选择与N值相适应为好。有表1可供参考。表1样点数与直方单元数N50010002000500010000K2230395674N-数据样点数; K-随机变量取值范围量化的单元数。实验中要求用计算机对所产生的随机数用直方图估计其概率密度函数,井打印出分布函数的图形五、实验步骤弄懂实验原理,设计结构框图:计算机产生伪随机数列 1正态分布随机数列计算机产生伪随机数列 2随机变量取值范 围量化的单元数 K随机数列长度N分布密度直方图利用LabVIEW编写程序:2实验1随机数产生及直方图统计六、实验结果3实验1随机数产生及直方图统计4实验2相关噪声模型和相关函数计算实验2 相关噪声模型和相关函数计算一、实验目的熟悉相关噪声模型,掌握相关函数的计算方法。二、实验内容计算一下白噪声模型的相关函数。计算相关噪声的相关函数,它应是指数型的。计算正弦信号加噪声的相关函数,期望得到指数与余弦迭加的波形。三、实验设备微型计算机及其它外围设备。四、实验原理各态遍历的平稳随机过程 x(t)自相关函数可表示为1T)dtR()limx(t)x(tT0而对于周期性信号,自相关函数可表示为1T0R(x(t)x(t)dt)0T0其中T0为周期。自相关函数的离散数值计算公式1Nrxkxkrr=0,1,2,⋯,mm<NR()rk1N如果我们有N个数据记录,上式就可以在数字计算机上进行相关函数的估计。实验内容中的三个模型:1.白噪声模型:产生的[0,1]均匀分布随机序列,都强调要求它的分布均匀性要好,独立性要强。这独立性要求指的是前后相邻数据不相关。实际上这就是一种白噪声模型,如果把它变换为[-112,2]均匀分布,则就是一种零均值的白噪声模型。我们记理想的白噪声序列为{wk},则其自相关函数可表示为RW(i,j)E{wi,wj}21ijWij其中ijij0计算机产生的均匀分布随机数具有白噪声性质,就应该有尖峰自相关函数。反过来说,这相关函数的尖峰形状能用来检验随机数独立性的好坏。2.相关噪声模型5实验2相关噪声模型和相关函数计算wi nia 单位延时对于相应的数据序列来说,可由白噪声模型变换出相关噪声的模型,白噪声 wi,经图示装置处理,产生的输出为 ni wi ani1(0<a<1)我们看到ni与其前面几个值(ni-1,ni-2,⋯⋯,)有依赖关系。这相关性的强弱取决于系数a的取值,这样得到的数据序列{ni}就是一个相关噪声模型。相关噪声的相关函数应是指数型的。3.正弦信号加噪声这是加噪声模型,用一个正弦信号与相关噪声迭加,得到xi ni bcos(2i/T)其中正弦信号初相为零,当然也可随意指定一个初相,这随机相位正弦信号的数据样值只要利用函数赋值就可得到。正弦信号加噪声的相关函数应该是指数与余弦迭加的波形。五、实验步骤弄懂实验原理,设计结构框图:计算机产生伪 数据样本总数 N随机数列白噪声序列{wi}白噪声自相关函数系数a(0.8<a<0.9)自相关函数离散数值计算相关噪声序列{ni}相关噪声自相关函数系数b(0.3<b<0.4);正弦信号周期T正弦信号加噪声序列{xi}正弦信号加噪声自相关函数利用LabVIEW编写程序(由于程序框图太大,这里分成部分贴出):白噪声及其自相关函数6实验2相关噪声模型和相关函数计算相关噪声及正弦信号与相关噪声迭加相关噪声的自相关函数及正弦信号与相关噪声迭加的自相关函数7实验2相关噪声模型和相关函数计算8实验2相关噪声模型和相关函数计算六、实验结果9实验2相关噪声模型和相关函数计算10实验3常量信号检测的计算机模拟(新版)11实验4伪随机序列产生及其特性研究实验3 伪随机序列产生及其特性研究一、实验目的1.了解伪随机序列产生的方法,观察其变换的不同码型。2.研究m序列本原多项式与线性移位寄存器的反馈方式间的关系。3.验证m序列的伪随机性。4.验证伪随机序列的自相关函数的双值特性。二、实验内容1.选择合适的 m序列本原多项式,设计n级(n=3~8)线性反馈移位寄存器,产生m序列。n3.讨论m序列的性质和相关函数特性。三、实验设备1.直流稳压电源2.示波器3.单片计算机实验电路装置四、实验原理1. m序列在通信系统中,为了研究随机噪声对系统的影响,往往需要人为生成随机噪声。而在 20世纪 60年代,人们发明了“伪随机噪声” ,才真正满足了研究的需要。伪随机噪声具有类似于随机噪声的某些统计特性,同时又能够重复产生,避免了随机噪声不可重现的缺点,因而获得了广泛的应用。而伪随机噪声是由周期性数字序列经滤波等处理后得到的,这种周期性数字序列就是“伪随机序列” ,有时也被称作伪随机信号或伪随机码。至今,最广为人知的二进制伪随机序列是 “最长线性反馈移位寄存器序列” ,简称m序列。序列因其随机特性和预先可确定性及可重复实现的优点,在实际领域中得到广泛应用。2. m序列产生原理m序列是由带线性反馈的移存器产生的周期最长的序列。 图4-1为一般的线性反馈移存器产生m序列的原理饭框图。图4-1线性反馈移位寄存器原理方框图由于带有线性反馈,在移位脉冲作用下,线性移位寄存器各级的状态将不断变化,通常12实验4伪随机序列产生及其特性研究移位寄存器的最后一级做输出,当移位寄存器的级数及时钟一定时,输出序列就由初始状态和反馈逻辑完全确定。输出序列为 {ak} a0a1...an1...,是一个周期序列。经一次移位线性反馈,左端新得到的输入 an为nanc1nn1c2an2cna0ciani(模2)i1因此,一般说来,对于任意一个输入ak,有nakciakii1上式称为“递推方程”,它给出移位输入与移位前各级状态的关系。按照递推方程,就可以用软件产生m序列。当初始状态为全零状态是,移位寄存器输出全零序列,因此,因避免设置全0电路。在递推方程中, ci的取值决定了序列的结构,所以 ci是一个很重要的参量。 ci的取值情况可以用特征多项式(或特征方程) f(x)描述:nf(x) c0 c1x ... cnxn cixii0对于n阶m序列,最大能产生的周期为 2n 1。其中能满足此要求的最简 f(x)也称“本源多项式”。其中3~8阶序列的本源多项式如表4-1所示。表4-1本源多项式表级数n8进制表示f(x)代数式313x3+x+1423x4+x+1545x5+x2+16103x6+x+17211x7+x3+18435x8+x4+x3+x2+1m序列的性质序列具有几个有趣的性质和统计特性。1.对n级m序列周期为P 2n 12.在一个周期中,“0”出现2n1 1次,“1”出现2n1次3.在一个周期中,共有 2n1个游程,其中:13实验4伪随机序列产生及其特性研究长度为k的游程有 1个,1kn2;2k长度为n 1的有1个“0”游程;长度为n的有1个“1”游程。4.归一化自相关函数为1 (j 0)(j)1/P (1 j P 1)且 (j)的周期为P五、设计要求1.利用单片机编程实现,设计 n级(n=3~8)m序列的发生器,每级可选择实现 1种序列码型。2.序列码元速率:(推荐)100Baud。3.为便于示波器观测m序列波形,给出序列周期同步信号作为示波器触发源,如图4-2示意。以n=3为例:m序列m序列输出11100101110010发生器序列周期同步脉冲图4-2m序列发生和序列周期同步信号六、实验内容1.m序列生成本次试验由MCS51系列的AT89S52单片机完成m序列机器周期同步脉冲的生成。其主要部分的程序设计如下:m序列的移位寄存器生成法m序列由移位寄存器法产生(详细原理见上面“实验原理”部分) ,反馈环路的设置采用了表4-1中的本源多项式的取值方法。 每当定时器 T0中断输出 m序列的一个二进制位,便把全局变量 v置零。在主程序中,每当检测到 v的值为零,则根据当前要求的阶数移位产生新的位,将 v置1,并等待定时器中断输出。为保证在 3~8阶都可生成,并避免移位寄存器出现全零状态,移存器(实际上是一个数组)的初值设置为 {1,0,1,0,1,0,1,0},n阶m序列则取其前n个作为m序列的初值。(详见“程序清单”主程序中无限循环部分)定时中断输出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;14实验4伪随机序列产生及其特性研究TR0=1;pwm_out=pwm_status;sync=sync_sta;v=0;EA=1;}2.实验结果及 m序列性质验证实验结果实验观察到的 m序列为:n=3级m序列:1010011n=4级m序列:n=5级m序列:n=6级m序列:⋯n=7级m序列:⋯n=8级m序列:⋯序列性质1.M序列的周期由表一可得生成的 M序列的周期 p 2n 1,如n=3时,p=7;n=4时,p=15⋯⋯.M序列的游程由上表所得的M序列所得,当n=4时,共有2418个游程,分别为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)的游程占了113(n-1)的游程是连续0的游程(000),长度为4(n)的游程为连续1的2*k,长度为4游程(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>#include<reg51.h>/*///////////////////////////////////////////////////*//*/ 常量定义 /*//*///////////////////////////////////////////////////*//*定时器初值 */#defineV_TH1 0xee /* ~5ms, !notice:crystal11.0592MHz*/15实验4伪随机序列产生及其特性研究#defineV_TL10x00/*数码管段驱动寄存器地址 */#defineADDR_8SEG XBYTE[0x2000]/*数码管位驱动和指示灯驱动寄存器地址 */#defineADDR_SEL XBYTE[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序列输出16实验4伪随机序列产生及其特性研究sbitsync=P3^4;//序列周期同步信号unsignedcharv=0;//发送完一位置零/*///////////////////////////////////////////////////*//*/ 函数定义 /*//*///////////////////////////////////////////////////*//****7 段数码显示译码参数:DATA:需要显示的数字或符号;返回值: 7段译码结果 (D7~0=PGFEDCBA)*****/unsignedcharNUMTOSEG7(unsignedcharDATA){unsignedcharAA;switch(DATA){case0:AA=0xc0;break;/* ‘0’*/case1:AA=0xf9;break;/* ‘1’*/case2:AA=0xa4;break;/* ‘2’*/case3:AA=0xb0;break;/* ‘3’*/case4:AA=0x99;break;/* ‘4’*/case5:AA=0x92;break;/* ‘5’*/case6:AA=0x82;break;/* ‘6’*/case7:AA=0xf8;break;/* ‘7’*/case8:AA=0x80;break;/* ‘8’*/case9:AA=0x90;break;/* ‘9’*/case10:AA=0x88;break;/* ’*/‘Acase11:AA=0x83;break;/* ‘B’*/case12:AA=0xc6;break;/* ‘C’*/case13:AA=0xa1;break;/* ‘D’*/case14:AA=0x86;break;/* ‘E’*/case15:AA=0x8e;break;/* ‘F’*/case'-':AA=0xbf;break;/* 破折号,此处原误为 0xdf,系04级王资凯同学指正 */case'_':AA=0xf7;break;/* 下划线*/case'':AA=0xff;break;/* 消隐*/default:AA=0xff;}return(AA);}/****T1 时钟中断服务程序 在本例中,每 5ms被执行一次*****/17实验4伪随机序列产生及其特性研究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*/break;case3:/*驱动第三个数码管 */output_sel|=0x04;ADDR_8SEG=0xff;/* 输出到锁存器 U5*/break;case4:/*驱动第四个数码管 */output_sel|=0x08;ADDR_8SEG=NUMTOSEG7(digi[3]);/* 输出到锁存器 U5*/break;18实验4伪随机序列产生及其特性研究}ADDR_SEL=output_sel; /*输出到锁存器 U6(在电路图中找) */}timer0()interrupt1using1//T0 中断,发送 m序列{EA=0;TH0=vth0;TL0=vtl0;TR0=1;pwm_out=pwm_status;sync=sync_sta;v=0;EA=1;}/**** 主程序*****/main(){intn;inti;intcount=0;inttemp;intyd[8]={1,0,1,0,1,0,1,0};/*单片机系统初始化 */P1=0XFF;P3=0XFF;/** 中断工作寄存器初始化 **/IE=0X80;//EA=1IP=0;PT0=1;PT1=0;/** 定时器工作寄存器初始化 **/TMOD=0X11;//T0/1workas16btimerTCON=0;/*定时器1的寄存器初始化 */TH1=V_TH1;TL1=V_TL1;/** 全局变量赋初值 **/digi_scaner=1;//数码管计数19实验4伪随机序列产生及其特性研究pwm_time=2304;//机器周期数,对应 400Hzvth0=(0xffff-pwm_time)>>8;vtl0=(0xffff-pwm_time);prd=1;power=8;TH0=vth0;TL0=vtl0;/** 开定时器,定时器 0中断允许 **/TR0=1;TR1=1;ET0=1;ET1=1;output_sel=0xf0;temp4=0;/*主循环,本例中,在 T1中断服务程序未被执行的空余时间里,处理机在以下程序中不断循环 */while(1){n=digi[3]-1;//随机码的级数-1if(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){20实验4伪随机序列产生及其特性研究if(v==0){if(prd==1){sync

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论