Hazard3-Doom

Vue d'ensemble du projet

  • À propos de Hazard3-Doom
    • Ce que vous pouvez apprendre
    • Pourquoi Doom ?
    • Au-delà de l’enseignement
    • ULX4M et l’écosystème de cartes porteuses Compute Module
    • Ressources ULX4M externes

Prise en main

  • Prise en main
    • Démarrage sans installation - ULX3S
      • Matériel et fichiers nécessaires
      • 1. Télécharger les fichiers précompilés
        • Builds récents de GitHub Actions
      • 2. Ouvrir le Device Tool
      • 3. Programmer la SRAM du FPGA
      • 4. Connecter l’UART
      • 5. Charger l’image Doom H3IMG
      • 6. Charger votre IWAD Doom
      • 7. Vérifier le démarrage de Doom
      • Ce que cette méthode n’installe pas
      • ULX3S 12F
      • ULX4M-LD
      • Documentation associée
    • Démarrage rapide depuis les sources
      • Cible
      • Configuration requise
      • Installation des logiciels requis
      • 1. Cloner le dépôt
      • 2. Construire la cible ULX3S complète
      • 3. Programmer le FPGA pour un essai
      • Optionnel : charger l’ELF actuel du moniteur via OpenOCD
      • 4. Charger Doom via UART
      • 5. Vérifier le démarrage
      • Chemin rapide ULX4M-LD
      • Étapes suivantes
      • Références d’implémentation
    • Prérequis
      • Environnement hôte
      • Vérification des prérequis de la machine
      • Outils requis
      • Chaîne d’outils FPGA
      • Chaîne d’outils GCC RISC-V
      • Dépendance Python de l’outil de téléversement
      • Accès au port série sous Linux
      • IWAD
      • Liens associés
    • Conseils pour les machines virtuelles
      • VMware Tools
      • Dossiers partagés
      • Passthrough USB pour les périphériques FPGA et UART
    • Construire Hazard3-Doom
      • Builds complets des cartes
      • Moniteur résident uniquement
      • Image Doom liée uniquement
      • Tester un autre checkout Hazard3
      • Préparation et vérification des sous-modules
      • Sélection des seeds
      • Propriété du build
    • Programmation et démarrage persistant
      • Chargement FPGA temporaire
      • Configuration FPGA persistante
      • ULX4M-LD : chargement FPGA temporaire
      • ULX4M-LD : programmation DFU persistante
      • Point de contrôle d’image qualifiée ULX4M-LD
      • Références d’implémentation
    • Builds FPGA Tiny Tapeout sur ULX3S
      • Rôle des deux dépôts
      • Structure requise du projet Tiny Tapeout
      • Workflow GitHub Actions
        • Pourquoi utiliser un checkout récursif
      • Entrées de l’action
      • Ce que l’action exécute
      • À l’intérieur de tt_fpga.py
      • Comportement du wrapper ULX3S
      • Exécuter le même flux ULX3S localement
      • Programmer le bitstream généré
      • Télécharger et vérifier l’artifact GitHub
      • Dépannage
      • Liens associés

