Projet fou

a marqué ce sujet comme résolu.

Bonjour,

comme le dit ce titre, j'ai un projet sûrement un peu fou : j'aimerais construire un ordinateur à base de composants les plus élémentaires possibles (par là, je n'entends bien évidemment des particules élémentaires :D ).

Par ordinateur, j'entends un assemblage d'une unité de calcul basique, d'une RAM, peut-être (sûrement) d'un dispositif de stockage et finalement d'une quelconque interface (sûrement très basique) d'entrée/sortie.

Par élémentaire, j'entends, si possible, mais je sens que ce sera facilement trop cher/grand/compliqué, à base de transistors à assembler séparément. Mais si ça dépasse 10000 transistors, ce n'est sûrement pas réalisables du tout.

Je sais très bien que l'ensemble ne sera absolument pas performant, avec une échelle aussi faible d'intégration, mais ce n'est pas le but.

Ce que j'aimerais donc savoir, c'est à quel point je peux me permettre de le faire à base de composants basiques. Je ne suis pas sûr, et je ne m'y connais pas bien, mais je pense que les circuits imprimés seront à éviter, étant donné que les connaissances à ce propos me manquent cruellement, et que la construction risque d'être tout simplement bien trop énorme pour tenir sur un circuit imprimé.

Je voudrais aussi savoir quelles connaissances me seront absolument nécessaires. Le point de vue théorique et logique de la création de circuits tels qu'un ordinateur ne sont pas ma première lacune, et c'est d'ailleurs la partie principale que j'essaierai de résoudre par moi-même. C'est plutôt du côté électronique où il faudrait clairement que je me forme.

J'ai tout écrit en partant du principe que mon projet était réalisable, mais peut-être ne l'est-il pas.

Je vous remercie d'avance !

Il y a pas mal de monde qui font ça. Les mots clés à utiliser sont "homemade cpu". Tu peux tomber sur des pages de ce type qui présentent des ordinateurs fait main un peu comme tu veux faire (pas forcément à base de transistor).

La majorité sont faites à un peu plus haut niveau, comme en utilisant des composants logiques à l'unité. Car quand tu le fait à base de transistor ça devient tout de suite … énorme.

Par exemple ce processeur 16 bits à base de transistor fait a peut prêt 10x2m.

Je te conseil de faire des recherches, il y a pas mal de doc qui existent. Mais je pense qu'un cpu basé sur des composants logiques (comme les 74xxx) est déjà plus réalisable que descendre au transistor, surtout dans un premier temps.

Bonjour,

je vois donc que je ne suis pas si fou.

Le tout dernier projet du premier lien que tu as donné est fait entièrement à base de transistors (indiqué 3000 transistors). D'autant que je compte implémenter le minimum de fonctions logiques (le langage machine va ressembler à une sorte de Brainfuck mais peut-être un peu moins pénible). Je reconsidérerai donc, après avoir conçu le plan logique.

Question circuit imprimé, est-ce que ça vaut la peine ? Faut-il beaucoup de connaissances pour les utiliser ? Et pour les autres connaissances ? Je vais aussi chercher de mon côté, mais autant le demander directement à des gens qui ont de l'expérience.

Merci beaucoup !

est-ce que ça en vaut la peine… non, ça va te coûter la peau des yeux, rien n'est vraiment compliqué à faire mais tout est très long, et tu seras déçu par le manque d'effet "wow!".

si vraiment tu tiens quand même à tenter l'aventure, tu vas avoir besoin d'apprendre comment on fait tel ou tel composant du processeur (mémoires, registres, unité arithmétique, ordonnanceur, etc…), je te conseille de chercher des cours sur VHDL, ou verilog (je connais pas bien, mais ça permet aussi de synthétiser des circuits logiques), tu trouveras certainement des exemples qui correspondent à des petits microcontroleurs…

le brainfuck est un langage qui te donne l'illusion d'être bas niveau. en fait, 7 opérations de base, c'est bien moins que ce qu'il en faut pour faire une machine qui fonctionne réellement. à titre d'exemple, quand j'étais à l'école, on a travaillé sur l'architecture d'un système vraiment très simple, on a très vite eu un jeu d'instruction d'une 50aine de commandes différentes. et quand je te dis simple, c'est simple, le microcontroleur qui sert à commander les TGV depuis 30 ans (un équivalent de ce qu'on trouve sur une carte arduino) est plus complexe que celui dont j'ai étudié en détail la conception…

+1 -0

Je te déconseille aussi de faire ça "en vrai", sauf si tu as du temps et de l'argent à gâcher pour rien (parce que tu n'en feras rien).

Si tu fais une architecture processeur sur FPGA ou simulé, tu auras déjà pas mal de notions du domaine qui seront apprises, et tu pourras ensuite t'intéresser à la conception plus en détails. Je te redirige pour ça vers le site du département de mon école qui fait ça (parce que ces cours-là sont à priori ouvert pour une fois) : http://sen.enst.fr (les cours sont en verilog/systemverilog ou systemC, mais si ça t'intéresse commence par faire ELECINF puis SE204).

