100%
z80-cpm z80-cpu-mem view
Description

Imported from GitHub: skiselev/Z80-CPM · commit 7e71db6 · license CERN-OHL-S-2.0

Description

RCBus Z80 CPU and Memory Module designed with discrete logic

README

Z80-CPM

RCBus Z80 CPU, 512 KiB SRAM, and 512 KiB Flash ROM module for RCBus systems designed using discrete logic

Table of Content

Overview

Z80-CPM is an RCBus and RC2014* compatible module, designed to run RomWBW firmware including CP/M, ZSDOS, and various applications under these OSes. Z80-CPM combines functionality of the following RC2014* modules on a single module, thus saving space on the backplane:

  • Z80 CPU Module
  • 512k ROM 512k RAM Module - Simplified version, compatible with RomWBW firmware
  • Clock and Reset Module

Minimal CP/M computer system can be built using Z80-CPM module, a backplane, and a serial port module, for example Steve Cousins' SC716 or SC725 Z80 SIO modules, or MC68B50 ACIA. A Compact Flash module can be added for additional storage. For a compact system, a 3-slot SC723 can be used.

Z80-CPM Assembled Board

Specifications

  • Processor: Zilog* Z80 CPU (CMOS version - Z84C00)
  • Memory: 512 KiB SRAM, 512 KiB Flash ROM, RomWBW compatible memory pager
  • Bus: RCBus, RC2014* compatible
  • Microprocessor Supervisor for system reset generation

Assembly Instructions

Please refer to Assembly Instructions document

Hardware Documentation

Schematic and PCB Layout

Memory Configuration Input/Output Ports

Z80-CPM supports up to 512 KiB of RAM and up to 512 KiB of Flash ROM. It has a simple memory bank switching mechanism with two 32 KiB memory banks, inspired by Steve Cousin's SC602 Memory Module. This memory bank mechanism provides minimal required functionality for the RomWBW RCZ80_std.rom image to be used without any modifications. The upper 32 KiB bank is always mapped to the top 32 KiB of the physical RAM. The lower 32 KiB bank can be mapped to any 32 KiB size page in the physical memory. The memory page is selected by writting either 0x78 or 0x79 I/O ports, that are mapped to the same page select register.

0x78 or 0x79 - Memory Page Select Register (Write-only)

PortBit #FunctionValue
0x78, 0x790Not implementedCan be set to either 0 or 1
0x78, 0x795-1Page number for bank #0 0x0000-0xr7FFF0-31 - Page number
0x78, 0x797-6Not implementedShould be set to 0
  • Notes:
    • The register is reset to '0' on power-on or reset, which maps the lower 32 KiB of the Flash ROM to bank #0.
    • Bit 5 selects between the Flash ROM (bit 5 = 0) and the RAM (bit 5 = 1).

Jumpers Settings

JP1 - RAM Size Configuration

Jumper PositionDescription
1-2512 KiB SRAM
2-3128 KiB SRAM

JP2 - Connect on-board oscillator clock to the CPU

Jumper PositionDescription
ClosedX1 oscillator is connected to the CPU
OpenX1 oscillator is not connected to the CPU

JP3 - Connect the RCBus CLK1 signal to the CPU

Jumper PositionDescription
ClosedCLK1 signal is connected to the CPU
OpenCLK1 signal is not connected to the CPU

JP2 and JP3 Configuration Notes

The module supports the following options for the CPU clock:

  1. Default: CPU uses the clock frequency generated by the X1 oscillator, and the X1 clock frequency is output to CLK1 signal on RCBus. Install both JP2 and JP3 for this option.
  2. CPU uses the clock frequency provided by another module on RCBus. Install only JP3 for this option.
  3. CPU uses the clock frequency generated by the X1 oscillator, while other modules use different CLK1 signal. This might be useful, for example, when running the CPU on a frequency other than 7.3728 MHz. Install only JP2 for this option.

Connectors

J1 - RC2014* Bus

