1 Introduction
2 ============
3
4 The CommonPIC32_VGA distribution provides schematic and circuit layout files
5 for use with KiCad describing a circuit board for use with a PIC32
6 microcontroller, offering VGA signal generation capabilities when used with
7 the appropriate software (provided in the CommonPIC32 software distribution).
8
9 Other interfacing options are also provided for programming the
10 microcontroller using the ICSP mechanism, communicating with the
11 microcontroller using UART peripherals, and connecting the microcontroller to
12 parallel devices and to USB devices.
13
14 Note that the breadboard circuit used to prototype this board only
15 investigated VGA signal generation, ICSP functionality, and UART
16 communication. The other interfacing support has yet to be tested and
17 verified.
18
19 The following resources are provided:
20
21 CommonPIC32_VGA.kicad_pcb The circuit board layout
22
23 CommonPIC32_VGA.net The netlist, generated from the schematic
24 and distributed here for convenience
25
26 CommonPIC32_VGA.pro The KiCad project file
27
28 CommonPIC32_VGA.sch The circuit schematic providing the
29 relationships between components
30
31 PIC32MX270F256B.lib PIC32MX270F256B component library
32 containing a definition for the
33 microcontroller itself (with the PCB
34 footprint being provided by generic KiCad
35 footprint libraries)
36
37 Board Version Notes
38 ===================
39
40 oshpark-7PB6tGOf (December 2021)
41 --------------------------------
42
43 This version provides pads for very short resistors which are rather
44 inconvenient for generally available through-hole mounted resistors, although
45 the pad spacing is appropriate for the capacitors employed in the design. A
46 new version is anticipated with longer footprints for the resistors.
47
48 Another flaw with this version is the combination of colour signals without
49 diodes isolating this part of the circuit. Since some of these pins are used
50 for parallel input/output, if the VGA signal resistors are connected, pairs of
51 pins are effectively joined, making the affected parallel signals unusable.
52 This affects PMD0/PMD1 (blue channel), PMD2/PMWR (green channel), PMD5 (if D7
53 is used for the red channel). Thus, any use of the parallel signals precludes
54 use of the VGA outputs unless only one pin of every affected pair is used, as
55 opposed to both pins.
56
57 Diodes would correct this problem, but another approach could involve a way of
58 switching between VGA output and parallel signal usage since the use of one
59 generally precludes the use of the other: parallel traffic leaking through the
60 VGA connector would not produce a valid signal; VGA output leaking through the
61 parallel connector would not produce valid parallel transactions. A
62 multiplexer controlled by an output signal could be coupled with software to
63 permit switching between the connectors, allowing video output to be switched
64 between a panel and the VGA connector, for example.
65
66 One limitation that the board has when used with an Arduino Duemilanove board
67 for programming is that it is not designed to be stacked on such a board. This
68 could have been useful when putting such a combination of boards in a case
69 designed for stacks of Arduino boards and shields, since there is otherwise
70 not enough space between the female headers of the Arduino board and the
71 underside of this board to be able to use jumper wires, as had been intended.
72 However, breadboard jumper cables can be used to route the signals between the
73 boards.
74
75 Another potential change could involve the positioning of the VGA output
76 connectors, these having been situated at the opposite end of the board to
77 where an Arduino would have its USB and power connectors. It might have been
78 more sensible to have put the VGA connectors, these being external, on the
79 same end as the Arduino's own external connectors, with the programming pins
80 either being routed via stackable header connections or through connectors on
81 the end of the board that would be internal within any case or housing.
82
83 Despite the above Arduino-related suggestions, this board was not designed as
84 an Arduino shield, needing rather more flexibility in terms of providing
85 connections of specific kinds, and although the intention was to make use of
86 Arduino-compatible cases or housings, it was never envisaged that any
87 particular case would be completely compatible with this board.
88
89 Design Rules and Production
90 ===========================
91
92 It was decided that OSHPark would be used to make the first set of boards.
93 Thus, the design rules for OSHPark were employed by this project. Such rules
94 can be found here:
95
96 http://docs.oshpark.com/services/two-layer/
97 http://docs.oshpark.com/design-tools/kicad/kicad-design-rules/
98
99 The board uploaded to OSHPark was tagged with oshpark-7PB6tGOf in this
100 repository. It resides on OSHPark at the following location:
101
102 https://oshpark.com/projects/7PB6tGOf/view_design
103
104 Contact, Copyright and Licence Information
105 ==========================================
106
107 The author can be contacted at the following e-mail address:
108
109 paul@boddie.org.uk
110
111 Copyright and licence information can be found in the docs directory - see
112 docs/COPYING.txt and docs/gpl-3.0.txt for more information.