Altera_Forum
Honored Contributor
16 years agoVIP Clocked Video Input Malfunction?
Hi,
I am experiencing problems with the VIP clocked video input core and would like to know if anybody has seen similar issues. I use the core to receive various video formats - from SD serial 4:2:2 to HD parallel 4:2:2, all with embedded syncs (AV codes). If I remove the video source from the input at random times (plugging the cable out and in), the core sometimes goes into a state where it permanently reports a FIFO overflow. You can clear the FIFO overflow bit (by writing 0x0200 to the video status register) but it gets set again immediately. Here is a more detailed sequence of events / actions after entering this state: 1. I read 0x03f9 from the status register. So it registers a FIFO overlfow, but is still outputting data. 2. I write 0x0200 to the status register, but when I read back the status register, it is still 0x03f9. 3. I stop the core by writing 0 to the control register. The status register now reads back 0x03f8. So it has stopped outputting data. 4. I write 0x0200 to the status register and read back 0x01f8. The overflow bit is now cleared. 5. I start the core again by writing 1 to the control register. Immediately I read 0x03f9 from the status register. The overflow bit is again set. On the output of the core I have a custom core which permanently drives the Ready line of the Avalon ST interface high - so there is no backpressure that could cause a FIFO overflow. My system clock is 90MHz and I make timing. This state occurs even with low data rate modes (like SD PAL/NTSC) so it is not data rate dependent. The only way to recover from this state is to reset the FPGA (driving the global reset high and low again). I have also noticed that while in this state, the core outputs data, but the data is garbled. (Further down the line I have frame grabber with which I can inspect the data and I get a totally garbled frame in this state). I can only speculate that the removal and re-application of the input video stream causes the internal state machine(s) to enter an invalid or lock-up state. Since I have no control over how and when the data stream gets applied or interrupted I need this module to be able to recover from any kind of error on the input. Has anybody seen anything similar? Or have any ideas of what might be wrong? Thanks! Niki