PinSignal NameDescriptionPinSignal NameDescription
1A15Address A15; Output41p41Reserved; Not connected
2A14Address A14; Output42/BAIBus Acknowledge In; Not connected
3A13Address A13; Output43/BAOBus Acknowledge Out; Not connected
4A12Address A12; Output44p44Reserved; Not connected
5A11Address A11; Output45p45Reserved; Not connected
6A10Address A10; Output46p46Reserved; Not connected
7A9Address A9; Output47p47Reserved; Not connected
8A8Address A8; Output48p48Reserved; Not connected
9A7Address A7; Output49A23Address A23; Not connected
10A6Address A6; Output50A22Address A22; Not connected
11A5Address A5; Output51A21Address A21; Not connected
12A4Address A4; Output52A20Address A20; Not connected
13A3Address A3; Output53A19Address A19; Output
14A2Address A2; Output54A18Address A18; Output
15A1Address A1; Output55A17Address A17; Output
16A0Address A0; Output56A16Address A16; Output
17GNDGround57GNDGround
18VCCPower Supply - +5V58VCCPower Supply - +5V
19/M1Machine Cycle One; Output59/RFSHDRAM refresh; Output
20/RESETReset; Output60PAGEPage ROM/RAM input; Not connected
21CLK1CPU Clock; Output61CLK2UART Clock; Not connected
22/INTInterrupt; Input62/BUSACKDMA Bus Acknowledge; Output
23/MREQMemory Request; Output63/HALTHalt; Output
24/WRWrite Request; Output64/BUSREQDMA Bus Request; Input
25/RDRead Request; Output65/WAITWait; Input
26/IORQInput/Output Request; Output66/NMINon-maskable Interrupt; Input
27D0Data D0; Input/Output67D8Data D8; Input/Output; Not connected
28D1Data D1; Input/Output68D9Data D9; Input/Output; Not connected
29D2Data D2; Input/Output69D10Data D10; Input/Output; Not connected
30D3Data D3; Input/Output70D11Data D11; Input/Output; Not connected
31D4Data D4; Input/Output71D12Data D12; Input/Output; Not connected
32D5Data D5; Input/Output72D13Data D13; Input/Output; Not connected
33D6Data D6; Input/Output73D14Data D14; Input/Output; Not connected
34D7Data D7; Input/Output74D15Data D15; Input/Output; Not connected
35TXChannel 1, Transmit Data; Not Connected75TX2Channel 2, Transmit Data; Not Connected
36RXChannel 1, Receive Data; Not Connected76RX2Channel 2, Receive Data; Not Connected
37/IRQ1Interrupt Request 1; Not connected77/IRQ2Interrupt Request 2; Not connected
38IEIInterrupt Enable In; Not connected78p78Reserved; Not connected
39IEOInterrupt Enable Out; Not connected79p79Reserved; Not connected
40USER4User Pin 4; Not connected80USER8User Pin 8; Not connected

Bill of Materials

Version 1.0

Mouser projects - All components except of the PCB and the CPU:

  • Z80-CPM project
    • Note that optional CPU supervisor parts: U9 DS1233 CPU supervisor, C11 1 nF capacitor, and SW1 tactile switch are included in this project.

Z80-CPM project on Tindie:

