[74LS612] MMU 8-bit -> 12-bit, un EPM peut émuler ça ?

Placez ici vos trucs et astuces, étalez sans retenue votre savoir-faire et votre science qui va nous permettre de redonner une apparence neuve et fonctionnelle à nos bouzes.

Modérateurs : Papy.G, fneck, Carl

Répondre
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

[74LS612] MMU 8-bit -> 12-bit, un EPM peut émuler ça ?

Message par hlide »

Alors j'ai quelques puces intitulées 74LS612. Cette puce m'intéressait car elle permet la pagination dans un espace logique 16-bit via 16 pages.

Le truc, c'est qu'elle embarque 16 registres de 12-bit pour contenir l'adresse de base de chaque page.

Pour le coup, je me dis que l'EPM est mal équipé pour l'émuler. @Fred_72, @6502man ?

Pour la petite histoire, j'étais intéressé à l'utiliser avec un OUT (BC),A où :
- A les 8 bits de poids faible de l'adresse de base,
- B les 4 bits de poids fort de l'adresse de base et les 4 bits de sélection du registre de page où écrire l'adresse de base,
- C le port du PMM.

Je pourrais non seulement étendre la quantité physique de mémoire et placer des blocs stratégiques à des adresses logiques, mais je pourrais aussi découper en fonction des "devices". En effet, si je prends les 3 bits de poids fort de l'adresse de base pour les communiquer à un démultiplexeur qui donnera alors jusqu'à huit "devices" : ROM, RAM, registres de périphériques.

Par exemple, ça donnerait une adresse de base - ou plutôt une adresse physique de page - qui serait :
- A'[11..0] : identique à A[11..0] - offset dans la page de 4 Ko,
- A'[16..12] : adresse physique de cette page de 4 Ko,
- A'[19..17] : /CS0 .. /CS7 - le "device" sélectionné pour cette page de 4 Ko.

Tout ça étant conditionné bien sûr sur le temps de la propagation totale.
74LS612.jpg
74LS612.jpg (114.46 Kio) Consulté 3829 fois
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [74LS612] MMU 8-bit -> 12-bit, un EPM peut émuler ça ?

Message par 6502man »

Alors le 74LS612 n'est pas émulé dans Quartus, mais pour paginer il y à plusieurs autres façon de procéder.
Par exemple, ça donnerait une adresse de base - ou plutôt une adresse physique de page - qui serait :
- A'[11..0] : identique à A[11..0] - offset dans la page de 4 Ko,
- A'[16..12] : adresse physique de cette page de 4 Ko,
- A'[19..17] : /CS0 .. /CS7 - le "device" sélectionné pour cette page de 4 Ko.
Pourquoi tu pagine pas sur A19-A12, en tout cas c'est ce qui me vient à l'esprit en lisant ton énoncé ???

Je suis très loin d'être un expert mais j'ai fait quelques montage en paginant sur 512K de ROM et 512K de RAM, et ca fonctionne très bien
avec un EPM7128 et un schéma classique à base de 74LS373 ce qui donne jusqu'à 256 pages réparti comme tu veux ;)

Pour le temps de propagation avec les CPLD c'est très simple les délais ne ce cumule pas que tu ai 10 portes logiques enchainées ou 1 le délai seras le même.
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: [74LS612] MMU 8-bit -> 12-bit, un EPM peut émuler ça ?

Message par hlide »

Mais c'est le cas A[19..12] va être paginé, mais les trois bits de poids fort de la page serve à indiquer quel device et non une adresse physique (l'adresse que tu passes à une SRAM, une FLASH, etc.). Je regarde pour le 74LS373.
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: [74LS612] MMU 8-bit -> 12-bit, un EPM peut émuler ça ?

Message par hlide »

J'ai peut-être cafouillé dans le nombre de bit d'adresse final...

Supposons qu'une page fasse 4Ko. J'ai 16 registres de page : j'ai bien une adresse logique sur 16-bit (4-bit d'index du registre de page + 12 bits d'offset de la page). Un registre de page va contenir 12 bits d'adresse de base. Donc au total ça fait 24-bit d'adresse (12 bits donnés par le registre de page + 12 bits d'offset de la page), soit 16 Mo adressable par le PMM. 16 Mo, c'est plutôt énorme. Je décide donc que, sur les 12-bit donnés par le registre de page, de réserver les 3 premiers bits de poids fort pour indiquer le chip select (soit 8 en tous) et l'adresse de base est réduite de 16 Mo à 2 Mo.

Imagine que tu es un backplane avec 8 slots. Tu as un /CS associé à chaque slot de 0 à 7. Le PMM te permet de transformer une adresse 16-bit en une adresse 21-bit et le chip select qui va avec. Dans chaque slot, le périphérique pourra s'activer avec le chip select concerné et utiliser les 21 bit d'adresse en plus des données à sa guise (SRAM, FLASH ou registres de contrôle). C'est très flexible. Le programme choisi de mapper l'accès à l'endroit où il veut dans son espace logique limité à 64Ko.

Au niveau des registres de page : ça revient à avoir une file de 16 registres contenant 12 bits à écrire via un OUT (BC),A et à lire quand un /MREQ est actif avec un /RD ou /WR actif également. En somme une "SRAM" de 24 octets.
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [74LS612] MMU 8-bit -> 12-bit, un EPM peut émuler ça ?

