mb_olre16
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| mb_olre16 [2016/09/23 15:31] – [GrayScale Clock] psykhaze | mb_olre16 [2019/04/21 08:50] (current) – [GrayScale Clock] antichambre | ||
|---|---|---|---|
| Line 30: | Line 30: | ||
| We expect 16 RGB LED rings encoders. So let's do the math : | We expect 16 RGB LED rings encoders. So let's do the math : | ||
| **16 Encoders * 32 LEDs * 3 colors = __1536 lines__ ** \\ | **16 Encoders * 32 LEDs * 3 colors = __1536 lines__ ** \\ | ||
| - | Let's transpose this to a classical matrixed SRIO chain design: | + | Let's transpose this to a classical matrixed SRIO chain design: |
| - | **3x16=48 inputs + 32 outputs = __6*DIN + 4*DOUT__ **\\ | + | ** 16 * 3 (cathodes) * 32 (anodes)** \\ |
| + | **= 48 inputs + 32 outputs | ||
| + | **= __6*DIN + 4*DOUT__ **\\ | ||
| ==== Core-External Driving Concept : TLC5958 ==== | ==== Core-External Driving Concept : TLC5958 ==== | ||
| - | In theory it's possible to drive such a SRIO setup but in fact buses and resistors/ | + | In theory it's possible to drive such a SRIO setup but in fact buses and resistors/ |
| \\ | \\ | ||
| After a look on the different brands and models of LED driver IC **[[http:// | After a look on the different brands and models of LED driver IC **[[http:// | ||
| + | \\ | ||
| + | **<wrap download> | ||
| + | \\ | ||
| + | \\ | ||
| This Design note from Texas Instruments helps in understanding how to design around the TLC:\\ | This Design note from Texas Instruments helps in understanding how to design around the TLC:\\ | ||
| **<wrap download> | **<wrap download> | ||
| Line 97: | Line 101: | ||
| ==== Data Transfer ==== | ==== Data Transfer ==== | ||
| | | ||
| - | A serialized design has been chosen to provide data to TLC. Prototype feature only 2 steps but the CORE works like there' | + | A serialized design has been chosen to provide data to TLC. Prototype feature only 2 steps but the CORE works like there' |
| {{antichambre: | {{antichambre: | ||
| {{antichambre: | {{antichambre: | ||
| - | |||
| ==== GrayScale Clock ==== | ==== GrayScale Clock ==== | ||
| - | Design of External GrayScale Clock for the TLC was tricky. | + | Design of External GrayScale Clock for the TLC was tricky.\\ |
| - | 257 clock periods and halt for some 1.5~2.5µs are needed for each address line . TLC would receive a VSYNC command at the end of the 32th address line to prepare the new frame datas. \\ | + | \\ |
| + | **257 clock periods and halt for some 1.5~2.5µs are needed for each address line** \\ | ||
| + | \\ | ||
| + | TLC would receive a VSYNC command at the end of the 32th address line to prepare the new frame datas. \\ | ||
| \\ | \\ | ||
| The first approach was to provide a PWM at 800KHz and put it back to the LPC on a TMR CAP Input, use 2 MAT outputs to provide a line period and gate(NOR) the PWM with it.\\ | The first approach was to provide a PWM at 800KHz and put it back to the LPC on a TMR CAP Input, use 2 MAT outputs to provide a line period and gate(NOR) the PWM with it.\\ | ||
| - | First issue, halting time after the 257 periods wasn't constant and dependent of PWM frequency.2nd issue, much I/O used only for this purpose.\\ | + | \\ |
| + | //First issue, halting time after the 257 periods wasn't constant and dependent of PWM frequency. | ||
| Line 119: | Line 126: | ||
| {{: | {{: | ||
| - | TLC is wired like on an SPI bus to Core Board. Here are equivalences: | + | TLC is wired like on an SPI bus to Core Board. Here are connections |
| * SCLK => SC | * SCLK => SC | ||
| * DATA => SO | * DATA => SO | ||
| * LAT => RC | * LAT => RC | ||
| * FLAGS READ => SI | * FLAGS READ => SI | ||
| + | **[[stm32f4_module# | ||
| + | \\ | ||
| + | \\ | ||
| //Note: Command is coded by putting LAT active during a defined number of SCLK periods.For example for a VSYNC command, LAT must be high during 3 SCLK pulses.//\\ | //Note: Command is coded by putting LAT active during a defined number of SCLK periods.For example for a VSYNC command, LAT must be high during 3 SCLK pulses.//\\ | ||
| Line 131: | Line 140: | ||
| **Frame update is needed only when a change occurs, TLC keep all the frame in memory and continue to distribute it to the 32 addresses lines and 16 rgb leds by address ** | **Frame update is needed only when a change occurs, TLC keep all the frame in memory and continue to distribute it to the 32 addresses lines and 16 rgb leds by address ** | ||
| \\ | \\ | ||
| + | |||
| ==== GrayScale Clock ==== | ==== GrayScale Clock ==== | ||
| Line 136: | Line 146: | ||
| The TLC needs a GrayScale Clock(GSCLK) and additional control to multiplex 32 addresses (named COMSELx in diagram). The GSCLK signal should be 257 pulses + 1.5~2.5µs of interval between segments . COMSEL management needs 32 multiplexing adress lines for (5 bits coded and decoded directly on the top board).\\ | The TLC needs a GrayScale Clock(GSCLK) and additional control to multiplex 32 addresses (named COMSELx in diagram). The GSCLK signal should be 257 pulses + 1.5~2.5µs of interval between segments . COMSEL management needs 32 multiplexing adress lines for (5 bits coded and decoded directly on the top board).\\ | ||
| - | === Clock Schematic === | + | === Clock Schematic |
| + | \\ | ||
| + | <wrap center round important 60%> | ||
| + | //Note: This circuit is replaced by a simulated one, on a CPLD.// | ||
| + | </ | ||
| {{: | {{: | ||
| Line 145: | Line 159: | ||
| CORE provides a regular Clock with PWM @2MHz .The 12bit counter U16 counts until 257 and trigs U1 wich is a monostable, U1 switchs, resets the counter and stops the clock counter input by U17(D-Flipflop). \\ | CORE provides a regular Clock with PWM @2MHz .The 12bit counter U16 counts until 257 and trigs U1 wich is a monostable, U1 switchs, resets the counter and stops the clock counter input by U17(D-Flipflop). \\ | ||
| \\ | \\ | ||
| - | After a certain time given by the RC couple on U1, U1 switch | + | After a certain time given by the RC couple on U1, U1 switchs |
| - | By this way we are sure to count the exact 257 Clocks needed and the interval between 2 segments is fixed by the trimpot U19. | + | By this way we are sure to count the exact 257 Clocks needed and the interval between 2 segments is fixed by the trimpot U19.\\ |
| \\ | \\ | ||
| **GSCLK signal is then high during the 257 clocks period and low during the interval**\\ | **GSCLK signal is then high during the 257 clocks period and low during the interval**\\ | ||
| Line 152: | Line 166: | ||
| === Multiplexing Schematic === | === Multiplexing Schematic === | ||
| - | {{: | + | {{: |
| ADDR_x, ADDR_CLK, GSCLK are connected to the top board...\\ | ADDR_x, ADDR_CLK, GSCLK are connected to the top board...\\ | ||
| Line 158: | Line 172: | ||
| ADDR_CLK is the multiplexed lines clock . It's used to gate the PWM signal and obtain the GSCLK and of course, as a clock for the ADDR Counter U5. The counter U5 provides the coded ADDR_x lines and an EOF(End Of Frame) when 32 is reached.\\ | ADDR_CLK is the multiplexed lines clock . It's used to gate the PWM signal and obtain the GSCLK and of course, as a clock for the ADDR Counter U5. The counter U5 provides the coded ADDR_x lines and an EOF(End Of Frame) when 32 is reached.\\ | ||
| + | |||
| + | === Clock version 2 === | ||
| + | |||
| + | <wrap center round todo 60%> | ||
| + | CPLD/FPGA version | ||
| + | </ | ||
mb_olre16.1474644671.txt.gz · Last modified: 2016/09/23 15:31 by psykhaze
