相位编码信号简介
对于基带信号来说,不需要载频,只需要产生复包络即可,即生成双极性的m序列。
m序列产生原理
m序列利用多级移位寄存器产生,由N个串联的寄存器、移位脉冲产生器、和模2加法器组成。反馈线的连接状态用Ci表示,Ci=1表示此线接通(参加反馈),Ci=0表示此线断开。
由于反馈线的存在,移位寄存器的输入端自发地输入信号,除全零状态外,N级移位寄存器最大有种状态。
m序列的产生原理图如上图所示,自发式的产生种状态。
Verilog代码如下:
module m_produce(
input clk,
input enable,
output s_out //
);
reg [31:0] shift_reg = 32'h0000_0001; // 32长度的m序列发生器
reg out_weima = 0 ;
reg clk_weima = 0 ;
reg [2:0] weima_cnt = 0 ;
assign s_out=out_weima;
always @(posedge clk) begin
if (enable)
clk_weima <= ~clk_weima;
end
always @(posedge clk_weima) begin
if (shift_reg==0)
shift_reg<=1;
else
begin
shift_reg[31:0] <= {shift_reg[30:0],shift_reg[0]}; //移位
shift_reg[0] <= shift_reg[0]^shift_reg[1]^shift_reg[2]^shift_reg[22]; //反馈抽头
out_weima <= shift_reg[0];
end
end
endmodule
此时产生了一位单极性的m序列 ,然后进行极性转换并转换成14位的数据,最后变成25%占空比的脉冲信号。这样就产生了14位的相位编码信号。
Verilog代码如下:
module Pulse_signal(
input clk_160M,
input clk_5M,
//input [13:0] s_in,
//output reg enable,
output reg [13:0] s_out //
);
reg [4:0] ena_num=0;
wire m_out;
reg enable;
//reg [13:0] s_out_temp; //进行代码的转换
m_produce u_m0_produce(
.clk(~clk_160M),
.enable(1),
.s_out(m_out)
);
always @(negedge clk_160M ) begin //生成5M 25%占空比的时钟
if(1)
ena_num=ena_num+1;
else
ena_num=0;
if ((ena_num>8)|(ena_num==0))
enable =0;
else
enable = 1;
end
always @(posedge clk_160M) begin //m序列变成14位的双极性码
if(enable)
if(m_out)
s_out = 8191;
else
s_out = -8191;
else
s_out=0;
end
endmodule
产生原理框图
相位编码信号的系统框图如下图所示,系统包括三个部分,由移位寄存器,编码转换、脉冲转换三个部分组成。
32位的移位寄存器用于产生m序列。然后经过编码转换,单比特的码值转换为14比特的并行数据。然后经过脉冲转换,这部分由一个5MHz、25%占空比的使能信号来控制,将连续的信号转换为脉冲信号。