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

[8051] 64kB RAM i 32kB EPROM

Wacof 31 Sty 2012 17:33 2870 6
  • #1 31 Sty 2012 17:33
    Wacof
    Poziom 9  

    Witam! Mam do zaprojektowania schemat połączenia mikrokontrolera z zewnętrznymi pamięciami RAM i EPROM o pojemności odpowiednio 64kB i 32kB.
    Napotkałem niestety trudność: wszystkie piny z portu P0 i P2 potrzebuję do adresowania pamięci 64kB i nie mam jak aktywować chipu, którego chcę w danej chwili użyć.
    Moje rozwiązania tego problemu:
    1. Jeżeli sygnały z PSEN, RD, WR nie mogą naraz być aktywowane, to mogę obydwa chipy aktywować na stałe, bo odczyt z ROM następuje przez PSEM, i adekwatnie odczyt i zapis z RAM przez sygnały WR i RD i nie następuje konflikt na magistrali(jeżeli sygnały PSEN, RD, WR nie są wyzwalane w tym samym czasie).
    2. Zabieram z portu 3 dodatkowy pin którym aktywuje dany chip, tylko że to trzeba później w kodzie programu uwzględniać jeżeli się nie mylę?

    Czytałem sporo poradników niestety w większości niema rozwiązań tego problemu, bo w praktyce nie potrzebna jest taki duży zasób pamięci pamięci. Niestety to jest projekt teoretyczny, nie praktyczny :/
    Czy któreś rozwiązanie jest poprawne?
    Bardzo prosiłbym o pomoc.

    Z góry dziękuję za każdą odpowiedź.

    Edit//

    Przed chwilą znalazłem jeszcze inne rozwiązanie, w książce której, autorem jest PAWEŁ HADAM.
    Zdjęcie układu:
    [8051] 64kB RAM i 32kB EPROM
    Czy nie powinien dodatkowo zanegowany sygnał z PSEN iść do CE w RAM?

    0 6
  • #2 31 Sty 2012 22:31
    kemot55
    Poziom 30  

    Jeżeli chce się wykorzystać układ z jedną pamięcią danych bez żadnych innych urządzeń na magistrali danych to układ z rysunku jest OK. PSEN{Program Select ENable} (a nie jak napisałeś "PSEM") odblokowuje odczyt pamięci programu. Pojawienie się sygnałów RD/WR powoduje odczyt/zapis z pamięci danych.
    Gdybyś chciał obsłużyć więcej niż 64kB programu wtedy trzeba stosować bankowanie i wykorzystać dodatkowe piny procesora. Natomiast jeżeli ktoś kto sformułował zadanie wie cokolwiek o procesorach to powinien się przynajmniej "skrzywić" widząc takie rozwiązanie.

    0
  • #3 31 Sty 2012 22:44
    Wacof
    Poziom 9  

    kemot55 napisał:
    Jeżeli chce się wykorzystać układ z jedną pamięcią danych bez żadnych innych urządzeń na magistrali danych to układ z rysunku jest OK. PSEN{Program Select ENable} (a nie jak napisałeś "PSEM") odblokowuje odczyt pamięci programu. Pojawienie się sygnałów RD/WR powoduje odczyt/zapis z pamięci danych.
    Gdybyś chciał obsłużyć więcej niż 64kB programu wtedy trzeba stosować bankowanie i wykorzystać dodatkowe piny procesora. Natomiast jeżeli ktoś kto sformułował zadanie wie cokolwiek o procesorach to powinien się przynajmniej "skrzywić" widząc takie rozwiązanie.

    Po pierwsze dziękuję za odpowiedź.
    Po drugie:
    "Skrzywić" tzn. że istnieje lepsze rozwiązanie? I jeszcze raz powtórzę pytanie czy podczas aktywacji chipu ROM nie powinno się dezaktywować czipu RAM?

    0
  • #4 31 Sty 2012 23:01
    kemot55
    Poziom 30  

    Takie odblokowywanie na stałe układu pamięciowego (poprzez ściągnięcie CE do masy) jest mało-eleganckie. W normalnych rozwiązaniach (sprzed 10 lat) dobrze by było jednak użyć kilku bramek i na podstawie sygnałów RD,WR i PSEN wybierać układ pamięciowy (poprzez sterownie sygnałami dostępu np. CE). To co jest na rysunku jest rozwiązaniem szczególnym i wcale nie pokazuje idei adresowania.

    0
  • #5 31 Sty 2012 23:14
    Wacof
    Poziom 9  

    A więc jeśli dobrze myślę to trzeba zrobić taką funkcję na bramkach?:

    Code:

       ~PSEN    ~RD     ~WR             CE(ROM)          CE(RAM)
        0        0       0                1                  1
        0        0       1                1                  0
        0        1       0                1                  0
        0        1       1                1                  1  (nie istnieje stan)         
        1        0       0                0                  1
        1        0       1                1                  1  (nie istnieje stan)   
        1        1       0                1                  1  (nie istnieje stan)   
        1        1       1                1                  1  (nie istnieje stan)   

    I tu się ponawia jeszcze jedno pytanie czy PSEN, WR i RD mogą naraz być ustawiane?

    0
  • #6 01 Lut 2012 08:10
    starob
    Poziom 25  

    Takie rozwiązanie jak na obrazku jest wystarczające i nie ma co niepotrzebnie rozbudowywać układu. Sygnały /WR /RD podłączone do /OE i /WE (RAM) skutecznie wyłączają układ podczas odczytu z ROM.

    //Edit. zwróć tylko uwagę, że na obrazku jest 32kB RAM i 64kB ROM oraz do ROM nie jest podłączony A15.

    Jeśli chciałbyś zbudować układ z 64kB RAM na dwóch 32kB kostkach wtedy sygnał /CE RAM1 sterowany będzie z A15 a /CE RAM2 z /A15

    0
  • #7 01 Lut 2012 14:49
    Wacof
    Poziom 9  

    Jestem już po zaliczeniu. Dla prowadzącego niestety "myki" z załączaniem chipów były bezsensowne, stwierdził, że w obydwu pamięciach port /CE powinien być zwarty do masy. :/

    0