This project implements a PWM (Pulse Width Modulation) generator with an AXI-Lite slave interface for control.
pwm.v
: A simple PWM generator module.axi_pwm.sv
: An AXI-Lite slave wrapper for the PWM module. It exposes control and data registers to an AXI bus.
The AXI-Lite interface provides access to the following registers:
0x0
(ADDR_CONTROL): Control register[0]
:enable
(1 to enable PWM, 0 to disable)[1]
:soft_reset
(write 1 to reset the PWM core)
0x4
(ADDR_PERIOD): Sets the PWM period.0x8
(ADDR_DUTY): Sets the PWM duty cycle.
The project includes files for synthesis and simulation:
synth_*.ys
: Yosys synthesis scripts for different targets (Xilinx FPGA, Skywater 130nm).tb_*.sv
: SystemVerilog testbenches for the PWM and AXI-PWM modules.wave.do
: Waveform script for simulation visualization.