Component typeReferenceDescriptionQuantityPossible sources and notes
PCBZ80-CPM PCB - Version 1.01Buy from my Tindie store: Complete kit; Z80-CPM PCB, or order from a PCB manufacturer of your choice using provided Gerber or KiCad files
Integrated CircuitU1Z84C00xxVEG - Z80 CPU, CMOS, 44 pin PLCC1Mouser 692-Z84C0010VEG
Integrated CircuitU2SST39SF040 - 512 KiB Flash ROM, 32 pin PLCC1Mouser 804-39SF0407CNHE
Integrated CircuitU3AS6C4008 - 512 KiB SRAM, 32 pin DIP1Mouser 913-AS6C4008-55PCN
Integrated CircuitU474AHCT174 - Hex D-Type Flip Flop, 16 pin DIP1Mouser 595-SN74AHCT174N
Integrated CircuitU574HCT138 - 3-to-8 Decoder, 16 pin DIP1Mouser 595-CD74HCT138E
Integrated CircuitU6, U774AHCT32 - Quad 2-Input OR Gate, 14 pin DIP2Mouser 595-SN74AHCT32N
Integrated CircuitU874AHCT00 - Quad 2-Input NAND Gate, 14 pin DIP1Mouser 595-SN74AHCT00N
Integrated CircuitU9DS1233-5 - CPU Supervisor, 5V, TO-92-31Mouser 700-DS1233-5. Note U9 is an optional on-board CPU supervisor.
OscillatorX17.3728 MHz, CMOS oscillator, half can1Mouser 774-MXO45HS-3C-7.3 or 520-2200B-073
Pin HeaderJ140x2 pin header, 2.54 mm pitch, right angle1Mouser 737-PH2RA-80-UA, 517-5121TG
Pin HeaderJP13x1 pin header, 2.54 mm pitch, vertical1Mouser 649-68000-203HLF.
Pin HeaderJP2, JP32x2 pin header, 2.54 mm pitch, vertical1Mouser 649-67996-104HLF.
JumperJP1 - JP3Shunt, 2 pin 2.54 mm pitch3Mouser 806-SX1100-B.
Tactile switchSW1Tactile switch, 6 mm, right angle1Mouser 653-B3F-3152. SW1 is an optional reset switch.
CapacitorC1 - C90.1 uF, 50V, MLCC, 5 mm pitch9Mouser 594-K104K15X7RF53H5.
CapacitorC1047 uF, 25V, electrolytic, 5 x 11 mm, 2 mm pitch1Mouser 667-EEU-FR1E470
CapacitorC111 nF, 50V, MLCC, 5 mm pitch1Mouser 594-K102K15X7RF5TH5. Note: C11 is optional, required if U9 installed and manual reset functionality is desired.
Resistor ArrayRN14.7 kohm, bussed, 9 pin SIP1Mouser 652-4609X-1LF-4.7K or 652-4609X-AP1-472LF
Resistor ArrayRN24.7 kohm, bussed, 6 pin SIP1Mouser 652-4606X-1LF-4.7K or 652-4606X-AP1-472LF
IC SocketU144 pin PLCC, through hole1Mouser 737-PLCC-44-AT, 517-8444-11B1-RK-TP
IC SocketU232 pin PLCC, through hole1Mouser 737-PLCC-32-AT, 517-8432-11B1-RK-TP
IC SocketU332 pin DIP1Mouser 737-ICS-632-T, 517-4832-6000-CP
IC SocketU4, U516 pin DIP2Mouser 737-ICS-316-T, 517-4816-3000-CP.
IC SocketU6 - U814 pin DIP3Mouser 737-ICS-314-T, 517-4816-3000-CP.
Oscillator SocketX14 pin DIP, Half Can1Mouser 535-1108800

Release Notes

Changes

  • Version 1.1

    • Fix cosmetic issues:
      • Swap C5 with C8 and C4 with C6.
      • Modify C10 footpring to clearly show negative terminal.
  • Version 1.0

    • Initial version.

Known Issues

  • Version 1.0
    • Cosmetic issues:
      • C5 and C8, and C6 and C4 should be swapped.
      • C10 should have more clear marking for the negative terminal.

Red Tape

Licensing

Z80-CPM is an open source hardware project. The hardware design itself, including schematic and PCB layout design files are licensed under the strongly-reciprocal variant of CERN Open Hardware Licence version 2. Documentation, including this file, is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License.

CERN-OHL-2.0-S, GPL-3.0, CC-BY-SA-4.0

Trademarks

  • "RC2014" is a registered trademark of RFC2795 Ltd.
  • Other names and brands may be claimed as the property of others.
Comments
Sign in to comment

No comments yet. Be the first to ask about this board.