[GSoC Weekly Overview]: Fruits of patience!

In short, this week was *boring* and it was only in the end that I got some much needed exciting work to do. Why boring? Because, reading datasheets is an extremely boring (yet extremely necessary) thing to do!

Reading datasheet

So, most of the week was spent reading datasheet, starting with understanding the “Theory of Operation” of AD9984A IC. After that, It was time to read the Register Documentation (this & this) of the AD9984A IC. One thing of importance was initialization procedure. Read the initialization procedure of a similar IC TVP7002 from TI. Now, After all this reading and reading, I was beginning to forget all I had read (bah), so I thought that I better make a spreadsheet to aggregate all the register documentation I had read. So was born this sheet. This part consumed most of the time, since to get the IC working, one has to do correct register settings and for that one has to read the datasheet...boring, but it had to be done!

A Short!

During my visual inspection of the IC, I noticed a short between 2 pins of AD9984A IC, which had gone unnoticed until then. It could have been nuisance  because the short was between the VD pin (1.8V) and one analog input pin, which was coupled through a capacitor and then through a 75­ŁŤ║ resistor to ground. Not serious, nevertheless may be nuisance later. I removed it using a desoldering wick.

First HDL codes and results:

After the datasheet reading part comes the exciting part of actually trying all the learning, which I was dying for! I wrote a test code in python for I2C initialization using the register and corresponding values in my quick cheatsheet linked above. Next job was to write a test VHDL code checking whether the chip is functioning. The easiest way is to see whether there are signals on any of SYNC lines (HSYNC/VSYNC/SOGOUT) or check if the pixel clock is correct. And, among them, the easiest is detecting VSYNC. There are two main reasons that I decided for testing for VSYNC first:
First, since VSYNC are standard 60Hz (mostly) signal, one just has to write a mod-60 counter. The output will flip every second. Also, it tells that the AD9984A IC is correctly detecting a frame. So, I connected the output to LED array onboard Atlys.
I used my standard custom generated 1024x768 @60Hz VGA signal from another FPGA to test the setup.
On powering up everything, and running the I2C initialization, the onboard LEDs start counting up every second, indicating successful detection of VSYNC pulses! A major milestone!

Atlys LEDs counting up every second ie 60 VSYNC pulses

So, in short this week started off boring work and ended with an exciting result! Fruits of Patience! :D

Upcoming Week:

Everything is going as per plan as of now. A minor task would be testing for correct HSYNC and Pixel Clock. But, The major task would be writing code for capturing the pixel data correctly and test it. I’ve two plans for testing as of now. Will need discussions with my mentor on that.
One way would be to test the capturing by outputting it to HDMI using the available dvi_encoder codes. I’d need more research for this plan.
Second would be to directly integrate the code to the HDMI2USB and test it the output on PC using the UVC USB. This plan, if successful would advance the coding time by quite a magnitude. But, it is also full of risks since, it would be unclear if the capture code is incorrect or the module integration is incorrect. More discussion needed on this.


(Kindly excuse the unedited and extremely bad quality video. I won't have access to a better camera maybe until 1-2 weeks) 

More Pictures:

Posted in , , . Bookmark the permalink. RSS feed for this post.

Leave a Reply


Swedish Greys - a WordPress theme from Nordic Themepark. Converted by LiteThemes.com.