《通信原理实验报告(共23页).doc》由会员分享,可在线阅读,更多相关《通信原理实验报告(共23页).doc(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上通信原理实验报告实验项目:实验1 掌握用Labview 产主随机数的方法实验2 统计随机数的概率分布密度函数及相关函数特性实验3 产生m 序列信号源,验证m 序列的伪随机性以及伪随机序列的自相关函数的双 值特性。实验4 模拟产生AWGN 及ISI 信道,添加到数字通信仿真系统中专心-专注-专业实验1 随机数产生及直方图统计一、实验目的(1)掌握在一般微型计算机上产主随机数的方法。(2)统计随机数的概率分布密度函数。二、实验内容1用计算机产生0,1均匀分布的(伪)随机数。2由0,1均匀分布随机数产生其它分布的随机数,例:正态N(0,l)分布的随机数。3用直方图统计随机数
2、的分布密度。三、实验设备微型计算机及其高级程序语言编译环境,例C+、FORTRAN、PASCAL等,也可以应用工程计算工具软件如MATLAB等。四、实验原理1. 计算机产生均匀分布随机数在计算机算法中,为实现方便,通常使用伪随机数(序列)来代替(真)随机数。伪随机序列是有周期性的数值序列,当其周期N相对很大时,统计特性一定程度上逼近随机序列,故效果与(真)随机数相近。2. 高斯分布随机数的获得实际研究当中,高斯(正态)分布是经常被使用到的数学模型,可以近似描述很多随机事件的统计特性。,我们可以采用非线性变换法,对比较容易产生的均匀分布随机序列进行变换,(近似)得到高斯分布随机序列。公式中,若R
3、1和R2是0,1区间两个均匀分布随机变量,理论上可以证明XC是标准正态分布(均值为0,方差为1的高斯分布)的随机变量。3. 直方图对于一个随机变量,假如我们知道它是正态的(或其它分布形式)我们可以从随机变量的抽样估计它的均值和方差,从而得到它的分布密度函数。预先对一个随机变量分布一无所知,要估计它的分布密度函数可借助于直方图统计方法:设有图1所示密度函数fx(x)把随机变量X的取值量化,量化阶为2,例如对于以x=2为中心的量化阶内,如果足够小。有 当X 抽样X1 ,X2, , XN ,是独立且同分布时,则当N较大能用频率代替概率。所以可以得到概率密度的估计值 k=1,N显然x2并不特殊,可以重
4、复进行其它x值上的密度估计。这样我们就得到密度函数fx(x)的离散估计值。这就是直方图方法。这种直方图估计的准确度可以进行专门分析。分析它的方差可以知道,N 和的选择有一定的要求。显然,数据样点数N 越大越好,而区间密度选择与值相适应为好。有表1可供参考。表1 样点数与直方单元数500100020005000100002230395674N数据样点数;K随机变量取值范围量化的单元数。实验中要求用计算机对所产生的随机数用直方图估计其概率密度函数,井打印出分布函数的图形五、实验步骤1. 弄懂实验原理,设计结构框图:计算机产生伪随机数列1计算机产生伪随机数列2正态分布随机数列随机数列长度N分布密度直
5、方图随机变量取值范围量化的单元数 K2. 利用LabVIEW编写程序:六、实验结果实验2 相关噪声模型和相关函数计算一、实验目的熟悉相关噪声模型,掌握相关函数的计算方法。二、实验内容1. 计算一下白噪声模型的相关函数。2. 计算相关噪声的相关函数,它应是指数型的。3. 计算正弦信号加噪声的相关函数,期望得到指数与余弦迭加的波形。三、实验设备微型计算机及其它外围设备。四、实验原理各态遍历的平稳随机过程x(t) 自相关函数可表示为而对于周期性信号,自相关函数可表示为其中T0为周期。自相关函数的离散数值计算公式 r=0,1,2,m m N如果我们有N个数据记录,上式就可以在数字计算机上进行相关函数的
6、估计。实验内容中的三个模型:1白噪声模型:产生的0,1均匀分布随机序列,都强调要求它的分布均匀性要好,独立性要强。这独立性要求指的是前后相邻数据不相关。实际上这就是一种白噪声模型,如果把它变换为- , 均匀分布,则就是一种零均值的白噪声模型。我们记理想的白噪声序列为wk,则其自相关函数可表示为 其中计算机产生的均匀分布随机数具有白噪声性质,就应该有尖峰自相关函数。反过来说,这相关函数的尖峰形状能用来检验随机数独立性的好坏。2相关噪声模型对于相应的数据序列来说,可由白噪声模型变换出相关噪声的模型,白噪声wi,经图示装置处理,产生的输出为(0a1)我们看到ni与其前面几个值(ni-1,ni-2,,
7、)有依赖关系。这相关性的强弱取决于系数a的取值,这样得到的数据序列ni就是一个相关噪声模型。相关噪声的相关函数应是指数型的。 3正弦信号加噪声这是加噪声模型,用一个正弦信号与相关噪声迭加,得到其中正弦信号初相为零,当然也可随意指定一个初相,这随机相位正弦信号的数据样值只要利用函数赋值就可得到。正弦信号加噪声的相关函数应该是指数与余弦迭加的波形。五、实验步骤1. 弄懂实验原理,设计结构框图:计算机产生伪随机数列白噪声序列wi相关噪声序列ni正弦信号加噪声序列xi白噪声自相关函数相关噪声自相关函数正弦信号加噪声自相关函数数据样本总数 N系数a (0.8a0.9)系数b (0.3b0.4);正弦信号
8、周期T自相关函数离散数值计算2. 利用LabVIEW编写程序(由于程序框图太大,这里分成部分贴出):(a) 白噪声及其自相关函数(b) 相关噪声及正弦信号与相关噪声迭加(c) 相关噪声的自相关函数及正弦信号与相关噪声迭加的自相关函数六、实验结果实验3 伪随机序列产生及其特性研究一、实验目的1了解伪随机序列产生的方法,观察其变换的不同码型。2研究m序列本原多项式与线性移位寄存器的反馈方式间的关系。3验证m序列的伪随机性。4验证伪随机序列的自相关函数的双值特性。二、实验内容1选择合适的m序列本原多项式,设计n级(n=38)线性反馈移位寄存器,产生m序列。2分析记录m序列的周期P与级数n之间的关系是
9、否符合。3讨论m序列的性质和相关函数特性。三、实验设备1直流稳压电源2示波器3单片计算机实验电路装置四、实验原理1. m序列在通信系统中,为了研究随机噪声对系统的影响,往往需要人为生成随机噪声。而在20世纪60年代,人们发明了“伪随机噪声”,才真正满足了研究的需要。伪随机噪声具有类似于随机噪声的某些统计特性,同时又能够重复产生,避免了随机噪声不可重现的缺点,因而获得了广泛的应用。而伪随机噪声是由周期性数字序列经滤波等处理后得到的,这种周期性数字序列就是“伪随机序列”,有时也被称作伪随机信号或伪随机码。至今,最广为人知的二进制伪随机序列是“最长线性反馈移位寄存器序列”,简称m序列。m序列因其随机
10、特性和预先可确定性及可重复实现的优点,在实际领域中得到广泛应用。2. m序列产生原理m序列是由带线性反馈的移存器产生的周期最长的序列。图4-1为一般的线性反馈移存器产生m序列的原理饭框图。图 4-1 线性反馈移位寄存器原理方框图由于带有线性反馈,在移位脉冲作用下,线性移位寄存器各级的状态将不断变化,通常移位寄存器的最后一级做输出,当移位寄存器的级数及时钟一定时,输出序列就由初始状态和反馈逻辑完全确定。输出序列为,是一个周期序列。经一次移位线性反馈,左端新得到的输入为(模2)因此,一般说来,对于任意一个输入,有上式称为“递推方程”,它给出移位输入与移位前各级状态的关系。按照递推方程,就可以用软件
11、产生m序列。当初始状态为全零状态是,移位寄存器输出全零序列,因此,因避免设置全0电路。在递推方程中,的取值决定了序列的结构,所以是一个很重要的参量。的取值情况可以用特征多项式(或特征方程)f(x)描述:对于n阶m序列,最大能产生的周期为。其中能满足此要求的最简f(x)也称“本源多项式”。其中38阶序列的本源多项式如表4-1所示。级数 n8进制表示代数式313x3+x+1423x4+x+1545x5+x2+16103x6+x+17211x7+x3+18435x8+x4+x3+x2+1表4-1 本源多项式表3. m序列的性质m序列具有几个有趣的性质和统计特性。1对n级m序列周期为2在一个周期中,“
12、0”出现次,“1”出现次3在一个周期中,共有个游程,其中:长度为k的游程有个,;长度为的有1个“0”游程;长度为n的有1个“1”游程。4归一化自相关函数为且的周期为P五、设计要求1利用单片机编程实现,设计n级(n=38) m序列的发生器,每级可选择实现1种序列码型。2序列码元速率:(推荐)100Baud 。3为便于示波器观测m序列波形,给出序列周期同步信号作为示波器触发源,如图4-2示意。图4-2 m序列发生和序列周期同步信号六、实验内容1.m序列生成本次试验由MCS51系列的AT89S52单片机完成m序列机器周期同步脉冲的生成。其主要部分的程序设计如下:a) m序列的移位寄存器生成法m序列由
13、移位寄存器法产生(详细原理见上面“实验原理”部分),反馈环路的设置采用了表4-1中的本源多项式的取值方法。每当定时器T0中断输出m序列的一个二进制位,便把全局变量v置零。在主程序中,每当检测到v的值为零,则根据当前要求的阶数移位产生新的位,将v置1,并等待定时器中断输出。为保证在38阶都可生成,并避免移位寄存器出现全零状态,移存器(实际上是一个数组)的初值设置为1,0,1,0,1,0,1,0,n阶m序列则取其前n个作为m序列的初值。(详见“程序清单”主程序中无限循环部分)b) 定时中断输出m序列 我们选择m序列的波特率为400Baud,而单片机晶振为12.0592MHz,所以定时器的计数量为p
14、wm_time=/12/400=2304。 我们采用定时器T0作为m序列输出定时器,工作于模式1(即16位定时器)。中断服务程序如下:timer0() interrupt 1 using 1/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序列:n = 4级m序列:0111n = 5级m序列:n = 6级m序列:n = 7级m序列:n = 8级m序列:b) 序列性质1.M序列的周期由表
15、一可得生成的 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)中,游
16、程总数为2n-1。其中长度为 1 的游程个数占游程总数的 1/2;长度为 2 的游程个数占游程总数的1/22=1/4;长度为 3 的游程个数占游程总数的 1/23=1/8; 一般地,长度为k的游程个数占游程总数的 1/2k=2-k,其中 1k(n-2)。而且,在长度为k 游程中,连 1游程与连 0 游程各占一半,长为(n-1)的游程是连 0 游程, 长为 n 的游程是连 1 游程。七、程序清单#include #include /*/*/*/常量定义 /*/*/*/* 定时器初值 */#define V_TH1 0xee /* 5ms , ! notice: crystal 11.0592MH
17、z */#define V_TL1 0x00/* 数码管段驱动寄存器地址 */#define ADDR_8SEGXBYTE0x2000/* 数码管位驱动和指示灯驱动寄存器地址 */#define ADDR_SELXBYTE0x4000/* 按键 */sbit KEY1=P10;sbit KEY2=P11;sbit KEY3=P12;sbit KEY4=P13;/*/*/*/变量定义 /*/*/*/* 数码管位驱动和指示灯驱动信号输出缓存,定义了一个可位寻址的变量 */unsigned char bdata output_sel;sbit led_1 = output_sel5;sbit led
18、_2 = output_sel6;sbit led_3 = output_sel7;sbit led_4 = output_sel4;/* 数码管扫描驱动指针,为测试外部存储器(U3 6264),特使用xdata类型 */unsigned char xdata digi_scaner;/* 测试用计数值十进制表示,为测试外部存储器(U3 6264),特使用xdata类型 */unsigned char xdata digi4=0,0,0,3;unsigned char temp4;/按键消抖/*pwm控制的变量*/unsigned int pwm_time;unsigned char vth0
19、,vtl0;bit pwm_status;/信号bit sync_sta;/同步int power;/2的乘方的结果,等于2的n次方unsigned char j;/用于for循环int prd;/period,由于序列周期的计数sbit pwm_out = P35;/m序列输出sbit sync = P34;/序列周期同步信号unsigned char v=0;/发送完一位置零/*/*/*/函数定义 /*/*/*/* 7段数码显示译码 参数:DATA: 需要显示的数字或符号;返回值: 7段译码结果 ( D70 = PGFEDCBA )*/unsigned char NUMTOSEG7(uns
20、igned char DATA) unsigned char AA; switch (DATA) case 0: AA=0xc0;break; /* 0*/ case 1: AA=0xf9;break; /* 1*/ case 2: AA=0xa4;break; /* 2*/ case 3: AA=0xb0;break; /* 3*/ case 4: AA=0x99;break; /* 4*/ case 5: AA=0x92;break; /* 5*/ case 6: AA=0x82;break; /* 6*/ case 7: AA=0xf8;break; /* 7*/ case 8: AA=
21、0x80;break; /* 8*/ case 9: AA=0x90;break; /* 9*/ case 10: AA=0x88;break; /* A*/ case 11: AA=0x83;break; /* B*/ case 12: AA=0xc6;break; /* C*/ case 13: AA=0xa1;break; /* D*/ case 14: AA=0x86;break; /* E*/ case 15: AA=0x8e;break; /* F*/ case -:AA=0xbf;break; /* 破折号,此处原误为0xdf,系04级王资凯同学指正*/ case _:AA=0x
22、f7;break; /* 下划线*/ case :AA=0xff;break; /* 消隐*/ default: AA=0xff; return(AA);/* T1时钟中断服务程序在本例中,每5ms被执行一次*/timer1() interrupt 3 using 0 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(temp42
23、0 & KEY4=1) temp4=0; if(+digi38) digi3=3;power=1;prd=1;for(j=0;j=5) digi_scaner = 1;switch (digi_scaner)case 1: /* 驱动第一个数码管 */output_sel |= 0x01;ADDR_8SEG = NUMTOSEG7(pwm_status); /*输出到锁存器U5(在电路图中找)*/break;case 2: /* 驱动第二个数码管 */output_sel |= 0x02;ADDR_8SEG =0xff; /*输出到锁存器U5*/break;case 3: /* 驱动第三个数码
24、管 */output_sel |= 0x04;ADDR_8SEG = 0xff; /*输出到锁存器U5*/break;case 4: /* 驱动第四个数码管 */output_sel |= 0x08;ADDR_8SEG = NUMTOSEG7(digi3); /*输出到锁存器U5*/break;ADDR_SEL = output_sel; /*输出到锁存器U6(在电路图中找)*/timer0() interrupt 1 using 1/T0中断,发送m序列EA = 0;TH0 = vth0;TL0 = vtl0;TR0 = 1;pwm_out=pwm_status;sync=sync_sta;
25、v=0;EA = 1; /* 主程序*/main() int n; int i;int count=0;int temp;int yd8=1,0,1,0,1,0,1,0;/* 单片机系统初始化 */P1=0XFF;P3=0XFF; /* 中断工作寄存器初始化 */IE=0X80;/EA=1IP=0;PT0=1;PT1=0; /* 定时器工作寄存器初始化 */TMOD=0X11;/T0/1 work as 16b timerTCON=0;/*定时器1的寄存器初始化*/TH1=V_TH1;TL1=V_TL1; /* 全局变量赋初值 */ digi_scaner=1;/数码管计数pwm_time=2
26、304;/机器周期数,对应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=digi3-1; /随机码的级数-1if(n=2|n=3|n=5|n=6)if(v=0)if(prd=1) sync_sta=1; else
27、sync_sta=0;prd+=1;if(prd=power)prd=1;temp =(yd0+ydn)%2; /取最低位与修高位异或运算for(i=0; i=power)prd=1;temp =(yd0+yd2)%2;for(i=0; i=power)prd=1;temp =(yd0+yd1)%2;temp =(temp+yd2)%2;temp =(temp+yd7)%2;for(i=0; in; i+)ydi = ydi+1;ydn = temp;pwm_status = temp;v=1; 实验四 模拟产生AWGN 及ISI 信道,添加到数字通信仿真系统中 一、实验原理: 通信信道在发射
28、机和接收机之间提供了连接通道。信号通过任何信道进行传输的一个共同问题是加性噪声,所以在信道仿真时所建立的最基本的信道模型就是AWGN 信道模型。在Labview 中调用相关VI,可以根据高斯白噪声功率(dB)产生复高斯白噪声信号。同时,信号在信道中传输会有传输时延,可以根据经验值进行预估,如果该值大于采样间隔,则在码元序列之前补零,如果不足一个采样间隔,可在调用过采样模块(MTResample(Complex Cluster).vi)对输入序列进行过采样时考虑该延时信息。若该值小于0,则随机产生一个延时数值(注:可以是一个小于等于码元周期的值)。 ISI 信道是线性时变滤波信道,通常是用于信道
29、特性不理想或者是发生时变多径传播造成被传输信号的幅度和相位都有失真,这类物理信道在数学上可以表征为时变线性滤波器。根据所估计的不理想信道的冲激响应函数h(n)及过采样因子,产生ISI 信道模型。注意该信道通常也会叠加高斯白噪声。可以根据信道模型参数选择是纯粹的AWGN 信道还是ISI 信道,整个信道的建模如下图所示: 二、程序框图 AWGN 信道模型及ISI 信道模型程序框图如图五、 实验心得 这次完成2.1的实验,让我对随机数的产生机制有了十分具体的了解,明白了在实际应用中的随机数是如何产生的,这对我的学习工作都很有帮助。在实验设计的过程中,通过自学以及和同学讨论,最终得到结果,感觉到浓浓的成就感,为将来学习更加复杂的内容提供了动力。