一、加扰解扰概述
二、加扰解扰原理
Verilog HDL程序:实现加扰或解扰
注:下述程序中,与上文原理图不同,输入的数据不会影响移位寄存器的值。
`timescale 1ns / 1ps
//============================================================================//
// //
// define module //
// //
//============================================================================//
module scramble(
// input
input clk ,// (i) [ 1]
input rst_n ,// (i) [ 1]
input data ,// (i) [ 1]
input data_valid ,// (i) [ 1]
// output
output scramble_data ,// (o) [ 1]
output scramble_data_valid // (o) [ 1]
);
//============================================================================//
// //
// define signals //
// //
//============================================================================//
reg scramble_data_valid_reg ;
reg scramble_data_reg ;
reg [16:0] sequence_reg ;
//============================================================================//
// //
// assign //
// //
//============================================================================//
assign scramble_data_valid = scramble_data_valid_reg ;
assign scramble_data = scramble_data_reg ;
//============================================================================//
// //
// m_seq_gen: x^17+x^14+1 //
// //
//============================================================================//
always@(posedge clk or negedge rst_n) begin
if(!rst_n)
sequence_reg <= 17'b00100100000000101 ;// 初相
else if(data_valid)
sequence_reg <= {init_m_sequence[0]^init_m_sequence[3],init_m_sequence[16 : 1]};
else
sequence_reg <= 17'b00100100000000101 ;
end
//============================================================================//
// //
// scrambling //
// //
//============================================================================//
always@(posedge clk or negedge rst_n)begin
if(!rst_n) begin
scramble_data_reg <= 1'b0 ;
scramble_data_valid_reg <= 1'b0 ;
end
else if(data_valid)begin
scramble_data_reg <= init_m_sequence[0]^init_m_sequence[3]^data ;
scramble_data_valid_reg <= 1'b1 ;
end
else begin
scramble_data_reg <= 1'b0 ;
scramble_data_valid_reg <= 1'b0 ;
end
end
endmodule