- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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序列。
您可能关注的文档
最近下载
- Unit 5 We’re family 第1课时(Get ready)(课件)外研版(三起)(2024)英语三年级上册.pptx
- 中国民间传说:田螺姑娘.ppt
- 医院岗位风险分级监管制度.docx VIP
- 八年级班级工作计划第一学期.pdf VIP
- 甘肃省平凉崆峒区2024年中考联考数学试卷含解析.doc
- 硅片加工表面抛光.ppt
- 正大猪三宝饲料推广会流程和操作实务.ppt
- 安徽省腰椎间盘突出症分级诊疗指南(2015年版)安徽省医学会(发布时间:2016-01).pdf VIP
- 国家食品安全抽样检验抽样单&填表说明.doc
- TASCAM达斯冠专业音响CD-RW901MKII说明书用户手册(1).pdf
文档评论(0)