• 1

VGA Pmod Colour Pinout Change


I've recently started working with the VGA Pmod, but was having the oddest issue. Output looked correct, but colours were interchanged. I assumed I was doing something stupid in my Verilog or constraints file, but after further testing came to the conclusion that the spec sheet was wrong about the colour pins! 

This seemed extremely unlikely, a programmer who blames the hardware is almost always mistaken, but then I inspected my board, which is labelled rev C. The labelling of pins on my Pmod didn't match the spec sheet or images on the Digilent web site: my green and blue pin labels are interchanged (see photos below). So I tried updating my constraints to match my board labelling, but the results were still wrong! I actually get the correct output if I do the following:

  • Where the spec says green I use red
  • Where the spec says red I use blue
  • Where the spec says blue I use green

You can see an example of a constraints file at the end of this post which works on my board. I have also got a friend to test this on his recently acquired VGA Pmod and he gets the same behaviour as me. 

Can someone from Digilent comment on this and update the spec on the web site to save other users confusion?

Digilent Web Site: rev B


My VGA Pmod: rev C



    ## VGA Pmod rev C

    ## VGA Pmod Header JB
    set_property -dict { PACKAGE_PIN E15 IOSTANDARD LVCMOS33 } [get_ports { VGA_R[0] }];
    set_property -dict { PACKAGE_PIN E16 IOSTANDARD LVCMOS33 } [get_ports { VGA_R[1] }];
    set_property -dict { PACKAGE_PIN D15 IOSTANDARD LVCMOS33 } [get_ports { VGA_R[2] }];
    set_property -dict { PACKAGE_PIN C15 IOSTANDARD LVCMOS33 } [get_ports { VGA_R[3] }];
    set_property -dict { PACKAGE_PIN J17 IOSTANDARD LVCMOS33 } [get_ports { VGA_B[0] }];
    set_property -dict { PACKAGE_PIN J18 IOSTANDARD LVCMOS33 } [get_ports { VGA_B[1] }];
    set_property -dict { PACKAGE_PIN K15 IOSTANDARD LVCMOS33 } [get_ports { VGA_B[2] }];
    set_property -dict { PACKAGE_PIN J15 IOSTANDARD LVCMOS33 } [get_ports { VGA_B[3] }];

    ## VGA Pmod Header JC
    set_property -dict { PACKAGE_PIN U12 IOSTANDARD LVCMOS33 } [get_ports { VGA_G[0] }];
    set_property -dict { PACKAGE_PIN V12 IOSTANDARD LVCMOS33 } [get_ports { VGA_G[1] }];
    set_property -dict { PACKAGE_PIN V10 IOSTANDARD LVCMOS33 } [get_ports { VGA_G[2] }];
    set_property -dict { PACKAGE_PIN V11 IOSTANDARD LVCMOS33 } [get_ports { VGA_G[3] }];
    set_property -dict { PACKAGE_PIN U14 IOSTANDARD LVCMOS33 } [get_ports { VGA_HS_O }];
    set_property -dict { PACKAGE_PIN V14 IOSTANDARD LVCMOS33 } [get_ports { VGA_VS_O }];


Edited by Flux
Added photo of reverse of my board.

Share this post

Link to post
Share on other sites

6 answers to this question

Recommended Posts

  • 0

Hi @Flux (and to others reading this thread),

The reference manual and the XDC files for the demo projects have been updated to the correct pinout pairing for the Pmod VGA.


Share this post

Link to post
Share on other sites
  • 0

Hi @Flux,

Your new XDC file seems to be correct (as you have verified with your own testing) for getting the correct colors. It appears that the reference material for the Pmod VGA was developed for a Rev B edition, whereas the Rev C experienced a number of pin changes. We are working to get the documentation updated as appropriate.

Thank you for taking the time to point this out to us! We appreciate it.

Thank you,

Share this post

Link to post
Share on other sites
  • 0


My understanding is that the previous revisions were not actually ever sold, so hopefully we'll be good on that end of things :)


Share this post

Link to post
Share on other sites
  • 0

Any chance of making a board version where the hardwired color signals are replaced for say a 24-bit SPI (or 8-bit words on three separate SPI channels) word that would allow 8-bit color channel depth?  The colors signals on these boards only allow 12-bit color which is less than the original Zybo's built-in VGA port.  The onboard logic could just latch the previous color word until the SPI slave shifts in the next world completely.  Of course when one starts using serial color signals it wouldn't be much of a stretch to just change to TMDS serial signalling and use the HDMI port instead (though the TMDS has lots of lookup tables and stuff that complicates the basic protocol).


Edit: I'd cobble something up myself but fully QA-matched R,2R sets for 8-bit DACs are hard to come by (and three matching 0V-0.7V sets are needed).

Edited by Gau_Veldt

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now