Advertisement
Guest User

Untitled

a guest
Aug 25th, 2016
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.78 KB | None | 0 0
  1. module jesd204_scrambler (
  2. input clk,
  3.  
  4. input enable,
  5.  
  6. input [31:0] data_in,
  7. output [31:0] data_out
  8. );
  9.  
  10. parameter DESCRAMBLE = 0;
  11.  
  12. reg [14:0] state = 'h7fff;
  13. wire [31:0] feedback;
  14.  
  15. wire [31:0] swizzle_in = {data_in[7:0],data_in[15:8],data_in[23:16],data_in[31:24]};
  16. assign data_out = {swizzle_out[7:0],swizzle_out[15:8],swizzle_out[23:16],swizzle_out[31:24]};
  17.  
  18. reg [31:0] swizzle_out = 'h00;
  19.  
  20. wire [31+15:0] full = {state,DESCRAMBLE ? swizzle_in : feedback};
  21.  
  22. assign feedback = full[31+15:15] ^ full[31+14:14] ^ swizzle_in;
  23.  
  24. always @(posedge clk) begin
  25. if (enable == 1'b0) begin
  26. swizzle_out <= swizzle_in;
  27. end else begin
  28. swizzle_out <= feedback;
  29. end
  30. end
  31.  
  32. always @(posedge clk) begin
  33. state <= full[14:0];
  34. end
  35.  
  36. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement