Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Układ generujący sygnał CS do układu pamięci

10 Sty 2018 20:56 576 2
  • Poziom 1  
    Cześć,

    potrzebuję pomocy przy zaprojektowaniu układu generującego sygnał CS do układu pamięci (poziom aktywny niski). Wytłumaczy mi ktoś jak to zrobić krok po kroku tak by 8-bajtowy blok pamięci zajmował adres od 40 do 47 w przestrzeni adresowej procesora?

    Na co zwracać szczególną uwagę na rysunku?

    Będę bardzo wdzięczny za poświęcenie mi swojego czasu.

    Układ generujący sygnał CS do układu pamięci
  • Pomocny post
    Poziom 11  
    Masz 6 bitową magistralę adresową. Pozwala na adresowanie 2^6 = 64 bajtów.
    Adres dziesiętny 40 to 0x28 = 10 1000 binarnie.
    Adres dziesiętny 47 to 0x2F = 10 1111 binarnie.
    Trzy najwyższe bity pomiędzy adresami 0x2F..0x28 się nie zmieniają i mają stałą wartość 101.
    Zakładająć że A5 to MSB(najwyższy bit) a A0 to LSB(najniższy bit) oznacza to, że sygnał CS musisz wygenerować gdy linie mają odpowiednio A5=1, A4=0, A3=1. Do wygnerowania takiego sygnału wystarczy Ci jedna bramka AND 3 wejściowa plus inwerter(bramka NOT) na lini A4.
    Logiczne wyraznie na CS to
    Code:
    CS = A5 AND (NOT A4) AND A3

    bądź piszac bardziej matematycznie
    Code:
    CS = A5 /\ ~A4 /\ A3
  • Poziom 11  
    Ponieważ pojawiły się pytania (na p.w. oraz tutaj) o powyższe rowiązanie, a nie mam za bardzo czasu się rozpisywać, więc postaram się napisać skrótowo.

    Przedstawione powyżej rozwiązanie stosuje się przy magistralach równoległych, gdy do jednej magistrali mamy podłączonych kilka urządzeń. Poświęca się wtedy kilku najwyższych bitów adresowych na sterowanie sygnałem CS dla poszczególnych urządzeń. Od ilość poświęconych bitów na CS zależy ile możliwych urządzeń będzie można podpiąć do magistrali( 1 bit - 2 urządzenia, 2 bity - 4 urządzenia, N bitów - 2^N urządzeń). Pozostałe bity służą do adresowania pamięci wewnątrz urządzenia.

    Przykład 1.
    Do 16 bitowej magistrali podpięto 3 kości pamięci o rozmiarze 1024 bajt każda.
    Aby adresować 3 kości, musimy wykorzystać minimum 2 bity. Dodatkowo każda kość ma 1024 bajty czyli 10 bitów adresowych. Wynika z tego, że poświęcimy linie adresowe A0..A9 na wewnętrzne adresowanie pamięci, a linie A10..A11 na adresowanie kości pamięci. Pozostałych linii A12..A15 nie trzeba w ogóle podłącząć. Chipy będa miały adresy
    Code:
    K1 - A10=0, A11=0
    
    K2 - A10=1, A11=0
    K3 - A10=0, A11=1

    Co daje funkcje na ChipSelect
    Code:
    CS1 = NOT A10 AND NOT A11
    
    CS2 = A10 AND NOT A11
    CS3 = NOT A10 AND A11


    Chciałby zauważyć, że dla magistrali N bitowej rozwiązanie z poświęceniem K najstarszych bitów adresowych na adresowanie różnych ChipSelectów zawsze sprawia, że adresy o tych samych bitach K oraz pozostałych bitach o wartości od 0 do 2^(N-K) będą służyły do adresowania wewnątrz pierwszego urządzenia przypisanego do kombinacji bitów K na magistrali.

    Co chce przez to powiedzieć? To, że pytanie zadane przez autora mieści się w rozwiązaniu poświęcenia najstarszych bitów dlatego że pomiedzy 0x28 a 0x2F mamy te same 3 najstarsze bity. Gdyby te bity się różniły np. chcielibyśmy adresy tylko pomiędzy 0x28 a 0x31 to trzebaby już zbudować dwa komparatory z bramek. Wtedy trzy najwyższe bity adresowe A3..A5 nie wystarczyłyby do wygenerowania sygnału CS i należałoby wiecej użyć więcej linii adresowych do generowania CS.
    Komparatory na bramkach logicznych -> http://www.electronics-tutorials.ws/combination/comb_8.html" target="_blank" rel="nofollow" class="postlink ">Link