Advertisement
Guest User

Untitled

a guest
Nov 12th, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.47 KB | None | 0 0
  1. `timescale 1ns / 1ps
  2.  
  3. module verilog_main(
  4. input CLK_50MHz,
  5. // input [n-1:0] SetFreq,
  6. // input [k-1:0] SetPWM,
  7. // input enc_1_A,
  8. // input enc_1_B,
  9. // input enc_2_A,
  10. // input enc_2_B,
  11. // output Dir,
  12. output PWM
  13. // output Break
  14. );
  15. localparam n=10;
  16. localparam k=10;
  17.  
  18.  
  19. reg [n-1:0] setFreq=4'd10;
  20. reg [k-1:0] setPWM=4'd5;
  21. reg clock=1'b0;
  22. reg [3:0] counter=1'b0;
  23.  
  24. always@(posedge CLK_50MHz)
  25. begin
  26. counter<=counter+1;
  27. if(counter>4'd10)
  28. begin
  29. counter<=1'b0;
  30. clock<=~clock;
  31. end
  32. else
  33. begin
  34. clock<=clock;
  35. end
  36. end
  37.  
  38. always@(posedge clock)
  39. begin
  40. if(setFreq>setPWM)
  41. begin
  42. setFreq<=setFreq+4'd10;
  43. setPWM<=setPWM+4'd5;
  44. end
  45. else
  46. begin
  47. setFreq<=4'd10;
  48. setPWM<=4'd5;
  49. end
  50.  
  51. end
  52.  
  53.  
  54. pwm_gen
  55. #
  56. (
  57. .n(n),
  58. .k(k)
  59. ) pewuemus
  60. (
  61. .clk(CLK_50MHz),
  62. .setFreq(setFreq),
  63. .setPWM(setPWM),
  64. .pwm(PWM)
  65. );
  66.  
  67. endmodule
  68.  
  69. `timescale 1ns / 1ps
  70.  
  71. module pwm_gen
  72. #
  73. (
  74. parameter n=10,
  75. parameter k=10
  76. )
  77. (
  78. input clk,
  79. input [n-1:0] setFreq,
  80. input [k-1:0] setPWM,
  81. output pwm
  82. );
  83.  
  84. reg [n-1:0] counter=1'b0;
  85. reg r_PWM=1'b0;
  86.  
  87. always@(posedge(clk))
  88. begin
  89. counter<=counter+1;
  90. if(counter<setPWM)
  91. r_PWM<=1'b1;
  92. else
  93. begin
  94. r_PWM<=1'b0;
  95. if(counter>=setFreq)
  96. counter<=1'b0;
  97. else
  98. counter<=counter;
  99. end
  100. end
  101.  
  102.  
  103. assign pwm=r_PWM;
  104. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement