![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Vendredi 25 Juillet 2008 | Sitemap | Fr | En | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Menu
|
Le projet FS22-647HardwareAfin que vous puissiez vous aussi réaliser cette machine, vous pouvez télécharger le projet complet - ndlr: schémas, PCBs, layouts au format Gerber274-X, fichier de perçage - développé sous Altium DXP2004 (anciennement Protel). Ils sont commentés ci-dessous afin de mieu les comprendre, si néanmoins des aspects resteraient mistérieux, n'hésitez pas alors à passer par le fomulaire de contact. Les téléchargements des datasheets, schémas et PCB du projets sont tout en bas, dans le chapitre ressources. La carte mère
Le processeurCe sous-chapitre détaille le fichier CPU.SchDoc. La première partie du circuit abordée est le reset. Il peut être commandé soit par pression sur S1 ou en envoyant une impultion sur A1 (Il ne s'agit pas formellement d'une antenne, mais d'un fil flottant pour y connecter une sortie d'un générateur de fonction par exemple). R1 joue le rôle de pull-up, et C1 absorbe le rebond lorsque l'on appuie sur le bouton. U10A (qui est une porte AND) est à comprendre comme une porte OU avec entrées et sorties inversées. En effet, si un 0 logique est passé sur l'une ou l'autre de ses deux entrées, alors la sortie sera à 0 et le reset sera commandé. La sortie à 1 logique n'étant actif que lorque les deux entrées sont à 1. La deuxième partie concerne la génération et le réglage du clock. U11 est un EXO-3C-20.000. Il s'agit d'un générateur d'onde carrée avec un rapport cyclique de 50% à une fréquence de base de 20.000 divisible par 2n où n est la valeur binaire entrée sur D1 à D3. R8 est un réseau de pull-ups et S2 sert à choisir n et si la division est activée ou non. Viennent ensuite les deux latches U9A et U9B, elles sont actives chaque fois qu'un appel par IORQ est fait. Alors elles créent un retard d'un cycle horloge, ce qui permet d'éviter des erreurs de latences dues à la faible vitesse de certains périphériques. La batterie de portes logiques U6A, U6B, U10B et U10C, servent à vérifier qu'il s'agisse bien d'un appel au hardware externe. Les résistances R3 à R7 sont des pull-ups qui servent à garder à 1 les signaux du bus de commande non utilisés. Le démultiplexeur U7A sert à décoder les adresses pour la mémoire. En effet, la ROM est située tout en bas de la plage mémoire. Son adresse commence à à 0000h et se termine à 3FFFh, il s'agit d'une EPROM de 16 ko. La RAM, elle se situe au dessus, elle est donc adressable dès 4000h et se termine à BFFFh; en effet, elle fait 32 ko. Pour que ''adressage soit discret et fonctionne de cette façon pour le software, il faudra que l'adresse 4000h du bus d'adresse entre en 0000h sur la RAM. Aussi, lorsque A14 ET A15 sont à 0 - condition vérifiée par U17A - nous nous situons à une adresse forcément inférieure à 4000h, donc c'est la ROM qui sera sélectionnée par U7A. Pour adresser la RAM de façon correcte, il faut que A15 du CPU soit sur A14 du chip mémoire, afin de soustraire à chaque fois 4000h de la valeur d'adressage et de plus, la mémoire ne peut être sélectionnée uniquement si A14 OU EXCLUSIVEMENT si A15 est à 1, condition vérifiée cette fois-ci par U18A. En effet, lorsque les deux sont à 1, alors nous nous adressons à une adresse supérieure à BFFFh, puisqu'au moins égal à C000h. Ceci permet une future extension possible de 16 ko de RAM supplémentaires. U8 décode les adresses pour les accès aux périphériques. En utilisant A5, A6 et A7, on peut obtenir toutes les sorties du démultiplexeur en allant par pas de 20h, ainsi chaque périphérique dispose de 32 adresses pour lui. Et il est donc possible d'avoir en tout 32 x 8 périphériques, soit 256, ce qui est somme tout, largement suffisant pour une petite machine. U6C sert juste à avoir une entrée de validation inverse sur U8, afin de vérifier qu'il n'y aie pas d'erreurs. Les autres condensateurs sur ce schéma servent au découplage des ICs.
Les mémoiresDans le fichier MEMORIES.SchDoc, les condensateurs C10 et C11 servent au découplage des deux mémoires. Le reste n'étant que de la connectique entre les deux chips et les bus de données, adresses et contrôles. Les connecteurs sériels RS-232sont dessinés dans le schéma PERIPHERALS.SchDoc. Ils communiquent avec le CPU par le z80 SIO/2, U4, lui-même découplé par C12. Il met les signaux en forme mais sous une tension de 5V. Ils sont adaptés à une tension d'environ 12V par les MAX232 U13 et U14 pour le premier connecteur et U16 et U17 pour le second, 2 par canaux car un pour l'émission et un pour la réception des données. Ils élèvent la tension par charges capacitives C13 à C31. CON1 et CON2 sont les deux connecteurs à proprement parler. MUBUS et LCD alphanumériqueMUBUS est un connecteur d'extension général utilisé à l'EPFL notamment par le LAP (Laboratoire d'Architecture des Processeurs, anciennement LAMI), Il permet de connecter, une imprimante, un programmateur d'EPROMs, un autre ordinateur, etc. Sur la feuille MUBUS_LCD.SchDoc, U5A, U5B et U6E servent à activer sa broche de validation en lecture ET en écriture. Le reste des fils est directement connectés aux différents bus.
Pour l'écran LCD, Le principe est le même. U12A, U12B et U10D valident la communication avec l'écran en lecture et en écriture. Les trois portes NOT U6D, U6F et U15A servent à inverser la logique état bas à une logique état haut. Le réglage du contraste et de la lumino'ité est assuré directement par des potentiomètres inclus dans le boitier de l'écran, et n'est pas mis sur la carte, pour des raisons de commodités. C33 et C34 servent au découplage d'ICs.
Le BUS FS22-647Il sert à connecter les cartes d'extensions sur la carte mère. CON5 à CON9 sont les connecteurs d'extension, On voit sinon les borchages avec les bus de données, adresses et contrôles. Des cartes pour ce bus ont été réalisés, telles qu'un port parallèle supplémentaire, et un port AT, PS/2 pour clavier PC. Les PCBsIl n'y a pour l'instant pas de typons, car les fichiers de fabrication sont au format GERBER274-X et détourage et perçage CNC. Toutefois, dans un soucis de popularisation, il y en aura prochainement. Le port parallèleSes avantagesSimple à mettre en œuvre, le port parallèle est un atout précieux. En ajouter un tel qu'il est connu dans le monde du PC permet notamment de pouvoir connecter une imprimante avec le FS22-647. Pourquoi ne pas tester un programamteur ou encore tester votre appareil que vous aviez développé il y a tant de temps sur ce port parallèle et dont vous ne voulez pas adapter la connectique au port FS22-647. Bref, vous l'avez compris, les possibilités apportées sont énormes.
FonctionnementLa simplicité est due au fait même que le port soit parallèle, il n'y a pas besoin de «sérialiser» les données comme avec les ports RS-232 ou le clavier. Le port parallèle tel qu'il existe sur PC est composé de trois registres. Ils sont commandés par par U1A. Ce DEMUX est actif lorsqu'on essaie des accès en lecture ou en écriture sur un port entre E0h et FFh grâce aux portes AND de U6 et OR de U5. Toutefois A0 et A1 ne rendent que 4 adresses valides E0h, E1h, E2h et E3h. Le premier rgistre, à l'adresse E0h est en écriture uniquement, il sert à écrire les données sur 8 bits. C'est U2 ici qui s'occupe de transmettre les données s'il est sélectionné.Le deuxième, E1h est un registre en lecture seule, dont U3 s'occupe d'ouvrir ou non la ligne. Il permet à lire les FLAGS du port parallèle. E2h et E3h forment le dernier. Ils sont en écriture uniquement, E2h affecte RESET avec D0 et E3h affecte AUTOFEED avec D1. C'est U4 qui s'occupe de vailder ces lignes. Les résistances R1, R2, et R3 à 10kΩ sont des pull-ups pour des lignes non utilisées. R4 est un réseau de résistances de 10kΩ aussi et sert de pull-down, pour garantir un état par défaut défini sur les lignes du FLAG. C1 à C6 servent à découpler respectivement les ICs U1 à U6. Toutes les portes logiques non utilisées sont misent à la masse pour éviter des perturbations. Tableaux des registres
x = inutilisé L'écran LCD graphiqueAu niveau hardware, l'implémentation de l'écran LCD graphique est très simple. On lit et écrit les données à l'adresse C0h. On lit les états (status) et écrit les commandes à l'adresse C1h. Le bus de donnée est directement lié via le bus FS22-647 à l'écran. Le potentiomètre R6 avec les résitances R1 et R5 permet de régler le contraste de l'écran. R7 sert à régler le rétro-éclairage à LED. On peut choisir de l'activer ou non avec un jumper mis soit sur W3 ou W4. R3 et R4 servent respectivement de pull-down et pull-up. Attention! Ne jamais connecter W3 et W4 en même temps! Un jumper sur W1 ou W2 permettra de choisir si on souhaite utiliser un signal externe pour appliquer un reset sur l'écran. Par défaut, c'est le réseau RC R2,C1 qui doit être connecté à RST. Le temps de montée suffira à assurer un reset suffisament long au départ, et à garantir un état haut par la suite. Ce sont les lignes RD et WR du z80 qui servent directement à spécifier si on est en lecture ou en écriture. le CE est produit par le décodeur d'adresse de périphériques le 74LS138 de la carte mère.
Au niveau hardware, c'est tout. Il n'y a rien de plus, les connections sont très simples. Ceci est dû au fait que tout est intégré dans l'écran, y compris 32 ko de RAM vidéo, de type statique, que l'on peut paginer comme on le souhaite, entre mémoire texte, graphique et ainsi que pour générer des caractères.
Le port clavier A/TPréambuleCette carte permet de connecter un clavier pour compatible IBM PC-AT ou PS/2, néanmoins, elle ne gčre ni les claviers XT ni USB. Le software de la carte travaille le scan-code set 2.
Fonctionnement
Le port clavier dans la norme A/T ou PS/2 édictée par IBM avec la venue de l'IBM PC-AT permet une communication sérielle grâce à 5 fils entre le clavier et le FS22-647. À savoir un VCC de +5VDC (fil 5), un GND (fil 4), un reset, qui est inutilisé ici (fil 3), la ligne de donnée ou data (fil 2) et enfin la ligne d'horloge ou clock (fil 1). Les lignes de data et clock sont à collecteur ouvert, c'est-à-dire qu'il faut les maintenir à un état logique haut, grâce à R1 et R2 de 4.7 kΩ. Les clavier IBM AT étaient munis, à l'origine, d'un micro-contrô intel i8048. Depuis, il existe de nombreux contrôleurs compatibles. C'est toujours lui qui s'occupe de générer le signal d'horloge sur la ligne d'horloge. La fréquence, relativement lente, entre 10 et 15 kHz permet de gérer aisément le clavier. Sur le FS22-647, le clavier est adressable en 60h et lisible en 61h. Les trois portes NAND U4A à U4C permettent de valider l'accès au périphérique indépendament que la requête soit en lecture ou en écriture. C'est U1A qui s'occupe de décoder cela, avec A0 sur sa pin 2.
La carte sonoreDescriptionSon fonctionnement est très simple et repose quasi entièrement sur le générateur de son programmable AY-3-8912 de General Instruments. Le signal d'horloge est divisé par les deux bascules JK (74LS112) de U3. ainsi, avec le jumper, on peut choisir d'envoyer une fréquence de base identique à celle du processeur, ou bien 1/21 fois la fréquence de base ou jusqu'à 1/22. C'est la fréquence choisie par défaut avec la fréquence du processeur à 5 MHz. Le AY-3-8912 se base donc sur une fréquence de 1.25 MHz, et est donc capable de jouer des sons et bruits d'une fréquence de 19 Hz à 78125 Hz. Les three-states de U2 servent à valider l'accès à U1. Les pull-down servent à le maintenir inactif le reste du temps. Le son est filtré en sortie avec R13, R14 et C4 afin d'éviter un trop gros bruit. Toutes les autres résistances sont des pull-ups afin de maintenir stables les états des pins non utilisées sur U1 et devant être à un état logique haut sur U3.
Extrait musicalVoici un extrait des performances (largement sous-exploitées) du chip sonore du FS22-647, au travers d'une célèbre musique de Martin Galway.
L'alimentation
Mise en garde
PrésentationChoisie pour sa simplicité et son apport de courant supérieur aux traditionnels régulateurs LM78xx limités à 1 A en boîtier TO-220. Cette alimentation repose sur le circuit à découpage LM2569T-5.0. FonctionnementLe secteur arrive par le connecteur J1, une protection contre la surintensité est assurée par le fusible F1 avec une valeur à 0.5AT. Le transformateur doit avoir une puissance de 50VA environ et abaisser à 15 VAC. Valeur assez haute, mais très pratique, si par la suite, une alimentation 12 VDC veut être ajoutée. Pour l'instant le +5VDC suffira. Un pont de diode D1, pouvant supporer le courant redressé, est directement filtré par C1 avec ses 1000 µF - Le taux d'harmoniques généré par D1 étant si faible, qu'il n'est pas nécessaire de filtrer la phase. Vient ensuite le régulateur. La sortie est de +5VDC, lissé par le filtre LC (L1, C2). L1 doit avoir une valeur minimale de 33 µH, plus elle est haute, mieux elle lissera. Une valeur trop haute, n'apportant plus d'améliorations. C2 est fixé à 220 µF. D2, une schottky 1N5820 agit comme rectificateur. La LED D3, avec R1 sert à indiquer si l'alimentation est sous tension ou non. La sortie propre et régulée est sur J2.
RessourcesLes datasheetsVous pouvez télécharger ci-dessous les datasheets utilisés pour la réalisation du FS22-647.
Les fichiers du projet FS22-647
|
Sondages
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Version 1.4 - Avenir OpenWork concept - février 2008 - Fait depuis kubuntu Linux Les marques, logos, services et produits cités dans ce site sont la propriété de leurs sociétés et auteurs respectifs. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||