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:
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ść"
