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.

Dekoder adresowy - Dekoder adresowy wpływ adresów wejściowych

barty95 03 Lip 2016 10:03 969 6
  • #1 03 Lip 2016 10:03
    barty95
    Poziom 3  

    Witam, jestem studentem elektrotechniki więc z mikrokontrolerami mam mało do czynienia aczkolwiek mam zaliczenie z przedmiotu Technika mikroprocesorowa. Z racji że nigdy się tym nie zajmowałem i nie miałem z tym styczności mam małe problemy z tą dziedziną.
    Na zaliczeniu mamy "zaprojektować" prosty system mikroprocesorowy sprowadza się to do cpu, ram, rom zależy od zadania głównym zadaniem jest zdekodowanie pamięci za pomocą prostego dekodera doprowadzamy do niego adresy najczęściej 2 i za pomocą niego mamy zdemuxować sygnał cs tak aby w danym czasie 1 pamięc była aktywna.
    Nasuwa mi się następujące pytanie czy ma znaczenie jaki adres zostanie doprowadzony do dekodera?
    Ostatnio na zaliczeniu miałem do umieszczenia 3 kości w przestrzeni od 0x0000-1FFF, 2000-3FFF,4000-5fff. Wykonuje to w sposób następujący do kości doprowadzam sygnały A0-A12, do dekodera A13 i A14 Czy to ma jakieś znaczenie jakie to są sygnały ? Wiem że sygnał A13=2000H a A14=4000H czy to właśnie o to chodzi że dzięki tym adresom pamięć zaczyna się od 2000H a nie od 0? Z góry dziękuje za odpowiedź,proszę nie odsyłajcie mnie do źródeł z literatury bo próbowałem szukałem ale wszystko tam jest wytłumaczone za pomocą bramek etc.

    0 6
  • Pomocny post
    #2 03 Lip 2016 11:05
    drobok
    Poziom 26  

    Chodzi o to że każdy adres jest inny. Interesują cię bity wyróżniające adres danej kości. Nikt ci ruskiego adresu nie zada, tylko jakiś prosty (jak będziesz sobie sam podłączać to też pamięci mają jakieś "okrągłe" wielkości.
    Czyli u cb adresy się różnią pierwszym znakiem 0-1,2-3,4-5

    Każdy znak hex reprezentuje się za pomocą 4 znaków binarnych, więc jak masz adres składający się z 3znaków "pełnych" + jednego w którym nie wszystkie bity są znaczące. Czyli 3x4=12 (te bity olewasz, bo nie odróżniają tych adresów), no i masz bity 16,15,14,13 (z najstarszego znaku adresu)

    0000 -0 mem1
    0001 -1 mem1
    0010 -2 mem2
    0011 -3 mem2
    0100 -4 mem3
    0101 -5 mem3

    No i teraz widzisz dokładnie, że podłączając tylko to powinieneś się interesować tymi dwoma bitami znaczącymi w tym znaku. Dla 00 masz pamięć1, dla 01 pamięć2, a dla 10 pamięć3. Czyli musisz sobie doprowadzić 2 sygnały, z czego oba je również musisz zanegować. Patrząc wyżej zauważasz że te adresy są na bitach 14 i 15. Reasumując masz 3 funkcje logiczne. ~A15~A14, ~A15A14, A15~A14 które sobie musisz zaprezentować na nandach albo norach.

    0
  • Pomocny post
    #3 03 Lip 2016 12:03
    viayner
    Poziom 33  

    Witam,
    postaram sie prosto to wyjasnic:
    - zobacz jak wygladaja w systemie dwojkowym te liczby szesnastkowe, przykladowo 0000h = 0000-0000-0000-0000 i 1FFFh = 1111-1111-1111-1000 a nastepny adres /liczba to 2000h = 0000-0000-0000-0100 wiec widac ze istotne dla calego obszaru 0000h-1FFFh sa bity A13 i wyzsze. Inaczej mowiac Gdy A13 = 0 A14=0 i A15=0 masz adresy o wartosciach 0000h do 1FFFh (te bity sie nie zmieniaja). Musisz zbudowac dekoder wykrywajacy te stany i jedo sygnal wyjsciowy aktywuje pamiec - wyjscia CE.
    Realizacja jest dosc prosta wykozystujesz dekoder 1z8 czy podobny - specjalnie do tego celu zaprojektowany 74138. Ma on 8 wyjsc i podlaczajac go na A15,A14,A13 bedzie dekodowal co 2000h, dodatkowo masz 3 wejscia kontrolne ktore mozna wykozystac do dokladniejszej analizy adresow.
    Pozdrawiam

    0
  • #4 03 Lip 2016 12:24
    barty95
    Poziom 3  

    Panowie dziękuję za pomoc wydaje mi się że to rozumiem. Teraz mam jeszcze jedno pytanie licząc na waszą dobrotliwość i cierpliwość czy dla innych peryferiów adresowanie wygląda tak samo ? np jeżeli chciałbym sobie diode dać pod 1000Hexa? albo 1FFF Dziękuję jeszcze raz

    0
  • Pomocny post
    #5 03 Lip 2016 18:12
    drobok
    Poziom 26  

    Jak by się bardzo uprzeć dało by się, tyle że albo musiałbyś przed diodą dać jakiś rejestr / przerzutnik, albo dynamicznie musiałbyś ten adres co jakiś czas wywoływać (wyświetlanie dynamiczne). Tyle że dokładając cokolwiek w ten sposób (1adres) niszczysz sobie całą hierarchię podziału (musisz dołożyć linie adresowe do określenia danego elementu) / lub odrzucasz część adresów.

    Wszystko zależy od procesora i tego co chcesz uzyskać.

    0
  • #6 04 Lip 2016 10:37
    viayner
    Poziom 33  

    Witam,
    jezeli chcesz wykryc tylko jeden konkretny adres to sprawa jest nieco bardziej skomplikowana bo musisz analizowac wszystkie 16 linji adresowych ale nie jest tak zle wspomniany '138 i pare 7420 czy 7440 zalatwi sprawe. Poprostu musisz wykryc te jedna kombinacje bitow.
    Jak rozumiem chodzi ci o LED na konkretnym adresie. Bez dekodera jak powyzej sie nie obejdzie ale dodatkowo musisz dac jakis rejestr czy przerzutnik aby "zapamietac" stan diody gdyz kombinacja adresow pojawi sie sporadycznie i tylko na pare us. Sa typowe komputerowe rejestry rozwiazyjace problem albo nawet zwykly 7474 ktorego "zapis" jest funkcja AND adresu i sygnalu WR (czy IOW) w zaleznosci od procesora.
    Pozdrawiam

    0
  • #7 07 Lip 2016 15:08
    JAbłecznik
    Poziom 10  

    Do wykrycia jednego konkretnego adresu potrzebujesz 2 szt 74688 i jakąś bramkę NOR do sumowania wyniku np. 7402. 74688 daje na wyjściu "0" w przypadku zgodnego wyniku. Sumujesz dwa "zera" i masz "1" na wyjściu NOR'a tylko w przypadku zgodności 16bitowego adresu. W sumie 3 kości.

    0