16:47
Яркость LED через PWM — Лисья нора
§ Код verilog
module pwm ( input clock, input [15:0] duty, output reg en ); reg [15:0] cnt; always @(posedge clock) begin ena <= cnt < duty; cnt <= cnt + 1; end endmoduleПоскольку тут ширина cnt 16 бит, то частота будет рассчитана так: 100000000 / 2^16 = 762 Гц.
pwm Pwm1 ( .duty (1024), .clock (CLK100MHZ), .en (LED_en) );Объявление на toplevel.
§ Более короткий вариант
reg [15:0] pwm_led; // Частота 50'000'000 / 65536 = 762 Гц wire pwm_en = 1024 < pwm_duty; // Например 1024/65536 = 1.5% always @(posedge clock_50) pwm_led <= pwm_led + 1;