Advertisement
Guest User

RateDivider

a guest
Jun 18th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.41 KB | None | 0 0
  1. module ratedivider(SW,KEY,HEX0,CLOCK_50);
  2. input CLOCK_50;
  3. input [9:0] SW;
  4. input [3:0] KEY;
  5. output [6:0] HEX0;
  6.  
  7. wire out;
  8. ratedividerinst r0(.reset_n(SW[2]),.speed(SW[1:0]),.clk_in(CLOCK_50),.clk_out(out),.HEX(HEX0));
  9. endmodule
  10.  
  11. module ratedividerinst(reset_n, speed,clk_in,clk_out,HEX);
  12. input [1:0] speed;
  13. input clk_in;
  14. output clk_out;
  15. output [6:0] HEX;
  16.  
  17. // wire clock,par_load;
  18. input reset_n;
  19. reg [25:0] q;
  20.  
  21. reg clk_out,enable;
  22. reg [25:0] d;
  23.  
  24. reg temp;
  25.  
  26. //always @(posedge clk_in or negedge reset_n)
  27. always @(posedge clk_in)
  28. begin
  29. if(reset_n == 1'b0)
  30. q<=0;
  31. else if (enable == 1'b1)
  32. begin
  33. if(q>=d)
  34. begin
  35. q <= 26'b0;
  36. temp = 1;
  37. end
  38. else
  39. begin
  40. q <= q + 1'b1;
  41. temp = 0;
  42. end
  43. end
  44. end
  45.  
  46. always @(*)
  47. begin
  48. case (speed)
  49. 2'b00:
  50. begin
  51. enable = 0;
  52. // clk_out <= clk_in;
  53. // temp1 <= clk_in;
  54. end
  55. 2'b01:
  56. begin
  57. enable = 1;
  58. d <= 26'b10111110101111000001111111;
  59. end
  60. 2'b10:
  61. begin
  62. enable = 1;
  63. d <= 26'b01011111010111100000111111;
  64. end
  65. 2'b11:
  66. begin
  67. enable = 1;
  68. d <= 26'b00101111101011110000011111;
  69. end
  70. endcase
  71. end
  72.  
  73. always @(*)
  74. begin
  75. if (enable==1)
  76. clk_out = temp;
  77. else
  78. clk_out = clk_in;
  79. end
  80.  
  81. reg [3:0] counter;
  82.  
  83. // always @(posedge clk_out or negedge reset_n)
  84. always @(posedge clk_out)
  85. begin
  86. if(reset_n ==0)
  87. counter <=0;
  88. else if (counter == 4'b1111)
  89. counter <= 0;
  90. else
  91. counter = counter + 1;
  92. end
  93. segdecoder d0(.in(counter),.HEX(HEX));
  94.  
  95.  
  96. endmodule
  97.  
  98. module segdecoder(in, HEX);
  99. // input [3:0] in;
  100. input [0:3] in;
  101. output [6:0] HEX;
  102.  
  103. assign HEX[0] = in[3]&~in[2]&~in[1]&~in[0] | ~in[3]&~in[2]&in[1]&~in[0] | in[3]&~in[2]&in[1]&in[0] | in[3]&in[2]&~in[1]&in[0];
  104. assign HEX[1] = in[3]&~in[2]&in[1]&~in[0] | ~in[3]&in[2]&in[1] | ~in[3]&in[1]&in[0] | in[3]&in[2]&in[0];
  105. assign HEX[2] = ~in[3]&in[2]&~in[1]&~in[0] | ~in[3]&in[1]&in[0] | in[2]&in[1]&in[0];
  106. assign HEX[3] = in[3]&~in[2]&~in[1] | ~in[3]&~in[2]&in[1]&~in[0] | in[3]&in[2]&in[1] | ~in[3]&in[2]&~in[1]&in[0];
  107. assign HEX[4] = in[3]&~in[2]&~in[1] | in[3]&~in[0] | ~in[2]&in[1]&~in[0];
  108. assign HEX[5] = in[3]&~in[1]&~in[0] | in[2]&~in[1]&~in[0] | in[3]&in[2]&~in[0] | in[3]&~in[2]&in[1]&in[0];
  109. assign HEX[6] = ~in[2]&~in[1]&~in[0] | in[3]&in[2]&in[1]&~in[0] | ~in[3]&~in[2]&in[1]&in[0];
  110. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement