Viewing posts from June, 2011
We all have 'em: tools that let us do things easier and faster. Some we buy, others we make. This is my first entry about one of my favorite tools: an Eagle ULP I wrote that lets me do cost estimates on boards I'm designing using real-time prices fetched from Digi-Key. <<more...>>
I'm writing a new book about doing FPGA design using Xilinx ISE WebPACK and the XuLA board. I've reproduced the preface for the book below. Here are the important points:
I recently received an email which contained the following question:
Well, despite the great choices you have made making the XuLA, I was wondering why you did not use a Cypress (e.g. cy7c67300) chipset (but instead you used a PIC) for the virtual JTAG over the USB. The Cypress would have given to the board the possibility of having a full fledged USB 2.0 comm. port after the FPGA is programmed, am I wrong? With the Cypress you could have used firmware available around the internet...
Also, if I do not mistake, instead of the PIC you could have used a FT2232D which next to the virtual JTAG it would have given a serial RS232, which is quite a good thing for FPGA. Did you consider this lack of serial comm.? <<more...>>
In my previous blog post, I showed a circuit I built to interface my XuLA FPGA board to a VGA monitor. What I didn't show was the code that lets the FPGA fetch an image from SDRAM and display it on a monitor. I'll try to remedy that in this post.
I'll start off with the basics of VGA video signals: signal levels and timing. Then I'll show you the block-level architecture of a module for generating VGA video and an application that uses the module to display an image stored in SDRAM. Finally, I'll post an archive of the Xilinx ISE 13 project files that compiles into a downloadable bitstream for the FPGA on the XuLA board. Hopefully you'll find enough comments in the VHDL code to understand how it all relates to what I'll describe below. (And for all who are about to ask: NO, I do not have a Verilog version of this.)
OK, here we go... <<more...>>
XESS Boards have had built-in VGA interfaces since 1997 (and I stole the idea from others who were doing it before that). But the new XuLA FPGA board doesn't have any extraneous parts (just an FPGA, SDRAM, configuration flash and a USB interface), so how do you display graphics with it?
A simple VGA interface can be built on a breadboard with some resistors and a connector. The red, green and blue VGA signals are each driven by a simple DAC like the one shown below. Each color input presents a 75-ohm load to the DAC. The DAC resistors combine with the load resistor to divide the 3.3V digital logic outputs so the total stays below the maximum 0.7V expected by the VGA input. A set of five resistors that scale upwards by a factor of two will implement a single five-bit, 32-level DAC, so fifteen resistors are needed to drive the RGB inputs to create a total of 32 x 32 x 32 = 32,768 colors. <<more...>>