Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

schemat dla pamieci NVRAM ? (dane z SRAM do EEPROM)

elaguna 29 May 2007 23:45 2387 8
IGE-XAO
  • #1
    elaguna
    Level 10  
    Witam.

    Pracuje nad projektem pamieci nieulotnej NVRAM. Pojecie nad projektowaniem ukladow mam znikome:( dlatego potrzebuje pomocy.

    Musze stworzyc schemat dla NVRAM (non-volatile random acces memory - pamiec nie ulotna). NVRAM sklada sie z SRAM-u i EEPROM-u. Cala pamiec dla wylaczonego ukladu jest przechowywana w EEPROMie, podczas wlaczenia zasilania dane maja zostac przetransportowane do SRAM-u, a pozniej spowrotem do EEPROMu podczas wylaczenia.

    Nie mam wiekszego pojecia jak to wykonac, narazie zrobilem cos takiego bardziej przy pomocy intuicji niz wiedzy ;) - schemat ponizej.

    Przy wlaczeniu ukladu zostaje uruchomiony zegar wraz z licznikiem, odczyt z EEPROM-u i zapis do SRAMu. Rownoczesnie zostaje naladowany kondensator ktory gromadzi energie ktora jest wykorzystana przy przepisywaniu danych z SRAMu do EEPROMu wczasie wylaczenia ukladu. Realizacja tego jest za pomoca bramek logicznych. Nie wiem jak zrealizowac zapis/odczyt z SRAMu z/do komputera (na rysunku - PC). Mam pomysl zeby zrobic jakos 'trojstan' - tu mam na mysli trzy stany w jakich moga znajdowac sie linie danych:
    1. odczyt z EEPROM i zapis do SRAM (wlaczenie ukladu)
    2. odczyt z SRAM i zapis do EEPROM (wylaczenie ukladu)
    3. odczyt/zapis z/do SRAMU zapis/odczyt do/z PC-ta
    Moze jakies rejestry dolozyc??

    Nie wiem rowniez co podlaczyc do niektorych pinow w liczniku, srami i eepromie. Zdjecie nie jest za dobrej jakosci dlatego na wszelki wypadek podam wszystkie nazwy pinow:

    1. Licznik 8 bitowy (na samej gorze):
    -RCO, QA...QH
    -SO, S1, ENT, ENP, CLK, A...H

    2. SRAM (w srodku po lewej):
    - OD, R/~W,CE2,~CE1, DI4...DI1, A7...A0

    3. EEPROM tak samo jak SRAM

    Jezeli ktos moze mi pomoc w dokonczeniu projektowania i sprawdzeniu czy wszyskie piny, czesci sa dobrze podlaczone i co mozna zmienic bylbym barzo wdzieczny !!!!!!!!!! :)

    schemat dla pamieci NVRAM ? (dane z SRAM do EEPROM)


    Serdecznie pozdrawiam

    PS Schemat robie w TINIE.
  • IGE-XAO
  • Helpful post
    #2
    tamam
    Level 17  
    Nie sprawdzalem wszystkiego, bo i tak chyba jeszcze dosc dluga droga przed Toba, zanim to wszystko zadziala.
    Musisz "troche" doprecyzowac projekt.

    0. Moze najpierw sprobuj zbudowac schemat BLOKOWY - bloczki licznika, pamieci, PC, zegara, zasilania , ZEROWANIE, itp... Rysuj magistrale i najwazniejsze linie strujace (bez szczegolow). Sporo Ci sie wtedy wyjasni...

    1. Ten "PC" (niewazne, czy to PC, czy jakikolwiek uklad nadrzedny)- jako jednostka powinien generowac adresy (licznik ma byc podlaczony do niego WEJSCIAMI, a nie wyjsciami). Wyjscia licznika na magistrale adresowa pamieci, chociaz... po co licznik skoro magistrala z PC jest juz 8bitowa? Nie wystarczy bufor? A moze lepiej uklad automatycznego generowania adresow na liczniku i tylko jego uaktywnianie z PC?
    Nie znam zalozen projektu.
    Zwroc uwage, czy magistrala adresy/dane nie jest wspolna (gdybys np wykorzystywal port drukarki prawdziewego PC).

    2. W jaki sposob chcesz sprawdzac, ze napiecie zasilajace naprawde zanika? (Normalnie uzywa sie do tego specjalizowanych ukladow scalonych monitorujacych linie PRZED filtrem zasilacza)
    Ponadto musisz obliczyc czy energia zgromadzona w kondensatorze wystarczy, by przepisac te dane z SRAM do EEPROM. Zapis do EEPROM jest zwykle znacznie dluzszy niz do SRAM, nawet w trybie PAGE.
    Ten kondensator u Ciebie owszem, moze i trzymac bedzie napiecie, ale co z tego? To nie jest zasilanie ukladow pamieci.

    3. Jaki to licznik? Powinnes podawac zawsze jakies oznaczenia ukladow - oznaczenia koncowek nie zawsze sa jednoznaczne.

    4. Oczywiscie sposob podlaczenia linii danych (pomieszane numery nie maja znaczenia) w przypadku pamieci nie maja znaczenia, ale mozna by to poprawic, co zwiekszy czytelnosc.

    5. Koniecznie dorysuj te bufory trojstanowe na polaczeniach i sposob sterowania nimi.

    Bledow jest jeszcze kilka, ale jak zaczniesz cos poprawiac, pewnie bedziesz mogl liczyc na dalsza pomoc na forum.
  • #3
    elaguna
    Level 10  
    Dzieki za odpowiedz Tamam, bardzo mi pomagasz:)

    tamam wrote:

    0. Moze najpierw sprobuj zbudowac schemat BLOKOWY

    Od osoby zlecajacej dostalem bardzo prowizoryczny schemat ktory ponizej zalaczam. Mam mniej wiecej sie do niego zastosowac ale oczywiscie wszystkie inne pomysly sa mile widziane.
    schemat dla pamieci NVRAM ? (dane z SRAM do EEPROM)

    tamam wrote:

    po co licznik skoro magistrala z PC jest juz 8bitowa? Nie wystarczy bufor? A moze lepiej uklad automatycznego generowania adresow na liczniku i tylko jego uaktywnianie z PC?
    Nie znam zalozen projektu.
    Zwroc uwage, czy magistrala adresy/dane nie jest wspolna (gdybys np wykorzystywal port drukarki prawdziewego PC).

    Szczerze mowiac to nie mam pojecia czy bedzie lepszy bufor. Wiem tylko ze powinienem zastososowac licznik. Moze ten licznik automatycznego generowania adresow? Mozesz podac przyklad?
    Magistrala raczej osobna...Chociaz jak bylo by wygodniej moze byc wspolna:>

    tamam wrote:

    2. W jaki sposob chcesz sprawdzac, ze napiecie zasilajace naprawde zanika? (Normalnie uzywa sie do tego specjalizowanych ukladow scalonych monitorujacych linie PRZED filtrem zasilacza)
    Ponadto musisz obliczyc czy energia zgromadzona w kondensatorze wystarczy
    Ten kondensator u Ciebie owszem, moze i trzymac bedzie napiecie, ale co z tego? To nie jest zasilanie ukladow pamieci.

    Moglbys podac przyklad zasilania pamieci w podobny sposob do mojego?
    Nie wiem rowniez jak obliczyc ile energii potrzeba.

    tamam wrote:

    3. Jaki to licznik?

    Ten co uzylem dotychczas to 74AS867.

    tamam wrote:

    4. Oczywiscie sposob podlaczenia linii danych (pomieszane numery nie maja znaczenia) w przypadku pamieci nie maja znaczenia, ale mozna by to poprawic, co zwiekszy czytelnosc.

    Mam nadzieje ze o to chodzilo? Poprawilem jak chyba widac na nastepnym rysunku:>

    tamam wrote:

    5. Koniecznie dorysuj te bufory trojstanowe na polaczeniach i sposob sterowania nimi.

    hmm, szczerze mowiac to brak mi pomyslu gdzie je wstawic:/ Jezeli rowniez ktos ma pomysl na sterowanie to prosze pisac.
    schemat dla pamieci NVRAM ? (dane z SRAM do EEPROM)
  • IGE-XAO
  • Helpful post
    #4
    tamam
    Level 17  
    Przepraszam, ze nie odpowiadam zbyt szybko, ale raczej jestem dosc zajety. Mam nadzieje, ze ten projekt nie jest "na wczoraj"...

    elaguna wrote:
    Od osoby zlecajacej dostalem bardzo prowizoryczny schemat...


    Moze nie wyrazilem sie scisle... Rysujac schemat blokowy mozesz w kazdej kolejnej wersji "wchodzic" coraz bardziej w strukture (coraz wiecej szczegolow, otrzymujac w koncu "prawie" schemat ideowy.
    No nic, moze z czasem :-) sam dojdziesz do swojej drogi projektowania.

    elaguna wrote:

    Moze ten licznik automatycznego generowania adresow? Mozesz podac przyklad?

    Po prostu. Licznik wyzerowany (adres "0000") lub adres startowy ladowany z PC. Kazdy impuls zwieksza adres o 1, wiec nie trzeba by za kazdym razem przesylac tego "przewidywalnego" adresu z komputera (czas!).

    elaguna wrote:

    Magistrala raczej osobna...Chociaz jak bylo by wygodniej moze byc wspolna:>


    Wygodniej jest jak magistarle sa rozdzielone, ale jak juz pisalem w pierwszym poscie nadal nie wiem co znaczy ten PC - jezeli korzystasz z portu drukarki to nie msz tam stricte magistarli adresowej. To jak - co to jest ? Jakis kontroler (np na procesorze jednoukladowym), port drukarki PC, czy moze dedykowana karta do PC?

    elaguna wrote:

    Moglbys podac przyklad zasilania pamieci w podobny sposob do mojego?
    Nie wiem rowniez jak obliczyc ile energii potrzeba.


    Hmmm...
    Nad sposobem zasilania pamieci mozna by pomyslec. Jezeli chcialbys zastosowac PODTRZYMANIE bateryjne pamieci RAM, to wtedy przepisywanie do EEPROM nie jest konieczne. Byly tez swego czasu dostepne pamieci firmy Benchmarq z bateria w obudowie, ale takie rozwiazania pewnie nie interesuja zleceniodawcy - nauczyciela(?).

    Jezeli chodzi o kondensator (raczej baterie kondensatorow):
    Problem w tym, by na kondensatorze bylo napiecie wieksze niz powiedzmy 4.5V (trzeba sprawdzic w katalogach!) przy zasilaniu 5V przez caly czas PRZEPISYWANIA tych 256 komorek pamieci SRAM (linia adresowa to 8bitow wiec tylko tyle bedziesz przepisywac?) do EEPROM. Musisz wiedziec jaki jest czas zapisu pojedynczej komorki/strony do EEPROMU (nota katalogowa) i stad obliczyc czas calkowity przepisywania.
    Napiecie na kondensatorze opada wykladniczo, wiec raczej nie masz tego czasu zbyt duzo, gdy bedzie sie zmieniac z 5V na 4.5V (chociaz moze cykl zapisu bedzie dzialal poprawnie nawet do 3.5V? Ale tego nikt Ci nie zagwarantuje. Dlatego tez trzeba natychmiast rozpoczac ten cykl, jak tylko zaniknie napiecie sieciowe. Zobacz np note aplikacyjna ukladu MAX813, MAX708 (ja mam specjalna estyme do tych wlasnie) albo cos podobnego. Zrozumiesz, jak to musi byc zbudowane.

    elaguna wrote:

    4 Mam nadzieje ze o to chodzilo? Poprawilem jak chyba widac na nastepnym rysunku:>

    Niezupelnie o to mi chodzilo :-) Masz polaczone linie danych D11...D14 z liniami danych D1...D4, ale jak pisalem to nie ma znaczenia dla dzialania. To tylko kwestia "estetyki" i czytelnosci.
    Poprawiles jednak ten licznik. Nad zastosowanym typem moze jednak sie zastanowimy pozniej.

    elaguna wrote:

    hmm, szczerze mowiac to brak mi pomyslu gdzie je wstawic:/

    Po prostu bufor powinien byc uzyty na magistrali adresowej miedzy licznikiem, a PC (moze byc jednokierunkowy), a na magistrali danych dwukierunkowy np 74LS245. Zreszta wszedzie tam, gdzie laczysz "cos z czyms" (interfejs vel miedzymordzie :-) jak ktos to kiedys smiesznie chcial zastapic "po polskiemu"). No chyba, ze ten PC stanowi integralna czesc ukladu SRAM-EEPROM (na jednej plytce) wtedy bufory nie sa niezbedne...
    Jak masz jakies watpliwosci - pytaj. Ja chce maksymalnie wycisnac z Ciebie te informacje. To ma byc TWOJ projekt, a ja chcialbym pomoc (li i tylko). Zreszta jak pisalem nie mam zbyt duzo czasu. Przepraszam wiec z gory, za ewentualne opoznienia w odpowiedziach.
    Moze ktos dolaczy i pomoze Ci wiecej?
  • #5
    elaguna
    Level 10  
    Dzieki wielkie za odpowiedzi!

    TAMAM masz racje ze schematem blokowym, napewne nastepnym razem od tego zaczne, teraz juz nie mam sily wracac:>

    Bylem na konsultacjach u nauczyciela i powiedzial ze projekt jest w miare dobry i skonczony :D. Musze jeszcze tylko pomyslec nad kilkoma rozwiazaniami. Chyba mu sie poprostu nie chce wglebiac w niego.. no ale coz...

    Wiec dorysowalem komparatory (o ile dobrych oznaczen uzylem - trojkaty) ktore w zaleznosci jaki sygnal jest podany otwieraja lub zamykaja odpowiednie linie z adresami i danymi.

    Mam teraz problem wlasnie zeby nimi sterowac. Na rysunku sygnaly te sa oznaczone przez LEE, PCE, SE, EE.

    Szukam urzadzenia ktore realizowalo by:

    1. Dla sygnalu poczatkowego, wejsciowego rownego "1" (u mnie wlaczenie zasilania) zacznie wysylac przez jakis czas "1" (myslalem o liczniku ktory przez ten czas by liczyl ale nie znam sie na tym i nie wiem czy taki licznik istnieje), wtedy nastepuje odblokowanie potrzebnych linii i przepisanie danych z EEPROM do SRAM.

    2. Po uplywie zadanego czasu urzadzenie (licznik juz nie liczy i) ma wysylac caly czas "0" ("1" na wejsciu jest caly czas). W przyszlosci poprzez bramki chce odblokowac zablokowane magistrale danych z/do "PC"...

    3. Dopoki jest "1" na wejsciu to wyjscie ma "0" (zablokowane linie do EEPROM, odblokowane do "PC") , jezeli jednak teraz zmieni sie wejscie na "0" (wylaczenie zasilania) , urzadzenie powinno znowu zaczac wysylac przez jakis czas - albo caly czas - jedynke (na wyjsciu).

    Moze po odpowiednim podlaczeniu (jakim?) nadaje sie do tego ktorys z licznikow 7490, 7492, 7493 ??

    Jezeli to jakos uda mi sie zrealizowac to bede mogl isc na cwiczenia w poniedzialek :) (04.06.2007). Ehh, a ciezko jest cos logiczne wymyslic poczatkujacej osobie dlatego ponownie prosze o pomoc i z gory dziekuje jeszcze raz za wszystkie odpowiedzi.

    schemat dla pamieci NVRAM ? (dane z SRAM do EEPROM)

    schemat dla pamieci NVRAM ? (dane z SRAM do EEPROM)
  • Helpful post
    #6
    tamam
    Level 17  
    Poniewaz starasz sie cos robic, a nie czekasz na gotowca, to mozemy wspolpracowac dalej. :-) Zajrzyj moze jutro okolo poludnia. Znajde chwile, to cos Ci opisze; do poniedzialku cos razem wymyslimy.
  • #7
    elaguna
    Level 10  
    tamam wrote:
    Poniewaz starasz sie cos robic,

    Mam nadzieje ze cos z tego wyjdzie sensownego ;)

    tamam wrote:
    Zajrzyj moze jutro okolo poludnia. Znajde chwile, to cos Ci opisze; do poniedzialku cos razem wymyslimy.


    Super! Dzieki wielkie, czekam z niecierpliwoscia.

    Ja z kolei znalazlem cos takiego (nie wiem czy to w ogole mozna zastosowac, ale co tam):
    Do odmierzenia tego odstepu czasowego, o ktorym wspominalem wczesniej, znalazlem timer555. Narazie mysle jak go tu ustawic..
    https://www.elektroda.pl/rtvforum/viewtopic.php?p=3941989#3941989

    Jak wymysle wkleje kolejne zdjecie:>[/youtube]
  • Helpful post
    #8
    tamam
    Level 17  
    Witam ponownie.
    W ukladach cyfrowych raczej nie uzywa sie analogowych ukladow czasowych. Jak beda potrzebne opoznienia rzedu [ns], zbudujesz to na bramkach. Przy wiekszych czasach stosuje sie uklady timerow 74LS121 lub 74LS123 lub ich nowsze odpowiedniki.
    Mozna taki timer (albo tez 555) uzyc w konfiguracji przerzutnika monostabilnego by generowal impuls po zalaczeniu zasilania (chodzi o zainicjowanie przepisywania z EEPROM do RAM).
    Wszystkie sygnaly sterowania przepisywaniem warto by bylo uzyc z wykorzystaniem centralnego sygnalu CLOCK (Ty uzywasz bloczka, ale mozna to tez zbudowac z pojedynczych ukladow lub bramek).
    KONIECZNIE wydrukuj i przejzyj sobie noty katalogowe uzytych pamieci. Powinny byc tam podane minimalne czasy opoznien jak i samych przebiegow czasowych zapisu/odczytu do/z pamieci. Chcialbym, bys orientowal sie "co i dlaczego" , gdy bedziemy omawiac jednostke sterujaca tymi przebiegami (WR/RD, CS etc...)
    Moze tez zobacz noty katalogowe licznika 74LS93 i 74LS193.
    W Twoim raporcie musisz to uwzglednic (te przebiegi zapisu/odczytu).
    Do jutra.
  • #9
    elaguna
    Level 10  
    Witam ponownie :)

    tamam wrote:
    Przy wiekszych czasach stosuje sie uklady timerow 74LS121 lub 74LS123 lub ich nowsze odpowiedniki.

    Niestety w "TINIE" jest tylko 74121.

    tamam wrote:
    Mozna taki timer (albo tez 555) uzyc w konfiguracji przerzutnika monostabilnego by generowal impuls po zalaczeniu zasilania (chodzi o zainicjowanie przepisywania z EEPROM do RAM).

    Chyba to zrobilem:D To ta czesc ukladu po lewej stronie (na ponizszych rysunkach rowniez w przyblizeniu).

    tamam wrote:
    Wszystkie sygnaly sterowania przepisywaniem warto by bylo uzyc z wykorzystaniem centralnego sygnalu CLOCK (Ty uzywasz bloczka, ale mozna to tez zbudowac z pojedynczych ukladow lub bramek).

    To musisz mi pokazac bo nie zabardzo wiem jak to wszystko ze soba posklejac :(

    tamam wrote:
    Chcialbym, bys orientowal sie "co i dlaczego" , gdy bedziemy omawiac jednostke sterujaca tymi przebiegami (WR/RD, CS etc...)
    Moze tez zobacz noty katalogowe licznika 74LS93 i 74LS193.
    W Twoim raporcie musisz to uwzglednic (te przebiegi zapisu/odczytu)

    Przejrzalem i mniej wiecej sie orientuje o co chodzi :>

    schemat dla pamieci NVRAM ? (dane z SRAM do EEPROM)

    schemat dla pamieci NVRAM ? (dane z SRAM do EEPROM)

    // PS: moj mail: elaguna(malpa)wp.pl