This will be implemented on Vivado 2019
1. Design and implement a PWM IP block
Create a PWM block in Verilog that uses a 10-bit value to set the duty cycle, and use the 10 slide switches for input. Your circuit can use Blackboard’s 100MHz FPGA clock, so with a 10-bit resolution, you can use up to a 100KHz pulse frequency (by setting the “PWM frequency” divider value in the figure above to 1000). A 100KHz frequency is of course much faster than you need to control LED brightness (in fact, it’s quite possibly too fast.). You could instead set the PWM frequency divider value to something larger, perhaps in the range of 20,000, to establish a more reasonable pulse frequency for driving LEDs. Whatever value you use for the PWM frequency, make sure your 10-bit value can define duty cycles from 0% to 100%.
For his requirement, you can use a fixed PWM Frequency divider.
2. Create a programmable 4-channel PWM LED controller
Modify your PWM controller from requirement 1 to have an AXI interface, and create four identical PWM controller circuits (for this requirement, you can again use a fixed PWM frequency). Connect the PWM outputs to LD0-LD3, and control their brightness through software running on the ARM. Include enable signals for each PWM channel, and use separate memory locations (registers) for each channel’s duty value.
A potential register definition is shown in the table (shown in image posted)
As always, you should define a good software API to control your PWM module. For example, create functions to read and/or set the duty cycle, and to enable or disable the LEDs. After you’ve defined your functions, write a program to demonstrate that your IP core works as desired.
3. Create a four-channel PWM controller with programmable PWM frequencies
Modify your PWM controller so that the PWM frequency of each of the four PWM controllers can be adjusted through software. You will need to add four new registers to hold the PWM frequency values. Update your software interface to include PWM frequency setting functions, and write software to demonstrate your system’s new capabilities.
Dear sir
I have more than 10 years experience in digital design using verilog and vhdl please check my profile also please message me so that we can discuss
Hello, I am a digital design engineer and VHDL/Verilog expert with +5 years experience. I have wrote some parts of a PWM module in our implementation of a MIPS processor. May you communicate with to discuss more details? Regards.