Matériel

  • Guides matériels
    • Guide matériel ULX3S
      • Vue d’ensemble et variantes de carte
        • Qu’est-ce qu’ULX3S ?
        • Densité FPGA et révision PCB
        • Discipline de révision
      • FPGA, horloges et domaines d’E/S
        • Famille ECP5
        • Oscillateur 25 MHz
        • SDRAM et timing
        • La fermeture du timing dépend de la cible
        • Normes d’E/S
      • Mémoire externe : SDR SDRAM
        • Chemin du contrôleur
        • Profils mémoire
        • EBR et SDRAM sont différentes
        • Qualification
      • Configuration FPGA, flash et chemins de démarrage
        • Configuration volatile
        • Flash SPI persistante
        • Rôles de US1 et US2
        • Flux d’image utilisateur DFU
        • Chargement logiciel à l’exécution
      • Vidéo, micro-SD et stockage d’exécution
        • Vidéo GPDI
        • Écrans HDMI et exemple de boîtier
        • Stockage micro-SD
        • Partage SD avec l’ESP32
        • Extension audio et affichage
      • Interfaces USB, JTAG, UART, GPIO et ESP32
        • Chemin US1 FT231X
        • JTAG externe
        • UART Hazard3-Doom
        • GPIO J1/J2
        • Partage avec l’ESP32
        • Autres interfaces de la carte
      • Contraintes de broches, schémas et révisions PCB
        • Sources de contraintes du projet
        • Schémas amont révisionnés
        • Attention à la numérotation des connecteurs
        • Discipline de révision
      • Sources de conception et lectures complémentaires
        • Sources ULX3S principales
        • PDF de schémas
        • Sources Hazard3-Doom
        • Comment traiter des sources contradictoires
        • Documentation Hazard3-Doom associée
      • Modèle mental utile
    • Guide matériel ULX4M
      • Vue d’ensemble et variantes
        • Qu’est-ce que l’ULX4M ?
        • Les spécifications publiques dépendent de la révision
        • Résumé des cibles Hazard3-Doom
        • Ressources de la carte
        • Suivre une transaction mémoire
      • FPGA, horloges et domaines d’E/S
        • Référence de 25 MHz
        • ULX4M-LS
        • Pourquoi les domaines comptent
        • Normes d’E/S
      • Mémoire externe : SDRAM et DDR3
        • ULX4M-LS : SDR SDRAM native
        • ULX4M-LD : DDR3 LiteDRAM
        • Profils DDR3 pris en charge
        • Profil généré actuel
        • Régénération pour la RAM montée
        • Géométrie et identification
        • Qualification DDR3
        • Interface électrique
        • Références externes
      • Configuration, flash SPI, USB DFU et JTAG
        • Trois couches distinctes
        • Organisation de la flash
        • USB DFU
        • JTAG
        • Tests en SRAM ou en flash
      • Vidéo et stockage amovible
        • Vidéo GPDI / style HDMI
        • micro-SD
        • Rôles de stockage
      • Interfaces externes et extension
        • Ethernet
        • CSI/DSI et SerDes
        • GPIO, boutons, interrupteurs et LED
        • UART et JTAG
        • Alimentation
        • Hypothèses d’alimentation et de carte porteuse
      • Contraintes de broches, schémas et révisions
        • Du net du schéma au port Verilog
        • Fichiers de contraintes Hazard3-Doom
        • Les divergences entre sources sont des données
        • Utilisation de la copie locale du schéma
        • Liste de contrôle avant de modifier une broche
        • Ressources ULX4M externes
      • Sources de conception et lectures complémentaires
        • Sources ULX4M principales
        • Schémas ULX4M
        • Sources Hazard3-Doom
        • Comment traiter des sources contradictoires
        • Documentation liée
      • Modèle mental utile
    • Pourquoi un guide matériel ?