Message par 6502man »

Malgré tout ça me parait réalisable avec un EPM en utilisant un schéma à plusieurs 74 tu peux y arriver .
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Fred_72
Messages : 1131
Inscription : 22 mai 2019 13:10
Localisation : Sarthe

Re: [74LS612] MMU 8-bit -> 12-bit, un EPM peut émuler ça ?

Message par Fred_72 »

Je n'avais pas vu ce post. Donc j'apporte une réponse tardive:
Pour émuler ton circuit (74ls612) il faut beaucoup de registres: au moins 16*12 + les buffer d'I/O donc ça ne tient pas dans un EPM "classique". Il faut se tourner vers des versions plus récentes en 3.3V (par exemple un MAX II (EPM 240, 570...)).
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [74LS612] MMU 8-bit -> 12-bit, un EPM peut émuler ça ?

Message par 6502man »

Si j'ai bien compris la problématique de Hlide:

Il faut paginer sur les adresses A[16..12] et A[19..17] puisque les adresse A[0..11] sont directement connectés aux ROM, RAM ...
Ce qui ce résume à avoir une bascule 5 bits A[16..12] d'un côté (pagination)
et un décodage d'adresses 3 bits A[19..17] de l'autre (activation par /CS)

Ca peut être fait sans utiliser un 74LS612 mais en combinant soir d'autres portes (FLIP-FLOP, ... ) soit directement en VHDL.

Un exemple qui n'utilise que très peut de macrocells <50 :
Extrait d'un de mes montages et tu voit que tu peu avoir 8 bits disponibles par bascules ;)
et tu peut utiliser un décodeur pour activé les 8 périphériques ;)
La dans l'exemple il y à 2 décodeurs spécifiques mais ont peut en avoir 1 par périphérique ou mettre un 1 parmi 8 ....
EPMdecod.jpg
EPMdecod.jpg (852.72 Kio) Consulté 3607 fois

Et je pense que cela peut tenir dans un EPM7128 (je met pas en doute Fred mais au vue de la problématique d'autres solution
sont envisageable je pense).

EDIT: rectification et compléments.
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: [74LS612] MMU 8-bit -> 12-bit, un EPM peut émuler ça ?

Message par hlide »

Tu n'as pas pris en compte ma correction du dernier post.

En entrée, du 16-bit :
- A[11..0] n'est pas considéré pas la pagination, donc pass-thru en sortie.
- A[15..12] décrit les 16 registres découpant l'espace 16-bit en 16 pages de 4 Ko : une valeur 0 donnera le registre 0, 15 le registre 15. Chaque registre donne 12-bit de valeur. Du coup, $0000-$0FFF -> registre 0, ..., $F000-$FFFF -> registre 15.

En sortie :
- A[11..0] est lu directement par le périphérique qui sera activé par la pagination pour une lecture/écriture d'un octet (instruction LD).
- A'[20..12] les 9 bits de valeur faible du registre sélectionné par A[15..12] pour compléter le bus d'adresse A avec A'[20..12].
- A'[23..21] les 3 bits de valeur restant du registre sélectionné par A[15..12] pour activer le chip select /XCSn parmi les 8.

Note: on retrouve avec 9 + 3 = 12 bits du registre de pagination

Donc le bus visible par un périphérique (RAM, ROM ou Contrôleur avec registre, i.e, du port I/O mappé en mémoire) se fera avec :
- Control bus : /MREQ + /RD ou /WR ou /M1 + /XCSi où i dépend du périphérique sélectionné par le registre de pagination
- Address bus : A[11..0] + A'[16..12] (soit 21-bit, i.e, jusqu'à 2 Mo adressable pour le périphérique sélectionné)

Donc ce n'est pas 8-bit par registre mais bien 12-bit.

Le bus d'adresse par la carte-mère :
[CPU] === A[15..0] ===> [CPLD] ===> A[11..0] + A'[16..12] + XA[23..16] où A' dénote une substitution d'une partie du bus d'adresse par ceux produit par le CPLD et XA les bits d'adresse au-delà des 16-bit habituels.
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [74LS612] MMU 8-bit -> 12-bit, un EPM peut émuler ça ?

Message par 6502man »

Le mieux est de te faire un petit schéma et tu verras ce que tu peut obtenir ou non avec un CPLD :wink:
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: [74LS612] MMU 8-bit -> 12-bit, un EPM peut émuler ça ?

Message par hlide »

Oui j'imagine qu'il faudra que je le fasse soit en VHDL (Quartus EPMxxxx), soit en schéma (mais euh jamais utilisé pour un CPLD) pour me rendre compte que Fred_74 a sûrement raison.
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: [74LS612] MMU 8-bit -> 12-bit, un EPM peut émuler ça ?

Message par hlide »

Ça fait un moment mais oui @Fred_72 a raison car on parle bien d'un système de pagination et non de banque qui en demande trop pour les EPM que j'envisageais (ça passait tout juste avec un 160) donc j'ai laissé tomber. Ou alors je me dirige vers un système de banque comme tu me le proposais @6502man.
Répondre