Difference between revisions of "ZX Breakout"

From Spectrum
Jump to navigation Jump to search
Line 103: Line 103:
|-
|-
|RESET||99||2||3||Buffered; CPLD GSR (active high)
|RESET||99||2||3||Buffered; CPLD GSR (active high)
|-
|ROMCS||61||3||7||Only when "Use ROMCS" is jumpered
|-
|-
|}
|}
Line 196: Line 198:
|-
|-
|40||GND||||||
|40||GND||||||
|-
|}
=== 10 pin header ===
This header uses ribbon cable numbering, with pin 1 being the top left pin looking down on the PCB, as in the image above.
Pin 4 is the same as the ROMCS pin on the header next to the edge connector - it's just a straight connection. It is provided as an alternative site to connect a wire to ROMCS. Pin 9 is not connected to the CPLD if the "Use ROMCS" jumper is closed. When this jumper is closed, CPLD pin 61 will go to the transistor controlling the ROMCS line allowing the CPLD to page out the ZX ROM. Pin 10 routes to a global clock pin, it may also be used as general purpose IO.
{| class="wikitable" style="text-align: center; color: green;"
! align="left"| Header pin
! CPLD pin
! XC9572 FB
! XC95144 FB
! Comments
|-
|1||3.3v||||||
|-
|2||GND||||||
|-
|3||67||4||8||
|-
|4||ROMCS||||
|-
|5||66||4||8||
|-
|6||65||4||8||
|-
|7||64||3||8||
|-
|8||63||3||8||
|-
|9||61||3||7||May be routed to ROMCS
|-
|10||27||1||3||GCK3
|-
|-
|}
|}

Revision as of 20:43, 16 October 2012

This is a CPLD (complex programmable logic device) breakout board for the Spectrum (including 128K and Amstrad models). The original idea behind this board was to provide a breakout board for the ZX Spectrum bus signals, and also level shifting of all the signals to 3.3v with a second set of breakout pins. This was to provide an interface to chips that are not 5v tolerant, such as all current in-production FPGAs.

Using a CPLD instead of simple level shifters does two things: it provides the original functionality of a breakout board with a level shifter since a 3.3v CPLD with 5v tolerant IO can be used for this purpose, and for prototyping or making the logic for other things too - in other words, make a versatile breakout board for both the ZX bus and a CPLD.

Either the Xilinx XC9572XL or the XC95144XL CPLD can be used on this board. To give a rough idea of the logic resources these CPLDs provide, Chris Smith's timing accurate ULA replacement fills an XC95144XL, that's to say this CPLD has a similiar amount of resource to the Spectrum ULA.

The board

ZX Breakout PCB

The PCB features the following:

  • All major ZX bus digital signals routed to the CPLD.
  • Header for ZX signals, nearest the Spectrum edge connector.
  • 3.3v linear power supply for the CPLD.
  • JTAG header for programming the CPLD.
  • Ability to control the ROMCS line.
  • Clock is inverted (to be in phase with the CPU clock) by a Schmitt-trigger buffer giving sharper rising and falling edges.
  • Two headers for CPLD signals - a 40 pin header with 32 CPLD general purpose IOs, and a 10 pin header with 7 general purpose IOs.
  • 40 pin header laid out with ground and power pins in the same location as an IDE connector.
  • 4 layer PCB with solid ground and power planes for ideal CPLD performance.

Additionally, the ZX signals and CPLD pin locations are shown in the silk screen, so you know what you're connecting to without having to reach for a datasheet.

Pin locations

ZX bus to CPLD

ZX bus function to CPLD function block mapping is optimized for the XC9572, being the smallest device with fewest resources. For the '72, the data bus and upper half of the address bus is grouped into function block 1, and the lower half of the address bus and control signals in function block 3. The remaining pins go to the GPIO headers.

The ZX clock is mapped to a global clock signal, and the reset signal is inverted and buffered and routed to the global system reset pin. A global clock signal is available on the GPIO header.

ZX signal CPLD pin XC9572 FB XC95144 FB Comments
D0 18 1 1
D1 20 1 1
D2 22 1 1
D3 29 1 3
D4 30 1 3
D5 28 1 3
D6 25 1 3
D7 17 1 1
A0 32 3 3
A1 35 3 5
A2 37 3 5
A3 41 3 5
A4 59 3 7
A5 58 3 7
A6 56 3 7
A7 55 3 7
A8 40 1 5
A9 39 1 5
A10 36 1 5
A11 33 1 3
A12 15 1 1
A13 16 1 1
A14 13 1 1
A15 14 1 1
/MREQ 50 3 7
/IORQ 52 3 7
/RD 53 3 7
/WR 54 3 7
/M1 60 3 7
/INT 42 3 5
/NMI 49 3 5
CLK 23 1 5 Buffered; CPLD GCK2
RESET 99 2 3 Buffered; CPLD GSR (active high)
ROMCS 61 3 7 Only when "Use ROMCS" is jumpered

40 pin header

The 40 pin header is numbered using the ribbon cable style of numbering. Pin 1 is at the top right hand side of the connector, when looking down at the component side of the PCB, with the ZX edge connector at the bottom (in other words, as shown in the image on this page).

Header pin CPLD pin XC9572 FB XC95144 FB Comments
1 68 4 8
2 GND
3 71 4 8
4 70 4 8
5 74 4 6
6 72 4 8
7 77 4 6
8 76 4 6
9 79 4 6
10 78 4 6
11 82 4 6
12 81 4 6
13 86 4 6
14 85 4 6
15 89 4 4
16 87 2 4
17 91 2 4
18 90 4 4
19 GND
20 3.3v
21 92 2 4
22 GND
23 93 2 4
24 GND
25 94 2 4
26 GND
27 95 2 4
28 96 2 4
29 97 2 4
30 GND
31 1 2 2
32 3 2 2 GTS1
33 4 2 2 GTS2
34 6 2 2
35 8 2 2
36 9 2 2
37 10 2 2
38 11 2 1
39 12 2 1
40 GND

10 pin header

This header uses ribbon cable numbering, with pin 1 being the top left pin looking down on the PCB, as in the image above.

Pin 4 is the same as the ROMCS pin on the header next to the edge connector - it's just a straight connection. It is provided as an alternative site to connect a wire to ROMCS. Pin 9 is not connected to the CPLD if the "Use ROMCS" jumper is closed. When this jumper is closed, CPLD pin 61 will go to the transistor controlling the ROMCS line allowing the CPLD to page out the ZX ROM. Pin 10 routes to a global clock pin, it may also be used as general purpose IO.

Header pin CPLD pin XC9572 FB XC95144 FB Comments
1 3.3v
2 GND
3 67 4 8
4 ROMCS
5 66 4 8
6 65 4 8
7 64 3 8
8 63 3 8
9 61 3 7 May be routed to ROMCS
10 27 1 3 GCK3