paul@149 | 1 | = VGA Signal Wiring = |
paul@149 | 2 | |
paul@149 | 3 | The generation of a VGA-compatible video signal from a PIC32 microcontroller |
paul@149 | 4 | is demonstrated by a number of [[VGA Output Examples|examples]]. Common to |
paul@149 | 5 | these are certain hardware characteristics, described here to avoid |
paul@149 | 6 | unnecessary repetition. |
paul@149 | 7 | |
paul@151 | 8 | == Data Signal Routing == |
paul@151 | 9 | |
paul@151 | 10 | The following routing from output pins to output socket pins is employed. |
paul@151 | 11 | |
paul@151 | 12 | {{{#!graphviz |
paul@151 | 13 | //format=svg |
paul@151 | 14 | //transform=notugly |
paul@151 | 15 | digraph routing { |
paul@153 | 16 | graph [ranksep=1.0,style=invis,fontsize="15.0",fontname="sans-serif",splines=ortho]; |
paul@153 | 17 | node [shape=box,style=filled,fillcolor=white,fontsize="13.0",fontname="sans-serif"]; |
paul@151 | 18 | rankdir=LR; |
paul@151 | 19 | |
paul@151 | 20 | /* Output pins. */ |
paul@151 | 21 | |
paul@151 | 22 | subgraph { |
paul@151 | 23 | rank=same; |
paul@151 | 24 | pins [label="Output pins",shape=note,fillcolor=gold]; |
paul@151 | 25 | D6 [fillcolor=lightgrey]; |
paul@151 | 26 | D5 [fillcolor="#ff7777"]; |
paul@151 | 27 | D4 [fillcolor="#ff7777"]; |
paul@151 | 28 | D3 [fillcolor="#77ff77"]; |
paul@151 | 29 | D2 [fillcolor="#77ff77"]; |
paul@151 | 30 | D1 [fillcolor="#7777ff"]; |
paul@151 | 31 | D0 [fillcolor="#7777ff"]; |
paul@151 | 32 | D7 -> D6 -> D5 -> D4 -> D3 -> D2 -> D1 -> D0 -> HSYNC -> VSYNC -> pins [style=invis]; |
paul@151 | 33 | } |
paul@151 | 34 | |
paul@151 | 35 | /* Intensity adjustment resistor. */ |
paul@151 | 36 | |
paul@151 | 37 | I2 [label="2200R"]; |
paul@151 | 38 | |
paul@151 | 39 | /* Colour channel resistors and diodes. */ |
paul@151 | 40 | |
paul@151 | 41 | subgraph { |
paul@151 | 42 | rank=same; |
paul@151 | 43 | R2 [label="470R",fillcolor="#ff7777"]; |
paul@151 | 44 | R1 [label="1000R",fillcolor="#ff7777"]; |
paul@151 | 45 | RD [label="diode",fillcolor="#ff7777"]; |
paul@151 | 46 | R2 -> R1 -> RD [style=invis]; |
paul@151 | 47 | } |
paul@151 | 48 | |
paul@151 | 49 | subgraph { |
paul@151 | 50 | rank=same; |
paul@151 | 51 | G2 [label="470R",fillcolor="#77ff77"]; |
paul@151 | 52 | G1 [label="1000R",fillcolor="#77ff77"]; |
paul@151 | 53 | GD [label="diode",fillcolor="#77ff77"]; |
paul@151 | 54 | G2 -> G1 -> GD [style=invis]; |
paul@151 | 55 | } |
paul@151 | 56 | |
paul@151 | 57 | subgraph { |
paul@151 | 58 | rank=same; |
paul@151 | 59 | B2 [label="470R",fillcolor="#7777ff"]; |
paul@151 | 60 | B1 [label="1000R",fillcolor="#7777ff"]; |
paul@151 | 61 | BD [label="diode",fillcolor="#7777ff"]; |
paul@151 | 62 | B2 -> B1 -> BD [style=invis]; |
paul@151 | 63 | } |
paul@151 | 64 | |
paul@151 | 65 | /* Video signals. */ |
paul@151 | 66 | |
paul@151 | 67 | subgraph { |
paul@151 | 68 | rank=same; |
paul@151 | 69 | signals [label="Video signals",shape=note,fillcolor=gold]; |
paul@151 | 70 | R [fillcolor="#ff7777"]; |
paul@151 | 71 | G [fillcolor="#77ff77"]; |
paul@151 | 72 | B [fillcolor="#7777ff"]; |
paul@151 | 73 | R -> G -> B -> HS -> VS -> signals [style=invis]; |
paul@151 | 74 | } |
paul@151 | 75 | |
paul@151 | 76 | D7 -> I2; |
paul@151 | 77 | D6 /* not connected */ |
paul@151 | 78 | D5 -> R2 -> R; |
paul@151 | 79 | D4 -> R1 -> R; |
paul@151 | 80 | D3 -> G2 -> G; |
paul@151 | 81 | D2 -> G1 -> G; |
paul@151 | 82 | D1 -> B2 -> B; |
paul@151 | 83 | D0 -> B1 -> B; |
paul@151 | 84 | |
paul@151 | 85 | I2 -> RD; |
paul@151 | 86 | I2 -> GD; |
paul@151 | 87 | I2 -> BD; |
paul@151 | 88 | |
paul@151 | 89 | RD -> R; |
paul@151 | 90 | GD -> G; |
paul@151 | 91 | BD -> B; |
paul@151 | 92 | |
paul@151 | 93 | HSYNC -> HS; |
paul@151 | 94 | VSYNC -> VS; |
paul@151 | 95 | } |
paul@151 | 96 | }}} |
paul@151 | 97 | |
paul@151 | 98 | Where two bits of intensity are supported, D6 is routed via a 4700 ohm |
paul@151 | 99 | resistor to each of the colour channel diodes, contributing to the existing |
paul@151 | 100 | D7-driven intensity signal. |
paul@151 | 101 | |
paul@149 | 102 | == Pinouts == |
paul@149 | 103 | |
paul@149 | 104 | For the examples documented in this project, the following pinouts apply. VGA |
paul@149 | 105 | connectors also support other signals, generally used for querying a display |
paul@149 | 106 | for supported resolutions, but since a statically configured resolution is |
paul@149 | 107 | employed by these examples, these other signals are left unconnected. |
paul@149 | 108 | |
paul@149 | 109 | === Output Socket Pinout === |
paul@149 | 110 | |
paul@149 | 111 | {{{ |
paul@149 | 112 | 5 (GND) 4 (NC) 3 (B) 2 (G) 1 (R) |
paul@149 | 113 | |
paul@149 | 114 | 10 (GND) 9 (NC) 8 (GND) 7 (GND) 6 (GND) |
paul@149 | 115 | |
paul@149 | 116 | 15 (NC) 14 (VS) 13 (HS) 12 (NC) 11 (NC) |
paul@149 | 117 | }}} |
paul@149 | 118 | |
paul@149 | 119 | === Output Cable Pinout === |
paul@149 | 120 | |
paul@149 | 121 | {{{ |
paul@149 | 122 | 1 (R) 2 (G) 3 (B) 4 (NC) 5 (GND) |
paul@149 | 123 | |
paul@149 | 124 | 6 (GND) 7 (GND) 8 (GND) 9 (NC) 10 (GND) |
paul@149 | 125 | |
paul@149 | 126 | 11 (NC) 12 (NC) 13 (HS) 14 (VS) 15 (NC) |
paul@149 | 127 | }}} |
paul@149 | 128 | |
paul@149 | 129 | === References === |
paul@149 | 130 | |
paul@149 | 131 | * [[WikiPedia:VGA connector]] |
paul@149 | 132 | |
paul@149 | 133 | * [[http://papilio.cc/index.php?n=Papilio.VGAWing|VGAWing]] |
paul@149 | 134 | |
paul@149 | 135 | * [[http://lucidscience.com/pro-vga%20video%20generator-2.aspx| |
paul@149 | 136 | LucidScience - Build the VGA VIDEO GENERATOR - Page 2 of 16]] |
paul@149 | 137 | |
paul@149 | 138 | * [[https://sites.google.com/site/h2obsession/CBM/C128/rgbi-to-vga| |
paul@149 | 139 | RGBI to VGA - H2Obsession]] |