您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

encoder_bit_selection_rtl.sv 2.1 KiB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. `timescale 1ns / 1ps
  2. //////////////////////////////////////////////////////////////////////////////////
  3. // Company: BITSILICA PRIVATE LIMITED
  4. // Design Name: ENCODER BIT SELECTION
  5. // Module Name: encoder_bit_selection_rtl
  6. // Project Name: POLAR ENCODER-DECODER
  7. // Target Devices: Zynq UltraScale+ ZCU111 Evaluation Platform (xczu28dr-ffvg1517-2-e)
  8. // Tool Versions: VIVADO 2020.1
  9. // Description: RTL code for bit selection, in order to change the length of a sequence from N to E,
  10. // also known as rate matching.
  11. //
  12. //
  13. //////////////////////////////////////////////////////////////////////////////////
  14. module encoder_bit_selection_rtl
  15. #(
  16. parameter K = 164,
  17. parameter G = 1728,
  18. parameter C = 1,
  19. parameter E = G/C,
  20. parameter N=512
  21. )
  22. (
  23. input wire clock_i, // system clock
  24. input wire reset_ni, // active low synchronous reset
  25. input wire [N-1:0] msg_i, // input message for bit selection
  26. output reg [E-1:0] msg_o // output message bit selection
  27. );
  28. localparam Y = E/N;
  29. localparam Z = E%N;
  30. integer i;
  31. generate
  32. always@(posedge clock_i) begin
  33. if(!reset_ni )begin
  34. msg_o <= 0;
  35. end
  36. else begin
  37. if(E>=N)
  38. begin
  39. for(i = 1;i <= Y;i = i+1) // Repitition //
  40. msg_o[((i*N)-1) -: N]<=msg_i[N-1:0]; // Assigning same N bits to output reg for E/N times
  41. if(Z != 0)begin
  42. msg_o[E-1:N*(Y)] <= msg_i[Z-1:0]; // Assingning remaining E%N bits
  43. end
  44. end
  45. else
  46. begin
  47. if((10000*(K/E)) <= (70000/16)) // Puncturing //
  48. msg_o[E-1:0] <= msg_i[N-1:N-E]; // Assigning last E bits to output register
  49. else // Shortening //
  50. msg_o[E-1:0] <= msg_i[E-1:0]; // Assigning first E bits to output register
  51. end
  52. end
  53. end
  54. endgenerate
  55. endmodule