An open API service indexing awesome lists of open source software.

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

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