Re-dimension slightly to make an imperial board with .1 inch sizing, and refill
[easy_z80.git] / README.md
1 # Easy Z80
2 An easy to build Zilog Z80 based single board computer
3
4 ## Table of Content
5 * [Introduction](#introduction)
6 * [Specifications](#specifications)
7 * [Hardware Documentation](#hardware-documentation)
8   * [Schematic and PCB Layout](#schematic-and-pcb-layout)
9   * [Connectors and Jumpers](#connectors-and-jumpers)
10   * [Bill of Materials](#bill-of-materials)
11 * [Firmware Documentation](#firmware-documentation)
12   * [BIOS and OS](#bios-and-os)
13   * [SPLD Fuse Map](#spld-fuse-map)
14 * [Release Notes](#release-notes)
15   * [Changes](#changes)
16   * [Known Issues](#known-issues)
17   * [Wishlist](#wishlist)
18
19 ## Introduction
20 My son Max asked me what does it take to build a computer, and whether he can design and build one himself. This project is our attempt to design and build a simple, easy to understand, yet capable single board computer.
21 It reuses the same memory paging mechanism I've implemented in Zeta SBC V2. It uses Zilog Z80 SIO/O and Z80 CTC peripheral ICs and implements daisy chain mode 2 interrupt configuration.
22
23 ![Easy Z80 PCB Rendering](images/Easy_Z80-Assembled.jpg)
24
25 ## Specifications
26 * Processor: Zilog Z80 CPU (CMOS version - Z84C00)
27 * Memory: 512 KiB battery-backed SRAM, 512 KiB Flash ROM
28 * I/O:
29   * Zilog Z80 CTC - Programmable timer used for periodic interrupts and (optionally) for generating UART clock
30   * Zilog Z80 SIO - Dual channel serial interface, used for console and for connecting to other peripheral devices
31 * Bus: [RC2014](https://rc2014.co.uk/) compatible
32 * Microprocessor Supervisor:
33   * Reset generation
34   * SRAM battery backup
35   * Power failure NMI
36   * Watchdog (optional)
37
38 ## Hardware Documentation
39
40 For the version 1.0 schematic, PCB layout, and bill of materials please refer to [tag v1.0](https://github.com/skiselev/easy_z80/tree/v1.0)
41
42 ### Schematic and PCB Layout
43
44 [Schematic - Version 1.1](KiCad/Easy_Z80-Schematic-1.1.pdf)
45
46 [PCB Layout - Version 1.1](KiCad/Easy_Z80-Board-1.1.pdf)
47
48 ### Connectors and Jumpers
49
50 #### J1 - Power
51 Connect regulated +5V power supply to this connector.
52
53 Pin                     | Signal Name | Description
54 ----------------------- | ----------- | -----------
55 Tip (the inner contact) | VCC         | Positive terminal - +5V
56 Barrel / sleeve         | GND         | Negative terminal - ground
57
58 #### J2, J3 - Serial Channel A and Serial Channel B
59 Pin    | Signal Name | Description
60 ------ | ----------- | -----------
61 1            | DCD         |    Carrier Detect; Not used - Not connected on the SBC
62 2            | RXA, RXB    |    Receive Data; Input to SBC
63 3            | TXA, TXB    |    Transmit Data; Output from SBC
64 4            | DTR         |    Data Terminal Ready; Not used - Not connected on the SBC
65 5            | GND         |    Connected to the SBC GND signal
66 6            | DSR         | Data Set Ready; Not used - Not connected on the SBC
67 7      |        RTSA, RTSB  | Request to Send; Output from SBC
68 8            | CTSA, CTSB  | Clear to Send; Input to SBC
69 9            | RI                | Ring Indicator; Not used - Not connected on the SBC
70 Shield  | DE9 Shield     | Connected to the SBC GND signal
71
72 #### J4 - NVRAM Battery
73 Connect 3V battery for SRAM backup to this connector.
74
75 **Important: If the SRAM battery backup is not desired, short J4 with a jumper. Do not leave this connector open.**
76
77 Pin | Signal Name | Description
78 --- | ----------- | -----------
79 1       | VBAT        | Positive terminal - +3V
80 2   | GND         | Negative terminal - ground
81
82 #### J5, J6, J7 - RC2014 Bus
83 Pin   | Signal Name | Description         | Pin  | Signal Name | Description
84 ----- | ----------- | ------------------- | ---- | ----------- | -----------
85 J5-1  | A15         | Address A15; Output |      |             |
86 J5-2  | A14         | Address A14; Output |      |             |
87 J5-3  | A13         | Address A13; Output |      |             |
88 J5-4  | A12         | Address A12; Output |      |             |
89 J5-5  | A11         | Address A11; Output |      |             |
90 J5-6  | A10         | Address A10; Output |      |             |
91 J5-7  | A9          | Address A9; Output  |      |             |
92 J5-8  | A8          | Address A8; Output  |      |             |
93 J5-9  | A7          | Address A7; Output  |      |             |
94 J5-10 | A6          | Address A6; Output  |      |             |
95 J5-11 | A5          | Address A5; Output  |      |             |
96 J5-12 | A4          | Address A4; Output  |      |             |
97 J5-13 | A3          | Address A3; Output  |      |             |
98 J5-14 | A2          | Address A2; Output  |      |             |
99 J5-15 | A1          | Address A1; Output  |      |             |
100 J5-16 | A0          | Address A0; Output  |      |             |
101 J5-17 | GND         | Ground              | J6-1 | GND         | Ground
102 J5-18 | VCC         | Power Supply - +5V  | J6-2 | VCC         | Power Supply - +5V
103 J5-19 | /M1         | Machine Cycle One; Output | J6-3| /RFSH | DRAM refresh; Output
104 J5-20 | /RESET      | Reset; Output       | J6-4 | N/C         | Not connected
105 J5-21 | CPU_CLK     | CPU Clock; Output   | J6-5 | UART_CLK    | UART Clock (1.8432 MHz); Output
106 J5-22 | /INT        | Interrupt; Input    | J6-6 | /BUSACK     | DMA Bus Acknowledge; Output
107 J5-23 | /MREQ       | Memory Request; Output | J6-7 | /HALT    | Halt; Output
108 J5-24 | /WR         | Write Request; Output | J6-8 | /BUSREQ   | DMA Bus Request; Input
109 J5-25 | /RD         | Read Request; Output | J6-9 | /WAIT      | Wait; Input
110 J5-26 | /IORQ       | Input/Output Request; Output | J6-10 | /NMI | Non-maskable Interrupt; Input
111 J5-27 | D0          | Data D0; Input/Output |    |             |
112 J5-28 | D1          | Data D1; Input/Output |    |             |
113 J5-29 | D2          | Data D2; Input/Output |    |             |
114 J5-30 | D3          | Data D3; Input/Output |    |             |
115 J5-31 | D4          | Data D4; Input/Output |    |             |
116 J5-32 | D5          | Data D5; Input/Output |    |             |
117 J5-33 | D6          | Data D6; Input/Output |    |             |
118 J5-34 | D7          | Data D7; Input/Output |    |             |
119 J5-35 | TXDA        | Channel A, Transmit Data; Output | J7-1 | TXDB | Channel B, Transmit Data; Output
120 J5-36 | RXDA        | Channel A, Receive Data; Input   | J7-2 | RXDB | Channel B, Receive Data; Input
121 J5-37 | USR1        | User Pin 1, Not connected | J7-3 | USR5  | User Pin 5, Not connected 
122 J5-38 | IEI         | Interrupt Enable Input  | J7-4 | USR6    | User Pin 6, Not connected 
123 J5-39 | IEO         | Interrupt Enable Output | J7-5 | USR7    | User Pin 7, Not connected 
124
125 #### JP1 - Serial Channel A Clock Select
126 Position        | Description
127 --------------- | -----------
128 *1-2 (default)* | 1.8432 MHz (115200 bps if using x16 mode)
129 2-3             | Programmable using CTC channel 0
130
131 #### JP2 - Serial Channel B Clock Select
132 Position        | Description
133 --------------- | -----------
134 *1-2 (default)* | 1.8432 MHz (115200 bps if using x16 mode)
135 2-3             | Programmable using CTC channel 1
136
137 ### Bill of Materials
138
139 #### Version 1.1
140
141 [Easy Z80 project on Mouser.com](https://www.mouser.com/ProjectManager/ProjectDetail.aspx?AccessID=f16751cb33) - View and order all components except of the PCB.
142
143 [Easy Z80 project on OSH Park](https://oshpark.com/shared_projects/Rt7SBcRg) - View and order the PCB.
144
145 Component type     | Reference | Description                                 | Quantity | Possible sources and notes 
146 ------------------ | --------- | ------------------------------------------- | -------- | --------------------------
147 PCB                |           | Easy Z80 PCB - Version 1.1                  | 1        | Refer to the [RetroBrew Computers Board Inventory](https://www.retrobrewcomputers.org/doku.php?id=boardinventory#minimal_8085_z80_single_board_computer) page for ordering information, or order from a PCB manufacturer of your choice using provided Gerber or KiCad files
148 Integrated Circuit | U1        | Z80 CPU, CMOS, 40 pin DIP - Z84C00xxPEG     | 1        | Mouser [692-Z84C0010PEG](https://www.mouser.com/ProductDetail/692-Z84C0010PEG)
149 Integrated Circuit | U2        | Z80 CTC, CMOS, 28 pin DIP - Z84C30xxPEG     | 1        | Mouser [692-Z84C3010PEG](https://www.mouser.com/ProductDetail/692-Z84C3010PEG)
150 Integrated Circuit | U3        | Z80 SIO/0, CMOS, 40 pin DIP - Z84C40xxPEG   | 1        | Mouser [692-Z84C4010PEG](https://www.mouser.com/ProductDetail/692-Z84C4010PEG)
151 Integrated Circuit | U4        | 512 KiB SRAM, 32 pin DIP - AS6C4008         | 1        | Mouser [913-AS6C4008-55PCN](https://www.mouser.com/ProductDetail/913-AS6C4008-55PCN)
152 Integrated Circuit | U5        | 512 KiB Flash ROM, 32 pin DIP - SST39SF040  | 1        | Mouser [804-39SF0407CPHE](https://www.mouser.com/ProductDetail/804-39SF0407CPHE)
153 Integrated Circuit | U6        | Microprocessor Supervisory Circuit - MAX693 | 1        | Mouser [584-ADM693ANZ](https://www.mouser.com/ProductDetail/584-ADM693ANZ); Possible alternatives: MAX693, LTC693, ADM691, MAX691, LTC691, ADM695, MAX695, LTC965, LTC1235
154 Integrated Circuit | U7, U8    | Dual RS-232 Driver/Receiver - MAX232A       | 2        | Mouser [595-TRS202EIN](https://www.mouser.com/ProductDetail/595-TRS202EIN/)
155 Integrated Circuit | U9        | Simple Programmable Logic Device - ATF16V8B | 1        | Mouser [556-AF16V8B15PU](https://www.mouser.com/ProductDetail/556-AF16V8B15PU)
156 Integrated Circuit | U10, U11  | 4-by-4 Register File - 74HC670              | 2        | Mouser [595-CD74HC670E](https://www.mouser.com/ProductDetail/595-CD74HC670E)
157 Integrated Circuit | U12       | Dual Flip Flop - 74HC74                     | 1        | Mouser [595-SN74HC74N](https://www.mouser.com/ProductDetail/595-SN74HC74N)
158 Oscillator         | QG1       | 10 MHz, CMOS oscillator, Half Can           | 1        | Mouser [774-MXO45HS-3C-10.0](https://www.mouser.com/ProductDetail/774-MXO45HS-3C-10.0)
159 Oscillator         | QG2       | 1.8432 MHz, CMOS oscillator, Half Can       | 1        | Mouser [774-MXO45HS-3C-1.8](https://www.mouser.com/ProductDetail/774-MXO45HS-3C-1.8)
160 LED                | D1        | 3 mm, green LED indicator                   | 1        | Mouser [859-LTL-4231N](https://www.mouser.com/ProductDetail/859-LTL-4231N)
161 Tactile Button     | SW1       | 6 mm tactile button, right angle            | 1        | Mouser [653-B3F-3152](https://www.mouser.com/ProductDetail/653-B3F-3152)
162 Connector          | J1        | DC Power Jack, 2mm                          | 1        | Mouser [806-KLDX-0202-A](https://www.mouser.com/ProductDetail/806-KLDX-0202-A)
163 Connector          | J2, J3    | Sub-D DE9M, Right Angle, PCB mount          | 2        | Mouser [806-K22X-E9P-N-99](https://www.mouser.com/ProductDetail/806-K22X-E9P-N-99)
164 Connector          | J4        | 2 Pin Header with Friction Lock             | 1        | Mouser [571-6404562](https://www.mouser.com/ProductDetail/571-6404562)
165 Pin Header         | J5 - J7   | 40x2 Pin Header, 2.54 mm Pitch, Right Angle | 1        | Mouser [571-9-103326-0](https://www.mouser.com/ProductDetail/571-9-103326-0)
166 Capacitor          | C1 - C14, C16 - C23  | 0.1 uF, MLCC, 5 mm Pitch         | 22       | Mouser [594-K104K15X7RF53H5](https://www.mouser.com/ProductDetail/594-K104K15X7RF53H5)
167 Capacitor          | C24       | 47 uF, 25V, Aluminum Organic Polymer        | 1        | Mouser [80-A750EK476M1EAAE40](https://www.mouser.com/ProductDetail/80-A750EK476M1EAAE40)
168 Resistor Array     | RN1 - RN3 | 4.7 k, bussed, 5 pin SIP                    | 3        | Mouser [652-4605X-AP1-472LF](https://www.mouser.com/ProductDetail/652-4605X-AP1-472LF)
169 Resistor Array     | RN4       | 4.7 k, bussed, 9 pin SIP                    | 1        | Mouser [652-4609X-AP1-472LF](https://www.mouser.com/ProductDetail/652-4609X-AP1-472LF)
170 Resistor           | R1        | 470 ohm, axial                              | 1        | Mouser [603-MFR-25FRF52-470R](https://www.mouser.com/ProductDetail/603-MFR-25FRF52-470R) 
171 Resistor           | R2 - R4   | 10 kohm, 1% tolerance, axial                | 3        | Mouser [603-MFR-25FRF5210K](https://www.mouser.com/ProductDetail/603-MFR-25FRF5210K)
172 Resistor           | R5        | 29.4 kohm, 1% tolerance, axial              | 1        | Mouser [603-MFR-25FBF52-29K4](https://www.mouser.com/ProductDetail/603-MFR-25FBF52-29K4)
173 Trimmer Resistor   | RV1       | 2 kohm, through hole                        | 1        | Mouser [652-3362P-1-202LF](https://www.mouser.com/ProductDetail/652-3362P-1-202LF)
174 IC Socket          | U1, U3    | 40 pin DIP                                  | 2        | Mouser [517-4840-6000-CP](https://www.mouser.com/ProductDetail/517-4840-6000-CP)
175 IC Socket          | U4, U5    | 32 pin DIP                                  | 2        | Mouser [517-4832-6000-CP](https://www.mouser.com/ProductDetail/517-4832-6000-CP)
176 IC Socket          | U2        | 28 pin DIP                                  | 1        | Mouser [517-4828-6000-CP](https://www.mouser.com/ProductDetail/517-4828-6000-CP)
177 IC Socket          | U9        | 20 pin DIP                                  | 1        | Mouser [517-4820-3000-CP](https://www.mouser.com/ProductDetail/517-4820-3000-CP)
178 IC Socket          | U6 - U8, U10, U11 | 16 pin DIP                          | 5        | Mouser [517-4816-3000-CP](https://www.mouser.com/ProductDetail/517-4816-3000-CP)
179 IC Socket          | U12       | 14 pin DIP                                  | 1        | Mouser [517-4814-3000-CP](https://www.mouser.com/ProductDetail/517-4814-3000-CP)
180 Oscillator Socket  | QG1, QG2  | 4 pin DIP, Half Can                         | 2        | Mouser [535-1108800](https://www.mouser.com/ProductDetail/535-1108800)
181
182 ## Firmware Documentation
183
184 ### BIOS and OS
185
186 Easy Z80 is supported by [RomWBW](https://github.com/wwarthen/RomWBW) [v2.9.1](https://github.com/wwarthen/RomWBW/releases/tag/v2.9.1) and later. RomWBW includes BIOS, CP/M-80 2.2, Z-System, and a collection of utilities. It also should be possible to run [FUZIX](https://github.com/EtchedPixels/FUZIX) on this board.
187
188 ### SPLD Fuse Map
189
190 Easy Z80 uses an ATF16V8/GAL16V8 SPLD (U9) for address decode logic. The [SPLD fuse map](SPLD/easy_z80_no_wdog.jed) and the [SPLD source code](SPLD/easy_z80_no_wdog.pld) are provided in [SPLD](SPLD) directory of this repository.
191
192 ## Release Notes
193
194 ### Changes
195 * Version 1.1
196   * Add pull-up resistors on the data bus (RN4 - 4.7k) to support Z80 interrupt mode 0
197   * Use 74HC series instead of 74HCT
198   * Remove C15
199   * Use RN reference for resistor arrays instead of RR
200   * Update silkscreen:
201     * Make RN1 reference and value visible
202     * Update silkscreen of headers footprints, so that JP1 and JP2 don't cover the traces
203     * Add project URL to the bottom silkscreen
204 * Version 1.0
205   * Initial version
206
207 ### Known Issues
208 * Version 1.0
209   * Top silkscreen: RR1 reference and value are not visible. It should read "RR1, 4.7k"
210   * Bottom silkscreen on JP1 and JP2 covers the trace connections, so they are not easily visible
211   * Bottom silkscreen: No project URL. Should be [github.com/skiselev/easy_z80](https://github.com/skiselev/easy_z80)
212   * Board will not reset when C15 is populated. Workaround: Do not populate this capacitor
213   * Schematic and top silkscreen: Use 74HC series instead of 74HCT
214   
215 ### Wishlist
216 * Version 1.0
217   * Add pull-ups on the data bus to support extension boards that were not designed for Z80 interrupt mode 2