{"id":21175371,"url":"https://github.com/fpw/socdp8","last_synced_at":"2025-07-09T21:31:55.028Z","repository":{"id":42693453,"uuid":"198079719","full_name":"fpw/SoCDP8","owner":"fpw","description":"A SoC implementation of a PDP-8/I for the PiDP-8/I console","archived":false,"fork":false,"pushed_at":"2024-04-07T14:20:15.000Z","size":38753,"stargazers_count":29,"open_issues_count":1,"forks_count":3,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-05T07:22:52.887Z","etag":null,"topics":["fpga-soc","pdp-8","pidp-8","vintage-computers","zynq"],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fpw.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2019-07-21T16:27:03.000Z","updated_at":"2025-03-11T22:57:26.000Z","dependencies_parsed_at":"2024-04-07T15:39:31.394Z","dependency_job_id":null,"html_url":"https://github.com/fpw/SoCDP8","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fpw/SoCDP8","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fpw%2FSoCDP8","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fpw%2FSoCDP8/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fpw%2FSoCDP8/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fpw%2FSoCDP8/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fpw","download_url":"https://codeload.github.com/fpw/SoCDP8/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fpw%2FSoCDP8/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264503949,"owners_count":23618762,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fpga-soc","pdp-8","pidp-8","vintage-computers","zynq"],"created_at":"2024-11-20T16:59:11.112Z","updated_at":"2025-07-09T21:31:52.743Z","avatar_url":"https://github.com/fpw.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# SoCDP8   [![Badge Hardware]][Hardware]   [![Badge Software]][Software]\n\nThis is an implementation of the 1968 **[DEC PDP-8/I]** on \u003cbr\u003e\na **Xilinx Zynq**, a **FPGA** controller with an **ARM CPU**.\n\nBuilt on the **[PiDP-8/I Console]** by **Oscar Vermeulen**, \u003cbr\u003e\nit acts as a replacement for the Raspberry Pi approach.\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n\u003cdiv align = center\u003e\n\n![Preview]\n\n\u003c/div\u003e\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n## Why a SoC?\n\nDrawback of the **Raspberry Pi + Linux + SIMH** approach:\n\n- **Inaccurate Simulation :** Doesn't allow for single stepping\n- **Long Boot Times :** **Linux** takes a few seconds to boot and start **SIMH**\n- **Dangerous Shutdown :** In the default Raspberry Pi setup, Linux needs a proper shutdown to avoid corrupting the file system\n\n\u003cbr\u003e\n\nThe **SoCDP8** implements the **PDP-8/I** in **VHDL**, targeting **FPGAs**.\n\n\u003cbr\u003e\n\n#### Design\n\nThe system is modeled exactly as described in the \u003cbr\u003e\n**[Maintenance Manual]**  and **Engineering Drawings**.\n\n*The manual is treated as the project specification, registers* \u003cbr\u003e\n*and signals are named as described in the book and register* \u003cbr\u003e\n*transfers are modeled as specified in the drawings.*\n\n\u003cbr\u003e\n\n#### Peripherals\n\nPeripherals are implemented on the **ARM CPU** on the **SoC**.\n\nThis makes device implementation such as the teletype fairly easy.\n\nCode for peripherals can access the onboard \u003cbr\u003e\n**SD Card** to retrieve *tapes*, *disk images*, ..\n\nWhen connected to the **Ethernet** / **WiFi**, the system, including \u003cbr\u003e\nits peripherals, can be controlled with a **Web Browser**.\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n## Project Goals\n\n- Implementing the system as close as possible to the original specifications.\n\n- Providing a *simple replacement* for the **Raspberry Pi**, \u003cbr\u003e\nideally the project runs on a **SoC** board that snaps into \u003cbr\u003e\nthe **PiDP-8/I Console** in the same way the **Pi** does.\n\n- Have it be operable through a browser using \u003cbr\u003e\na web socket connection between a web server \u003cbr\u003e\non the **ARM** and the **PDP-8** on the **FPGA**.\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n## Supported SoCs\n\nThe project currently only targets the **Zynq** board \u003cbr\u003e\nand utilizes the **Pynq-Z2** for development only.\n\n\u003cbr\u003e\n\n### Tested Boards\n\n| Board |  |\n|:-----:|:-|\n| **[ZynqBerry]** | \u003cbr\u003e ***Xilinx Zynq 7010*** \u003cbr\u003e\u003cbr\u003e - `130€` \\| Good Availability \u003cbr\u003e\u003cbr\u003e - **Raspberry Pi** form factor \u003cbr\u003e\u003cbr\u003e - No free **GPIO** pins \u003cbr\u003e\u003cbr\u003e - Has the *smallest* **Zynq** \u003cbr\u003e\u003cbr\u003e |\n| **[Pynq-Z2]** | \u003cbr\u003e ***Xilinx Zynq 7020*** \u003cbr\u003e\u003cbr\u003e `132€` \\| Good Availability \u003cbr\u003e\u003cbr\u003e - Raspberry Pi Connectors \u003cbr\u003e\u003cbr\u003e - Spare **GPIO** pins, such as a \u003cbr\u003e\u003cbr\u003e  **PMOD** pin, useful for sensors\u003cbr\u003e - Switches, buttons, LEDs \u003cbr\u003e\u003cbr\u003e - Requires a ribbon cable to \u003cbr\u003e  fit in the **PiDP-8/I** box \u003cbr\u003e\u003cbr\u003e |\n\n\u003cbr\u003e\n\n### Other Boards\n\n| Board |  |\n|:-----:|:-|\n| **[DE0-Nano-SoC]** | \u003cbr\u003e ***Altera Cyclone V*** \u003cbr\u003e\u003cbr\u003e - `125€` \\| International Shipping \u003cbr\u003e\u003cbr\u003e - **Incompatible** 40 pin connector, \u003cbr\u003e\u003cbr\u003e  requires adapter. \u003cbr\u003e\u003cbr\u003e - Many free **GPIO** pins \u003cbr\u003e\u003cbr\u003e - Switches, buttons, LEDs \u003cbr\u003e\u003cbr\u003e |\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n## Project Status\n\n\u003cbr\u003e\n\n### Functional\n\n- **Base System**\n- **Timesharing**\n- **Data Breaks**\n- **Interrupts**\n- **EAE**\n- **I/O**\n\n*These features pass the **MAINDEC** tests and* \u003cbr\u003e\n*can be loaded using the **RIM** / **BIN** loaders.*\n\u003cbr\u003e\n\u003cbr\u003e\n\n### Can Run\n\n- `Focal69`\n- `TSS/8`\n- `OS/8`\n\n\u003cbr\u003e\n\n### Peripherals\n\nImplemented in software with only basic functionality.\n\n\u003cbr\u003e\n\n### Deviations\n\nTo have the **PiDP-8/I** work with the **Zynq** boards, \u003cbr\u003e\nunfortunately a little modification had to be made.\n\nThe `1KΩ` resistors had to be replaced by `220Ω` ones \u003cbr\u003e\nto support the **pullup** resistance of the **Zynq** drivers.\n\nThankfully, `220Ω` is compatible with the **Raspberry Pi** as well so these resistors also support the original system.\n\n\u003cbr\u003e\n\n\n\u003c!-----------------------------------------------------------------------------\u003e\n\n[PiDP-8/I Console]: https://obsolescence.wixsite.com/obsolescence/pidp-8\n[DE0-Nano-SoC]: https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English\u0026CategoryNo=163\u0026No=941\u0026PartNo=1\n[DEC PDP-8/I]: https://en.wikipedia.org/wiki/PDP-8\n[ZynqBerry]: https://shop.trenz-electronic.de/en/TE0726-03M-ZynqBerry-Zynq-7010-in-Raspberry-Pi-form-factor\n[Pynq-Z2]: http://www.tul.com.tw/ProductsPYNQ-Z2.html\n\n[Maintenance Manual]: docs/PDP8I_maintenance_manual_vol1.pdf\n[Preview]: pictures/Preview.png\n[Hardware]: LICENSE-HARDWARE\n[Software]: LICENSE\n\n\n\u003c!--------------------------------[ Badges ]-----------------------------------\u003e\n\n[Badge Software]: https://img.shields.io/badge/License-AGPL3-015d93.svg?style=for-the-badge\u0026labelColor=blue\n[Badge Hardware]: https://img.shields.io/badge/Open_Hardware-1.2-21214e?style=for-the-badge\u0026labelColor=292961\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffpw%2Fsocdp8","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffpw%2Fsocdp8","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffpw%2Fsocdp8/lists"}