This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DLPC350: Begineer with DLPC350 to send formated patterns to DLP4500 at fastest rate

Part Number: DLPC350
Other Parts Discussed in Thread: DLP4500,

 Our intent with DLPC350 is to send formated patterns to DLP4500 and to reach the highest possible frame rate in the mode described just below : 

 

Page 34 of dlpu010g.pdf  (DLPC350 Programmer’s Guide User's Guide) : 

"In pattern display mode, the DLPC350 provides a high-speed, pixel accurate 912 × 1140 resolution up to 120 Hz that bypasses the video processing and image enhancement functions. This mode supports data input through the DLPC350 24-bit RGB or FPD-link interfaces and flash memory. This functionality is designed for techniques such as structured light, additive manufacturing, or digital exposure. The DLPC350 can display a set of patterns and signal a camera to capture when these patterns are displayed."

Page 28 of dlpc350.pdf :

"When accurate pattern display is needed, the native 912 × 1140 input resolution pattern has a one-to-one association with the corresponding micromirror on the DMD. The DLPC350 controller enables high-speed display of these patterns."

 

So I use DLPC350 in Pattern Display Mode to send input vectors as fast as possible to DMD.

  • What's the highest frame rate I can reach? 2880 Hz  (according to page 34) ?

Input vectors enter through RGB interface, and the 2 least significant bits are unused.

  • What’s the point of having a 30 bits interface if I can only use 24 bits ?

 

After the falling_edge of INIT_DONE (following the INIT_BUSY time described page 45), I send to DLPC350 the following i2C commands : 

 

x"348004" => write_address_i2c         &         write @addr= 00h          &  data=  04h     to set the input source = RGB 24 bits.         

  •  Should I put 30 bits and then the 2 LSB are ignored with the pattern display mode?   

page 38 of dlpc350.pdf : "The parallel RGB port can support up to 30 bits in video mode. In pattern mode, the upper 8-bits of each color convert the 30-bit input into a 24-bit RGB input."

  • => It's not clear to me if input source should be set to 24 or 30 bits?

 

x"34E640" => write_address_i2c         &         write @addr= 66h          &  data=  40h    

x"34E611" => write_address_i2c         &         write @addr= 66h          &  data=  11h    to set expo time to 4011h                                NB : if previous address = current address, I send directly the data

 

x"34E641" => write_address_i2c         &         write @addr= 66h          &  data=  40h    

x"34E61B" => write_address_i2c         &         write @addr= 66h          &  data=  11h    to set frame period to 411Bh                           NB : if previous address = current address, I send directly the data  

 

x"34E901" => write_address_i2c         &         write @addr= 69h          &  data=  01h    to set Pattern display mode    (high-speed, pixel accurate 912 × 1140 resolution, page 34)

x"34EF00" => write_address_i2c         &         write @addr= 6Fh          &  data=  00h    to set Pattern source = 24 bits RGB interface

 

x"34F000" => write_address_i2c         &         write @addr= 70h          &  data=  00h    to set Pattern Trigger Mode 0: VSYNC triggers the pattern display sequence

 

x"34FDDD" => write_address_i2c         &         write @addr= 7Dh       &  data=  DDh (dummy data)    to validate the configuration

x"357D"      => read_address_i2c          &         read @addr= 7Dh                                                           to check that the configuration is valid

Then, if configuration is valid,  send x"34E502" to start transfer.

  • Is my configuration accurate?
  • Do I miss something?
  • Do I need to address anything else, or change any value I sent?

 

Then, I start to send data, 24 bits parallel, using P1_HSYNC and P1_VSYNC to have horizontal and vertical synchronization and respecting source input blanking described page 21 of dlpc350.pdf. 

During preliminary debug, I can use the following commands to check : 

34  | 8A    | 04    |  set Internal Test Patterns Select : diagonal lines
34  | 94    | 00    |  DMD unpark
34  | 94    | 01    |  DMD park
34  | 81    | 00    | 
35  | 01    |          |  read received format 
34  | FE    |         |  check Input Display Resolution

 

  • Can I use other registers to help me during debug?
  • What should I do with the external flash?

Page 44 : "The DLPC350 controller boots-up from external flash. After the DLPC350 controller boots, it:".

  • Do I have to program anything into the flash before system starts?

 

Best regards

Nicolas Marnat

 

 

  • Hi Nicolas,

    Welcome to TI E2E Forums! Kindly provide us some time to look at your queries and form answers. We will get back soon!

    Thanks & Regards,

    Hirak.

  • Hi Nicolas, 

    I will try to answer your queries below:

    1. What's the highest frame rate I can reach? 2880 Hz  (according to page 34) ?

    A> The highest framerate in pattern mode is limited to 120Hz, where each frame consists of 24 bitplanes (i.e., 24 1-bit patterns). So if you send 120FPS 24BP input to the DLPC350 and create a pattern sequence display all 24 1-bit patterns in each frame, you can achieve 24*120 = 2880 displayed patternrate.

    2. What’s the point of having a 30 bits interface if I can only use 24 bits ?

    A> We can use 10bit input in video display mode. In pattern sequence mode the system is designed to only use the upper 8 bits.

    3.  Should I put 30 bits and then the 2 LSB are ignored with the pattern display mode? It's not clear to me if input source should be set to 24 or 30 bits?

    A> You can provide either 24 or 30 bit input in pattern sequence. 

    • If you provide 30 bit input, 2 LSBs from each color channel will be rejected and will not be displayed. System will take only upper 8 bits of each color channel as video data input.
    • If you provide 24 bit input, make sure your data is in the upper 8bit lines of each color channel. You can tie the lower two lines of each color channel to GND in this case or send all zeroes in these two lines always.

    4. Is my configuration accurate? Do I miss something? Do I need to address anything else, or change any value I sent?

    A> Kindly check DLPC350 Programmers Guide for complete list of I2C commands and also example command sets for configuration various types of pattern sequence. You can also first try to define a pattern sequence configuration and test for your application by using the LCR4500 GUI. You can then easily program your FE to send the chosen and tested working pattern sequence configuration through I2C. This makes it easy to evaluate various pattern sequences and finally choose the proper one(s) for your application.

    5. Can I use other registers to help me during debug? 

    A> Kindly check DLPC350 Programmer's Guide for complete list of available registers and commands. 

    6. What should I do with the external flash? Do I have to program anything into the flash before system starts?

    A> The external flash is used to store the DLPC350 Firmware. You can modify the FW to include your own images and pattern sequences that automatically start playng when the DLPC350 boots up, without any FE intervention. If you are using LCR4500EVM then a FW will already be flashed onto the flash chip. You can use the GUI to update to the latest version of the FW. If you are designing your own board with DLPC350 and DLP4500, you will need a JTAG device to load the bootloader onto the flash chip for the first time. Subsequently you can use the LCR4500 GUI to update/ change the FW as needed. 

    If you feel that we were able to help you with your queries, kindly click "This resolved my query" below the resolving answer. 

    Thanks & Regards,

    Hirak.

     

  • Hello

    • For questions 1, 2, 3, thanks for your answer. It confirms what I thought.
    • For questions 4. and 5. :

    I already spent hours reading and studying DLPC350 Programmer's Guide.

    In chapter 4.1 of DLPC350 Programmer's Guide, the configuration is set to use patterns from flash memory and to use LUT. That's not my case, my patterns enter from RGB inputs and are 1 bit depth.

    I create my own I2C configuration and I was looking for confirmations from your side. Can you review my configuration and tell me if I miss something?

    Or provide me a "Pattern Display Mode Example" table (similar to page 59) with my case : patterns from RGB interface and 1 bit depth?

    • For question 6. :

    "If you are designing your own board with DLPC350 and DLP4500," => that's our case.

    "you will need a JTAG device to load the bootloader onto the flash chip for the first time." => where can I find the bootloader? Is it provided with DLPC350?

    Best Regards
    Nicolas

  • Hi Nicolas, 

    For questions 4 and 5, 

    You can check DLPC350 Programmers Guide Sec 4.2 Trigger Mode 0 Example for an example I2C Configuration for patterns from external video source.

    What I was suggesting is, the LCR4500 GUI provides an easy-to-use Graphical Interface for creating and running various types of pattern sequences (including patterns from external source of any bit-depth). You can create your required pattern configuration using the GUI, test it out and then export this configuration in a INI file. This INI file will give you all the pattern config LUT and other configuration values you need to send through I2C. You just need to pick those values and program into your I2C Master FE, and you can run it on DLPC350. This makes it easy to experiment with various different pattern sequences and choose the ones fit for your application and also spares you the task of calculating pattern config LUT values by yourself.

    For question 6, 

    The first 128KB of the DLPC350 Firmware (available on TI.com LCR4500EVM Page) contains the bootloader. You can write this portion using JTAG on the flash starting from 0th address. 

    Thanks & Regards,

    Hirak.