Pour la partie théorique sur la conception, les cours que l'on a ne sont pas ouvert, mais ils sont plus ou moins entièrement basés sur le livre Computer Architecture : A Quantitative Approach.

Remace : en fait, move implémenté de certaines manière suffit non ? https://www.cl.cam.ac.uk/~sd601/papers/mov.pdf

+0 -0

En fait, perso, si je devais faire ça, devant la complexité du projet, je le ferai par étape.

D'abord je concevrai mon projet en VHDL/verilog/systemC et je vérifierai avec un simulateur que celui-ci semble fonctionner.

Ensuite j’achèterai un FPGA pour le tester en réel et vérifier qu'avec des entrées/sorties extérieur il fonctionne.

Ensuite je commencerai à "sortir" des morceaux, par exemple sous forme de portes 74xxx. Ex: je commence par travailler sur l'ALU, je la refais avec ces composants. Grace au FPGA je peux :

  • Comparer ma nouvelle version avec celle programmé et vérifier qu'elles ont le même comportement,
  • virer cette partie du FPGA pour utiliser ma nouvelle version et vérifier que l'ensemble continue a fonctionner.

En avançant bloc par bloc il devrait être possible d'arriver au niveau inférieur par étape et de détecter les problèmes au fur et a mesure.

Ensuite, si vraiment tu as encore de l'argent, du temps et de la motivation, commencer par remplacer ces composants un à un par des transistors. De la même façon tu pourra ainsi tout tester individuellement et par étape. Le FPGA pouvant du coup servir de module de test spécifique.

Ça me semble le plus simple.

Sinon je pense que Saroupille a raté son copier/coller, il parlait probablement de ce livre

A mon avis, des projets plus petit comme ce que l'on trouve sur le site suivant sont beaucoup plus pédagogique qu'une tentative de processeur pour de l'électronique analogique, et les projets avec arduino pour de l'électronique "numérique". https://www.sonelec-musique.com/electronique_realisations.html

Si tu veux vraiment faire ça, prévois d'abord combien ça va te coûter aussi, pour pas simplement tout jeter parce que plus les moyens.

D'accord, je vais voir tout ça. Et concernant le support de fabrications ?

Merci !

jtruc34

Bin ça dépend pourquoi. En fait tu peux jouer sur des plaques d'essais (les plaques avec des petits trous ou tu "clips" les composants dessus) mais elles sont généralement très sensibles aux parasites. La conséquence pour toi est que pour que ça fonctionne ton processeur devra probablement fonctionner à très basse fréquence.

Ceci dit ça peut justement être un moyen simple pour tester la logique d'un composant avant de faire un circuit imprimé (qui rajoute son lot de problèmes).

C'est aussi pour ça que je te conseillerai de le faire par étape. Faire un circuit imprimé peut rajouter des contraintes supplémentaires. Il peut falloir sur un projet de ce type de devoir prévoir des stabilisation d'alimentations pour la carte, ou des capa de lissages, ou des découplages d'entrées/sorties…

Plus tu descendra dans le bas niveau plus des problèmes se rajouterons, tu devrais vraiment le faire par étape.

Bonjour,

Simplement pour informer qu'un tuto sur la construction d'un ordinateur est disponible sur le ZdS même : https://zestedesavoir.com/tutoriels/613/apprenez-a-monter-votre-ordinateur/ .

P.S. : J'assure par la présente n'avoir pas lu les discussions ci-dessus et avoir par conséquent la possibilité de faire un post complètement HS :-° .

+0 -3

D'accord ! Pour l'architecture logique, j'avais déjà fait un ordinateur minimaliste complet (après, ça ressemble peut-être à rien d'existant, mais ce qui m'intéressait était justement de le faire par moi-même).

La prochaine étape serait donc de commencer la réalisation physique de certaines des parties ?

Merci beaucoup !

Je rejoins l'avis de remace <3

@unidan : pour la partie plus "électronique" il vaut mieux lire Computer Organization and Design: The Hardware/Software Interface :)

En fait, perso, si je devais faire ça, devant la complexité du projet, je le ferai par étape.

