大家好,欢迎来到IT知识分享网。
一、什么是PN码?PN码有什么用处?
其本质上就是一串周期性的随机数,周期是由移位寄存器的位数决定的,序列是由生成多项式(有的地方叫本原多项式、反馈系数)决定的。这意味着,对于掌握了长度和生成多项式的人来说,这段序列就是确知的,对于不知道长度和生成多项式的人来说,就是随机的,不可捉摸的(或者说解密代价极大的)。
二、如何生成m序列?m序列有什么性质?生成多项式怎么设置?
2、m序列的性质:
- 均衡性:0、1各占一半,1比0多一个;
- 游程特性:就是说连0段或连1段的,长度为1的约占1/2,长度为2的约占1/4,长度为3的约占1/8,按照三位m序列想一下就能想明白;
- 移位相加性:自己+下一个时钟的自己,等于另外一个移位序列;
- 相关函数: R ( τ ) = { 1 , if τ = 0 − 1 / L , if τ = 1 R(\tau) =\begin{cases} 1, & \text{if } \tau = 0 \\-1/L, & \text{if }\tau = 1\end{cases} R(τ)={
1,−1/L,if τ=0if τ=1。
需要注意的就是LSB(最低有效位)对应的是C0(模二加后的反馈输入)
四、如何用FPGA来实现?
话不多说,直接上代码:
module PN_1023_gen_1 (sysclk,reset,pnclk, pnxs1_allone,pnxs1_code, pnclkpos); input sysclk,reset,pnclk;//系统钟,高电平复位,码钟 output pnxs1_allone,pnxs1_code; //allone是周期重复指示(因为这里初相是1023嘛),后面一个是输出的m码序列, reg pnxs1_allone,pnxs1_code; output pnclkpos;//相当于一个使能信号,也可用来做stp的触发信号 wire pnclkpos; reg [9:0] gxs1regshift; wire polyvalgxs1; reg [9:0] gxs1_counter; reg [1:0] tempa,tempb; parameter gxs1_poly = 407; parameter gxs1_ip = 1023; parameter jdxs_cnt = 1023; /*-------------------------------------code clk gen---------------------------*/ always @(posedge sysclk) begin if(reset) begin tempb<=2'd0; end else begin tempb<={
tempb[0],pnclk }; end end assign pnclkpos=( tempb[0] & ~tempb[1] );//边缘检测方法 /*-----------------------------------------short(1023) code gen------------------*/ assign polyvalgxs1=^(gxs1_poly & gxs1regshift); always @(posedge sysclk) begin if(reset) begin gxs1regshift<=gxs1_ip; gxs1_counter<=0; end else begin if(pnclkpos) begin if(gxs1_counter < jdxs_cnt-1) begin gxs1regshift<={
polyvalgxs1,gxs1regshift[9:1]}; gxs1_counter<=gxs1_counter+18'd1; end else begin gxs1regshift<=gxs1_ip; gxs1_counter<=0; end end else begin gxs1regshift<=gxs1regshift; gxs1_counter<=gxs1_counter; end end end always @(posedge sysclk) begin if(reset) begin pnxs1_code<=0; pnxs1_allone<=1; end else begin pnxs1_code<=gxs1regshift[0];//每经过一个码钟,gxs1regshift序列才移位一次,所以要传重复的值十次 pnxs1_allone<=(gxs1regshift==gxs1_ip); end end endmodule
五、m序列的存在的问题及改进方法
- 存在的问题:
- 周期相同的m序列可用的生成多项式少,比如L=1023的生成多项式只有60个,这就意味着解密所付出的代价还不够大
- 互相关系数大,这会导致m序列直接用作扩频码时会产生严重的多址干扰(MAI)
- 解决方法:gold序列
gold序列就是将两个能组成优选对的m序列的输出结果进行模二加。gold序列能同时解决上述两个问题。
六、产生gold序列的工程文件
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/116531.html
