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.

problem z UM61256 (SRAM 32kx8) i licznikami np.74HC590, 4040

Jasiex 31 Sty 2005 21:07 3429 11
  • #1 31 Sty 2005 21:07
    Jasiex
    Poziom 13  

    Witam serdecznie !

    Od kilku lat (dokładnie trzech) podczas próby budowy układów z wykorzystaniem wymienionych w temacie układów trafiam na różne problemy.

    Pierwszym z nich jest próba wykorzystania popularnych układów liczników 74590 (testowałem w wersji HC) do adresowania wymienionej pamięci. Efektem jest generowanie wprawdzie poprawnych stanów wyjściowych co do binarnej wartości licznika, jednak pamięć 61256 nie jest adresowana prawidłowo bo pomijane są regularnie niektóre adresy.

    Wykluczyłem następujące możliwe przyczyny:
    -zbyt krótkie impulsy zegarowe dla licznika i zbyt krótki czas po którym
    ustabilizuje się adres po którym to można wpisać/odczytać daną do/z
    pamięci - pamiętając o odpowiednich /WE i /OE SRAM.
    -zakłócenia na szynie danych
    -zakłócenia na szynie adresowej

    W związku z powyższym, podejżewam że poziom sygnałów odpowiadających stanom 0 i 1 wychodzący z układów liczników a trafiających do lini adresowych jest nieodpowiedni dla pamięci i ta zaczyna "zmyślać". Np. dla binarnej wartości licznika 0, zaadresuje
    komórke 0, ale dla binarnej wartości licznika 1, pamięć adresuje sobie zawsze 2 (nie są to zakłócenia) a jakiś feler wynikający jakby z różnej techniki wykonania układów -co za tym idzie poziomów.

    Ponieważ podczas adresowanie tejże pamięci poprzez wartości pobierane
    bezpośrednio z buforów(8-bit zatrzasków) 74574 jest prawidłowe.
    Jak dopasować poziom sygnałów ? czy nie wolno stosować wersji HC ?
    trzeba HCT ? w takim razie dlaczego przy stosowaniu wersji LS (próbowałem z licznikami 74ls93) problem również istnieje ?
    Może zastosować bufor 74245 ale który lepszy w wersji LS czy HCT ? a może HC ?
    Niejestem pewien, ale o ile dobrze pamiętam to pamięci SRAM starego typu np. 6264 (8kbx8) nie ujawniają powyższego problemu.

    Na zakończenie podobny problem: bezpośredni odczyt (sprawdzałem na wielu komputerach, również starszych z kartami multi i/o) układów liczników nawet zwykłych 74LS93 kończy sie niepowodzeniem i niewiem dlaczego. LPT za to bez problemu umożliwia odczytywanie np. układów 74HCT574. Próbowałem stosować drabinkę z rezystorów podciągających lub driver 74F245 ale nie poprawiło to sytuacji odczytu przez LPT.

    Bardzo proszę o wskazówki, wiele moich ciekawych projektów przez te problemy legło w gruzach, ponieważ zaprojektować jest łatwiej niż wykonać. Nie dysopnuję oscyloskopem ani analizatorem stanów logicznych dlatego tak trudno jest cokolwiek zdiagnozować.

    Bardzo proszę o pomoc.

    0 11
  • #2 01 Lut 2005 16:18
    Jasiex
    Poziom 13  

    Po wzbogaceniu wiedzy o różnice między bramkami TTL, CMOS itp doszedłem do wniosku - który potwierdza praktyka.
    Mianowicie:
    pamięć 61256 wykonana jest najprawdopodobniej w technologii CMOS, ale szyna danych i adresowa pracują na zakresach napięć dla logicznego 0 i 1 odpowiadających TTL.
    Układ testowy który to potwierdził, wyglądał tak że adres (stany Qn linii licznika) nie były bezpośrednio wystawiane na SRAM 61256, tylko poprzez 74HCT574.
    I w tym układzie pamięć była adresowana poprawnie, w przeciwieństwie do wersji bezpośredniej (bez 74HCT574).
    Wskazuje to według mnie na to że 74HCT574 ma wejścia (patrzyłem do karty katalogowej i mniej więcej się zgadza) na poziomie CMOS, z kolei wyjścia na poziomie TTL który jest pożądany przez 61256.

    Sprawa jak się okazuje jest podstawowa i już na zawsze będę wiedział że nie należy bezpośrednio łączyć w taki sposób układów różnych rodzin.

    Dla ostatecznego potwierdzenia tego co napisałem zamiast 74HCT574 spróbuję wykorzystać 74HCT245.

    Swoją drogą to ciekawe jak są budowane analizatory stanów logicznych, muszą chyba mieć właśnie możliwość wyboru analizy sygnałów albo TTL albo CMOS. Chyba że ich budowa jest bardziej zaawansowana i linie wejściowe złożone są np. z komparatorów które uznają zarówno progi logicznego 0 i 1 odpowiednio dla CMOS jak i TTL, ale kto to wie :-)

    0
  • #3 02 Lut 2005 01:39
    coberr
    Poziom 19  

    pamięć - spróbuj z wersjami HC/HCT: 93/393

    Jeśli chodzi o port LPT - najlepiej podawac jest na niego sygnały z układów CMOS lub serii HC/AC

    0
  • #4 02 Lut 2005 20:16
    Jasiex
    Poziom 13  

    OJ, ja właśnie pisałem o tym że HC nie działa z TTL np. gdy do wejścia TTL podłączysz wyjścia HC. Rodzina HCT działa. Literka T w HCT oznacza że jest to układ HCMOS ale z wyprowadzeniami na poziomie TTL.

    Zwykłe HC to po prostu High speed Complementary Metal Oxide Semiconductor.

    Testy wykonywałem na 74HC590, 74HC93, 74HC4040 i byłem zawiedziony, ale dlatego że nie używałem pomiędzy pamięcią (która ma wejścia TTL a nie CMOS) żadnych driverów (czy chociażby innych układów z we CMOS i wy TTL jak np. wspomniany 74HCT574).
    Więc skoro rzecz dotyczy rodziny HC odznaczającej się innymi przedziałami napięć dla logicznego 0 i 1, to kwestia zastosowania np. zamiast 74HC590, 74HC393 itp jest bezcelowa. Ale już 74HCT590 czy 74HCT393 ma jak najbardziej sens - bo posiadają one we/wy na poziomie TTL.

    mam nadzieje że wyjasniłem i nie trzeba nic dodawać.

    dziękuję i
    pozdrawiam serdecznie! :-)

    Dodano po 23 [minuty]:

    Co do LPT, to w kilku płytach głównych występują te same charakterystyczne objawy podczas bezpośredniego sterowania układów HC, a problemy nie mają miejsca w przypadku zwykłych TTL (NMOS) czy HCT.
    Na dodatek proszę zobaczyć na budowę (jak sądzę znanego programatora Willem, którego układy 4014, 4015 nie są bezpośrednio łączone z LPT tylko za pośrednictwem dwóch układów 74LS367 czyli trójstanowych buforów linii. Ale paradoks polega na tym że 74367 jest właśnie w wersji LS i to jest jakby zaprzeczeniem tego co napisałem wcześniej.

    Skąd przekonanie aby z LPT używać układów HC ?

    0
  • #5 03 Lut 2005 15:41
    Jasiex
    Poziom 13  

    właśnie wykonałem test z użyciem 74HC4040 adresowanym celowo za pośrednictwem 74HC574 zamiast poprzedniego 74HCT z którym układ działał prawidłowo. Otóż ku mojemu zdziwienu również działał prawidłowo i całkowicie nie rozumiem już różnic pomiędzy tymi układami.
    Bo skoro:
    niemogę bezpośrednio adresować SRAM 61256 z wyjść 74HC4040
    z powodu błędów, to dlaczego gdy pomiędzy 74HC4040 i 61256 umieszcze 74HC574 lub 74HCT574 (odpowiednio sterowany) układ działa bez zarzutu ?

    może to jest tak, że każdy układ danej rodziny ma inną charaketystykę i trzeba zawsze patrzeć do karty katalogowej na zakres napięć dla 0 i 1?

    można oszaleć, bo problem nie jest banalny gdy nie ma się oscyloskopu.

    Dodano po 1 [godziny] 13 [minuty]:

    na dodatek teraz, po wykonaniu testów w których zamiast 74574 wykorzystałem 74245 w następujących wersjach:
    - LS
    - F
    - HC
    - HCT

    żaden z powyższych 74x245 nie poprawił sytuacji tzn. nie dopasował poziomu sygnałów wejściowych do UM61256, a chyba powiniein skoro 74HC574 i 74HCT574 robią to bez problemu.

    0
  • #6 04 Lut 2005 14:14
    _jta_
    Specjalista elektronik

    Jasiex napisał:
    OJ, ja właśnie pisałem o tym że HC nie działa z TTL np. gdy do wejścia TTL podłączysz wyjścia HC. Rodzina HCT działa. Literka T w HCT oznacza że jest to układ HCMOS ale z wyprowadzeniami na poziomie TTL.


    Odwrotnie: jak do wyjścia TTL podłączysz wejście HC; od HC do TTL jest problem
    z obciążalnością (HC można obciążyć tylko 1 bramką TTL standard), i z czasami
    propagacji (HC przy 5V zasilania są dość powolne). Litera T w HCT oznacza, że
    na wejściu wystarczą im poziomy TTL (czyli 0.8-2.0V, a nie 0.5-4.5V, jak chcą HC);
    poza tym HCT są szybsze przy 5V, i mają większą obciążalność wyjść (jak TTL).

    0
  • #7 05 Lut 2005 12:03
    Jasiex
    Poziom 13  

    Czyli co można zrobić, aby połączyć 74HC4040 z pamięcią statyczną 61256 ?

    0
  • Pomocny post
    #8 05 Lut 2005 20:35
    _jta_
    Specjalista elektronik

    Zacznij od sprawdzenia w kartach katalogowych jakie są wymagania tej pamięci
    - takie jak prądy na wejściach, czasy w jakich mają być poszczególne sygnały.

    A następnie sprawdź, czy 74HC4040 je spełnia - jeśli według katalogu pamięć
    potrzebuje 2mA, a 74HC4040 daje na wyjściu 1mA, to się nie da. I przyjrzyj się
    czasom, w jakich mają być sygnały - wiele problemów bierze się z tego, że dwa
    sygnały przychodzą prawie jednocześnie, na przykład licznik zmienia stan na tym
    samym zboczu zegara, na którym pamięć zatrzaskuje sobie ten stan jako adres.

    Jak jest za mały prąd, to może pomóc tylko dodatkowy układ wzmacniający (bufor),
    jeśli jest problem z czasami, w jakich przychodzą sygnały - to zmienić koncepcję,
    coś inaczej połączyć - albo dodać przerzutnik D, żeby robił opóźnienie o ułamek
    okresu zegara tak, żeby sygnały przychodziły w prawidłowej fazie.

    0
  • #9 05 Lut 2005 20:52
    Jasiex
    Poziom 13  

    Niestety nigdzie niemogę znaleść karty katalogowej (datasheets) dla UM61256-15 pomimo że jest to popularna pamieć stosowana jako pamięć podręczna w PC 486.

    Sądzę że wejścia adresowe pamięci absorbują duży prąd, ponad wydajność źródla jakim są wyjścia licznika(ów).

    Myśle że jest to najlepszy trop.

    Dodano po 1 [minuty]:

    je

    Dodano po 2 [minuty]:

    jeśli bufor to jaki zastosować? skoro popularny 74x245 nie pomógł
    a próbowałem w wersji LS,HC,HCT i F. Nawet wykonywałem próbę z 74LS367A. I aby niepoprzestać na tym zaprzągłem również do wzmocnienia i nieznacznego opóźnienia 74LS04 oraz 74HC04. Nic z powyższego nie pomogło.

    I jeszcze jedna informacja. Zauważyłem że gdy odetnę zasilanie od licznika 74HC4040 a zasilana jest jedynie pamięć, to ta adresowana jest prawidłowo. Ten sam efekt ma miejsce w przypadku 74HC590.

    0
  • #10 07 Lut 2005 22:56
    Jasiex
    Poziom 13  

    wykonałem dzisiaj test polegający na bezpośrednim połączeniu układu licznika z odpowiednikiem wcześniej stosowanej pamięci ale innego producenta - użyłem Winbond W24257AJ-15.

    Niestety nadal licznik źle adresuje pamięć. A gdy łączony jest poprzez 74HCT574 to dobrze ją adresuje.

    Jest niemal pewne że winę ponosi układ licznika, który chyba ma nieodpoiwenie poziomy wyjściowe? sam już niewiem.

    Dodam tylko, że tam gdzie w tym wątku padło oznaczenie 74HC4040, powinno być HCF4040. Po prostu nie odczytałem tego co jest napisane na układzie, tylko zaufałem sprzedawcy od którego kupowałem układy i które miały mieć owo oznaczenie 74HC4040 a okazało się -dopiero teraz że sprzedał mi inne: "HCF4040".
    Czy można w jakiś sposób łączyć HCF4040 z pamięcią statyczną? i jaki?

    0
  • #11 08 Lut 2005 12:15
    _jta_
    Specjalista elektronik

    Też nie udało mi się znaleźć tej karty katalogowej - można by co najwyżej
    spróbować napisać do producenta - http://www.umc.com/
    lub ściągnąć ze strony jakiejś firmy, która to sprzedaje, na przykład:
    http://www.partminer.com/pagedetail/5563/39
    (wymagają do tego zarejestrowania się - mam nadzieję, że nieodpłatnie)

    Jeśli to jest kwestia zbyt prądu wejściowego, to po pierwsze można
    to zmierzyć, po drugie jakiś bufor typu LS244 powinien na to pomóc.

    Z tym odcięciem zasilania od licznika - czy możesz opisać to
    dokładniej, i podać co i jak jest połączone?


    74HCT574 to 8-krotny D wyzwalany zboczem - jeśli pomaga, to przypuszczam, że
    przyczyną kłopotów jest przekos sygnałów (tym bardziej, że nie pomagają układy
    74LS245 użyte jako bufory - pomogłyby, gdyby to była sprawa prądów wejściowych);
    nie wiem ani jakie sygnały daje twój układ, ani jakich potrzebuje pamięć.

    0
  • #12 08 Lut 2005 13:05
    Jasiex
    Poziom 13  

    bufor 245 nie pomógł, 367 również, więc 244 niczego (według mojej wiedzy) nie zmienii.

    "odcięcie zasilania" - polega na tym, że na nóżkę VCC pamięci 62256 nie podaję +5V, lecz pozostawiam ją niepodłączoną.

    Dodano po 4 [minuty]:

    Nie mam dokumentacji UM61256AK-15, ale za to mam od W24257AJ-15. Jest to substytut UM61256AK-15 firmy Winbond. Wykonywałem testy na W24257AJ-15 i są identyczne problemy - błędy adresowania.
    Ponadto licznik którego używam (muszę sprostować) to nie jest 74HCT4040 ale układ o oznaczeniu HCF4040.

    pozdrawiam _jta, może mnie jakoś naprowadzisz :-) ?

    Dodano po 25 [minuty]:

    w tym układzie testowym z wykorzystaniem 74x574 dokonywane jest po wystawieniu adresu jego zatrzaśnięcie na wyjscia 574 które są podłączone cały czas do A0-A7 pamięci SRAM. Dopiero po zatrzaśnięciu następuje odczyt bądź zapis.

    generalnie to odczyt/zapis z kolejnego adresu przebiega tak:

    1. zwiększ licznik adresowy 4040 (impuls z H->L)
    1a. CP=L
    1b. opoznienie1
    1c. CP=H
    2. opoznienie2 -czekaj na ustabilizowanie sie adresu
    3. odcztaj rejestr danych

    jak widać jest opoznienie na ustabilizowanie adresu wiec zdaje sie nie ma mowy o "przekosie".
    CP jest cały czas wysoki i na krótki czas (opoznienie1) zmienia sie na niski
    aby wyzwolić inkrementacje licznika 4040.

    Układ bez 74574 zbudowany jest tak samo, a jednak nie działa prawidłowo.

    Zastanawiałem sie czy zamiast mostować niewykorzystane adresy do masy nie lepiej puścić je przez rezystory do VCC. Ale ponieważ nie ma zjawiska zakłóceń bo pomijane są ciągle te same adresy bez względu na zakłócenia sieci czy ruch ręką na układem itp odszedłem od tego.
    Kiedyś coś czytałem że układy CMOS lubią odkładać zakłócenia na masie,ale niewiem.

    0