通信雷达一体化-data域卷积编码

通信雷达一体化-data域卷积编码

通信雷达一体化-data域卷积编码通信雷达一体化-data域卷积编码

模块有二个时钟,一个是输入时钟,一个是输出时钟(按照所得速率不同而不同)。
signal域,输入时钟(20M),输出时钟(40M)。
data域, 输入时钟(60M),输出时钟(80M)。

模块思想是:首先生成1/2码率的卷积码,然后缓存起来,根据不同的速率要求,给予不同的输出方式。


reg [5:0] punc_34;
reg punc_34_ready;
reg [1:0] i; 
always @(posedge clk_60M or negedge rst_n) begin
if(!rst_n) begin
punc_34 <= 6'd0;
punc_34_ready <= 1'd0;
i <= 2'd0;
end
else if(data_out_conv_ready) begin
case (i)
2'b00: begin
punc_34[1:0] <= data_out_conv;
punc_34_ready <= 1'd1;
i <= i+1'd1;
      end
2'b01: begin
        punc_34[3:2] <= data_out_conv;
punc_34_ready <= 1'd1;
i <= i+1'd1;
      end
2'b10: begin
punc_34[5:4] <= data_out_conv;
punc_34_ready <= 1'd1;
i <= 2'b00;
      end
  default: begin
        punc_34 <= 6'd0;
 punc_34_ready <= 1'd0;
 i <= 2'b00;
        end
endcase
      
end
else begin
punc_34 <= 6'd0;
punc_34_ready <= 1'd0;
i <= 2'b00;

end
end


reg [2:0] j;
always @(posedge clk_80M or negedge rst_n) begin   //时钟问题80  1/80 *4===1/60*3
if(!rst_n) begin
data_out_conv2 <= 1'd0;
data_out_conv2_ready <= 1'd0;
j <= 3'b000;

end
   else if(punc_34_ready) begin
case(j)
   3'b000,3'b001,3'b010: begin
         data_out_conv2 <= punc_34[j];
 data_out_conv2_ready <= 1'd1;
 j <= j+1'b1;
                            end
  3'd011: begin
         data_out_conv2 <= punc_34[j+2];
          data_out_conv2_ready <= 1'd1;
  j <= 3'b000;
       end
default: begin
         data_out_conv2 <= 1'b0;
                  data_out_conv2_ready <= 1'd0;
 j <= 3'b000;
        end
endcase
end
else begin
data_out_conv2 <= 1'b0;
data_out_conv2_ready <= 1'b0;
end
end通信雷达一体化-data域卷积编码