Guide utilisateur

  • Guide utilisateur
    • Utilisation de base
      • Guide de compilation
        • Compilations normales des cartes
        • Versions des outils et reproductibilité
        • Scripts de compilation et procédures avancées
      • Moniteur résident
        • Commandes Doom principales
        • Capacité de capture d’écran Web Serial
        • Diagnostics HDMI SAO / I2C
        • Retour depuis Doom
        • Build du moniteur
      • Exécuter Doom
        • Chargement UART
        • Commandes
        • Chemin vidéo
        • Capture d’écran Web Serial
        • Son
        • Références d’implémentation
      • Fonctionnement et récupération du bootloader DFU
        • Ne pas confondre ces trois composants
        • Quand un remplacement du bootloader est réellement justifié
        • Utilisation normale
        • Remplacement et récupération rares
        • Note sur la protection en écriture du bootloader ULX3S
        • Sources
        • Références d’implémentation
      • Démarrage à froid depuis micro-SD
        • Contenu de la carte
        • Prise en charge du système de fichiers
        • Séquence de démarrage à froid
        • Diagnostics du moniteur
        • Référence du connecteur micro-SD
        • Broches SD partagées ESP32/FPGA
    • Outils du navigateur
      • Outil Web pour les périphériques
        • Vue d’ensemble des transports
        • Prérequis du navigateur
        • Connexion série
        • Téléversement des périphériques
        • Propriété du transport pendant un transfert binaire
        • Terminal UART et commandes
        • Flux de mise en route conseillé
        • Limites des données et de la persistance
        • Documentation associée
        • Références externes
      • Console Web Serial et capture d’écran HDMI
        • Fichiers de l’application web
        • Prérequis du navigateur et du serveur
        • Propriété UART et pages Device Tool en double
        • Vue d’ensemble de la capture d’écran
        • Détection de capacité
        • Quand la capacité est revérifiée
        • Routage des commandes UART et touche H
        • Protocole H3SNIP1 sur le fil
        • Charge utile binaire
        • Modes de source actuels
        • Format de palette RGB332
        • Timing de capture Doom
        • Timing et packing de capture I2CDriver
        • Chemin de réception du navigateur
        • Reconstruction du raster HDMI
        • Nom du téléchargement et traitement local
        • Coût du transfert UART
        • Timeouts et gestion des erreurs
        • Compatibilité et versionnement
        • Emplacements d’implémentation
        • Sécurité et confidentialité
        • Utilisation
      • Flasher FPGA WebUSB
        • Prérequis
        • Configuration USB selon l’hôte
        • Propriété WebUSB et OpenOCD
        • Compatibilité des pilotes USB sous Windows
        • Accès USB sous Linux et Ubuntu
        • Accès USB sous macOS
        • Programmer un fichier .bit
        • Identification de la cible et contrôles de sécurité
        • Fonctionnement de la programmation .bit
        • Fichiers SVF prégénérés
        • Transport JTAG
        • Contrôles du journal du flasher
        • Dépannage
        • Configuration persistante
    • Matériel et périphériques
      • Brochages des cartes et câblage
        • ULX3S
        • ULX4M-LD sur le carrier Waveshare CM4
        • Générer des brochages personnalisés
        • Avant de connecter du matériel externe
        • Références externes
      • Prise en charge SAO / I2C
        • Signaux du connecteur
        • Base APB Hazard3
        • Commandes du moniteur
        • Interface HDMI I2CDriver
        • Partage avec l’ESP32
        • Remarque électrique
      • Interface HDMI I2CDriver
        • Démarrer l’interface
        • Commandes
        • Invites hexadécimales
        • Carte thermique des adresses
        • Journal des transactions
        • Trace logique
        • État de la capture passive
        • Récupération du bus
        • Présentation HDMI
        • Capture d’écran Web Serial
        • Workflow de build et de test
        • Relation avec I2CDriver amont
    • Débogage
      • Débogage JTAG
        • OpenOCD et GDB
        • FT231X intégré à l’ULX3S
        • ULX3S avec Tigard externe
        • Débogage de l’ESP32 ULX3S intégré avec Tigard
        • ULX4M-LD avec Tigard
        • VisualGDB
        • Dépannage
        • Références externes

Architecture

  • Architecture
    • Processeur RISC-V Hazard3
      • Le lien avec le Raspberry Pi RP2350
      • Documentation Hazard3 amont
      • Instantané source utilisé par ce projet
      • Qu’est-ce que Hazard3 amont ?
      • Qu’est-ce qui est personnalisé pour Hazard3-Doom ?
      • Configuration réelle du processeur ULX3S
      • Parcours d’apprentissage
        • Vue d’ensemble du processeur
        • Pipeline à trois étages
        • ISA et configuration
        • Mémoire et interface de bus
        • Traps, interruptions et CSR
        • Architecture de débogage RISC-V
        • Hazard3 amont et personnalisation du projet
        • Visite guidée du code source
    • Architecture système
      • Composants principaux
      • Frontière CPU / SoC
      • Chemins de démarrage
        • Démarrage de développement
        • Démarrage autonome
      • Périphériques APB
    • Cartographie mémoire
      • Espace des peripheriques APB
      • SRAM interne
      • Profil SDRAM 64 Mio
      • Profil SDRAM 32 Mio
    • Pipeline vidéo
      • Pipeline
      • Géométrie de sortie
      • Pourquoi des couleurs indexées ?
      • Registres vidéo
      • Chemin de capture d’écran Web Serial
      • Motif de test vidéo
      • Utilisateurs non-Doom du chemin vidéo
    • Organisation des dépôts et propriété
      • Arborescence du dépôt
      • Trois couches de propriété
      • Instantané du code source Hazard3
      • Comment classer une modification
      • Sous-modules