D'abord je concevrai mon projet en VHDL/verilog/systemC et je vérifierai avec un simulateur que celui-ci semble fonctionner.

Ensuite j’achèterai un FPGA pour le tester en réel et vérifier qu'avec des entrées/sorties extérieur il fonctionne.

Ensuite je commencerai à "sortir" des morceaux, par exemple sous forme de portes 74xxx. Ex: je commence par travailler sur l'ALU, je la refais avec ces composants. Grace au FPGA je peux :

  • Comparer ma nouvelle version avec celle programmé et vérifier qu'elles ont le même comportement,
  • virer cette partie du FPGA pour utiliser ma nouvelle version et vérifier que l'ensemble continue a fonctionner.

En avançant bloc par bloc il devrait être possible d'arriver au niveau inférieur par étape et de détecter les problèmes au fur et a mesure.

Ensuite, si vraiment tu as encore de l'argent, du temps et de la motivation, commencer par remplacer ces composants un à un par des transistors. De la même façon tu pourra ainsi tout tester individuellement et par étape. Le FPGA pouvant du coup servir de module de test spécifique.

Ça me semble le plus simple.

Sinon je pense que Saroupille a raté son copier/coller, il parlait probablement de ce livre

Kje

Le problème c'est que la synthèse d'un code VHDL ou Verilog sur un FPGA est faite pour s'adapter aux logic element de ce dernier qui sont composés de plusieurs LUT (Look-Up Table), de buffer et de différentes portes.

Je conseillerai plutôt Logisim souvent utilisé pour ce type de projet : http://www.cburch.com/logisim/

Concernant l'implémentation physique plutôt que de faire à base de transistors, ce qui sera long et complexe, s'orienter vers un design à base de portes logiques 74xx est plus réaliste.
Plutôt que des breadboards, des PCB doubles couches peuvent être envisagés en réfléchissant à un moyen de faire un design de PCB unique et en ayant des possibilités de câbler certaines pistes "à la main" (via des mini-switch par exemple), cela te permet de produire 10, 20 ou 50 exemplaire du même PCB, ce qui fait un coût unitaire très réduit.

Ensuite toutes les règles de base de conception d'un PCB s'appliquent.

Bonjour,

merci à tous de me répondre toujours aussi vite.

Pour le choix portes logiques vs transistor, je ferais bêtement le calcul du nombre de composants en fonction de mon plan, et je verrai si c'est envisageable ou non.

Je m'interrogeais aussi : si je choisis des CIs, quelle famille ? Je penserais aux 74AUC qui sont les plus performants (je ne vois pas pourquoi je choisirais les bêtes 74 qui sont à la fois plus lents et plus consommateurs). Et si je m'orientais vers des transistors, il est sûr que je me tournerais vers des MOSFETs. Si possible en technologie CMOS, mais ça double le nombre de transistors, alors si impossible, en technologie NMOS. Même question : quel modèle ? Est-ce qu'on aura tendance à construire le circuit entier avec le même modèle (enfin, deux, un pour les N et un pour les P) ? Si oui, sous quel critère le choisir, voire, quel modèle semble le plus adapté ?

Ça peut donc être intéressant que j'apprenne à faire des PCBs. Le problème, c'est que je ne sais absolument pas où me renseigner. Ça n'a pas l'air simple, ni bon marché (pour tester). À la base, je pensais plutôt à des perfboards ou carrément à relier les composants avec du fil et les faire tenir "dans le vide" (en fait je pensais à la fixer sur une structure pour que ce soit pas trop le bor***, mais sans que cette structure ait un rôle électronique).

Merci beaucoup !

PS: je ne sais pas pourquoi vous vous obstinez à me proposer des choses comme logisim ou VHDL, si mon plan logique est déjà fait (je l'avais d'ailleurs fait avec logisim, puis en VHDL).

+0 -0

une porte logique c'est entre 2 et 4 transitors, suivant la fonction souhaitée, voire plus (notamment Xor qui est très utilisée dans les ALU car bien plus pratique que son équivalent Nand et Nor).

