2 An easy to build Zilog Z80 based single board computer
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)
16 * [Known Issues](#known-issues)
17 * [Wishlist](#wishlist)
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.
23 ![Easy Z80 PCB Rendering](images/Easy_Z80-Assembled.jpg)
26 * Processor: Zilog Z80 CPU (CMOS version - Z84C00)
27 * Memory: 512 KiB battery-backed SRAM, 512 KiB Flash ROM
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:
38 ## Hardware Documentation
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)
42 ### Schematic and PCB Layout
44 [Schematic - Version 1.1](KiCad/Easy_Z80-Schematic-1.1.pdf)
46 [PCB Layout - Version 1.1](KiCad/Easy_Z80-Board-1.1.pdf)
48 ### Connectors and Jumpers
51 Connect regulated +5V power supply to this connector.
53 Pin | Signal Name | Description
54 ----------------------- | ----------- | -----------
55 Tip (the inner contact) | VCC | Positive terminal - +5V
56 Barrel / sleeve | GND | Negative terminal - ground
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
72 #### J4 - NVRAM Battery
73 Connect 3V battery for SRAM backup to this connector.
75 **Important: If the SRAM battery backup is not desired, short J4 with a jumper. Do not leave this connector open.**
77 Pin | Signal Name | Description
78 --- | ----------- | -----------
79 1 | VBAT | Positive terminal - +3V
80 2 | GND | Negative terminal - ground
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
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
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
137 ### Bill of Materials
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.
143 [Easy Z80 project on OSH Park](https://oshpark.com/shared_projects/Rt7SBcRg) - View and order the PCB.
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)
182 ## Firmware Documentation
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.
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.
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
199 * Use RN reference for resistor arrays instead of RR
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
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
217 * Add pull-ups on the data bus to support extension boards that were not designed for Z80 interrupt mode 2