Référence

  • Référence
    • Référence des commandes du moniteur
      • Qualification de la mémoire externe
      • Démarrage et Doom
      • SAO / I2C
      • Commandes I2C HDMI interactives
      • Octets de contrôle réservés Web Serial
    • Référence des scripts
      • Builds complets des cartes
      • Outils de build du moniteur et du bitstream
      • Outils de build Doom et Supercon
      • Sweeps de placement et de seeds routés
      • Initialisation des sous-modules et contrôles d’état local
      • Audit des forks et branches
      • Programmation et OpenOCD
      • Contrôle UART
      • Outils GDB
      • CoreMark et analyse ELF
      • Hygiène du dépôt et inventaire généré
      • Validation VisualGDB et chaîne d’outils Windows
      • Liens associés
    • Sweeps de timing et de seeds ECP5
      • Pourquoi les seeds comptent
      • Définition d’un PASS de timing
      • Point de contrôle ULX4M-LD qualifié à 40/60 MHz
      • Conserver un bitstream ULX4M-LD pour test matériel
      • Sweep local
      • Sweep GitHub Actions
        • Paramètres du workflow
        • Pourquoi deux seeds par job GitHub
      • Architecture des jobs
        • prepare : figer l’expérience
        • route : runners indépendants
        • watch : moniteur de timing en direct
        • summarize : résultat final
      • Timeouts
      • Stratégie de sélection des paramètres
      • Interprétation et reproductibilité
      • Liste de contrôle de reproductibilité
      • Conseils développeur et pièges courants
      • Fichiers associés
      • Références externes
    • Profils de cartes
      • Paramètres de routage nextpnr par défaut
      • Validation FPGA actuelle
      • Bases principales des périphériques ULX3S
    • Espace d’adressage des peripheriques APB
      • Fenetres du decodeur APB
      • Acces MMIO commun
      • Timer RISC-V - 0x40000000
      • UART - 0x40004000
      • GPIO - 0x40008000
      • SAO I2C/GPIO - 0x40009000
      • SPI micro-SD - 0x4000A000
      • HDMI/video - 0x4000C000
      • Exemples APB autonomes
        • Compiler les exemples
        • Execution avec OpenOCD/GDB
      • Fichiers source de reference
    • Liste des figures
      • Cartes et matériel
      • Construction FPGA
      • Carte SD
      • JTAG
      • Outils WebUSB et pilotes USB
  • 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 ttyUSB sous 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 fujprog signale Cannot 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 gui est 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
    • shellcheck n’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 TIMEOUT de mémoire externe
    • Le build change soudainement à cause des sous-modules
    • Liens associés
  • Contribuer à la documentation
    • Build local de la documentation
    • Règles de documentation
    • Publication sur Read the Docs
Hazard3-Doom
  • Référence
  • Liste des figures
  • Éditer sur GitHub

Liste des figures

Cet index regroupe les principales figures disponibles dans la documentation française de Hazard3-Doom. Les utilisations répétées d’une même image ne sont listées qu’une seule fois.

Cartes et matériel

  • Brochage ULX3S

  • Brochage UART Hazard3-Doom sur ULX3S

  • Brochage ULX4M-LD

Construction FPGA

  • Processus nextpnr-ecp5 exécutés en parallèle

Carte SD

  • Contenu de la carte HAZARD3-SD

  • Volume HAZARD3-SD sous Windows

JTAG

  • Brochage JTAG externe J4 sur ULX3S

Outils WebUSB et pilotes USB

  • Fichiers ULX3S précompilés publiés

  • Artefacts ULX3S de GitHub Actions

  • Programmation FPGA ULX3S sans installation

  • Upload H3IMG ULX3S sans installation

  • Upload IWAD ULX3S sans installation

  • Lancement de Doom ULX3S sans installation

  • Programmateur FPGA Hazard3-Doom via WebUSB

  • Diagnostic d’accès WebUSB refusé

  • Sélection FTDI vers WinUSB avec Zadig

  • Restauration du pilote FTDI sous Windows

  • Indicateur de mise à jour Chrome en attente

Précédent Suivant

© Droits d'auteur 2026, Hazard3-Doom contributors.

Compilé avec Sphinx en utilisant un thème fourni par Read the Docs.