Circuit intégré d'activation de bus


8

Je joue avec la conception d'un simple processeur 8 bits à partir de composants logiques de base. J'ai une assez bonne idée de la façon dont mon ALU et mes registres vont interagir, mais la seule chose que je pense pouvoir utiliser est de savoir comment basculer lorsqu'une ligne est autorisée à se connecter au bus de données principal.

Ma pensée initiale était d'utiliser et des portes pour conduire le bus. La sortie des différentes lignes de l'ALU pourrait toutes aller dans un ensemble de puces quad-ET qui sortent sur le bus. Un seul ensemble de portes ET à la fois aurait toutes ses entrées B élevées pour le laisser sortir sur le bus.

Deux choses dont je ne suis pas sûr: il semble inutile d'utiliser huit portes ET complètes par ligne, alors que je n'ai besoin que d'une seule ligne de contrôle. Y a-t-il une meilleure puce plus adaptée à cet usage? Je suis sûr que je pourrais aussi le faire avec huit transistors, mais je voudrais m'en tenir à des circuits intégrés assez courants (et bon marché).

Une telle solution ne permet aux données de circuler que dans un sens à partir du bus. Est-ce un problème? Je ne pense pas, car j'ai d'autres lignes de contrôle qui empêchent les registres de charger les données du bus jusqu'à ce que je le veuille.

Y a-t-il une puce standard à utiliser pour une porte de bus comme celle-ci?

Réponses:


11

Le 74HC244 est l'appareil type pour se connecter / se déconnecter d'un bus. C'est un tampon octal à trois états (ou plutôt un double tampon quadruple). Vous aurez besoin de la fonction à trois états pour vous déconnecter complètement du bus. Les portes placeraient le bus haut ou bas, mais cela ne permettrait pas à un autre appareil de s'y installer.

Mais comme vous parlez d'un bus de données, vous voulez probablement un tampon bidirectionnel . Ensuite, vous pouvez utiliser le 74HC245 .

74HC245

Vous avez une DIRbroche pour contrôler la direction et une /OEqui peut faire le tri-état du tampon.

modifier
JustJeff mentionne la bascule octale tri-état D 74HC374. ( Remarque: je vais parler du 74HC574, qui est fonctionnellement le même, mais qui a un brochage plus logique. ) Le 74HC574 est en effet une partie intéressante et un classique depuis la série SN74xx. Alors que le 74HC245 vous donnera un tampon à trois états, le 74HC574 a également une fonction de mémoire , sous la forme d'une bascule octale en D. Idéal pour faire des registres, et grâce à la connexion à trois états au bus, vous pouvez facilement acheminer votre flux de données.
Il y a cependant un inconvénient à cela. La sortie du registre n'est disponible que pour le bus, donc toute communication devrait y passer, pour que le bus devienne un goulot d'étranglement. Par conséquent, je pense qu'il vaut mieux remplacer le 74HC374 par une bascule octale D 74HC273 suivie d'un tampon à trois états 74HC244 séparé pour la connexion au bus. De cette façon, la sortie du registre est également disponible en interne lorsqu'un autre signal occupe le bus. (Je ne sais pas s'il existe une partie compatible avec le brochage plus logique. Vous pouvez également utiliser un 74HC574 avec une connexion câblée /OEà la terre.)


Ça a l'air génial! Je ne sais pas encore comment mes registres interagiront avec le bus, mais je pense que ceux bidirectionnels y aideront.
captncraig

@CMP - dans une situation comme celle que vous décrivez - construire un processeur à partir de zéro - les sorties à trois états sont vos amis. Par exemple, le 74hc374 est un registre 8 bits qui fournit une sortie tri-stateable dans la même puce. Vous pouvez bus les sorties de plusieurs d'entre elles ensemble, et juste affirmer l'OE de celui que vous voulez "sur le bus".
JustJeff

Il convient de noter que de nombreux processeurs avaient en fait des registres qui pouvaient uniquement prendre en entrée ou envoyer une sortie depuis / vers des bus partagés (dans de nombreux cas, entrée depuis un bus; sortie sur un autre). Bien qu'une telle conception puisse dans certains cas être un goulot d'étranglement, je ne pense pas que l'objectif ici soit de rivaliser avec un i7. Notez que si l'on veut qu'un registre prenne l'entrée d'un bus et soit sélectivement sortie vers deux bus différents, on pourrait utiliser un 74HC273 et deux 74HC244, mais on pourrait faire le travail avec seulement deux 74HC574 qui verrouillent les mêmes données.
supercat

5

(1) Les portes ET sont intrinsèquement inappropriées pour être utilisées comme tampons de bus transparents car si elles ont des pilotes de sortie pleinement actifs, elles interagissent et si elles sont "à collecteur ouvert", la logique s'inverse.

Vous pouvez utiliser des portes OU à collecteur ouvert à 2 entrées comme pilotes de ligne unique sur un bus commun.

Si vous alimentez "data" et "not_enable" vers une porte OU, la sortie sera élevée si not_enable est élevée et suivra les données si not_enable est faible.

Lorsque la sortie d'une porte à collecteur ouvert est élevée, elle ne charge en aucun cas le bus. Lorsqu'il est faible, il charge le bus avec une sortie basse activée. Ainsi, plusieurs portes O à collecteur ouvert peuvent partager le bus et seules celles activées (généralement une à la fois) peuvent conduire le bus. Vous avez besoin d'un seul pullup pour tirer le bus haut et n'importe quel nombre de portes pour le faire descendre.

(2) EDUC-8 était / est un micro-ordinateur 8 bits basé sur TTL présenté comme un projet de plusieurs mois dans le magazine Electronics Australia d'août 1974 à août 1975. Même si vous ne vouliez pas le copier, vous pourriez apprendre beaucoup en regardant comment il a été mis en œuvre. Il y a plusieurs passionnés qui ont construit des copies ces dernières années.

Documentation très complète du parcours EDUC-8 d'un utilisateur ... Idem ... Comprend des détails sur sa PCB de transfert de toner faisant plusieurs PCB latrgsih et bien plus encore.

Wikipedia EDUC-8

Page de liens

Quelques documents

Image PCB

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.