Let's Make Robots!

Video Encoding with CS4954


I have some new and interesting stuff to share. The attached photos demonstrate my progress with generating baseband video signals (CVBS or composite video) for wireless transmission (see my other blog posts). As I finally realised that video stream editing at 27MHz data rate (towards stereoscopic vision) is hardly possible with the Parallax Propeller, I turned over to hardware editing. In the first step I thought I should start with discrete logic IC's but a colleague of mine "persuaded" me to use an FPGA. Well, he was definitely right.

As a suitable FPGA plattform I use the XuLA-50 board made and sold by XESS. You can get it for just $39. Anyway, I had a hard fight with the hardware programming, as I am a bloody VHDL beginner. What you can see here is just a simple setup for generating Video color bars as a test signal, in order to see whether I2C configuration is running fine. So at this stage the FPGA does nothing more than spending a power-on-reset to the CS4954 and performing some configurations on it via I2C. Trust me, implementing I2C in VHDL was a pain. Fortunately there is this.

Here is the proof...

He, who else owns a test monitor with balsa wood finish?


Close-up of the video encoder. The unconnected headers below are for future BT.656 video input, currently unused. The board is a SchmartBoardEZ available at Mouser Electronics. I know of no other easy-to-use prototyping board which enables you to solder such tiny TQFP packages flawlessly.


The XuLA-50 board. Really tiny design. Comes with Flash, SRAM and power regulators on board and can be powered over the USB. Very convenient. In contrast to many other Xilinx FPGA boards this one can be programmed over USB cable. There is no need for an expensive JTAG programming cable.

What do you think about that?



Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Nice to see you using the XuLA!

I also used the XuLA to drive an I2C interface, but mine was connected to a TCM8240 CMOS camera. Instead of having the FPGA do the complete initialization, I wrote an I2C interface that accepted data/commands sent by the host PC over the USB link and through the FPGA's JTAG port. Then I could program the TCM8240 registers from the PC. I talked about this project here. The I2C link worked, but the total project was a failure because the TCM8240 was so poorly documented.

I'm not sure how you are initializing your video chip through the I2C bus, but I would be happy to share my code with you if it would help. Of course, sometimes using someone else's code is more trouble than writing it from scratch so I'm not sure it would save you any effort...

Good luck with your project!