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

Adresacja pamięci RAM kość CS18LV02560, jaka?

rafikAVR 19 Lut 2013 19:01 1908 11
  • #1 11957613
    rafikAVR
    Poziom 16  
    witam
    posiadam kość RAM CS18LV02560 , proszę mnie poprawić bo się pogubiłem,czy dobrze rozumiem adresacje ,
    młodszy bajt adresu podaje na piny A5-A14(pomijając pin 10) a starszy bajt na piny A0 - A4+A10 ?
    Adresacja pamięci RAM kość CS18LV02560, jaka?

    w załączniku nota katalogowa .

    Wg. sprzedawcy jest to zamiennik dla kości K6X0808C1D-GF55 ,ale tam piny się nie pokrywają :/
  • #2 11957960
    BlueDraco
    Specjalista - Mikrokontrolery
    Jeśli to jest SRAM, to bez znaczenia, gdzie co podajesz. Podajesz adres na wejścia adresowe, w dowolnej kolejności bitów, a linie danych łączysz też dowolnie.
  • #4 11958331
    BlueDraco
    Specjalista - Mikrokontrolery
    Ja nie wiem, co to jest bajt "młodszy" i "starszy" - chyba oba są w tym samym wieku, skoro wychodzą z tego samego procesora, a pamięci SRAM wszystko jedno w jakiej kolejności połączysz linie adresowe i danych, bo nie ma to żadnego wpływu na jej działanie. Nie ma żadnych taktów zegara i odczyt spod każdego adresu zajmuje tyle samo czasu.
  • #6 11958559
    BlueDraco
    Specjalista - Mikrokontrolery
    A co to ma do pamięci? Coraz mniej z tego rozumiem. Dziwny ten projekt - zamiast wziąć po ludzku mikrokontroler z setką nóg i dużą pamięcią w środku tworzysz jakieś potworki.
  • #8 11970377
    nsvinc
    Poziom 35  
    BlueDraco napisał:
    Ja nie wiem, co to jest bajt "młodszy" i "starszy" - chyba oba są w tym samym wieku, skoro wychodzą z tego samego procesora

    W 16bitowym słowie bajt starszy to [15:8], a młodszy [7:0]....

    BlueDraco napisał:
    amiast wziąć po ludzku mikrokontroler z setką nóg i dużą pamięcią w środku tworzysz jakieś potworki.

    Czy ja wiem czy dekoder adresów magistrali 8080 to potworki? Poczekajmy az przyjdzie Ci zbudować układ który ma 512 wyjść on/off ;] dzięki "potworkom" dało się osiągnąć na STM32/FSMC czas dostępu do wyjscia rzędu 60ns !z DMA! ( daje refresh calosci 500k razy/s ), ciekawe czy uzyskasz podobną wydajność bez "potworków"....

    rafikAVR napisał:
    Tylko że ja nie wykorzystuję adresowania bezpośrednio przez uC M128 tylko multipleksację za pomocą aż 10 układów 74HC573 dla powiększenia liczby portów I/O , czy to też odgrywa różnice ?

    To już pytanie do wróżki jak w rzeczywistości podłączyłeś peryferia pod mikrokontroler... Jesli potrzebujesz szybki i równoległy dostęp do takiej ilości pinów, powinieneś na bramkach zrobic dekoder adresów, tak aby dla A15=0 adresowany był SRAM, a dla A15=1 adresowany był multiplekser dekodujący adres konkretnego latch'a.

    Czyli:
    Adresacja pamięci RAM kość CS18LV02560, jaka?

    Wejscia !LE zatrzasków podciągaj rezystorami 1kR do plusa ;]

    Efekt działania:

    Gdy A[15]=0, to sygnały !OE i !WE są kierowane do SRAMu poprzez bramki OR. Czyli wszystkie adresy od 0 do 32767 to SRAM.

    Gdy A[15]=1, to:
    * !EN multipleksera jest ustawiony w stan niski, więc OUT[ A[3:0] ]=IN
    * IN multipleksera jest podlaczony do !WE, czyli: OUT[ A[3:0] ]=!WE, co pozwala na zaadresowanie konkretnego LATCHa

    Zapis do LATCHów jest więc zapisem do adresów 32768 do 65535, z czego upraszczając:
    - 32768 -> A[14:0]=0,A[15]=1 -> LATCH1_LE
    - 32769 -> A[14:0]=1,A[15]=1 -> LATCH2_LE
    - 32770 -> A[14:0]=2,A[15]=1 -> LATCH3_LE
    ...
    - 32783 -> A[14:0]=15,A[15]=1 -> LATCH15_LE
    - adresy 32784 do 65535 nieuzywane ;]

    Rozwiązanie sprawdza się bardzo dobrze w praktyce, sprawdzałem nie raz ;]

    To działa dlatego, że każdy zapis do magistrali zgodnej z 8080 (czyli tak jak tu...) to sekwencja:
    - wystaw adres
    - wystaw dane
    - wygeneruj ujemny impuls na !WE

    Rozrysowałem opcję "write only" do zatrzasków, czyli tylko wyjścia. W kazdym razie obrazowo podałem przykład jak można zbudowac dekoder adresów; to jest dobra podstawa do dalszych zmian, takich, jak wmapowanie w przestrzen adresową buforów z enablem, w celu obsługi również "wejść" ;)
  • #9 11970684
    BlueDraco
    Specjalista - Mikrokontrolery
    Dawniej były mikroprocesory 8-bitowe, które miały 8-bitowe rejestry z bitami 7..0. Potem pojawiły się procesory 16-bitowe, w których "przybył" bajt z bitami 15..8. Tego, który pojawił się później, zwykle w języku polskim nazywamy "młodszym". Czyli bajt "starszy" to ten z bitami 7..0, a "młodszy" - z bitami 15..8. A Ty piszesz, że odwrotnie...

    Gdyby tak używać pojęć o jednoznacznie określonym znaczeniu - "mniej znaczący", "bardziej znaczący", nie byłoby takich kłopotów.
  • #11 11974381
    rafikAVR
    Poziom 16  
    nsvinc dzięki !!! Twój pomysł jest naprawdę świetny :)
    Mam jeszcze pytanie od strony technicznej :
    Czy długość ścieżek , ich kształt na PCB będzie grał ogromną rolę ?
    Tzn przy połączeniu latchy między Uc , a latchami i pamięcią RAM .
  • #12 11975235
    nsvinc
    Poziom 35  
    Zalezy o jakich predkosciach transmisji rozmawiamy. Nie mam pojecia o parametrach pinów ATMegi ani o maksymalnej częstotliwości zbocz jakie mogą wypaść z tego procka...

    Jesli załozymy, że sekwencyjny r/w będzie się wykonywać z częstotliwością rzędu 10MHz to nie ma specjalnych szopek; uklad bedzie po prostu działać...
    Ja wspieram jednak zachowanie prostej zasady - sygnały kontrolne powinny być dłuższe niż magistrale.
REKLAMA