ZPU Evo Guide du Developpeur
Introduction
Bienvenue dans le Guide du Developpeur ZPU Evolution. Ce guide est ecrit pour les etudiants, les amateurs et les ingenieurs qui souhaitent comprendre, construire, modifier et etendre le processeur ZPU Evolution. Que vous suiviez un cours de microprocesseurs, appreniez le developpement FPGA ou exploriez la conception de CPU soft-core, ce guide vous accompagnera a travers tout, des concepts fondamentaux a la personnalisation avancee.
Le ZPU est un microprocesseur 32 bits base sur une pile, concu a lโorigine par รyvind Harboe de Zylin AS. Le ZPU Evolution (Evo) est une version amelioree creee par Philip Smart qui ajoute des ameliorations de performance significatives, du caching, des instructions etendues et un riche framework System-on-Chip (SoC). Lโensemble du design est open source et implemente en VHDL pour la synthese sur les FPGAs Intel/Altera.
Ce que vous apprendrez
En travaillant avec ce guide, vous serez capable de:
- Comprendre lโarchitecture CPU basee sur pile et en quoi elle differe des conceptions basees sur registres
- Apprendre comment le jeu dโinstructions ZPU fonctionne au niveau materiel
- Configurer, construire et programmer des bitstreams FPGA pour plusieurs cartes de developpement
- Ajouter de nouvelles instructions materielles a la CPU
- Comprendre lโarchitecture SoC incluant les controleurs memoire, UARTs, timers et gestion des interruptions
- Ecrire, compiler et deployer des programmes C qui sโexecutent sur le ZPU
- Mettre en place des builds CI/CD automatises avec Jenkins et Docker
Prerequis
- Connaissances de base en logique numerique
- Quelque experience VHDL
- Programmation C
- Une carte de developpement FPGA (DE10 Nano, E115, CYC1000, QMV ou DE0 Nano)
- Intel Quartus Prime Version 17.1.1
Partie 1: Comprendre l'architecture ZPU
Processeurs bases sur pile vs bases sur registres
La plupart des processeurs (ARM, x86, RISC-V) sont bases sur des registres: ils ont un ensemble fixe de registres nommes et les instructions specifient sur quels registres operer.
Le ZPU est un processeur base sur pile. Au lieu de registres nommes, il utilise une pile LIFO (Last-In-First-Out). Les operations travaillent implicitement sur les elements superieurs de la pile:
Pile avant ADD: Pile apres ADD:
โโโโโโโ โโโโโโโ
โ 3 โ โ TOS โ 7 โ โ TOS (3+4)
โโโโโโโค โโโโโโโค
โ 4 โ โ NOS โ ... โ
โโโโโโโค โโโโโโโ
โ ... โ
โโโโโโโ
Pourquoi une architecture a pile?
- Encodage dโinstructions minimal - Pas de champs de registres necessaires.
- Tres petite empreinte FPGA - Le decodeur est trivial.
- Cible de compilateur simple - Lโevaluation dโexpressions se mappe naturellement aux operations de pile.
- Compromis - Les machines a pile sont typiquement plus lentes par operation, mais le systeme de cache du ZPU Evo atenue cela significativement.
Les cinq modeles de CPU
| Model | Logic Elements | Performance | Wishbone | Best For |
|---|---|---|---|---|
| Small | ~400 LEs | Baseline | No | Minimum footprint applications |
| Medium | ~600 LEs | ~1.5x Small | No | Better performance, still small |
| Flex | ~800 LEs | ~1.8x Small | No | Good balance of size and speed |
| Evo | ~2500 LEs | ~3x Small | Yes | Maximum performance, full features |
| Evo Minimal | ~1200 LEs | ~2x Small | Yes | Evo with reduced instruction set |
Partie 2: Structure du projet
Le layout du repertoire, les fichiers sources cles et la structure du projet sont identiques a la version anglaise.
Parties 3-4: Configuration du SoC et build des bitstreams
Les details complets de configuration (choix du modele CPU, configuration memoire, activation des peripheriques, reglage du cache Evo) et les instructions de build (utilisation du Makefile, Quartus directement ou Docker) sont identiques a la version anglaise.
Si vous voulez simplement un bitstream fonctionnel rapidement, utilisez le script de configuration automatise correspondant a votre plateforme (voir Configuration et build automatises juste en dessous). Il installe toute la chaine dโoutils (Intel Quartus Prime Lite 17.1 et, si necessaire, Docker), clone le depot, vous laisse choisir la carte et le CPU, et construit jusquโa son terme โ aucune connaissance prealable des outils requise. Les workflows Makefile, Quartus direct et Docker qui suivent sโadressent a ceux qui veulent piloter les outils a la main.
Configuration et build automatises (recommande)
Les scripts de configuration fournis installent tout le necessaire (Intel Quartus Prime Lite 17.1 et, si requis, Docker), clonent le depot si vous nโetes pas deja dans un checkout, vous laissent choisir la carte cible et la variante de CPU, et construisent le bitstream FPGA jusquโa son terme. Chaque script est autonome โ copiez uniquement le fichier correspondant a votre plateforme et executez-le. Ils ont ete verifies de bout en bout sur Windows (natif), macOS (Intel, via Docker) et Linux.
| Script | Plateforme | Notes |
|---|---|---|
setup_ZPU_windows.cmd |
Windows 10 / 11 | Recommande sous Windows โ lanceur a double-clic; garde la fenetre ouverte et journalise dans setup_ZPU_log.txt. Installation native, sans WSL. |
setup_ZPU_windows_native.ps1 |
Windows 10 / 11 | Le script PowerShell sous-jacent (installe Git for Windows + Quartus 17.1 via winget / lโinstallateur Intel). |
setup_ZPU.sh |
Linux / macOS | Quartus natif sous Linux; une image Docker Quartus headless sous macOS (Mac Intel uniquement โ Quartus est x86-64). |
build_zpu.sh |
tous | Wrapper de build portable. Relancez-le a tout moment pour reconstruire: ./build_zpu.sh [BOARD] [CPU]. |
Windows โ double-cliquez sur setup_ZPU_windows.cmd, ou depuis PowerShell:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\setup_ZPU_windows_native.ps1
macOS / Linux:
chmod +x setup_ZPU.sh
./setup_ZPU.sh
Chaque script demande quelle carte et quelle variante de CPU construire (par defaut QMV / EVO) et, sauf sโil est lance depuis un checkout, ou cloner le depot. A la fin, vous obtenez build/<BOARD>_<CPU>.sof (le bitstream de configuration FPGA) et un build/<BOARD>_<CPU>.rbf compresse. Cartes: QMV (par defaut), DE10_nano, DE0_nano, E115, CYC1000; CPUs: EVO (par defaut), EVO_MINIMAL, FLEX, MEDIUM, SMALL.
Pour reconstruire ensuite sans relancer la configuration (sous Gitย Bash Windows, faites dโabord export PATH="/c/altera/17.1/quartus/bin64":$PATH):
./build_zpu.sh E115 EVO # carte + CPU
./build_zpu.sh --list # lister toutes les cartes / CPUs
ZPU_RTL_METHOD=docker ./build_zpu.sh QMV EVO # forcer l'image Docker headless
Variables dโenvironnement utiles: ZPU_REPO_URL (depot a cloner; par defaut le depot public https://git.eaw.app/eaw/zpu.git), ZPU_BOARD / ZPU_CPU (ignorer les invites), ZPU_RTL_METHOD=native|docker, ZPU_DIR (construire dans un checkout existant) et ZPU_QUARTUS_BIN (pointer vers un bin/bin64 Quartus existant).
Parties 5-6: Jeu d'instructions et ajout de nouvelles instructions
Les tables completes du jeu dโinstructions et le guide pas a pas pour ajouter de nouvelles instructions materielles sont dans la version anglaise.
Partie 7: L'ecosysteme logiciel -- IOCP, zOS et applications
Apercu des couches logicielles
La pile logicielle standard sur un systeme ZPU Evolution est:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Applications โ
โ (ed, kilo, tbasic, mbasic, benchmarks, โ
โ vos propres programmes -- charges depuis SD) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ zOS -- Systeme d'exploitation โ
โ (Shell, systeme de fichiers, 80+ commandes) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ IOCP -- Bootloader โ
โ (Init materiel, boot SD, upload serie) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Materiel ZPU (FPGA) โ
โ (CPU, BRAM, SDRAM, UART, SD, Timer, Interrupts) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
La sequence de demarrage est: FPGA sโallume -> IOCP sโexecute depuis le BRAM -> IOCP charge zOS depuis la carte SD -> zOS presente un shell -> lโutilisateur execute des applications.
IOCP -- Le bootloader
IOCP est le premier code execute lorsque le ZPU sโallume. Il est integre directement dans le Block RAM du FPGA pendant la synthese. Les niveaux de fonctionnalite vont de Full (~40 KB) a Tiny (~3-5 KB). Les details complets sont dans la version anglaise.
zOS -- Le systeme d'exploitation
zOS fournit un shell en ligne de commande, un support complet du systeme de fichiers, la gestion de la memoire et la capacite de charger et dโexecuter des applications depuis la carte SD. Les details complets sont dans la version anglaise.
Parties 8-13: Sujets avances
Les sections completes sur le logiciel personnalise, lโarchitecture SoC, la configuration specifique aux cartes, le CI/CD, le debogage et les ressources supplementaires sont dans la version anglaise.
Exercices pour etudiants
- Basique: Construire le ZPU Small pour votre carte. Connecter un terminal a 115200 bauds et interagir avec lโIOCP.
- Intermediaire: Modifier
zpu_soc_pkg.vhdpour changer la taille du BRAM. - Intermediaire: Activer le controleur PS2 et connecter un clavier.
- Avance: Ajouter une instruction materielle SWAP.
- Avance: Porter le design sur une nouvelle carte FPGA.
- Expert: Implementer une nouvelle instruction etendue utilisant le mecanisme EXTEND.