Nei progetti capita di dover lavorare con numeri
di bit che non sono potenze di 2. A questo proposito vorrei sapere quando
devo estendere gli ingressi con degli 0. Per quali componenti gli ingressi
devono essere necessariamente delle potenze di 2? Ad esempio se devo
sommare due numeri a 22 bit, li estenderò con due zeri per arrivare a 24,
giusto? Per quali componenti dunque devo fare questo ragionamento? Inoltre
di che tagli dispongo...ingressi da 2, 4, 8, 16, 32, 64? Oppure posso
utilizzare anche ingressi ad esempio da 12 bit, 20 bit, ecc...?
Potrebbe anche mostrarmi nuovamente l'hardware per interfacciare una
RAM da 2 milioni di word (intese come 16 bit) in scrittura da parte di un
microprocessore a partire dall'indirizzo 80000000h? Da quello che ho
capito a ricevimento dovrebbe essere così:
- negli indirizzi della RAM entrano i bit 2..22 del MAB (Memory Address
Bus);
- il WE della RAM è l'AND tre il segnale MWR (Memory WRite) e l'AND dei
bit 23..31 del MAB in configurazione 100000000 ;
- nell'ingresso dati della RAM entrano i 32 bit del MDB (Memory Data Bus);
- nel CS della RAM entrano i bit Mb0 ed Mb1 (che dovranno essere sempre
entrambi pari ad 1 dal momento che sto scrivendo delle word).
Quello che ho scritto è corretto e completo? |
Diciamo che nei "nostri" progetti
questi sono problemi del secondo o del terzo ordine, che diventano
importanti solo quando si ha che fare con moduli (di yipo commerciale) in
cui il numero di ingressi e' predefinito, e noi dobbiamo adattarci ad
esso. In realta', con le moderne logiche programmabili, in cui si hanno a
disposizione in un singolo chip migliaia e miglia di porte che possono
essere interconnesse (pressoche') a piacimento, questo problema e' davvero
poco sentito: nel "mondo reale" ci si trova ad aver a che fare
con "librerie" di moduli con numero di ingressi predefinito, gli
ingressi non utilizzati vengono forzati a 0 o a 1 secondo necessita', e
poi ci pensano i "compilatori" di circuiti ad eliminare dai
moduli precostituiti le porte ridondanti, i doppi invertitori, e cosi'
via.
Potrebbe anche mostrarmi nuovamente l'hardware per interfacciare
una RAM da 2 milioni di word (intese come 16 bit) in scrittura da parte
di un microprocessore a partire dall'indirizzo 80000000h? Da quello che
ho capito a ricevimento dovrebbe essere così:
- negli indirizzi della RAM entrano i bit 2..22 del MAB (Memory Address
Bus);
2 Mword = 4 Mbyte, dunque sono impegnati 22 bit di indirizzo (dal bit 0
al bit 21); ma i bit 0 e 1 non esistono fisicamente sul bus, essendo
implicitamente decodificati sulle line MB[0-3] (Memory Bank). Ad esempio,
se voglio accedere alla word di indirizzo 0, avro' MAB[2-31] = 000...0,
MB0 = MB1 = 1, MB2 = MB3 = 0 (perche' la word in questione appare sui due
byte meno signficativi del Memory Data Bus); se invece voglio accedere
alla word di indirizzo 2, avro' ancora MAB[2-31] = 000...0, ma stavolta
MB0 = MB1 = 0, MB2 = MB3 = 1 perche' la word appare adesso sui due byte
piu' significativi del Memory Data Bus. Se voglio accedere a un singolo
byte, un solo MBx sara' ad 1 (e mi indica su quale byte dei quattro del
Memory Data Bus e' presente il dato in questione) e tutti gli altri tre a
0; se voglio accedere a una longword (con indirizzo allineato ai 4 byte,
ossia esattamente divisibile per 4), avro' tutti gli MBx
contemporaneamente attivi.
- il WE della RAM è l'AND tre il segnale MWR (Memory WRite) e
l'AND dei bit 23..31 del MAB in configurazione 100000000 ;
Dei bit 22-31, non 23-31.
- nell'ingresso dati della RAM entrano i 32 bit del MDB (Memory
Data Bus);
- nel CS della RAM entrano i bit Mb0 ed Mb1 (che dovranno essere sempre
entrambi pari ad 1 dal momento che sto scrivendo delle word).
Lei puo' organizzare la RAM in due modi, a parole da 16 bit o a parole
da 32 bit. Nel primo caso, semplifica le operazioni di lettura da parte
dell'interfaccia e complica leggermente quelle di scrittura da parte della
CPU; nel secondo caso, rende la RAM direttamente compatibile con il System
Bus ma complica un po' le operazioni di lettura da parte dell'interfaccia.
Dia un'occhiata al PDF allegato.
0612171732-1.pdf
|