|

楼主 |
发表于 2017-1-14 14:49:40
|
显示全部楼层
module scrambler(
clk,
En,
prescr_data,//prescramble data
scr_data//scrambeled data
);
input clk;
input En;
input [31:16] prescr_data;//D31 16
output reg [31:16] scr_data;//S31:S16
reg [15:1] tmp_scr;//S15:S1
//for tmp_scr register
always@(posedge clk)begin
if(En == 0)
tmp_scr <= 15'b000_0000_1111_1111;
else begin
tmp_scr[15:1] <= scr_data[31:17];
end
end
always@(posedge clk)begin
scr_data[29:16] <= prescr_data[29:16] ^ ((tmp_scr[15:2] ^ tmp_scr[14:1]) & {14{En}});
scr_data[31] <= prescr_data[31] ^ ((scr_data[17] ^ scr_data[16] )& En);
scr_data[30] <= prescr_data[30] ^ ((scr_data[16] ^ tmp_scr[15]) & En );
end
endmodule |
|