/dvbt/trunk/debug/rtl_template/stage_wrapper_rtl.v

http://github.com/zaqwes8811/decoder-reed-solomon · Verilog · 153 lines · 81 code · 6 blank · 66 comment · 0 complexity · 5ea127991f13927d89090a7696b7e360 MD5 · raw file

  1. /*
  2. stage_wrapper_rtl.v
  3. Abstract: ???????? ??? ????? ??? ?????????????
  4. Connect:
  5. stage_wrapper_rtl label_sw(
  6. .clk(clk), .rst(rst), .clk_ena(clk_ena),
  7. // control ///
  8. // slave
  9. .first(first),
  10. // master
  11. .last(last),
  12. // dataflow ///
  13. // in
  14. .pin(pin), // ???????????? ???? ?????????
  15. // out
  16. .pout(pout)
  17. );
  18. */
  19. `include "vconst.v"
  20. module stage_wrapper_rtl(
  21. clk, rst, clk_ena,
  22. // control ///
  23. // slave
  24. first,
  25. windows,
  26. // master
  27. last,
  28. // dataflow ///
  29. // in
  30. pin, // ???????????? ???? ?????????
  31. pin_latch,
  32. // out
  33. pout
  34. );
  35. input clk, rst, clk_ena;
  36. input first;
  37. output windows;
  38. output last;
  39. input [`IN_WIDTH-1:0] pin;
  40. output [`IN_WIDTH-1:0] pin_latch; // ????? ???????? ????????
  41. output [`OUT_WIDTH-1:0] pout;
  42. wire [`OUT_WIDTH-1:0] pre_pout;
  43. // local ///
  44. wire [`IN_WIDTH-1:0] pin_mux; // ????? ??????????????
  45. wire pre_last;
  46. // connect ///
  47. sm_wra_control #(
  48. .WIDTH(`WIDTH+1),
  49. .MOD_COUNT(14)
  50. )label_sm( // ???? ????????
  51. .clk(clk), .rst(rst), .clk_ena(clk_ena),
  52. // control ///
  53. // slave
  54. .first(first), // ?????????? ???????? ? ???????? ??????? ??????? ?????
  55. .windows(windows),
  56. // master
  57. .last(pre_last) // ?????????? ???????? ? ???? ???????? ???????
  58. );
  59. // ????? ??????
  60. // ????
  61. a_dff #(.WIDTH(`IN_WIDTH)) label_aff_in(
  62. .clk(clk), .aclr(rst), .ena(windows),
  63. .data(pin_mux),
  64. .q(pin_latch)); // ?????????? ?????? ??????????
  65. mux2bus #(.WIDTH(`IN_WIDTH)) label_mu( // ??????? ????????????
  66. .sel(first),
  67. .A0(pin_latch), .A1(pin),
  68. .Z(pin_mux));
  69. // ???????????? ?????? ?????? ???? ?????? ??????????
  70. ///*
  71. a_dff #(.WIDTH(`OUT_WIDTH)) label_aff_out(
  72. .clk(clk), .aclr(rst), .ena(pre_last),
  73. .data(pre_pout),
  74. .q(pout));
  75. //* /
  76. /// *
  77. a_dff #(.WIDTH(1)) label_aff_out_ena(
  78. .clk(clk), .aclr(rst), .ena(clk_ena), //pre_last),
  79. .data(pre_last),
  80. .q(last)); //* /
  81. //assign last = pre_last;
  82. // logic ///
  83. assign pre_pout = 11; // ????????? ??????????
  84. //assign pout = 11; // ????????? ??????????
  85. //
  86. // output
  87. endmodule
  88. /*
  89. Abstract: slave-master control
  90. sm_control label_sm(
  91. .clk(clk), .rst(rst), .clk_ena(clk_ena),
  92. // control ///
  93. // slave
  94. .first(first), // ?????????? ???????? ? ???????? ??????? ??????? ?????
  95. // master
  96. .last(last) // ?????????? ???????? ? ???? ???????? ???????
  97. );
  98. */
  99. module sm_wra_control(
  100. clk, rst, clk_ena,
  101. // control ///
  102. // slave
  103. first, // ?????????? ???????? ? ???????? ??????? ??????? ?????
  104. windows,
  105. // master
  106. last // ?????????? ???????? ? ???? ???????? ???????
  107. );
  108. parameter WIDTH = 8;
  109. parameter MOD_COUNT = 14;
  110. input clk, rst, clk_ena;
  111. input first;
  112. output windows;
  113. output last;
  114. // local ///
  115. wire carry; // ??????? ????????
  116. wire load; // ??????? ???????? ??????
  117. wire [WIDTH-1:0] dfload;
  118. wire oor_ena;
  119. wire adf_in; // ???? ???????????? ????????
  120. wire adf_out;
  121. // connect ///
  122. counter_load #(.MOD_COUNT(MOD_COUNT)) label_cl(
  123. .clk(clk), .rst(rst), .clk_ena(windows),//1),//adf_out), // ????????? ??????????
  124. // control ///
  125. .load(first), // ????????? ??????
  126. // out
  127. .carry(carry), // ???????? ????????
  128. // datastream ///
  129. .dfload(dfload) // data for load
  130. );
  131. ///*
  132. a_dff #(.WIDTH(WIDTH)) label_aff(
  133. .clk(clk), .aclr(rst), .ena(oor_ena),
  134. .data(adf_in),
  135. .q(adf_out)); // ?????????? ?????? ??????????
  136. //* /
  137. // logic ///
  138. assign dfload = 0;
  139. assign adf_in = ~carry|first;
  140. assign oor_ena = first|carry;
  141. // outputs
  142. assign last = carry;
  143. assign windows = first|adf_out ;//|carry;
  144. endmodule