An Arduino Uno will be used to test individual parts of Juno as they are built but on its own the Arduino does not have sufficient I/O pins. For example testing an 8bit register which would require 8 inputs, 8 outputs plus a clock. I have designed an IO test board based on shift registers will provide the necessary number of IO pins.
The IO test board consists of
- 16 parallel output pins which will be used to place a test value from the Arduino onto an 8bit or 16bit bus
- 16 parallel input pins which will be used to read a value from an 8bit or 16bit bus into Arduino
The 16 parallel output pins are formed from two daisy chained 74HC595 serial to parallel shift registers with 3 state outputs. The parallel shift registers are loaded with the required value one bit at a time from the Arduino and then the output placed onto the bus hence the serial in parrallel out name.
The 16 parallel input pins are formed from two daisy chained 74HC165 parallel to serial shift registers. The shift registers are loaded with the value currently present on the bus and then the value is serially read 1 bit at a time into the Arduino.
When testing parts of Juno the Arduino will simulate the Juno clock signal by driving an output pin high or low at the required times. This will allow 8 bits to be written or read to the shift register before the next Juno clock edge is triggered.
Block Diagram
74HC595 Serial In Parallel Out Shift Register
The 74HC595 consists of an internal shift register and an output register.
- SCLR (Shift Register Clear) - When low the internal shift register is cleared. Take low to reset the internal shift register to a known state.
- SI - (Serial Input) - serial data input pin
- SCK (Serial input clock) - On low to high transition, shifts all the values currently in the shift register one place to the left and loads the value on SI into the first bit of the shift register. Repeat the process to load the shift register with the required value.
- RCK (register input clock) - On low to high transition loads the value in the shift register into the output register.
- G - When high output is disabled (high impedance state) . When low output is enabled and the value in the output register is placed on the bus.
- DA-H - Parallel data output pins
- QH' - Serial data output. This pin allows 74HC595 devices to be chained together. Connect to the Serial Input register of the next shift register.
74HC165 Parallel In Serial Out Shift Register
The 74HC165 is consists of 8 clocked master slave RS flip-flops connected as a shift register with auxiliary gating to provide over-riding asynchronous parallel.- SH/LD' - When low the internal shift register is loaded from the parallel inputs
- CLK - On low to high transition shifts register one place
- CLKINH - When high inhibits the clock. NB CLK and CLKINH are interchangeable
- SER - Serial input. This pin allows 74HC165 devices to be daisy chained together. Connect QH from the previous shift register.
- DA-H - Parallel data inputs
- QH - Serial data output
- QH' - Inverted serial data output
Schematic in EagleCAD
The PCB schematic and layout was done using EagleCAD PCB Software which can be freely downloaded. The EagleCAD schematic file can be downladed here.Parts list
- 2 * 74HC595
- 2 * 74HC165 (Rapid electronics part 83-0106)
- 1 * 10uf 25V 5mm Tantalum Bead Capacitor (Rapid electronics part 11-0666)
- 4 * 100n 5mm Ceramic Disc Capacitor ( Rapid electronis part 08-0235)
- 5 * 8 pin PCB connector (For example Rapid Electronics part 50-1666)
PCB Layout in EagleCAD
The PCB layout was done with the following settings- DRC set to Eurocircuits-EAGLE design rules setup for 2-layer PatternClass6 BaseCopper018 eCDefault. The DRC rules can be downloaded from Eurocircuits website.
- The version text used size = 0.03, ratio 8 %, line distance 50%, and font set to vector
- The larger control pin labelling e.g. CLK used text size = 0.05, ratio 8%, line distance 50%, and font set to vector
- Silkscreen text placed on layer 21 tPlace. The silkscreen text is the white text such as the board revision text and component labelling
- The PIN headers used the pinhead library part
- The capacitors used the C050-030X075 library part.
- DRC restring pad top and bottom changed from 10mil to 12mil.
When I first submitted the board to Eurocircuit their automated checker reported that the Annular Ring was to small even though I had used their DRC. Increasing the restring pad top and bottom settings from 10mil to 12mil fixed the issue. The EagleCAD board layout file can be downloaded here.
After sending the PCB design for manufacturing I realised it would have been useful to have provided a couple of ground pins to tie the G (output enable) pins from the 74HC595 to if bus control was not going to be required. Also, I should have used a polarised library part for C5 not that matters electronically but it would be neater as the silkscreen would show the polatiry of the capacitor.
No comments:
Post a Comment