https://github.com/fpw/socdp8
A SoC implementation of a PDP-8/I for the PiDP-8/I console
https://github.com/fpw/socdp8
fpga-soc pdp-8 pidp-8 vintage-computers zynq
Last synced: 5 months ago
JSON representation
A SoC implementation of a PDP-8/I for the PiDP-8/I console
- Host: GitHub
- URL: https://github.com/fpw/socdp8
- Owner: fpw
- License: agpl-3.0
- Created: 2019-07-21T16:27:03.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2024-04-07T14:20:15.000Z (about 1 year ago)
- Last Synced: 2024-04-07T15:29:22.404Z (about 1 year ago)
- Topics: fpga-soc, pdp-8, pidp-8, vintage-computers, zynq
- Language: C
- Size: 37 MB
- Stars: 26
- Watchers: 5
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SoCDP8 [![Badge Hardware]][Hardware] [![Badge Software]][Software]
This is an implementation of the 1968 **[DEC PDP-8/I]** on
a **Xilinx Zynq**, a **FPGA** controller with an **ARM CPU**.Built on the **[PiDP-8/I Console]** by **Oscar Vermeulen**,
it acts as a replacement for the Raspberry Pi approach.
![Preview]
## Why a SoC?
Drawback of the **Raspberry Pi + Linux + SIMH** approach:
- **Inaccurate Simulation :** Doesn't allow for single stepping
- **Long Boot Times :** **Linux** takes a few seconds to boot and start **SIMH**
- **Dangerous Shutdown :** In the default Raspberry Pi setup, Linux needs a proper shutdown to avoid corrupting the file system
The **SoCDP8** implements the **PDP-8/I** in **VHDL**, targeting **FPGAs**.
#### Design
The system is modeled exactly as described in the
**[Maintenance Manual]** and **Engineering Drawings**.*The manual is treated as the project specification, registers*
*and signals are named as described in the book and register*
*transfers are modeled as specified in the drawings.*
#### Peripherals
Peripherals are implemented on the **ARM CPU** on the **SoC**.
This makes device implementation such as the teletype fairly easy.
Code for peripherals can access the onboard
**SD Card** to retrieve *tapes*, *disk images*, ..When connected to the **Ethernet** / **WiFi**, the system, including
its peripherals, can be controlled with a **Web Browser**.
## Project Goals
- Implementing the system as close as possible to the original specifications.
- Providing a *simple replacement* for the **Raspberry Pi**,
ideally the project runs on a **SoC** board that snaps into
the **PiDP-8/I Console** in the same way the **Pi** does.- Have it be operable through a browser using
a web socket connection between a web server
on the **ARM** and the **PDP-8** on the **FPGA**.
## Supported SoCs
The project currently only targets the **Zynq** board
and utilizes the **Pynq-Z2** for development only.
### Tested Boards
| Board | |
|:-----:|:-|
| **[ZynqBerry]** |
***Xilinx Zynq 7010***
- `130€` \| Good Availability
- **Raspberry Pi** form factor
- No free **GPIO** pins
- Has the *smallest* **Zynq**
|
| **[Pynq-Z2]** |
***Xilinx Zynq 7020***
`132€` \| Good Availability
- Raspberry Pi Connectors
- Spare **GPIO** pins, such as a
**PMOD** pin, useful for sensors
- Switches, buttons, LEDs
- Requires a ribbon cable to
fit in the **PiDP-8/I** box
|
### Other Boards
| Board | |
|:-----:|:-|
| **[DE0-Nano-SoC]** |
***Altera Cyclone V***
- `125€` \| International Shipping
- **Incompatible** 40 pin connector,
requires adapter.
- Many free **GPIO** pins
- Switches, buttons, LEDs
|
## Project Status
### Functional
- **Base System**
- **Timesharing**
- **Data Breaks**
- **Interrupts**
- **EAE**
- **I/O***These features pass the **MAINDEC** tests and*
*can be loaded using the **RIM** / **BIN** loaders.*
### Can Run
- `Focal69`
- `TSS/8`
- `OS/8`
### Peripherals
Implemented in software with only basic functionality.
### Deviations
To have the **PiDP-8/I** work with the **Zynq** boards,
unfortunately a little modification had to be made.The `1KΩ` resistors had to be replaced by `220Ω` ones
to support the **pullup** resistance of the **Zynq** drivers.Thankfully, `220Ω` is compatible with the **Raspberry Pi** as well so these resistors also support the original system.
[PiDP-8/I Console]: https://obsolescence.wixsite.com/obsolescence/pidp-8
[DE0-Nano-SoC]: https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=163&No=941&PartNo=1
[DEC PDP-8/I]: https://en.wikipedia.org/wiki/PDP-8
[ZynqBerry]: https://shop.trenz-electronic.de/en/TE0726-03M-ZynqBerry-Zynq-7010-in-Raspberry-Pi-form-factor
[Pynq-Z2]: http://www.tul.com.tw/ProductsPYNQ-Z2.html[Maintenance Manual]: docs/PDP8I_maintenance_manual_vol1.pdf
[Preview]: pictures/Preview.png
[Hardware]: LICENSE-HARDWARE
[Software]: LICENSE[Badge Software]: https://img.shields.io/badge/License-AGPL3-015d93.svg?style=for-the-badge&labelColor=blue
[Badge Hardware]: https://img.shields.io/badge/Open_Hardware-1.2-21214e?style=for-the-badge&labelColor=292961