通信报告-m序列通信报告-m序列.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
通信报告-m序列通信报告-m序列

自主设计实验一.m序列 121180165 赵博睿 实验原理 m序列是最长线性移位寄存器序列的简称,是一种伪随机序列、伪噪声(PN)码或伪随机码。可以预先确定并且可以重复实现的序列称为确定序列;既不能预先确定又不能重复实现的序列称随机序列;不能预先确定但可以重复产生的序列称伪随机序列。 对于一个n级 HYPERLINK /view/3320080.htm \t /_blank 反馈移位寄存器来说,最多可以有2^n 个状态,对于一个线性反馈移位寄存器来说,全“0”状态不会转入其他状态,所以线性移位寄存器的序列的最长周期为 2^n-1。当n级线性移位寄存器产生的序列{ai}的周期为T= 2^n-1时,称{ai}为n级m序列。 设计思路 本次实验要求实现两个模块,第一是分频器的产生,第二是m序列的产生。分频器的产生可以用多位寄存器计数的方式实现,例如x分频,即可令寄存器计数到x/2-1时使输出改变极性,再将寄存器归0重新开始计数。m序列的产生需要编出一个符合要求的本原多项式然后进行线性反馈移位,本原多项式的编写和线性反馈移位可以用简单的过程幅值语句实现(本实验中的本原多项式为f(x)=x^4+x+1)。 Verilog代码 module mm(clk1,clk2,mout);//clk1为输入晶振信号,clk2为分频后时钟信号,mout为m序列输出信号// input clk1; output reg clk2; output reg mout; reg[8:0]count;//设置9位寄存器用以计数。// reg[3:0]m_data;//设置4位寄存器用以线性移位产生m序列// always @(posedge clk1) begin if(count==447)//计数分频// begin clk2=~clk2; count=0; end else count=count+1; end always @(posedge clk2)//以分频后时钟为时钟信号产生m序列// begin if(m_data==0)//对寄存器赋初值// m_data=1; else begin //线性移位和m序列输出// mout = m_data[0]; m_data[0] = m_data[1]; m_data[1] = m_data[2]; m_data[2] = m_data[3]; m_data[3] = m_data[3]^m_data[0]; end end endmodule 实验结果分析 程序仿真结果分析: 图1.计数分频仿真图 图2.16khz时钟信号仿真图 图3.m序列仿真图 ①本实验采用的是计数448实现896分频,将14.336Mhz的晶振时钟信号分频成16Khz的时钟信号当做m序列的时钟信号。如图1所示,当计数达到447时,clk2信号电平翻转。重复两次即可产生一个时钟信号,这个时钟信号如图2所示。 ②本实验m序列产生的代码为: mout = m_data[0]; m_data[0] = m_data[1]; m_data[1] = m_data[2]; m_data[2] = m_data[3]; m_data[3] = m_data[3]^m_data[0]; 这段代码所表示的意义是:将m_data[0]当做m序列的输出,m_data本身是一个线性反馈移位寄存器。其本原多项式为f(x)=x^4+x+1 。 产生的m序列如图3所示。可以看出这个m序列的值为:111101011001000。长度为15,即m序列的最大周期值2^4-1。 实际输出结果分析: 图1.多个m序列 图2.单个m序列 ①观察图1可以发现,chanel2信号的频率为16khz(即时钟信号),满足本次实验的要求。 ②图2只显示了一个周期的m序列,为100011110101100(经移位即为111101011001000)和仿真结果一样。 设计中遇到的问题和解决方案 时钟信号的分频如何计算:14.366Mhz的896分频才是16khz信号,但计数却是896的一半(448),因为计数之后进行的操作是电平翻转,也就是时钟信号的半个周期,下一个计数周期结束后再度翻转才是时钟信号的一整个周期,因此896分频实际上是计数448。 m序列一直为0:在代码编写的初期,仿真结果中的m序列一直未0,经分析发现这是由于未给m序列幅值导致的,声明一个寄存器m_data之后,它的初始值为0,这时候进行线性反馈移位得到的结果仍然会是0,所以不会产生m序列。

文档评论(0)

cduutang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档