§ Код verilog

1module pwm
2(
3    input        clock,
4    input [15:0] duty,
5    output  reg  en
6);
7
8reg [15:0] cnt;
9always @(posedge clock) begin
10
11    ena <= cnt < duty;
12    cnt <= cnt + 1;
13
14end
15
16endmodule
Поскольку тут ширина cnt 16 бит, то частота будет рассчитана так: 100000000 / 2^16 = 762 Гц.
1pwm Pwm1
2(
3    .duty  (1024),
4    .clock (CLK100MHZ),
5    .en    (LED_en)
6);
Объявление на toplevel.

§ Более короткий вариант

1reg [15:0] pwm_led;                  // Частота 50'000'000 / 65536 = 762 Гц
2wire       pwm_en = 1024 < pwm_duty; // Например 1024/65536 = 1.5%
3always @(posedge clock_50) pwm_led <= pwm_led + 1;