CDL Modules
Files
apb_target_led_ws2812

Files

file  apb_target_led_ws2812.cdl
 Simple APB target for driving a chain of Neopixels.
 

Detailed Description

Modules

module apb_target_led_ws2812::apb_target_led_ws2812 ( clock  clk,
input bit  reset_n,
input t_apb_request  apb_request,
output t_apb_response  apb_response,
input bit  divider_400ns_in[8],
output bit  led_chain 
)
Parameters
[in]clkSystem clock
[in]reset_nActive low reset
[in]apb_requestAPB request
[out]apb_responseAPB response
[in]divider_400ns_inDefault value for divider_400ns
[out]led_chainA simple module to drive a chain of Neopixel LEDs as an APB target.

The Neopixel LEDs are 24-bit RGB LEDs that are driven through a chain, with a single control pin providing the information for the LEDs.

This module supports up to 16 LEDs in a chain, each with a 24-bit RGB value. The chain must be configured with a clock divider (which is the number of clock ticks required to generate a 400ns, approximately, clock) and the number of LEDs in the chain.

The clock divider resets to 0, but whenever it is zero it resets to the input value divider_400ns_in; hence it may be effectively 'hardwired'.

Once configured the LED colors can be individually written to address-mapped registers. The LED chain automatically updates.

The configuration register is:

Bits Meaning
12;2 zero
4;16 last LED in the chain (0 for one LED, 15 for sixteen LEDs)
8;8 zero
8;0 clock divider to create a 400ns clock enable from system clock

Example divider values

System clock | Period | Divider

50MHz | 20ns | 19 100MHz | 10ns | 39 20MHz | 50ns | 7