le 2e projet que t'a montré Kje fait 20m², en supposant que c'est du simple couche, tu dois pouvoir arriver à facile 40m² avec des transistors (c'est plus petit mais il en faut beaucoup plus). 40m² de PCB ça va te couter un bras, quel que soit le vendeur. les perfboards, on t'a déjà dit que c'est sensible aux perturbations, et qu'en général c'est plein de faux contacts pis ça va te couter les deux bras et un oeil… quand à faire tenir les composants "dans le vide" c'est mort, 40m² de transistors, pour te donner une idée du poids, imagine 40m² de plaques de sable d'1cm d'épaisseur. tu les vois tenir debout sur la tranche toi? et alors sur une structure, même en bois, ça va te faire multiplier la surface de ton montage par 4 ou 5 facile.

d'ailleurs, tu dis que tu as déjà fait le plan logique, as-tu réellement fait la synthèse de ton système? (c'est à ça que sert VHDL dans les entreprises qui conçoivent les CI), as-tu vu combien de portes et/ou transistors cette synthèse te fait utiliser? imagine un prix de gros réaliste, et fais la multiplication, ça te revient à combien?

à ta place, j'éviterais les transistors à effet de champ (tout ce qui finit par FET, en fait), vu que le principe c'est de faire passer des électrons/trous grâce à un champ électrostatique, qui risque d'être assez fort vers ton bazar là, et que du coup bah tous ces transistors vont être sensibles chacun aux transistors voisins, ça peut vite virer au cauchemar, tout ça.

mon père a eu des soucis de ce genre avec le champ électrostatique créé par les bougies de sa moto quand il a décidé d'en refaire les centrales d'allumage (qui pourtant géographiquement se trouvaient quand même loin des bougies, une bonne 50aine de cm…). bah il avait des courants dans le mauvais sens qui lui faisaient griller ses transistors, un par un. obligé de faire un banc de test et de rajouter petit à petit des bouts de moto pour trouver d'où ça vient, ça lui a pris 6 mois, et il y avait que 2 transistors qui déconnaient…

+2 -0

Bonjour et merci !

Parles-tu bien des perfboards et non des breadboards ? Les perfboards ont besoin que les composants et fils soient soudés, il me semble, ça reste quand même sensibles ? D'autant qu'il me semble que les perfboards ne coûtent vraiment pas grand-chose.

Sinon, où pourrais-je apprendre à concevoir des PCBs ?

Pour les FETs, je n'avais pas entendu parler de ça. Est-ce vrai même avec les courants ridicules qui circulent et les tensions très basses ?

Et pour les familles de circuit, les 74AUC sembleraient adaptés ?

Merci beaucoup !

si c'est pareil sauf qu'il faut souder, tu enlève que les problèmes de faux contacts…

même si ça coute pas grand chose, tu t'embarque à en acheter plusieurs dizaine de m²…

pour apprendre à concevoir un pcb, à part une école ou un fablab, je vois pas bien qui pourrait te montrer… tu dois pouvoir trouver dans des livres, aussi, mais j'ai pas de références… après, ça reste du bon sens, en général… t'as 2 contraintes: ne pas faire croiser des pistes, et interdit de faire passer une piste entre 2 pattes du même côté d'un CI…

pour ce qui est de la centrale d'allumage de mon père, c'était un petit montage qui servait juste à informer les bougies que c'est le temps de faire une étincelle. donc un circuit en 5V ou 3.3V avec très peu de courant étant donné que c'est surtout des timers, et 2 sorties qui avaient besoin d'un transistor pour convertir un signal faible courant qui sort d'un PIC12F en commande pour le déclencheur des bougies.

je sais pas vraiment si ce sera une contrainte pour ton montage, mais réfléchis-y quand même, parce que 10 000 transistors, ça veut dire 30 000 pistes dont 20 000 capables de gérer des gros courants. ça doit pouvoir générer pas mal de perturbations, surtout si y'en a un perturbé qui se met à faire n'importe quoi, a produire 20A dans un sens qui peut détruire d'autres composants (lui, il est déjà mort, s'il arrive à laisser passer 20A dans le mauvais sens).

pour ce qui est des modèles particuliers de familles de composants, j'y connais malheureusement pas grand chose et je pourrais pas te renseigner là-dessus

malgré tout, même si le projet te semble intéressant, une fois que tu as fait synthèse de ton circuit, il n'y a plus rien d'intéressant à faire… le routage de tes cartes c'est long et chiant, la soudure de 30 000 transistors, pareil, la première centaine c'est marrant, mais après c'est de moins en moins drôle, les phases de test à faire clignotter des leds, c'est pas des plus marrant non plus, et une fois fini t'as un truc qui t'a couté 1 voire plusieurs mois de salaire et 5 ans de temps libre dans ta chambre/ton salon/ton bureau, qui ne te sert strictement à rien parce qu'en plus il te faudra reconnaitre qu'un arduino sera aussi puissant que ton mur de transistor… c'est dit un peu crûment, mais clairement, pense-y avant, à tout l'investissement que ça va te demander et de ce que ça va t'apporter au final…

+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte