Długo zastanawiałem się, jak w warunkach amatorskich, bez dostępu do programowalnych układów typu GAL, PAL i innych, wykonać pełny dekoder adresowy. Myślałem o podziale adresu na obszary (banki), ale nawet wielokrotny podział (np. na 8 części) powoduje, że i tak tę część trzeba dalej dekodować. Wykonanie dobrego dekodera, przede wszystkim o pełnym dekodowaniu, z użyciem tradycyjnych układów cyfrowych spowodowałoby, że dekoder zajmowałby wielokrotnie więcej części i miejsca od samego systemu mikroprocesorowego.
Z tego względu wymyśliłem, że najlepszy będzie odpowiednio zaprogramowany EPROM. Do pełnego dekodowania w systemie z 8051 należy użyć pamięci o pojemności 64kB (27C512), by uzyskać możliwe wszystkie kombinacje adresu. W podstawowej wersji mamy do dyspozycji 8 wyjść, więc tyle układów można podłączyć, ewentualnie można użyć dodatkowo dekodera 1 z n. Oczywiście pamiętam o sumie logicznej takiego wyjścia z sygnałami /WR i /RD.
Co myślicie o moim dekoderze? W zasadzie nie pytam, jak to zrobić, bo z grubsza mam już koncepcję, ciekawi mnie jedynie, czy ktoś budował już coś podobnego?
Dekoder adresowy na EPROM
-
keruseykaryu
Wiem, ale chodzi o ogólną zasadę budowy tego.
[ Dodano: 2010-12-21, 18:27 ]
Zresztą w obecnym systemie z AVT-2250 już jest EPROM na program i jeżeli on daje radę, ten na dekoder również da radę, bo oba będą działać z taką samą częstotliwością i opóźnieniami.
[ Dodano: 2010-12-21, 18:27 ]
Owszem, dla procka taktowanego zegarem 12MHz nie powinno być problemu, bo 8051 dzieli i tak ten sygnał wewnętrznie.keruseykaryu pisze:A tajmingi uwzględniłeś takiego EPROMA?Co myślicie o moim dekoderze? W zasadzie nie pytam, jak to zrobić, bo z grubsza mam już koncepcję, ciekawi mnie jedynie, czy ktoś budował już coś podobnego?
Zresztą w obecnym systemie z AVT-2250 już jest EPROM na program i jeżeli on daje radę, ten na dekoder również da radę, bo oba będą działać z taką samą częstotliwością i opóźnieniami.
Ostatnio zmieniony 21 gru 2010, 18:31 przez mr_x, łącznie zmieniany 2 razy.
-
keruseykaryu
-
keruseykaryu
Muszę Was pozytywnie zaskoczyć 
Przed chwilą zbudowałem dekoder adresowy na pamięci EEPROM AT28C256 i działa wyśmienicie, nie ma problemów z opóźnieniami. Podłączyłem go w następujący sposób: linie A0...A14 do szyny adresowej, A15 do linii /CE (dzięki temu "dekoder" jest aktywny tylko pod pierwszą połową przestrzeni adresowej, co jest wymagane, bo EEPROM ma 32kB), linię /OE do masy (ciągły odczyt), a linię /WE do plusa, bo zapis nie jest tutaj wymagany. Linie IO0...7 są wyjściami do aktywacji zewnętrznych układów (podłączonych do ich wejść /CS). Należy tylko pamiętać, że jeśli wejście /CS sterowanego układu nie ma wejścia podciągniętego wewnętrznie do plusa, trzeba dodać rezystor 10kΩ między wyjście EEPROM a plus zasilania (bo dla adresów 8000h...0FFFFh pamięć ma wyjścia w stanie wysokiej impedancji, co może "niechcący" aktywować układ w obszarze tych adresów). Nie muszę wspominać, że trzeba zaprogramować (wyzerować bity) pod takimi adresami, pod jakimi mają pracować nasze układy.
Rozwiązanie jest bardzo proste i skuteczne, bo dekoder adresowy (adresowanie całkowite, przestrzeń dla dekodowania 0h...7FFFh) składa się tylko z jednego układu scalonego. Nie trzeba bawić się w GAL'e ani układy tradycyjne TTL.
Dodam przy okazji, że podłączone to mam do AT89S8253 pracującego z kwarcem ~22MHz oraz z trybem X2 (brak podziału przez 2, co powoduje, że układ pracuje 2 razy szybciej od tak samo taktowanego 8051).
Nie wiem, czy to samo uda się ze zwykłym EPROM, ale podejrzewam, że też powinno działać. Dowód na to znalazłem kiedyś w sieci: http://ep.com.pl/files/6110.pdf
Przed chwilą zbudowałem dekoder adresowy na pamięci EEPROM AT28C256 i działa wyśmienicie, nie ma problemów z opóźnieniami. Podłączyłem go w następujący sposób: linie A0...A14 do szyny adresowej, A15 do linii /CE (dzięki temu "dekoder" jest aktywny tylko pod pierwszą połową przestrzeni adresowej, co jest wymagane, bo EEPROM ma 32kB), linię /OE do masy (ciągły odczyt), a linię /WE do plusa, bo zapis nie jest tutaj wymagany. Linie IO0...7 są wyjściami do aktywacji zewnętrznych układów (podłączonych do ich wejść /CS). Należy tylko pamiętać, że jeśli wejście /CS sterowanego układu nie ma wejścia podciągniętego wewnętrznie do plusa, trzeba dodać rezystor 10kΩ między wyjście EEPROM a plus zasilania (bo dla adresów 8000h...0FFFFh pamięć ma wyjścia w stanie wysokiej impedancji, co może "niechcący" aktywować układ w obszarze tych adresów). Nie muszę wspominać, że trzeba zaprogramować (wyzerować bity) pod takimi adresami, pod jakimi mają pracować nasze układy.
Rozwiązanie jest bardzo proste i skuteczne, bo dekoder adresowy (adresowanie całkowite, przestrzeń dla dekodowania 0h...7FFFh) składa się tylko z jednego układu scalonego. Nie trzeba bawić się w GAL'e ani układy tradycyjne TTL.
Dodam przy okazji, że podłączone to mam do AT89S8253 pracującego z kwarcem ~22MHz oraz z trybem X2 (brak podziału przez 2, co powoduje, że układ pracuje 2 razy szybciej od tak samo taktowanego 8051).
Nie wiem, czy to samo uda się ze zwykłym EPROM, ale podejrzewam, że też powinno działać. Dowód na to znalazłem kiedyś w sieci: http://ep.com.pl/files/6110.pdf