Elektroda.pl
Elektroda.pl
X
Elektroda.pl
PCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

SRAM u układach mikroprocesorowych - Troszkę Teori

10 Gru 2009 09:08 3626 25
  • Poziom 33  
    Witam
    zakładam temat , który napewno przyda się wielu użytkownikom , a moje pytanie :

    Jaką rolę pełni układ o oznaczeniu : XC9536XLVQ44 na schemacie w załączniku :?:
  • PCBway
  • Pomocny post
    Poziom 27  
    To jest CPLD, który pełni rolę mostu - konwertera interfejsów równoległy ATmegi <-> równoległy pamięci. Interfejsy te działają nieco inaczej i stąd konieczność zastosowania takiego mostu =]
  • PCBway
  • Poziom 33  
    CPLD to układ programowalny ? zaczynam szukać o nim troszkę info ,możliwe że będe musiał wykonac podobny układ
  • Poziom 35  
    A ciezko poszukać datasheeta ?

    Ano z datasheeta wynika, że jest to cpld - więc jaka funkcje on spełnia, nie wiadomo. Jedyne co wiadomo, to fakt, ze ten uklad moze robic...cokolwiek (w koncu wszystko zalezy od kodu w jakims HDLu ktory go opisuje). Musiałbys zasięgnąć informacji u producenta.

    Sądze, ze jest to plytka ewaluacyjna - ten cpldek moze byc w wersji gotowej, czyli coś jednak robi, lub mogli go tam dostawić zebyś sobie go opisał sam (tj zrobił sobie nowy scalony w istniejącym krzemie)...Spotkalem juz oba przypadki. Wszystko zalezy od producenta i samego zestawu...
  • Poziom 35  
    no tak - ja ofkoz nie zajrzalem do zadnej dokumentacji, tylko dobralem sie do datasheeta :] takie skrzywienie zawodowe :)

    Racja - scalak przekombinowuje magistralę pamięci...
    IMHO po co pchać w tak proste miejsce CPLD?...
  • Poziom 33  
    dlatego się zastanawiałem po co tego typu scalak w tym układzie ,poniewaz moge podłączyć pamięc A0-A18 do uC przez linie A0-A15 do lini przeznaczonych dla pamięci,a linie A16 - A18 do osobnego portu w celu adresowania wyżych adresów pamięci


    Hmm no ok PLCD mamy wyjaśnione , Kolejne pytanie :

    Jak Rozwiązać podtrzymanie pamięci bateryjnie po zaniku napięcia tak aby dane w niej zawarte przed zanikiem nie uleciały ?

    zastanawiam sie nad układem max691 ponieważ po zaniku zasilania autoamtycznie CS pamięci podaje stan wysoki
  • Pomocny post
    Poziom 27  
    Po prostu można wykorzystać interfejs sprzętowy ATmegi do sterowania pamięcią, która nie jest z nim kompatybilna, zamiast tworzyć interfejs programowy. Oszczędza to jednak sporo czasu procesora, a ten CPLDek nie jest taki drogi, jest to najprostszy CPLD z rodziny XC95xxXL.
  • Pomocny post
    Poziom 35  
    Najlatwiej przyblokować CSa bramką np. OR.
    wej.A: CS od procka,
    wej.B: ściągnąć rezem 22k do masy, przed nim kolektor tranzystora PNP,emiter do Vbat, a jak sterować bazą to juz zalezy wszystko od obwodu, który będzie wykrywał faktyczny zanik napięcia zasilania...
    Mozna to zrobic na kilku tranzystorach i pojedynczym ORze, np. 74V1G32, w sumie za 3 zł + przesyłek (chybaże ktos ma to wszystko na miejscu) - dobra przebitka w stosunku do kosztu scalaka max691...

    co do CPLD - teraz wszędzie pcha sie CPLD tu, gdzie moznaby polozyc jednego lub dwa scalaki z serii 74lvc/lvx/lcx (low power! high speed! 5V compatible!), pare poj. bramek i pare biernych - rozwiazanie pewniejsze od cpld :] nie musi pamiętać swojego opisu, nie ma flasha ktory moze sie uwalić....
  • Poziom 33  
    No ok a teraz proszę aby ktoś sie wypowiedział w kwesti czy dobrzę kombinuję ..

    Jako komunikacje z pamięcią SRAM planuje użyć wspólnej szyny na której będą umieszczone układy 74HC245 do układów peryferyjnych (wejscia,wyjscia bitowe)

    więc aby sterować wejściami A0-A18 użyję 3 układów 74HC574D a do odczytu i zapisu bajtu do pamięci 1 układu 74HC245

    dlaczego tak ?

    mam mało pinów w procesorze więc chce wykorzystać wspólną szynę do komunikacji z pamięcią SRAM do układów zajmujących się wejściami/wyjściami bitowymi w układzie sterującym przekaźniki i odczytujący dane z wejść w czasie
  • Pomocny post
    Poziom 27  
    Tylko pamiętaj, że 74HC245 jest jednokierunkowy ! Chodzi o to, że są to bufory trójstanowe, znaczy to, że jeśli nie używasz pamięci to bufory te ustawiasz jako Z, czyli stan wysokiej impedancji, innymi słowy, udają one, że nie są podłączone.
  • Poziom 33  
    tak tak pamiętam o tym , jak sądzisz jak bardzo stracę dzieki temu na szybkości odczytu / zapisu do SRAM , czy będzie to znacząca strata ?

    oraz co z liniami WE / OE to są wejścia sterujące kierunkiem zapisu/odczytu z pamięci czyli mogę je podłaczyć pod układ 74HC574 ? bez potrzeby bezpośredniego sterowania z uC ?
  • Poziom 27  
    Nie sądzę. Tylko daj układy w wersji HC lub HCT, te są najszybsze. Co do WE to pewnie Write Enable, czyli umożliwienie zapisu, innymi słowy, jeśli nie ustawisz tego odpowiednio kość zignoruje próbę zapisu. OE to Output Enable, czyli jeśli to ustawisz w stan aktywny to na wyjściu pamięci otrzymasz odczytywaną daną, jeśli dasz stan nieaktywny, to pamięć ustawi wyjście w stan wysokiej impedancji. I na szynie danych możesz pominąć bufory. Ustawiasz OE i WE w stan nieaktywny i na magistrali danych masz wysoką impedancję. Tylko musisz pamiętać, że magistrala adresowa ciągle jest pewnym obciążeniem dla portu procesora i tu wypadałoby dać bufor, zwłaszcza, że jest to magistrala jednokierunkowa.
  • Pomocny post
    Moderator Mikrokontrolery Projektowanie
    74HC245 to bufor dwukierunkowy, kolega go pomylil z 74244.

    gothye: W datasheecie tej ATMegi znajdziesz schemat jak podlaczyc pamiec - potrzebny jest jeden zatrzask i tyle. Jesli potrzebujesz wiecej ukladow peryferyjnych podlaczyc do tej szyny (czy nie prosciej wziasc ATMega128 w obudowie TQFP100, ktora ma sporo portow?) to musisz rozwiazac problem dekodowania adresow, tak, zeby w danej chwili aktywny byl tylko jeden nadajnik - mozna to zrobic programowo, ale to cie mocno ograniczy, spowolni program, a w razie bledow przysporzy klopotow. Stad zamiast pakowac co raz wiecej drobiazgu pod postacia 74xxx lepiej wlozyc CPLD, ktory ci zalatwi dekodowanie adresow, zatrzaski i albo sam zapewni dodatkowe piny IO, albo wyprowadzisz dodatkowe sygnaly CS do wyboru zewnetrznych zatrzaskow - np. 74xx573.
    Soft Xilinxa jest darmowy i nawet nie musisz znac VHDLa, bo mozna sobie narysowac schemat z ukladow 74xxx, ktory pozniej zostanie zsyntetyzowany i dostaniesz gotowy wsad do CPLD.
  • Poziom 33  
    Czy dobrzę Ciebie zrozumiałem :?:

    SRAM u układach mikroprocesorowych - Troszkę Teori
  • Moderator Mikrokontrolery Projektowanie
    Nie umiesciles na schemacie procesora. Zauwaz, ze linie A0-A7 sa multipleksowane z liniami D0-D7, stad potrzebujesz zatrzask wg schematu z noty katalogowej. Dalej idzie z gorki, linie D0-D7 laczysz razem, linie adresowe do pamieci tez. Do wyboru kierunku musisz stworzyc uklad ktory ci ustawi odpowiedni kierunek w zaleznosci od sygnalow WR/RD procesora (niestety sa rozdzielone). To laczysz do driverow 245, jesli driver ma pracowac tylko w jednym kierunku to sprawa jest prostsza. RD/WR bezposrednio tez laczysz do pamieci (sygnaly OE i WR). Pozostaje kwestia dekodowania adresow. Zastosowalbym dekoder 1 z 8 - 74xx138, ktorego wyjscia laczysz do wejsc CS poszczegolnych ukladow. Na koniec trzeba policzyc czasy propagacji sygnalow, zeby okreslic max. czestotliwosc pracy procesora i obciazenie wyjsc RD/WR procesora, bo moze zaistniec koniecznosc wprowadzenia buforu. Stad tez lepiej to wszystko wykonac w strukturze CPLD, zaoszczedzisz na miejscu, a tu prosty CPLD wystarczy. W dodatku czasy propagacji beda znacznie krotsze. No i jak sie okaze, ze cos namieszales z polaczeniami to go przeprogramujesz i juz, PCB tak latwo nie zmienisz.
    BTW, te porty IO musza miec tak szybki dostep, ze trzeba je umieszczac na szynie pamieci? Moze prosciej zastosowac jakies ekspandery I2C?
  • Poziom 33  
    CPLD odpuszczam całkowicie ,nieznam tego typu układów , co do sterowania pamięcią ...

    Linie A0-18 To linie wejściowe więc sterowanie wykonałem za pomocą zatrzasków 574D ,linie D0-D7 to linie odczytu/zapisu bajtu do pamięci wiec myślę że dobrze zrobiłem podłaczające je do układów 74HC245 ,linie WE , OE będą podłączone bezpośrednio do uC (atmega128)

    dzieki czemu za pomocą 2 portów (PC i PA ) mam linie na której moge równiez multipleksować układy 547D sterujące mosfety oraz 541 odczytujące stan wejść

    dlaczego tak ?

    układ w jakim chce zastosować rozwiązanie to sterownik inteligętnego domu zatem sama ilość wejść i wyjść będzie dość duża (64 I/O) a zastosowanie tego typu układów i sterowanie za pomoca multipleksowania , zmiejszy koszt urządzenia ;)
  • Poziom 33  
    Zastanawiam się nad wejściami których odczyt stanu jest realizowany przez układ 541 , czy wystarczy tylko podciągniecię do +U za pomocą 10k czy szukać innego rozwiązania :?:
  • Moderator Mikrokontrolery Projektowanie
    Jesli to maja byc piny IO do ktorych podlaczasz cos na dluzszych przewodach (a tak wnioskuje z tego, ze to ma byc HA) to ogolnie pomyslalbym o jakims lepszym zabezpieczeniu. Wejscia wylacznie jako petle pradowe izolowane transoptorami, wyjscia sterowane przynajmniej przez tranzystor. Nigdy laczenie bezposrednio do scalakow, chyba, ze do konca zycia chcesz naprawiac uszkodzenia :) No i jak widze niepotrzebnie walczysz z magistrala pamieci, podlacz extender I2C, bedziesz mial tylko 2 przewody a nie cala mase polaczenie i scalakow. W efekcie prostsza i tansza plytka.
  • Poziom 33  
    myślę nad umieszczeniem kompaktora na wejściu LM339 ,tak zmieniłem szyne na expander MCP23017 (16bit) ale jego wejścia również watro zabezpieczyć ;)
  • Poziom 33  
    zamieszczam schemat z LM339 :

    SRAM u układach mikroprocesorowych - Troszkę Teori
  • Pomocny post
    Moderator Mikrokontrolery Projektowanie
    Komparator jest ok, tylko co z zakloceniami? Ja bym to jednak zamienil na prosty transoptor - masz za jednym zamachem optoizolacje i spora odpornosc na zaklocenia gwarantowana faktem, ze transoptor steruje sie pradowo.
    BTW, widzal ktos moze schemat jakiejs centralki alarmowej? Tam powinny byc fajne zabezpieczenia, warto by je przeniesc do wlasnych projektow. Mam pod reka Satela, moze rzuce okiem co oni tam dali jako we/wy.
  • Poziom 33  
    myślę że obwód wejściowy RC kompaktora eliminuje zakłucenia w.cz. a symulacje w pspice wyglądają dobrze ,pytanie natury technicznej jeśli chodzi o projektowanie PCB czego najbardziej unikać prowadzeniu ścieżek miedzy pamięcią a magistralą ? czy bardzo muszę uwarzać na długość scieżek ?
  • Pomocny post
    Poziom 35  
    Przy częstotliwosciach które występują w twoim układzie naprawdę niczym bym się nie martwił...

    Aczkolwiek pewne wytyczne mogą okazać się pomocne:

    - ścieżki OE i WE (w szczegolnosci OE) powinny być trochę dłuzsze od magistrali adresowej. Nalezy uniknac sytuacji kiedy OE dotrze do kości pamięci szybciej niz adres. WE nie jest krytyczny, bo sygnał aktywuje się dopiero pod koniec cyklu zapisu.

    - Sciezki magistralki danych powinny być mniej więcej tej samej dlugosci (uniknijmy sytuacji prawidlowego zsamplowania tylko niektórych bitów na koniec cyklu...) - najdluzsza sciezka z tej magistrali powinna miec dlugosc przyblizona do sciezki OE.

    -Prowadzenie sciezek:
    Magistralki danych i adresu - od biedy mogą isc zakosami, ale nigdy nie stosować łamań o 90st. Wskazane jest łamanie 45st. Oblewać poligonami masy, nie kłaść obok nich żadnych sciezek wysokoprądowych (np. wyjscia OC do sterowania PWM ledami mocy itp). Dobrą praktyką jest kładzenie wszystkich sygnałów do pamięci na jednej z warstw, a na drugiej (NAD SCIEZKAMI) poligon masy.

    - Sygnaly OE i WE traktować delikatnie. Moga lezec obok siebie, ale powinny byc z obu stron oblane masą :

    [masa] / / [masa]
    [masa] | | [masa]
    [masa] | | [masa]

    (dwie kreski w srodku to OE i WE :D )

    Takie kladzenie sciezek raczej nie jest skuteczne dla czestotliwosci magistrali powyzej 66MHz, lub dla roznej masci SDRAMów. Rowniez SRAM ktory pracuje synchronicznie moze byc niebezpieczny, ale to nie twoj przypadek.
    W moich projektach, gdzie SRAMy pracują z częstotliwoscią ok. 20..25MHz, i jest 16 (!) kości Async SRAM (64MB w sumie) nie ma najmniejszych problemów, a sciezki sa polozone według wytycznych które opisalem powyzej.
  • Poziom 33  
    zastanawiam sie nad jeszcze jednym pomysłem w projekcie :

    aby multipleksowanie układów 245 i 754 wykonać za pomoca dodatkowego układu 745 (chce zaoszczędzić piny I/O uC )

    bardzo sobie skomplikuje sterowanie / szybkość komunikacji z pamięcią ?