Hazard3-Doom
Doom sur le processeur RISC-V Hazard3 dans un FPGA ECP5 - et un terrain d’expérimentation pratique pour comprendre comment processeur, logique FPGA, mémoire, vidéo, firmware et logiciel s’assemblent.
Hazard3-Doom est bien plus que Doom porté sur une carte FPGA supplémentaire. C’est un écosystème matériel et logiciel pédagogique construit autour du processeur RISC-V open source Hazard3 et des familles FPGA ECP5 ULX3S et ULX4M.
Le même CPU Hazard3 que dans le Raspberry Pi RP2350
Hazard3 n’est pas un processeur créé uniquement pour ce projet. Le microcontrôleur RP2350 de Raspberry Pi contient une paire de cœurs RISC-V Hazard3 open hardware, sélectionnables à la place de sa paire de Cortex-M33, et le RP2350 équipe la famille Raspberry Pi Pico 2. Hazard3-Doom synthétise cette même architecture de processeur Hazard3 open source dans le FPGA ECP5.
La configuration du processeur n’est pas identique : RP2350 et Hazard3-Doom activent des fonctionnalités et extensions ISA Hazard3 optionnelles différentes pour leurs SoC respectifs. Cette origine CPU et ce RTL communs font de Hazard3-Doom un moyen pratique d’étudier cette architecture dans un système que vous pouvez reconstruire et modifier.
Le projet réunit des exemples C et Verilog, des conceptions FPGA, la vidéo HDMI et les framebuffers, des contrôleurs de mémoire externe, l’accès à la carte SD, le débogage UART et JTAG, un moniteur de démarrage résident, des outils de téléversement côté hôte et une application DoomGeneric chargeable.
Un outil de diagnostic I2C basé sur l”I2CDriver d’Excamera Labs est également inclus. Le même code fournit en bonus la fonction SAO Hackaday Supercon.
Vous pouvez simplement jouer à Doom sur un CPU RISC-V soft, ou descendre plus profondément dans le système pour voir comment un ordinateur complet basé sur FPGA est construit : intégration du processeur, mémoire, horloges et timing, vidéo, périphériques, démarrage, chargement et outils de débogage.
Que vous expérimentiez avec RISC-V, appreniez le Verilog ou vouliez comprendre ce qu’il faut pour faire fonctionner Doom sur un matériel que vous pouvez inspecter et modifier de bout en bout, Hazard3-Doom est conçu pour être exploré.
Note
Ces pages décrivent la version de documentation sélectionnée. Les fonctionnalités encore en évolution sont signalées explicitement. Les pages détaillées sur l’architecture du processeur sont également rattachées à l’instantané exact du code source Hazard3 indiqué dans Processeur RISC-V Hazard3.
Important
Sous Windows, les builds depuis les sources utilisent WSL
Sous Windows, les instructions de build et de développement depuis les
sources exigent WSL avec Ubuntu et Bash. PowerShell et cmd.exe ne
sont pas des shells de build pris en charge pour les scripts du dépôt.
Windows natif n’est utilisé que lorsqu’une page demande explicitement le
Device Tool du navigateur, la gestion des pilotes USB, un téléversement via
port COM ou un .exe Windows fourni. Le chemin
Démarrage sans installation - ULX3S dans le navigateur ne nécessite pas WSL.
Commencer ici
À propos de Hazard3-Doom - comprendre le projet et ce que vous pouvez y apprendre.
Démarrage sans installation - ULX3S - exécuter une ULX3S avec des images précompilées et le Device Tool, sans chaîne de build FPGA.
Démarrage rapide depuis les sources - installer les outils de développement et construire le FPGA, le moniteur résident et l’image Doom depuis les sources.
Outil Web pour les périphériques - utiliser l’outil Device Tool du navigateur pour les tâches courantes de mise en route et d’interaction.
Pour aller plus loin
Guides matériels - explorer le matériel ULX3S et ULX4M utilisé par Hazard3-Doom.
Brochages des cartes et câblage - consulter les brochages et le câblage pratique UART/JTAG.
Débogage JTAG - déboguer Hazard3 avec OpenOCD/GDB ou VisualGDB.
Interface HDMI I2CDriver - scanner et utiliser le bus I2C SAO de manière interactive.
Flasher FPGA WebUSB - programmer directement le FPGA ULX3S avec WebUSB.
Processeur RISC-V Hazard3 - découvrir le processeur RISC-V Hazard3, son pipeline, sa configuration ISA, ses bus et son architecture de débogage.
Architecture système - comprendre comment s’assemblent le FPGA, le moniteur, la mémoire, HDMI, la SD, le SAO et l’ESP32.
Espace d’adressage des peripheriques APB - consulter les adresses, registres, bits et exemples C autonomes des peripheriques APB.
Sweeps de timing et de seeds ECP5 - exécuter les sweeps ECP5 et interpréter les résultats de timing.
Démarrage à froid depuis micro-SD - configurer un démarrage autonome à froid depuis une carte micro-SD.
Builds FPGA Tiny Tapeout sur ULX3S - construire des projets Tiny Tapeout pour le FPGA ECP5 ULX3S.
Vue d'ensemble du projet
Prise en main
Guide utilisateur
Architecture
Référence
- Référence
- Foire aux questions
- Carte ULX3S non reconnue
- Écran HDMI vide
- OpenOCD n’écoute pas sur
localhost:3333 - Web Serial ne signale aucun périphérique compatible, mais Windows voit mon port COM. Que dois-je essayer en premier ?
- Chrome voit
ttyUSBsous Ubuntu mais Web Serial ne peut pas l’ouvrir. Pourquoi ? - La page GitHub Pages publique peut-elle charger l’ELF console ?
- Pourquoi un second onglet Device Tool ne peut-il pas se connecter à l’UART ?
- OpenOCD peut-il utiliser WinUSB sur l’ULX3S ?
- Pourquoi le flasher FPGA WebUSB a-t-il besoin de WinUSB sous Windows ?
- Dépannage
- Windows
fujprogsignaleCannot find JTAG cable - Le flasher WebUSB signale
USBDevice.open(): Access denied - Zadig signale
Driver Installation: FAILED (Could not allocate resource) - Le flasher WebUSB signale un identifiant JTAG non reconnu
- Le flasher WebUSB signale une incompatibilité de cible FPGA
- Le sélecteur Web Serial indique qu’aucun périphérique compatible n’a été trouvé
- Le sélecteur Web Serial se ferme mais l’UART ne se connecte pas
- Web Serial sélectionne un TTY Linux mais ne parvient pas à l’ouvrir
- La sortie UART est lisible mais le moniteur ignore les commandes
- WebUSB ne peut pas ouvrir ou revendiquer l’ULX3S
- Le téléversement de Doom expire
- Aucune carte micro-SD n’est installée, mais le démarrage à froid signale un échec CMD0
- La carte SD est montée mais les fichiers sont introuvables
- La SD devient peu fiable lorsque le firmware ESP32 s’exécute
- L’analyse SAO trouve certains périphériques mais pas d’autres
i2c guiest signalé comme commande inconnue- L’analyse I2C GUI trouve un périphérique mais la trace logique est vide
- I2C GUI reste affiché sur HDMI après la sortie
shellcheckn’est pas installé- La chaîne d’outils GCC RISC-V est introuvable
c++: fatal error: Killed signal terminated program cc1plus- Le workflow indique que CMake est trop ancien
ROR: Max frequency for clock '$glbnet$clk_sys': XX.YY MHz (FAIL at 50 MHz)- Le chargeur du firmware console reste sur
Loading... - OpenOCD signale un délai USB ou un scan JTAG entièrement nul dans une VM
- OpenOCD ne voit pas un module de débogage Hazard3 fonctionnel
- ULX4M-LD signale un
TIMEOUTde mémoire externe - Le build change soudainement à cause des sous-modules
- Liens associés
- Windows
- Contribuer à la documentation