Aller au contenu
Projet 816wiki
Sommaire

Le Projet 816 pour les nuls

Pas besoin de savoir ce qu’est un FPGA. En quelques schémas, voici ce que sera le Projet 816, comment ses pièces travaillent ensemble, et où il en est aujourd’hui.

Dans cette page

1. L’idée : un ordinateur 16 bits d’aujourd’hui

Dans les années 80, les micro-ordinateurs étaient construits autour d’un processeur, de mémoire et de quelques puces spécialisées pour l’image et le son. Le Projet 816 reprend cette idée avec des pièces d’aujourd’hui :

  • un vrai processeur W65C816S, toujours fabriqué par WDC : la version 16 bits du célèbre 6502 ;
  • 16 Mo de mémoire (de la PSRAM), tout ce que le processeur sait adresser ;
  • à la place des puces spécialisées d’autrefois, des FPGA : des puces dont on dessine soi-même les circuits, en écrivant un programme qui les décrit ;
  • un Raspberry Pi Pico 2 W pour tout ce qui est moderne : USB, carte SD, Wi-Fi ;
  • une carte au format Mini-ITX, pour loger la machine dans un boîtier de PC ordinaire.

2. Qui fait quoi

Qui fait quoi dans le Projet 816Un vrai W65C816S partage son bus avec trois circuits programmables : le contrôleur système, un FPGA GW1NR-9 soudé sur la carte et maître du bus (horloge, banque, décodage, son, DMA), la Tang Nano 20K pour la vidéo HDMI et le Pico 2 W pour l'USB, la carte SD, le Wi-Fi et l'horloge. Un port d'extension complète le bus. Les esclaves n'exposent que 32 registres chacun. La mémoire, 16 Mo de PSRAM en QSPI, et le codec audio en 1,8 V sont reliés à la seule 9K.bus 65816Codec audioTLV320AIC3254en 1,8 VI²S + I²C, banque 3W65C816Sle processeur 16 bits≈ 4 MHz attendusContrôleur « 9K »FPGA GW1NR-9 soudéhorloge, banque, décodage,mémoire, son, DMATang Nano 20Kvidéo type VERAsortie HDMI,mémoire vidéo dans sa SDRAMPico 2 Wentrées-sortiesUSB, carte SD,Wi-Fi, horlogemaître du bus32 registres32 registresPSRAM 16 Mo2 × APS6404L, pas de ROMreliée à la seule 9KQSPIPort d'extensionbarrette 2 × 25tampons 74LVC245Bus en 3,3 V, sans convertisseur de niveaux ; seule la banque 3 de la 9K est en 1,8 V. Les points marquent les prises sur le bus.
Le processeur au centre, sur son bus avec trois circuits programmables ; la mémoire n’est reliée qu’au contrôleur « 9K », qui la sert pour lui.
  • Le W65C816S exécute les programmes. C’est le seul vrai processeur « rétro » de la machine.
  • La PSRAM de 16 Mo est toute la mémoire : il n’y a pas de ROM. Seule la 9K y est reliée, et elle fait les accès pour le processeur. Le programme de démarrage est recopié en mémoire avant que le processeur ne démarre.
  • Le contrôleur système, surnommé « la 9K », est le chef d’orchestre : un FPGA soudé directement sur la carte (la puce de la Tang Nano 9K, sans son module). Il fabrique l’horloge du processeur, décide qui parle sur le bus, pilote la mémoire et produit le son.
  • La Tang Nano 20K (un FPGA plus gros) est la carte graphique : elle fabrique l’image et l’envoie sur une prise HDMI.
  • Le Pico 2 W s’occupe des entrées-sorties : clavier et souris USB, carte microSD, Wi-Fi, horloge, liaison série.

La 20K et le Pico ne voient pas toute la mémoire : chacun n’offre au processeur que 32 registres, une petite fenêtre par laquelle on lui donne des ordres.

3. Le 16 bits et ses 16 Mo

Le 6502 des années 80 ne voyait que 64 Ko de mémoire. Le 65816 en voit 16 Mo, découpés en 256 banques de 64 Ko. Le Projet 816 les remplit tous de mémoire : deux puces de 8 Mo.

La carte mémoire du Projet 816Le 65816 adresse 16 Mo en 256 banques de 64 Ko, et toutes sont de la RAM : les banques $00 à $7F dans la première PSRAM de 8 Mo, $80 à $FF dans la seconde. Dans la banque $00, quatre pages de 256 octets, de $9C00 à $9FFF, sont réservées aux registres de la 9K, de la vidéo, du Pico et de l'extension ; tout le reste est de la RAM, vecteurs compris.Les 16 Mo du 65816256 banques de 64 Ko, toutes en RAM$00banque 0 : détail à droite$01–$7FRAM : 1re PSRAM (CS0#)$80–$FFRAM : 2e PSRAM (CS1#)La banque $00RAM et quatre pages de registres$0000–$9BFFRAM$9C009K : son, interruptions, DMA$9D00vidéo (Tang Nano 20K)$9E00Pico : SD, USB, Wi-Fi, horloge$9F00port d'extension$A000–$FFFFRAM, dont les vecteurs du 65816Chaque bloc expose 32 registres, répétés dans sa page de 256 octets.(non proportionnel)
La carte mémoire : ce qui se trouve à chaque adresse. Les registres de la 9K, de la vidéo, du Pico et de l’extension occupent quatre petites pages dans la première banque.

