/drm/trunk/debug/subblocks/kes_pf_save/vlib_counters.v

http://github.com/zaqwes8811/decoder-reed-solomon · V · 71 lines · 58 code · 2 blank · 11 comment · 6 complexity · f8d5f00f54c9888c69a79f3d56019fa9 MD5 · raw file

  1. //
  2. // 4-bit Signed Up Counter with Asynchronous Reset and Modulo Maximum
  3. // counters_rtl.v
  4. //
  5. `define ADDR_WIDTH 9
  6. module counters_mod_rtl(clk, clk_ena, rst, q, carry);
  7. parameter ADDR_MOD = 9;
  8. /////
  9. input clk, clk_ena, rst;
  10. output [`ADDR_WIDTH-1:0] q;
  11. output carry;
  12. // local //
  13. reg [`ADDR_WIDTH-1:0] cnt;
  14. reg carry_tmp;
  15. // logic //////
  16. always @ (posedge clk or posedge rst)
  17. begin
  18. if(rst)
  19. cnt <= 0;
  20. else if(clk_ena)
  21. cnt <= (cnt + 1)%ADDR_MOD; // ??? ?????????? ??????? ?????????
  22. end
  23. // ????. ????? - ???????
  24. always @ (cnt)
  25. begin
  26. if(cnt == ADDR_MOD-1)
  27. carry_tmp = 'b1;
  28. else
  29. carry_tmp = 'b0; // ??? ?????????? ??????? ?????????
  30. end
  31. //
  32. assign q = cnt;
  33. assign carry = carry_tmp;
  34. endmodule
  35. // ??????? ??? ?????? ????????
  36. module counters_mod_nocarry_rtl(clk, clk_ena, rst, q);
  37. parameter ADDR_MOD = 9;
  38. /////
  39. input clk, clk_ena, rst;
  40. output [`ADDR_WIDTH-1:0] q;
  41. //output carry;
  42. // local //
  43. reg [`ADDR_WIDTH-1:0] cnt;
  44. reg [`ADDR_WIDTH-1:0] cnt_tmp;
  45. reg carry_tmp;
  46. // logic //////
  47. always @ (posedge clk or posedge rst)
  48. begin
  49. if(rst) begin
  50. cnt <= 0;
  51. cnt_tmp <= 0;
  52. end
  53. else if(clk_ena) begin
  54. cnt <= (cnt + 0)%ADDR_MOD; // ??? ?????????? ??????? ?????????
  55. cnt_tmp <= cnt;
  56. end
  57. end
  58. // ????. ????? - ???????
  59. /*always @ (cnt)
  60. begin
  61. if(cnt == ADDR_MOD-1)
  62. carry_tmp = 'b1;
  63. else
  64. carry_tmp = 'b0; // ??? ?????????? ??????? ?????????
  65. end*/
  66. //
  67. assign q = cnt_tmp;
  68. //assign carry = carry_tmp;
  69. endmodule