Glad you're getting into the fray!
Concept & Design of 3.3V Parallel 16-bit VGA Boards
-
ElEctric_EyE
- Posts: 3260
- Joined: 02 Mar 2009
- Location: OH, USA
Re: Concept & Design of 3.3V Parallel 16-bit VGA Boards
Arlet wrote:
...By the way, I see R10 and R11 marked on the bottom, but the two pads are connected to each other. What's the purpose of these resistors ?
Glad you're getting into the fray!
-
ElEctric_EyE
- Posts: 3260
- Joined: 02 Mar 2009
- Location: OH, USA
Re: Concept & Design of 3.3V Parallel 16-bit VGA Boards
Arlet wrote:
...Now, I need to figure out how I'm going to test the VGA. I only have one monitor, and it's hooked up to my desktop PC. I don't feel like disconnecting the VGA connector from the PC every time I want to test the FPGA board....
-
ElEctric_EyE
- Posts: 3260
- Joined: 02 Mar 2009
- Location: OH, USA
Re: Concept & Design of 3.3V Parallel 16-bit VGA Boards
Here is my latest project file for drawing a green line. It'll test out your card and monitor for 640x480.
- Attachments
-
- PVBline.zip
- (2.31 MiB) Downloaded 177 times
Re: Concept & Design of 3.3V Parallel 16-bit VGA Boards
ElEctric_EyE wrote:
Here is my latest project file for drawing a green line. It'll test out your card and monitor for 640x480.
-
ElEctric_EyE
- Posts: 3260
- Joined: 02 Mar 2009
- Location: OH, USA
Re: Concept & Design of 3.3V Parallel 16-bit VGA Boards
Arlet wrote:
... My first goal is an improved VGA timing controller, with a FIFO-based data path.
Re: Concept & Design of 3.3V Parallel 16-bit VGA Boards
ElEctric_EyE wrote:
Arlet wrote:
... My first goal is an improved VGA timing controller, with a FIFO-based data path.
Re: Concept & Design of 3.3V Parallel 16-bit VGA Boards
I've made a first version of the FIFO based VGA generator. Still hardcoded for 640x480, but the VGA module now uses look up tables for all the timings. The idea is that these tables will be writable through a simple addr/data/we interface.
I've also changed the VGA code to count to 1 instead of -1. This takes slightly more resources (and time), but on the much faster Spartan-6, that's not a problem, and this allows you to use 640 to set the width, rather than 638, like it was before.
At the bottom of main.v, you'll find a simple test pattern generator, as a demonstration on how to use the FIFO interface.
I've also changed the VGA code to count to 1 instead of -1. This takes slightly more resources (and time), but on the much faster Spartan-6, that's not a problem, and this allows you to use 640 to set the width, rather than 638, like it was before.
At the bottom of main.v, you'll find a simple test pattern generator, as a demonstration on how to use the FIFO interface.
Re: Concept & Design of 3.3V Parallel 16-bit VGA Boards
I made a github repository for this project, and added some refinements and bug fixes. Among other things, the test bench will create .ppm files with screen shots. Here's the output from the test image:
-
ElEctric_EyE
- Posts: 3260
- Joined: 02 Mar 2009
- Location: OH, USA
Re: Concept & Design of 3.3V Parallel 16-bit VGA Boards
Ah, very cool test. So no worries of simultaneously switching outputs on this design even with the small SOT-223 VReg's?
I got a successful output after I'd realized that I had to pull up DACBLANKn, since I use v1.0g. I would've responded earlier when I first tried. But I had realized my issue, then had to run some errands. So now it works.
Do you use the R5,R6 & R7 impedance matching resistors?
When do you anticipate your SyncRAM arriving?
I got a successful output after I'd realized that I had to pull up DACBLANKn, since I use v1.0g. I would've responded earlier when I first tried. But I had realized my issue, then had to run some errands. So now it works.
Do you use the R5,R6 & R7 impedance matching resistors?
When do you anticipate your SyncRAM arriving?
Re: Concept & Design of 3.3V Parallel 16-bit VGA Boards
Do I need to pull up DACBLANKn too ? I never paid any attention to it. This isn't the worst possible test for SSOs, since there's a 1 pixel red line between the black and white pixels, so only a maximum of 11 switching bits at the same time. In any case, the problem would not be with the SOT-223 regulator, but rather the inductance of the traces (including the ones inside the TQFP package). By the way, since I don't have easy access to 3.3V supply, I just patched the output of the 3.3V regulator into the 3.3V input on the board, so the single regulator is powering both video DAC and FPGA. So far, so good
If it gets too hot, I'll add a beefier regulator on the board somewhere.
I did mount R5-R7, but since I didn't order any 75 Ohm resistors (I figured I'd just pick the resistors from my standard set, until I realized there were some non-standard values), I mounted two 150 Ohm resistors on top of each other.
I haven't ordered the SyncRAM yet. I wanted to make sure everything else was working first. For now, I'll just play around with the bare FPGA, and see what I can do with the block RAMs.
Edit: I did notice some weird interference on the screen, but then I figured I could make it go away by disconnecting the JTAG pod. Also, I noticed a change in overall brightness when doing that.
I did mount R5-R7, but since I didn't order any 75 Ohm resistors (I figured I'd just pick the resistors from my standard set, until I realized there were some non-standard values), I mounted two 150 Ohm resistors on top of each other.
I haven't ordered the SyncRAM yet. I wanted to make sure everything else was working first. For now, I'll just play around with the bare FPGA, and see what I can do with the block RAMs.
Edit: I did notice some weird interference on the screen, but then I figured I could make it go away by disconnecting the JTAG pod. Also, I noticed a change in overall brightness when doing that.
-
ElEctric_EyE
- Posts: 3260
- Joined: 02 Mar 2009
- Location: OH, USA
Re: Concept & Design of 3.3V Parallel 16-bit VGA Boards
Arlet wrote:
Do I need to pull up DACBLANKn too ? I never paid any attention to it...
Arlet wrote:
...By the way, since I don't have easy access to 3.3V supply, I just patched the output of the 3.3V regulator into the 3.3V input on the board, so the single regulator is powering both video DAC and FPGA. So far, so good
If it gets too hot, I'll add a beefier regulator on the board somewhere...
Arlet wrote:
...Edit: I did notice some weird interference on the screen, but then I figured I could make it go away by disconnecting the JTAG pod. Also, I noticed a change in overall brightness when doing that.
-
ElEctric_EyE
- Posts: 3260
- Joined: 02 Mar 2009
- Location: OH, USA
Re: Concept & Design of 3.3V Parallel 16-bit VGA Boards
BTW, with your new vga module that generates HSync and VSync, I now see the blue border on the TFT and older style CRT monitors. The TFT was trimming the visible borders out with the older vga module.
Re: Concept & Design of 3.3V Parallel 16-bit VGA Boards
Yes, my adjustable power supply only has 1 output, so I've set it to 5V, and use the regulator to make the 3.3V. I also forgot to order the ferrite bead, so I've skipped that as well.
So far, the noise isn't interfering with the digital logic. It may be interfering a bit on the video output, but not to the point where it's reason for concern (yet). Of course, when more logic gets added to the FPGA, things may get worse.
So far, the noise isn't interfering with the digital logic. It may be interfering a bit on the video output, but not to the point where it's reason for concern (yet). Of course, when more logic gets added to the FPGA, things may get worse.
Re: Concept & Design of 3.3V Parallel 16-bit VGA Boards
ElEctric_EyE wrote:
BTW, with your new vga module that generates HSync and VSync, I now see the blue border on the TFT and older style CRT monitors. The TFT was trimming the visible borders out with the older vga module.
-
ElEctric_EyE
- Posts: 3260
- Joined: 02 Mar 2009
- Location: OH, USA
Re: Concept & Design of 3.3V Parallel 16-bit VGA Boards
I've been looking over your code. Sort of difficult to understand, but it looks like it wouldn't be too difficult to add/modify it to read from the RAM. Is it as straightforward, for a simple test, where one could assign the x and y pixel counters as the RAM address in the main.v module, then have the fifo_data <= SRAMdata?