Anyway, I plugged up the VGA adapter and loaded up the VHDL "VGA" demo that came on the CD.
Through a series of experiments I made the following discoveries about the supplied example VHDL code:
1) The HIGH and MEDIUM intensity GREEN signals are swapped.
In the DVK600 "16 I/Os" expansion connector numbering scheme, I/O 7 is actually VGAG2 not VGAG1.
I/O 10 is actually VGAG1 not VGAG2. The existing definition for VGAG0 is correct.
2) There are 3 bits of BLUE available for use, not 2 like the demo used.
The "extra" VGAB2 signal is on I/O 12.
3) In addition to 3 bits of RED, 3 bits of GREEN, and 3 bits of BLUE there are 3 additional R, G, and B pins.
A max intensity G on I/O 5.
A max intensity B on I/O 6.
A max intensity R on I/O 8.
I thought these might make it for "4 bits for each color" but these additional pins completely swamp their other three counterparts.
My guess is you would use these additional pins in conjunction with PWM instead of using the "binary" RGB outputs?
For those not familiar with the DVK600 board, it has multiple connectors of multiple sizes (8,16,32).
They are named for the number of I/O pins they support, not for the total number of pins (which is higher due to additional power and ground pins).
There are two "16 I/O" connectors labeled "16 I/Os 1" and "16 I/Os 2". Because there are TWO connectors of this size, I used "I/O" numbering in the above discussion instead of "raw" XILINX pins.
As an example, here is how the "16 I/Os 2" pins map to XILINX pin "LOC"s...
I/O LOC
1 p119
2 p116
3 p115
4 p113
5 p112
6 p109
7 p108
8 p107
9 p106
10 p102
11 p100
12 p99
13 p98
14 p97
15 p96
16 p94
(I have not used connector "16 I/Os 1" yet).
Here is a corrected ".ucf" file for connector "16 I/Os 2":
NET "clk" LOC = "p184";
NET "red0" LOC = "p96";
NET "red1" LOC = "p98";
NET "red2" LOC = "p100";
NET "redx" LOC = "p107"; # Labeled "R" on silkscreen, this is a MUCH more intense RED
NET "green0" LOC = "p106";
NET "green1" LOC = "p102"; # They had these next two swapped!
NET "green2" LOC = "p108"; # (see above)
NET "greenx" LOC = "p112"; # Labeled "G" on silkscreen, this is a MUCH more intense GREEN
NET "blue0" LOC = "p94";
NET "blue1" LOC = "p97";
NET "blue2" LOC = "p99"; # They left this out completely
NET "bluex" LOC = "p109"; # Labeled "B" on silkscreen, this is a MUCH more intense BLUE
No comments:
Post a Comment