{"id":20477322,"url":"https://github.com/harbaum/fpga-companion","last_synced_at":"2025-04-13T12:51:27.355Z","repository":{"id":245237202,"uuid":"817644371","full_name":"harbaum/FPGA-Companion","owner":"harbaum","description":"Microcontroller firmware for retro FPGA support MCUs","archived":false,"fork":false,"pushed_at":"2025-04-08T16:58:51.000Z","size":3318,"stargazers_count":34,"open_issues_count":6,"forks_count":8,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-04-08T17:50:49.046Z","etag":null,"topics":["fpga","minimig","retrocomputing"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/harbaum.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,"publiccode":null,"codemeta":null}},"created_at":"2024-06-20T06:54:01.000Z","updated_at":"2025-04-08T16:58:55.000Z","dependencies_parsed_at":"2024-08-29T12:56:50.047Z","dependency_job_id":"55412622-907b-447b-bbb3-363151bc0c34","html_url":"https://github.com/harbaum/FPGA-Companion","commit_stats":null,"previous_names":["harbaum/fpga-companion"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harbaum%2FFPGA-Companion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harbaum%2FFPGA-Companion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harbaum%2FFPGA-Companion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harbaum%2FFPGA-Companion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/harbaum","download_url":"https://codeload.github.com/harbaum/FPGA-Companion/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248717251,"owners_count":21150388,"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","minimig","retrocomputing"],"created_at":"2024-11-15T15:27:30.443Z","updated_at":"2025-04-13T12:51:27.349Z","avatar_url":"https://github.com/harbaum.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MiSTeryNano FPGA Companion\n\nThe MiSTeryNano FPGA Companion implements support functions for FPGA\nbased retro computing projects like [MiSTeryNano\nproject](https://github.com/harbaum/MiSTeryNano). While the FPGA\ntypically implements the hardware of the retro machine itself the\nCompanion uses a microcontroller to add support for modern peripherals\nlike USB keyboard, mice and SD cards. It also implements an\non-screen-display menu to allow the user to configure the retro\nmachine.\n\nThe FPGA Companion replaces the MiSTeryNano firmware that was\nformerly part of the [MiSTeryNano\nproject](https://github.com/harbaum/MiSTeryNano). It is also\nused by the [NanoMig](https://github.com/harbaum/nanomig), the\n[C64Nano](https://github.com/vossstef/tang_nano_20k_c64), the\n[VIC20Nano](https://github.com/vossstef/VIC20Nano) and the\n[A2600Nano](https://github.com/vossstef/A2600Nano).\n\n## Supported MCUs\n\nWhile the MiSTeryNano was initially designed with a BL616 MCU as the\nsupport MCU the FPGA Companion introduces more flexibility and allows\nto choose from different MCUs to act as the support MCU.  From the\nFPGAs perspective these behave identical although not all MCUs may\nsupport all functions to the same extent and e.g. the ESP32 is rather\nlimited when it comes to USB support.\n\nCurrently the FPGA Companion can be used with the following MCUs:\n\n - [M0S/BL616](https://wiki.sipeed.com/hardware/en/maixzero/m0s/m0s.html), see the [build instuctions](src/bl616), and\n - [Raspberry Pi Pico/RP2040](https://www.raspberrypi.com/documentation/microcontrollers/raspberry-pi-pico.html), see the [build instructions](src/rp2040)\n - [ESP32 S2/S3](https://www.espressif.com/en/products/socs/esp32-s2), see the [build instructions](src/esp32)\n\n## Features and disadvantages of the different MCUs\n\nThe inital version of MiSTeryNano relied on the BL616 as a support\nMCU.  Some shortcomings of that platform caused the code to be ported\nto other MCUs which then may have their own advantages and\ndisadvantages.\n\n### BL616\n\n  - Pros\n    - Very powerful Risc-V CPU\n    - USB 2.0 highspeed host support\n    - WiFi 6 support\n    - Bluetooth 5.2 support\n  - Cons\n    - Limited SDK support\n      - USB needs manual update of the CherryUSB stack\n      - No classic Bluetooth support\n      - Limited WiFi support\n\n### RP2040\n\n  - Pros\n    - Powerful and well-supported SDK\n    - Widely available and cheap\n    - Fullspeed USB host support\n  - Cons\n    - No built-in bluetooth and WiFi support\n      - Only available via seperate modules (e.g. on Pico(W))\n\n### ESP32-S2/S3\n\n  - Pros\n    - Powerful and well-supported SDK\n    - Widely available and cheap\n    - Built-in Bluetooth and WiFi\n  - Cons\n    - Very limited USB host support\n      - Only one device (no hub)\n      - USB stack complex to use\n\n## Related projects\n\nYou might also want to check out the following related projects:\n\n  - [MiSTeryNano](https://github.com/harbaum/MiSTeryNano) HDL implementation of the Atari ST home computer\n  - [NanoMIG](https://github.com/harbaum/NanoMIG) HDL implementation of the Commodore Amiga home computer\n  - [C64 Nano](https://github.com/vossstef/tang_nano_20k_c64) HDL implementationm of the Commodore C64 home computer\n  - [VIC20 Nano](https://github.com/vossstef/VIC20Nano) HDL implementation of the Commodore VIC20 home computer\n  - [A2600 Nano](https://github.com/vossstef/A2600Nano) HDL implementation of the Atari 2600 game console\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharbaum%2Ffpga-companion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fharbaum%2Ffpga-companion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharbaum%2Ffpga-companion/lists"}