4.3 扰码模块

4.3.1 扰码原理和设计方法

扰码目的:抑制线路码中长连“0”或者长连“1”,便于在线路信号中提取时钟信。

(1)减少连0或者连1的长度,保证接收机能提取到定时信号;

(2)使加扰后的频谱信号更有利于基带传输;

(3)保密通信需要

流程图:

理论知识: 

4.3.2 扰码模块的实现

matlab代码:

%%-------------------------------------------
%scrambledata:输入的数据;注意第一位为低位
%
%%-------------------------------------------
function out_s=scramble(scrambledata)
%扰码器的初始状态值7‘b1011101
S=[1,0,1,1,1,0,1];
a=length(scrambledata);
scramb=zeros(1,a);
for i=1:1:a
    %t1=序列第7位
     t1=S(1,7);
    %t2=序列第4位
     t2=S(1,4);
    %异或
     t3=xor(t1,t2);
     scramble_out(1,i)=xor(t3,scrambledata(1,i) );
    %循环移位,列移位0,行移位1,右移1位
     S=circshift(S,[0,1]);
     S(1,1)=t3;
    
    %异或值移入第1位 
end
out_s=scramble_out;
end

 输入数据和扰码结果:

module DATA_scramble(SCRAM_SEED,SCRAM_CLK,SCRAM_DIN,SCRAM_LOAD,SCRAM_ND,
                        SCRAM_RST,SCRAM_DOUT,SCRAM_RDY);

    input [7:1] SCRAM_SEED;		  // 扰码器初始设置信号,本程序采用7'b1011101
    input SCRAM_CLK;					  // 时钟信号
    input SCRAM_DIN;					  // 扰码器输入信号,已经将并行数据变成串行数据
    input SCRAM_LOAD;				  // 扰码器初始设置信号,由MCU单元控制
    input SCRAM_ND;					  // 扰码器淙胗效,与输入信号同步拉高
    input SCRAM_RST;					  // 复位信号
    output SCRAM_DOUT;				  // 扰码器输出信号
    output SCRAM_RDY;				  // 扰码器输出有效信号,与输出信号同步拉高

	 reg [7:1] SCRAMBLER;			  // 扰码器,一个7位的移位寄存器
	 reg SCRAM_DOUT;					  // 扰码器输出信号定义成寄存器类型
	 reg SCRAM_RDY;					  // 扰码器输出有效信号定义成寄存器类型

	 always @ ( negedge SCRAM_RST or posedge SCRAM_CLK )	  // 加扰过程
	    begin															  
		    if ( !SCRAM_RST )										  // 复位信号低电平有效
			    begin
				    SCRAM_DOUT <= 0;
					 SCRAM_RDY <= 0;
             	 SCRAMBLER <= 0;
             end
          else
			    begin
			       if ( SCRAM_LOAD )								  // 扰码器初始设置信号,高电平有效
					     SCRAMBLER <= SCRAM_SEED;					  // 扰码器加载初始设置信号
					 else
					   begin   
                    if ( SCRAM_ND )									  // 扰码器输入有效
					       begin
							   SCRAM_DOUT <= SCRAM_DIN + SCRAMBLER [7] + SCRAMBLER [4];			    // 根据生成多项式S(X)=x^7+x^4+1写出扰码器输出信号的表达式
							   SCRAM_RDY <= 1;																	 // 扰码器输出有效
							   SCRAMBLER <= { SCRAMBLER[6:1], SCRAMBLER [7] + SCRAMBLER [4] };	 // 移位寄存器的输入信号
						    end
					     else	 
					       begin 												// 扰码器输入无效				  
						      SCRAM_DOUT <= 0;								//	扰码器输出信号为零
					         SCRAM_RDY <= 0;								//	扰码器输出有效为低电平
						    end
					   end
             end
       end


endmodule

modelsim仿真结果:

matlab与modelsim结果一致

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值