(peut être cross, j'ai mis du temps à rédiger, ce post vient à la suite du
./76>)
bon laissez tombé j'ai dit tout un tas de conneries ....
Non, un très gros tas. je vais t'expliquer.
a part ca, je cherche un additioneu 16 bit, est que vous connaissez desreferences ?
Mets deux additionneurs 8 bits en cascade.
jvoulais savoir un truc, la memoire video 0x4c00, elle est dans la ramnon ?
Oui, parce que si elle est en ROM tu vas avoir du mal à y écrire.
pk? tout est possible
Si c'était vrai je serais riche puissant et tout.
Faut pas rêver mon coco. tout n'est malheureusement pas possible.
Euh oh attends bidoo t'as fumé quelle herbe? Parce que là tu es
totalement à côté de la plaque. Ca m'étonne même que je sois le premier à te le dire au bout de 3 pages.
Il est clair que tu n'as aucune notion du fonctionnement de l'appareil que tu es en train d'utiliser pour lire ce message: un ordinateur. Apparemment c'est encore le cas avec ta calculatrice.
Un système à microprocesseur est extrêmement compliqué. Cela n'a rien à voir avec une sonette de porte.
Si tu essayes de reproduire un microprocesseur uniquement en logique câblée, ce n'est pas 2m² de chambre qu'il va te falloir, c'est 4 salles de classe. Tu es en train de réinventer le premier ordinateur, nommé ENIAC, qui occupait l'équivalent d'une salle de classe, avec des facultés qui ne dépassaient pas les facultés d'un convertisseur franc/euro. Tu n'imagines même pas la complexité d'un système tel que la TI , qui te parait simple.
Je suis gentil à défaut de résoudre ton problème je vais améloirer ta culture (j'en suis certain vu que tu ne sembles pas être un expert en électronique. Moi non plus, mais j'aurais quand même essayé de lire quelques documents avant de me lancer dans le câblage d'un processeur.)
Premièrement, laisse moi te dire que ce n'est pas très malin de te vanter dans ta signature d'avoir hacké un mec, ca coute vachement cher en amendes et années de prison. En si tu as vraiement flingué le dd d'un mec qui n'a que TENTE de te hacker c'est toi le salaud. ca te regarde et je m'en fous. enfin revenons à nos moutons.
Je vais faire un pavé, je te demande de prendre le temps de le LIRE il devrait répondre à pas mal de tes questions.
commencons par la base des bases. Tu ne feras jamais marcher un engin de ce type avec des relais. t'entends bien JAMAIS. T'aurais pas 80 ans que le boot code aurait pas fini d'initialiser l'écran. Même dans l'ENIAC ils avaient des triodes à vide. un relais tu feras jamais plus d 10 commutations par seconde. Même tes machins à 1 µs sont inutilisables, il en faudrait trop.
Ensuite la base d'un système calculateur; ya une mémoire. même deux mémoires.
la première c'est la RAM (random access memory, mémoire à accès aléatoire). Dans la TI il y en a 256 ko, c'est à dire qu'il y a 262 144 groupes de 8 bits que tu peux lire et écrire pour stocker les données. Pour stocker un bit il faut une bascule D (pour la SRAM) composée au minimum de deux portes logiques NON ET, chaque porte requiérant au moins un transistor. Au total déja y'a au bas mot un bon million de transistors (donc... de relais) rien que pour la mémoire.
Et encore, ce n'est pas tout, car la RAM ne peut stocker que les données d'exécution. Pour stocker durablement un programme faut de la ROM ou de la FLASH. La ROM est un masque de fils gravés au LASER sur la puce, ou bien par lithographie. Impossible à faire en dehors d'une salle blanche et avec du matériel de malade. Si tu refais ca rien qu'avec des fils et des diodes, tu vas devoir dévaliser tous les fabricants de fil électrique, et passer une bonne partie de ta vie à programmer la ROM. Ne parlons même pas de la place nécessaire pour caser tous ces fils, ni des temps de propagation des signaux dans ces fils, qui sont loin d'être négligeables dans un système rapide comme la TI.
La flash je vais pas te dire de conneries je sais pas comment ca marche, si ce n'est que c'est des transistors améliorés.
Après attaquons un truc rigolo, l'écran. Est ce que tu as une idée du fonctionnement d'un écran? Eh bien chaque ligne de pixels est balayée plusieurs fois par seconde, oui oui de la même manière dans un écran cathodique et dans un écran LCD. c'est juste l'éclairage qui change.
Donc par exemple dans la TI il n'y a pas moins de 5 puces spécialement dédiées à l'affichage (2 pour les lignes, 64 lignes par puce, 3 pour les colonnes, 80 colonnes par puce). Ceci est parfaitement inutile sans le contrôleur qui dit quoi envoyer. Car il faut un système indépendant du logiciel pour balayer l'écran, dans un PC c'est la carte graphique qui s'en occupe, mais dans la TI ou pour n'importe quel autre affichage, il faut une mémoire RAM spéciale. Pourquoi? Parce qu'il se produit deux choses à la fois. D'un côté le contrôeur de l'écran (vois: une puce séparée du processeur et de la mémoire) doit envoyer régulièrement 20 fois par seconde le contenu de la mémoire graphique à l'écran, ce qui représente (128*240) bits soit (128*240/8 octets). Calcule toi même le débit de données, tu comprendras que le processeur ne peut pas faire ca tout seul.
Mais ce n'est pas tout. EN MËME TEMPS, le processeur qui fait les calculs et commande les affichages doit ECRIRE dans la même mémoire pour choisir les pixels à allumer ou à éteindre. Or dans une puce de mémoire normale, on ne peut faire qu'une lecture OU qu'une écriture simultanément dans la puce.
[supposition à confirmer par les autorités compétentes en HW TI svp] Dans les dernières calculatrices (hw2), l'écran est en effet "mappé en mémoire", mais en fait quand tu écris dans les adresses 0x4C00 et suivantes, tu écris dans le contrôleur graphique qui est une mémoire spéciale lisible en deux endroits en même temps. Comment? C'est compliqué, il faut que chaque case mémoire aie deux sorties de lecture. Ca s'appelle de la ram dual port ou VRAM) Dans les anciennes TI (hw1) les accès étaient synchronisés donc la mise à jour de l'écran se faisait avec de la ram normale (je suppose à donf là). C'est pour ca qu'avant on pouvait faire changer cette addresse, donc faire des 7 niveaux de gris, alors que maintenant faut recopier toute la mémoire d'un buffer dans le contrôleur écran, donc ca prend plus de temps et on peut pas le faire assez vite pour que les 7 nvdg soient exploitables
[fin suppositions]
Déja rien que là tu dois saisir que c'est plus chaud.
Ensuite passons au CPU proprement dit.
UN CPU c'est pas un cerveau. C'est une calculette en séquence. dans un cpu de base comme celui de la TI, il ya plusieurs fonctions, je passerai volontairement sur les détails.
[note aux connaisseurs: je sais pas si le 68000 est pipeliné, je fais au plus simple]Déja y'a une horloge. Sur la ti c'est un simple réseau RC. Cette horloge fonctionne dans notre cas à 12 MHz c'est à dire qu'elle passe dans le même état 12 millions de fois par seconde.
Cette horloge est ensuite divisée dans la puce pour créer les étapes d'un séquenceur, qui compte par exemple 1,2,3,4, 1,2,3,4, etc... A chaque numéro il se produit une étape importante du calcul.
Ensuite dans le CPU il y a un sous ensemble complet qui se charge de la gestion du bus externe. Il choisit quel périphérique il adresse (ram, flash, mémoire graphique, ports d'entrée sortie) ; il gère les erreurs de bus , les attentes de périphériques lents, etc... En fait son rôle est de charger les octets de mémoire dont a besoin le centre du processeur pour fonctionner.
Une fois que ces octets ont été lus, ils sont présentés au décodeur d'instructions qui décide si l'octet (en fait les deux octets, puisque c'est un processeur 16 bits) qu'il vient de lire veulent dire quelque chose qu'il connait, par exemple addq.l ou bsr ou encore nop ou move.w
Une fois qu'il sait, il charge encore quelques octets pour les paramètres de l'instruction.
Ensuite, selon l'instruction qui a été décodée, on a activation de l'une des fonctions de l'UAL , unité arithmétique et logique. Puis on présente à l'UAL les données de l'instruction. L'UAL fait le calcul, puis renvoie les données à l'unité de gestion de bus pour recaler les données en mémoire.
Je ne sais pas trop bien ce que tu imagines quand j'écris 'on présente à l'UAL les données de l'instruction.'.
Je vais essayer d'être plus clair.
D'où proviennent les données de l'instruction? On va dire 3 endoits: un registre, une donnée directe et une donnée quelque part en mémoire (adressée par un pointeur) Cela veut dire que pour chaque opérande d'instruction, il faut un aiguillage sélectionnable de AU MOINS 3 voies vers une voie, en réalité c'est 16 vers 1. Si on veut faire ca avec des circuits normaux tu dois savoir que les multiplexeurs (nom électronique de l'aiguillage) que l'on trouve dans le commerce sont des aiguillages de 4 bits en provenance de deux voies. Il en faut donc 4 si tu veux gérer deux voies de 16 bits, et il faut encore doubler leur nombre (8) car on doit sélectionner plus de deux voies, et il faut encore doubler car la plupart des instructions ont deux opérandes. Cela veut dire que pour faire le minimum du squelette d'une partie du décodeur d'instructions il va te falloir 16 puces de, à la louche,1cm x 2cm. En réalité, toute cette circuiterie, hyper optimisée en vitesse et traitant énormément plus de complexité, tient sur une surface de silicium de moins d'un 1/10 de mm de côté.
Maintenant l'ALU. Les seules ALU que j'ai trouvé jusqu'à maintenant géraient 4 bits et pas de multiplication. Pour 16 bits il te faudra au moins 4 puces <<ALU>> Plus des portes logiques pour combiner les signaux de contrôle.
Les portes logiques sont trouvables par boitiers de 4, qui font 1cm par 2cm Il va t'en falloir des dizaines.
Ton truc, tu vas vouloir que ca multiplie. Un multiplicateur, c'est tellement compliqué qu'on en fait des thèses dessus pour les optimiser.
Ca fait des additions successives et ca accumule les résultats après décalage.
Je ne parle pas ici bien sûr de tous les problèmes de mise au point inhérents à l'extrême complexité de ton circuit supposé, aux erreurs de câblages, aux courts-circuits, aux chauffages, aux pertes ohmiques diverses, au mauvais soudage, au prix des puces, à leur disponibilité, etc, et même plus.
Il ne suffit pas d'être un doux rêveur pour faire de l'électronique, inventer des trucs très compliqués et dire après que 'tout est possible'. En l'occurrence, non, là, c'est pas possible, en plus j'y ai déja réfléchi et donc je sais de quoi je parle. Et je voulais pas faire un 68000.
Pour la petite histoire, je te rappellerai que le premier processeur électronique digne de ce nom, le 4004 de Intel, fonctionnait sur 4 bits, à 100 kHz et décodait un très petit nombre d'instructions. Je n'ai pas confirmation de ce que j'avance, mais cela ne m'étonnerait pas que la surface totale des schémas de la bestiole couvrent plusieurs mètres carrés de plancher.
Pour conclure je dirais que ce qui est le plus important en électronique et plus généralement en physique, c'est pas les équations. pas du tout. Le plus important c'est le
bon sens. C'est malheureusement ce qui manque généralement , même aux élèves ingénieurs (et je suppose que tu n'en es pas encore un)
Un exemple qui m'avait frappé: au bac une fille à côté de moi n'a pas eu peur de calculer un aimant permanent de 10
6 Teslas. Que penses tu de cette valeur? rien? Quel que soit son calcul il est faux car aucun solénoïde non supraconducteur ne dépasse le tesla.
En élec c'est pareil. On s'en fout de savoir si une résistance fait 18.2 ohms ou 24,7 ohms. Ce qui est important c'est l
'ordre de grandeur, pas le calcul. Faut pas mettre Un kilo-ohms là où il faut 10 ohms.
Voila tout ca pour te dire que tu ne te rends pas bien compte de l'énormité du projets que tu comptes entreprendre, surtout en refusant d'utiliser des portes logiques. Il est matériellement impossible pour un amateur de décortiquer entièrement un microsystème de la complexité d'une TI.
Si vous en êtes ici je vous remercie d'avoir lu mon topic en entier.
Quant aux autres de ce topic je ne vous félicite pas. Serais je le seul à avoir un peu de bon sens dans ce topic avec notre regretté NSPIRIT? Je ne pense pas pourtant.... ou alors vous le laissiez maronner dans sa sauce?
(Je m'excuse par avance pour les fautes d'orthographe que j'ai pu commettre et qui ne doivent pas être bien nombreuses)