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: switching from video mode to pattern sequence mode

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

Hello to all!

I'm struggling for a few days without success and after I researched about my problem I decided to ask for help here.

In my application I'm using DLPC350 with DLP4500. To control DLPC I'm using MicroBlaze instance inside of the Artix FPGA, which is also source of my patterns on the parallel interface. 

From time to time it's necessary to switch from pattern mode to video mode and back. In pattern mode I'm using trigger mode 1.

When I switch to video mode, I use sold field from internal test pattern. Then, I go back to pattern mode, by setting correct input source and all other setting from the example you can find in device datasheet. (Pattern Display Mode Examples, page 59).

After long time debug, I figure it out that I have to send configuration for pattern mode twice (also I validate settings twice, and settings are OK, no errors) and send start/stop pattern sequence twice to get correct pattern. The third one, and all other start/stop pattern sequence commands are working fine... 

My questions are: 

1. In attached image you can see that after validating pattern mode settings, and after the first start pattern sequence command there is no trigger output from DLPC at all? Why? 

2. After the second command start, there is a delay of approximately 4.3 period of VSYNC? Why?

3. If DLPC needs time to respond correctly to my commands, how should know when it's ready? I can't find anything like this in datasheet. 

Firmware version on my device is 4.0.3. I'm using I2C bus for device control with 50KHz. Frequency of the parallel interface is set to 66 MHz. 

If somebody needs more info, just ask, because I'm running out of ideas why do I have such behavior and what I'm doing wrong. 

Thanks! 

  • Hello Bogdan,

    Thank you for the detailed information and waveforms. I have one additional question - are you using the DLPLCR4500EVM GUI? It would be good to send the I2C commands with the GUI to confirm they are being sent correctly. We will also begin looking into your other questions but please let us know how the I2C commands are being sent.

    Thanks,
    Kyle
  • Hello Kyle,

    Yes, I'm using GUI app, which is connected over the USB port to my board. I can read all device settings back (including pattern settings) and they seems to be OK. I can't see anything wrong there.
    The interesting thing is that no matter what I do, the first pattern comes without trigger out 1 signal. Even if I trigger the sequence after 1 minute of delay, the second pattern has delay of around 4.(something) VSYNC periods after I send start command
    Including the third pattern, all other patterns are synchronized with start pattern sequence command, no matter how many times I send start/stop sequence...

    After I switch to pattern mode, I don't change pattern sequence parameters, or any other parameters.

    My idea is simple:
    1. go to video mode, set solid filed.
    2. go back to pattern mode. set all the parameters for pattern sequence
    3. validate sequence
    4. start sequence
    5. stop sequence
    6. start sequence
    7. stop sequence
    8. repeat until I go to the video mode
    9. repeat step one.


    I can see that I have Forced Swap error, but I'm not sure how relative this error is in this case?

    Has anyone had similar problems? Or reproduce the same problem?


    This is complete list of the I2C commands I send:

    when I switch to video mode:

    0x69 0 (video display mode)
    0x0A 0 (test pattern select, solid filed)
    0x00 1 (input source selection set to internal test)

    when I switch to pattern mode:

    0x00 0 (input source selection set to parallel interface)
    0x01 (read status until video signal is detected)
    0x69 1 (set to display pattern mode)
    0x6F 0 (set pattern display from external video)
    0x75 (set number of LUT enteries)
    0x70 1 (set trigger mode 1)
    0x66 (set exposure and frame time)
    0x77 2 (open mailbox)
    0x76 0 (set mailbox offset)
    0x78 (number of LUT enteries) x 3 bytes (write pattern sequence settings)
    0x77 0 (close mailbox)
    0x7D 0 (validate data)
    0x7D (read validate status, poll until busy validating flag goes low)

    Then I start the sequence:

    0x65 2 (start sequence)
    ... wait for trigger out 1 signal ...
    0x65 0 (stop pattern sequence)

    Something wrong there?

    Thanks for the help!
  • Hi Bogdan,

    We have started to look into this, could you kindly confirm if you setup the trigger outputs by sending the commands 0x6a and 0x6b? What trigger out modes do you want to use? What is your expected trigger behaviour?

    This information will help us to reproduce your issue and debug!

    Thanks & Regards,
    Hirak.
  • Hello Hirak,

    Thanks for the update! I'm using default settings for the registers 0x6A and 0x6B and I'm not writing anything to those registers.
    I'm using trigger mode 1, where TRIG_OUT_1 should inform me when the pattern is active. Just to avoid any misleads, on my image trigger out 1 is TRIG_OUT_1.

    My expected trigger behavior is marked with green color on my image.

    Regards,

    Bogdan

  • Hello Hirak,

    I had really small progress (if I can call it progress at all) because I was planning to use trigger mode 1, but I found in datasheet that trigger mode 0 can only be used with pattern data from the parallel port (the rest of the trigger modes can be used only if we use images from the flash memory). When I switched to trigger mode 0 I have a little bit different behavior, but still there is delay between the first start sequence command and trigger out 1 signal and I don't understand why. Please check the attached image. 

    Also, I have to repeat configuration of DLPC for pattern sequence twice if I'm planning to get something useful? Or, in other words, I have different pattern sequence behavior if I send configuration commands only once.

    Regards,
    Bogdan

  • Hi Bogdan,

    We can confirm that there is about a 90-120ms delay between sending the FIRST start command and pattern starting. This is due to first time configuration of the pattern sequence mode. However, after the first time, it comes down to 2-3ms. We can look more into this and get back to you. Can you kindly describe more about your specific use case/requirement?

    Thanks & Regards,
    Hirak.
  • Hello Hirak,

    Thanks for confirmation of such DLPC behavior. It's important for us to know, because we have to synchronize pattern source, camera and DLPC.
    120ms is too much for our sequence generator and we lose synchronization in that case so camera is not capturing correct images (patterns).
    If the first start command has delay, it's ok for us because we can send dummy start/stop pattern sequence command and simply ignore first set of images.
    Can you confirm this is only valid for the first time? All other start/stop sequence commands will have delay of 2-3ms?

    Why do I need to send configuration of pattern sequence twice?

    Thanks!

    Regards,
    Bogdan
  • Hi Bogdan,

    Can you use the trigger out from the DLPC350 to trigger your camera? This can solve the synchronization problem. Also, after the first time, start command can take upto 1 vsync of delay. Stop command execution time is not fixed and can vary depending on the pattern sequence being run and when the stop command is being sent.

    Could you further explain your question "Why do I need to send configuration of pattern sequence twice?" because we don't need to do that.

    Thanks & Regards,
    Hirak.
  • Hi Bogdan,

    We're still looking at the trig out 1 issue. We'll get back to you as soon as possible.

    Thanks & Regards,
    Hirak.
  • Hi Bogdan,

    Due to inactivity, we're closing this thread here. We'll continue our discussions over email.

    Thanks & Regards,
    Hirak.