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 Outline
38 =============
39
40 The board has the same outline and mounting holes as the Arduino Duemilanove,
41 although it does not provide shield compatibility, physically or electrically:
42
43 https://docs.arduino.cc/retired/boards/arduino-duemilanove
44
45 Unfortunately, the physical characteristics of the Duemilanove are not
46 adequately documented by the Arduino initiative. Consequently, others have
47 been obliged to do this work, and the following resource was used to define
48 the board outline used in this project:
49
50 http://www.robgray.com/temp/Arduino-PCB-dimensions.pdf
51
52 Board Version Notes
53 ===================
54
55 oshpark-7PB6tGOf (December 2021)
56 --------------------------------
57
58 This version provides pads for very short resistors which are rather
59 inconvenient for generally available through-hole mounted resistors, although
60 the pad spacing is appropriate for the capacitors employed in the design. A
61 new version is anticipated with longer footprints for the resistors.
62
63 Another flaw with this version is the combination of colour signals without
64 diodes isolating this part of the circuit. Since some of these pins are used
65 for parallel input/output, if the VGA signal resistors are connected, pairs of
66 pins are effectively joined, making the affected parallel signals unusable.
67 This affects PMD0/PMD1 (blue channel), PMD2/PMWR (green channel), PMD5 (if D7
68 is used for the red channel). Thus, any use of the parallel signals precludes
69 use of the VGA outputs unless only one pin of every affected pair is used, as
70 opposed to both pins.
71
72 Diodes would correct this problem, but another approach could involve a way of
73 switching between VGA output and parallel signal usage since the use of one
74 generally precludes the use of the other: parallel traffic leaking through the
75 VGA connector would not produce a valid signal; VGA output leaking through the
76 parallel connector would not produce valid parallel transactions. A
77 multiplexer controlled by an output signal could be coupled with software to
78 permit switching between the connectors, allowing video output to be switched
79 between a panel and the VGA connector, for example.
80
81 One limitation that the board has when used with an Arduino Duemilanove board
82 for programming is that it is not designed to be stacked on such a board. This
83 could have been useful when putting such a combination of boards in a case
84 designed for stacks of Arduino boards and shields, since there is otherwise
85 not enough space between the female headers of the Arduino board and the
86 underside of this board to be able to use jumper wires, as had been intended.
87 However, breadboard jumper cables can be used to route the signals between the
88 boards.
89
90 Another potential change could involve the positioning of the VGA output
91 connectors, these having been situated at the opposite end of the board to
92 where an Arduino would have its USB and power connectors. It might have been
93 more sensible to have put the VGA connectors, these being external, on the
94 same end as the Arduino's own external connectors, with the programming pins
95 either being routed via stackable header connections or through connectors on
96 the end of the board that would be internal within any case or housing.
97
98 Despite the above Arduino-related suggestions, this board was not designed as
99 an Arduino shield, needing rather more flexibility in terms of providing
100 connections of specific kinds, and although the intention was to make use of
101 Arduino-compatible cases or housings, it was never envisaged that any
102 particular case would be completely compatible with this board.
103
104 Design Rules and Production
105 ===========================
106
107 It was decided that OSHPark would be used to make the first set of boards.
108 Thus, the design rules for OSHPark were employed by this project. Such rules
109 can be found here:
110
111 http://docs.oshpark.com/services/two-layer/
112 http://docs.oshpark.com/design-tools/kicad/kicad-design-rules/
113
114 The board uploaded to OSHPark was tagged with oshpark-7PB6tGOf in this
115 repository. It resides on OSHPark at the following location:
116
117 https://oshpark.com/projects/7PB6tGOf/view_design
118
119 Contact, Copyright and Licence Information
120 ==========================================
121
122 The author can be contacted at the following e-mail address:
123
124 paul@boddie.org.uk
125
126 Copyright and licence information can be found in the docs directory - see
127 docs/COPYING.txt and docs/gpl-3.0.txt for more information.