4. Une astuce du 65816 : la banque sur les fils de données

Pour adresser 16 Mo, il faut 24 bits d’adresse. Le boîtier du 65816 n’a pourtant que 16 broches d’adresse. L’astuce : pendant la première moitié de chaque cycle, il pose les 8 bits manquants (la banque) sur ses broches de données. La 9K doit les capturer au bon moment, avant que ces mêmes broches ne servent à la donnée.

Un cycle de bus du 65816Pendant la phase basse de PHI2, le processeur pose sur les fils de données D0 à D7 la banque, c'est-à-dire les 8 bits hauts de l'adresse ; la 9K la capture juste avant la montée de l'horloge. Pendant la phase haute, les mêmes fils portent la donnée : la 9K lit ou écrit la PSRAM en QSPI et prolonge la phase haute le temps de cet accès.PHI2phase bassephase hauteA0–A15adresse A0–A15 (16 bits bas)D0–D7banque A16–A23, posée par le CPUdonnée : posée par la 9K ou par le CPUla 9K capture la banque icila 9K accède à la PSRAM et prolonge la phase hauteSeuls les cycles signalés par VDA ou VPA comptent ; les cycles fantômes sont ignorés.
Un cycle de bus : d’abord la banque sur les fils de données, puis la donnée elle-même. C’est la première chose que la carte de validation devra prouver.

5. Trois étapes, dans l’ordre

Le projet avance par phases, et ne passe à la suivante que lorsque la précédente marche sur du vrai matériel :

Les trois phases du Projet 816Phase 1 : une carte de validation de 100 × 100 mm en 2 couches avec le processeur, la PSRAM et la 9K. Phase 2 : la carte Mini-ITX de 170 × 170 mm en 4 couches avec toute la machine. Phase 3 : le logiciel. Le projet en est à la spécification de la phase 1. Aucune carte n'est commandée tant que la phase précédente n'est pas validée sur du matériel réel.Phase 1carte de validation≈ 100 × 100 mm, 2 couchesCPU, PSRAM, 9KPhase 2carte Mini-ITX170 × 170 mm, 4 couchestoute la machinePhase 3logicielmoniteur, BASIC ou système,outilsnous en sommes ici : la spécificationAucune carte n'est commandée tant que la phase précédente n'est pas validée sur matériel réel.
Une petite carte de validation d’abord, la grande carte Mini-ITX ensuite, le logiciel enfin.

6. La carte finale

À défaut de photo, voici l’implantation prévue de la carte Mini-ITX : les prises à l’arrière, comme sur un PC, et le cœur de la machine au centre.

La carte Mini-ITX prévue, vue de dessusPlan indicatif de la carte de 170 × 170 mm. Au bord arrière : la Tang Nano 20K avec sa prise HDMI, trois blocs USB-A, le lecteur microSD, les jacks audio et le double DE-9. Au centre : le processeur, la 9K et la PSRAM, groupés pour des pistes courtes. À gauche : le port d'extension ; à droite : le connecteur ATX et l'alimentation ; à l'avant : audio, reset, LED, USB et connecteur de façade. Quatre trous de fixation dans les coins.bord arrière (vers l'extérieur du boîtier)bord avant (façade)20K + HDMIUSB-A × 3microSDjacksDE-9 × 2CPU · 9K · PSRAMgroupés au centrepour des pistes courtesport d'extension et tamponsATX 24 broches et alimentationHD Audio · reset · LED · USB façade · façadePlan indicatif : cotes et emplacement d'extension à vérifier sur un gabarit Mini-ITX officiel.
La carte Mini-ITX telle que la décrit la spécification. Les cotes exactes restent à vérifier sur un gabarit officiel avant de dessiner la carte.

7. En résumé

QuestionRéponse courte
C’est quoi ?Un micro-ordinateur 16 bits néo-rétro, au format Mini-ITX.
Avec quel processeur ?Un vrai W65C816S, en 3,3 V ; environ 6 MHz en moyenne (estimation, de 4 à 8 selon les accès).
Et le reste ?Deux FPGA (contrôle et son, soudé sur la carte ; vidéo HDMI, en module) et un Pico 2 W (USB, SD, Wi-Fi, horloge).
Ça existe ?Pas encore : la spécification est écrite, la carte de validation est la prochaine étape.
Et ensuite ?Voir Où en est le projet.

Les mots techniques sont expliqués dans le glossaire.

Sources dans le dépôt : docs/SPEC.md, README.md.