logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Pamięć RAM - jaki układ użyć jako jednobajtową komórkę RAM ?

JohnCTN 19 Maj 2014 07:07 2250 24
REKLAMA
  • #1 13615206
    JohnCTN
    Poziom 17  
    Posty: 340
    Pomógł: 1
    Ocena: 30
    Witam

    Szukam jakiegoś dobrego rozwiązania, potrzebuję 8 bitową równoległą komórkę RAM. Na początku zastanawiałem się czy mógłbym w tym celu użyć 74LVC573 łącząc ze sobą nóżki D0-D7 z Q0-Q7, w ten sposób mógłbym w mniej elegancki sposób zrobić komórkę RAM działającą na 1 magistrali, ale nie jestem pewny czy ten pomysł by działał prawidłowo. Może ktoś mi podpowie jaki inny układ by spełniał rolę 8 bitowej równoległej pamięci (szukam rozwiązania w jednym scalaku)

    pozdrawiam

    JohnCTN
  • REKLAMA
  • #3 13615270
    Grzegorz77
    Poziom 25  
    Posty: 589
    Pomógł: 73
    Ocena: 302
    Możesz użyć 74xx573 w ten sposób, ale musisz tak zaprojektować układ sterowania aby na czas zapisu do układu na jego wyjściu był stan "Z" .
    Najprościej połączyć wypr. 1 i 11 ale nie w każdym układzie to będzie działać poprawnie.

    GanzConrad napisał:
    Uzywasz rtc? Np. Pcf8583 ma sporo ramu do wykorzystania "przy okazji".

    pcf8583 nie jest równoległy
  • #4 13615362
    gaskoin
    Poziom 38  
    Posty: 4159
    Pomógł: 436
    Ocena: 102
    Skoro potrzeba Ci tylko jednego bajta, to po co Ci układ ? Wystawiasz na jakieś nogi stan i na tych nogach masz już swój zapisany bajt.

    PS. Po co Ci takie rozwiązanie ?
  • #5 13615464
    Grzegorz77
    Poziom 25  
    Posty: 589
    Pomógł: 73
    Ocena: 302
    gaskoin napisał:
    Skoro potrzeba Ci tylko jednego bajta, to po co Ci układ ? Wystawiasz na jakieś nogi stan i na tych nogach masz już swój zapisany bajt.

    PS. Po co Ci takie rozwiązanie ?


    Tyle że wtedy to będzie bajt ROM, a wyraźnie napisał że chce RAM ;)
  • REKLAMA
  • #6 13615523
    tmf
    VIP Zasłużony dla elektroda
    Posty: 14318
    Pomógł: 2090
    Ocena: 2206
    A niby dlaczego? Przecież możesz w każdej chwili stan IO zmienić.
    Swoją drogą lepiej, żeby autor określił co chce osiągnąć, bo jego problem brzmi bardzo dziwnie.
  • #8 13615681
    JohnCTN
    Poziom 17  
    Posty: 340
    Pomógł: 1
    Ocena: 30
    już pisze do czego potrzebuje cos takiego :)

    Projektuje układ, który ma robić pewne czasochłonne obliczenia. Układ ten za pomocą 8 bitowej szyny danych otrzymuje instrukcje i dane do instrukcji i przystępuje do obliczeń. W czasie obliczeń chcę odłączyć układ od magistrali danych i podpiąć jedno bajtową daną w której będzie status układu liczącego. Teraz układ w trakcie obliczania jest narażony na ciągle sprawdzanie czy już obliczenia się dokonały, co znacznie spowalnia procedury liczące, podpięcie 8 bitowego statusu układu liczącego spowoduje, ze układ będzie spokojnie liczył swoje zadanie a układ sprawdzający czy już są dane obliczone będzie mógł sprawdzić status układu liczącego. (nie mam żadnej wolnej linii danych aby taki status podać do układu głównego i musze to rozwiązać poprzez jedna 8 bitową szynę danych.
  • #9 13615739
    gaskoin
    Poziom 38  
    Posty: 4159
    Pomógł: 436
    Ocena: 102
    Będziesz miał aż tyle statusów ? Nie prościej żeby układ liczący wystawił sygnał typu "dawaj dane" ? 1 bit starczy.

    Układ liczący wystawia 1 - zgłasza się przerwanie w układzie dostarczającym dane w którym to ustawiasz flagę, że można wysłać dane.

    Układ liczący w przerwaniu od odbierania danych wystawia 0 i sobie liczy. Po przeliczeniu i zrobieniu czegoś wystawia 1, że jest gotowy do odebrania danych.

    Po co Ci aż 8 bitów ? I po co aż dwa układy? :D
  • #10 13615750
    Eagle
    Poziom 24  
    Posty: 536
    Pomógł: 57
    Ocena: 31
    Teoretycznie powinno zadziałać z 74x573 zapis strobować WD->LE a odczyt /RD->/OE. Jednak będziesz musiał dobudować logikę, która pod odpowiednim adresem wyzwoli strobowanie, ale być może masz już w swoim systemie jakiś układ typu 1 z n. Na przyszłość dobrze by dodać do zapytania, że chodzi o uC z zewnętrzną magistralą adresową i co jest już na tej magistrali.
  • REKLAMA
  • #12 13644038
    JohnCTN
    Poziom 17  
    Posty: 340
    Pomógł: 1
    Ocena: 30
    układ 74HCT573 większość czasu musi być w stanie Hi-Z gdyż na szynie danych ciągle są jakieś dane, identyfikacja dla danego układu jest sterowana sygnałem /CS a sygnał Read/Write sygnałem R/W.
    Aby było trudniej, nie chcę zatrzaskiwać każdego bajtu idącego do układu liczącego, Układ liczący gdy będzie odbierał instrukcje składającą się z kilku bajtów, dodatkowym sygnałem sterującym będzie musiał sterować, który bajt ma zostać zapamiętany w zatrzasku a następnie odłączy się od magistrali za pomocą układu SN74LVC8T245 pozostawiając zatrzask po stronie głównego układu, który będzie wykonywał swoje zadania i w międzyczasie odpytywał układ liczący o jego statusie (status ma być odczytywany z zatrzasku) a jak układ liczący wszystko policzy to zacznie sam odpowiadać na pytania układu głównego.

    analizując linie sygnałowe układu 74HCT573 nie do końca wiem jak by to działało :(

    Gdy układ ma niski stan na /OE to wyjścia Q są w stanie Hi-Z i układ musi być w tym stanie aby magistrala mogła spokojnie przesyłać dane.

    W chwili gdy chcę zatrzasnąć daną z magistrali musze na krótki czas ustawić sygnały sterujące: /OE=0 i LE=1 w tym stanie zostanie zatrzaśnięta dana z magistrali czyli sytuacja kiedy na magistrali wystąpi /CS=0 i R/W=0 i układ liczący sprawdzi, ze dany bajt ma zostać zatrzaśnięty. Po zatrzaśnięciu bajtu układ 74HCT573 musi przejść w stan Hi-Z na wyjściach Q.

    Oki zapis jest prosty. ale jak odczytać daną - /OE=0 i LE=0?
    Oczywiście zakładam, ze przejście układu w Hi-Z nie powoduje utraty danych z zatrzasku.
  • #13 13652732
    JohnCTN
    Poziom 17  
    Posty: 340
    Pomógł: 1
    Ocena: 30
    Przedstawię taki o to scenariusz zdarzeń, proszę powiedzieć jaka dana będzie na wyjściach Q.

    Krok 1
    sygnał OE=1 i LE=1

    Krok 2
    na wejściach D pojawia się dana: 00

    Krok 3
    na wejściach D pojawia się dana :5A

    Krok 4
    sygnał OE=1 i LE=0

    Krok 5
    na wejściach D pojawia się dana :30

    Krok 6
    na wejściach D pojawia się dana :80

    Krok 7
    sygnał OE=0 i LE=0


    Jaka dana jest na wyjściu Q?
  • #14 13653974
    Konto nie istnieje
    Poziom 1  
  • #15 13653989
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #16 13731326
    JohnCTN
    Poziom 17  
    Posty: 340
    Pomógł: 1
    Ocena: 30
    Witaj Marek.

    Cytat:
    Uważam, że za bardzo kombinujesz. Magistrala, do której się podłączyłeś jest wystarczająco powolna, aby uC mógł odbierać dane real-time.


    chodzi mi o cos innego, a mianowicie o to aby zatrzask zwracał status Xmegi128 gdy ta jest odłączona od magistrali danych robiąc zadane czynności.
  • #17 13731540
    Konto nie istnieje
    Poziom 1  
  • #18 13731689
    JohnCTN
    Poziom 17  
    Posty: 340
    Pomógł: 1
    Ocena: 30
    tak, xmega ma być odłączana od magistrali i od zatrzasku, ale xmega kontroluje sygnalem LE cały czas nawet gdy jest odłączona magistrala danych , natomiast sygnal R/!W steruje sygnałem !OE od strony magistrali.
  • #19 13732049
    Konto nie istnieje
    Poziom 1  
  • #20 13732130
    JohnCTN
    Poziom 17  
    Posty: 340
    Pomógł: 1
    Ocena: 30
    sygnały R/!W i !OE są z zewnętrznej magistrali po stronie zatrzasku. Odłączenie szyny na szynie danych D0-D7 nie wpływa w żaden sposób na sygnały R/!W i !OE natomiast sygnał z xmegi !LE jest podpięty cały czas do zatrzasku - wiec wszystko jest OK :)
  • #21 13732321
    Konto nie istnieje
    Poziom 1  
  • #22 13732484
    JohnCTN
    Poziom 17  
    Posty: 340
    Pomógł: 1
    Ocena: 30
    a kto powiedział ze odłączam sygnał !LE? pisałem, ze odłączam szyne danych
    D0-D7 :) sygnał !LE jest podpięty na innym porcie xmegi :)
  • #23 13732501
    mpier
    Poziom 29  
    Posty: 818
    Pomógł: 153
    Ocena: 141
    Witam,
    JohnCTN, w jaki sposób sprawdzanie statusu spowalnia obliczenia (dlczego)? Jest aż tak czasochłonne? Nie możesz na czas obliczeń "wyłączyć" magistrali i wystawić na port statusu?
  • #24 13732526
    JohnCTN
    Poziom 17  
    Posty: 340
    Pomógł: 1
    Ocena: 30
    Cytat:
    Witam,
    JohnCTN, w jaki sposób sprawdzanie statusu spowalnia obliczenia (dlczego)? Jest aż tak czasochłonne? Nie możesz na czas obliczeń "wyłączyć" magistrali i wystawić na port statusu?



    dokładnie to robię ale poprzez zatrzask, po odłączeniu szyny D0-D7 od głównej szyny danych. Po odłączeniu xmegi od szyny danych ten sam port w xmega zajmuje się czym innym i dlatego musze odlaczyc się od szyny. w przeciwnym wypadku zrobiłbym to tak jak napisales , czyli zostawiłbym bajt na porcie w xmega i byłoby po problemie :D
  • #25 13736696
    Konto nie istnieje
    Poziom 1  

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik poszukuje rozwiązania dla 8-bitowej równoległej komórki RAM, rozważając zastosowanie układu 74LVC573. W odpowiedziach podano, że układ ten może działać, ale wymaga odpowiedniego zaprojektowania logiki sterującej. Inne propozycje obejmują wykorzystanie rejestrów w mikrokontrolerach oraz układów takich jak PCF8583, chociaż ten ostatni nie jest równoległy. Użytkownik wyjaśnia, że potrzebuje pamięci do przechowywania statusu obliczeń, aby odciążyć główny układ od ciągłego sprawdzania. Dyskusja dotyczy również sygnałów sterujących oraz sposobu odłączania układu od magistrali danych, co wpływa na projektowanie systemu.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA