Statyczna pamięć RAM

Pozostałe układy mikrokontrolerów, układy peryferyjne i inne, nie mieszczące się w powyższych kategoriach.
Awatar użytkownika
gaweł
Geek
Geek
Posty: 1259
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Statyczna pamięć RAM

Postautor: gaweł » sobota 13 maja 2017, 22:43

Kiedyś takie kostki można było pozyskać z płyt głównych PC (w takiej wąskiej obudowie, o szerokości 0,3 cala) jednak powszechnie występowały w szerokiej obudowie (0,6 cala). Pamięć Random Access Memory jest pamięcią o dostępie bezpośrednim, swobodnym. Pamięć ta działa podobnie jak pamięć EPROM (z tą różnicą, że można w niej dane zapisywać bezpośrednio), wymaga informacji adresowej (wielobitowej informacji terującej), informacji danych (typowo 8-bitowej szyny danych o dwukierunkowym charakterze pracy: może być wyjściem pamięci lub wejściem do pamięci) oraz dodatkowych sygnałów sterujących (jak w EPROM: odpowiedni zbiór sygnałów wyboru układu: chip select, włączenia układu: output enable oraz, niewystępujący w EPROM, sygnał zezwolenia na zapis: write enable). Generalnie stanami aktywnymi sygnałów wyboru są poziomy zera logicznego. W przypadku sygnału write enable, który jednocześnie determinuje kierunek pracy szyny danych, jest zapis dla write enale = LOW, odczyt dla write enable = HIGH. Po włączeniu zawartość pamięci należy uznać za przypadkową, toteż procek musi na dzień dobry coś tam zapisać (najczęściej wyzerować). Każdy zapis danych do pamięci jest pamiętany ale może być zmieniany. Niestety tą pamięć dotyka problem choroby Alzheimera, po wyłączeniu zasilania wszystko zapomina.
W pewnych modelach komputerów PC, ich płyty główne zawierały pamięć podręczną zbudowaną w oparciu o szybkie pamięci statyczne. W większości przypadków jest to typowa pamięć statyczna RAM o czasie dostępu od 10 ns do 25 ns (w zależności od płyty głównej) i pojemności 32k * 8 bitów.
s_ram_f01.jpg
Wiele mikrokontrolerów ma możliwość przyłączenia dodatkowej pamięci RAM, czyli jest konstrukcyjnie przewidziana możliwość takiego rozszerzenia oraz istnieją instrukcje pozwalające zapisać oraz odczytać dane do/z pamięci. Przykładem takiego mikrokontrolera jest 80C51 (tu użyty jest mikrokontroler ATMEL 89C51, oraz instrukcja MOVX). Biorąc pod uwagę, że w/w mikrokontroler posiada 128 bajtów wewnętrznej pamięci danych, to dołączenie jednego układu pamięci RAM zwiększa zasoby kilkaset razy. Przestrzeń adresowa mikrokontrolera z rodziny C51 pozwala na przyłączenie dwóch układów pamięci RAM dając łącznie 64k bajtów pamięci danych, czyli w przypadku 89C51 jest to “niewyobrażalnie duża pamięć”.
Interfejs obsługujący zewnętrzną pamięć RAM wymaga użycia dodatkowych układów oraz absorbuje w samym mikrokontrolerze w całości port P0 i P2 oraz dwa wyprowadzenia portu P3. Port P0 spełnia podwójną rolę: szyny danych oraz część szyny adresowej. Port P2 pełni funkcję szyny adresowej oraz dwa wyprowadzenia portu P3 pełnią funkcję sygnałów strobu zapisu danych oraz odczytu danych do/z zewnętrznej pamięci RAM. Sposób przyłączenia pamięci przedstawia ilustracja 2. Układ U2 (74xx573) pełni rolę zatrzasku szyny adresowej, układ U4 (74xx08) jest odpowiedzialny za wygenerowanie sygnału wyboru do pamięci RAM.
s_ram_f02.png

Powyższy układ jest rozbudowany o interfejs szeregowy pozwalający na komunikację z systemem mikroprocesorowym. Schemat interfejsu szeregowego jest następujący:
s_ram_f03.png
Odpowiadający powyższym schematom układ testowy przedstawia się następująco:
s_ram_f04.jpg
s_ram_f05.jpg
s_ram_f06.jpg

Program zawarty w mikrokontrolerze realizuje prosty test pamięci, który polega na wypełnieniu całej dostępnej przestrzeni zewnętrznej pamięci RAM i następnie sprawdzeniu (odczytaniu pamięci), czy we wszystkich zapisanych komórkach pamięci znajdują się właściwe dane. Jeżeli w wyniku wykonanych operacji nie zostaną wykryte różnice, to program przesyła na ekran terminala (emulatora terminala) poprzez łącze szeregowe komunikat o pozytywnym zakończeniu testu pamięci oraz w przypadku wypadku wysyłany jest komunikat zawierający adres komórki w pamięci, która zawiera inne dane niż oczekiwane.
Po uruchomieniu systemu testowego na ekran programu “Hyper Terminal” wyświetlany jest komunikat (program po wykonaniu testu pamięci odczekuje pewien interwał czasu i ponownie realizuje test pamięci):
s_ram_f07.png

Jeżeli w trakcie pracy “dokonamy uszkodzenia” (została rozłączona jedna z linii szyny danych), to efekt testu pamięci RAM jest następujący:
s_ram_f08.png
Adres komórki pamięci jest przypadkowy (rozłączenie było wykonane na “żywym organizmie”).
Program mikrokontrolera jest następujący:

Kod: Zaznacz cały

;
;  ****************************************************************************
;  ****************************************************************************
;  ***                                                                      ***
;  ***                          http://microgeek.eu                         ***
;  ***                                                                      ***
;  ***                            BIALYSTOK 2017                            ***
;  ***                                                                      ***
;  ***                            Static RAM Test                           ***
;  ***                                                                      ***
;  ****************************************************************************
;  ****************************************************************************
;
$mod51
;
$NODEBUG
$LIST
$OBJECT
;
;-----------------------------------------------------------------------------
;
ExtRAMStart     EQU     00000H
ExtRAMStop      EQU     07FFFH
REG0            EQU     0
REG1            EQU     1
REG2            EQU     2
REG3            EQU     3
REG4            EQU     4
REG5            EQU     5
REG6            EQU     6
REG7            EQU     7
;
Cr              EQU     0DH                     ;
Lf              EQU     0AH                     ;
;
RESET           EQU     00H
EXTI0           EQU     03H
TIMER0          EQU     0BH
EXTI1           EQU     13H
TIMER1          EQU     1BH
SINT            EQU     23H
;
;-----------------------------------------------------------------------------
                DSEG
;-----------------------------------------------------------------------------
                ORG     8
STACKDATA:      DS      40H     ;
MemAdr:         DS      2       ;
RlData:         DS      1       ;
RqData:         DS      1       ;
;
;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------
;
                CSEG
;-----------------------------------------------------------------------------
                ORG     RESET                   ;
                LJMP    RESET_SERVICE           ;
;-----------------------------------------------------------------------------
                ORG     EXTI0                   ;       EXT. INT. 0 SERVICE
                RETI                            ;
;-----------------------------------------------------------------------------
                ORG     TIMER0                  ;       TIMER/COUNTER. INT. 0 SERVICE
                RETI                            ;
;-----------------------------------------------------------------------------
                ORG     EXTI1                   ;       EXT. INT. 1 SERVICE
                RETI                            ;
;-----------------------------------------------------------------------------
                ORG     TIMER1                  ;       TIMER/COUNTER. INT. 1 SERVICE
                RETI                            ;
;-----------------------------------------------------------------------------
                ORG     SINT                    ;       SERIAL INT. SERVICE
                RETI                            ;
;-----------------------------------------------------------------------------
HexConv:        DB      '0123456789ABCDEF'
;-----------------------------------------------------------------------------
Conv:                                           ;PROCEDURE Conv ( VAR R0 : CHAR ;
;****************                                                 VAR R1 : CHAR ;
;                                                                     A  : BYTE ) ;
;                                                BEGIN (* Conv *)
                PUSH    DPH                     ;
                PUSH    DPL                     ;
                PUSH    ACC                     ;
                RR      A                       ; R0 := HexConv [ A MOD 16 ] ;
                RR      A                       ;
                RR      A                       ;
                RR      A                       ;
                ANL     A , # 0FH               ;
                MOV     DPTR , # HexConv        ;
                MOVC    A , @ A + DPTR          ;
                MOV     R0 , A                  ;
                POP     ACC                     ; R1 := HexConv [ A DIV 16 ] ;
                ANL     A , # 0FH               ;
                MOVC    A , @ A + DPTR          ;
                MOV     R1 , A                  ;
                POP     DPL                     ;
                POP     DPH                     ;
                RET                             ;END (* Conv *) ;
;-----------------------------------------------------------------------------
SendSerialPool:                                 ;PROCEDURE SendSerialPool ( A : BYTE ) ;
;******************                             ;BEGIN (* SendSerialPool *)
                CLR     TI                      ; [TI] := 0 ;
                MOV     SBUF , A                ; [SBUF] := A ;
SeCh_2:                                         ;
                JB      TI , SeCh_1             ; WHILE NOT [TI] DO
                SJMP    SeCh_2                  ;
SeCh_1:                                         ; END (* WHILE *) ;
                RET                             ;END (* SendSerialPool *) ;
;-----------------------------------------------------------------------------
SendSerialPoolTxt:                              ;PROCEDURE SendSerialPoolTxt ( DPTR : ADDRESS ) ;
;*****************                              ;BEGIN (* SendSerialPoolTxt *)
                PUSH    ACC                     ;
SendPool_3:                                     ; LOOP
                CLR     A                       ;  A := DPTR ^ ;
                MOVC    A , @ A + DPTR          ;
                CJNE    A , # 0 , SendPool_1    ;  IF A = 0 THEN
                POP     ACC                     ;
                RET                             ;   RETURN ;
SendPool_1:                                     ;  END (* IF *) ;
                LCALL   SendSerialPool          ;  SendSerialPool ( A ) ;
                INC     DPTR                    ;  INC ( DPTR ) ;
                LJMP    SendPool_3              ; END (* LOOP *) ;
                                                ;END (* SendSerialPoolTxt *) ;
;-----------------------------------------------------------------------------
SendR0R1Pool:                                   ;PROCEDURE SendR0R1Pool ( R0R1 : WORD ) ;
;****************                                BEGIN (* SendR0R1Pool *)
                PUSH    REG1                    ;
                MOV     A , R0                  ; SendSerialPool ( R0 ) ;
                LCALL   SendSerialPool          ;
                POP     ACC                     ; SendSerialPool ( R1 ) ;
                LCALL   SendSerialPool          ;
                RET                             ;END (* SendR0R1Pool *) ;
;-----------------------------------------------------------------------------
ClearRam:                                       ;PROCEDURE ClearRam ;
;***************                                ;BEGIN (* ClearRam *)
                MOV     DPTR , # ExtRAMStart    ;
ClrR2:                                          ;
                CLR     A                       ;
                MOVX    @ DPTR , A              ;
                MOV     A , DPL                 ;
                CJNE    A , # LOW ( ExtRAMStop ) , ClrR1
                MOV     A , DPH                 ;
                CJNE    A , # HIGH ( ExtRAMStop ) , ClrR1
                RET                             ;
ClrR1:                                          ;
                INC     DPTR                    ;
                LJMP    ClrR2                   ;
                                                ;END (* ClearRam *) ;
;-----------------------------------------------------------------------------
RAMTest:                                        ;PROCEDURE RAMTest ;
;****************                               ;BEGIN (* RAMTest *)
                MOV     R0 , # 0                ;
                MOV     DPTR , # ExtRAMStart    ;
RamT3:                                          ;
                MOV     A , R0                  ;
                CPL     A                       ;
                RL      A                       ;
                RL      A                       ;
                RL      A                       ;
                RL      A                       ;
                ANL     A , # 0F0H              ;
                ORL     A , R0                  ;
                MOVX    @ DPTR , A              ;
                MOV     A , DPL                 ;
                CJNE    A , # LOW ( ExtRAMStop ) , RamT1
                MOV     A , DPH                 ;
                CJNE    A , # HIGH ( ExtRAMStop ) , RamT1
                LJMP    RamT2                   ;
RamT1:                                          ;
                INC     DPTR                    ;
                INC     R0                      ;
                MOV     A , R0                  ;
                CJNE    A , # 0CH , RamT3       ;
                MOV     R0 , # 0                ;
                LJMP    RamT3                   ;
RamT2:                                          ;
                MOV     R0 , # 0                ;
                MOV     DPTR , # ExtRAMStart    ;
RamT6:                                          ;
                MOV     A , R0                  ;
                CPL     A                       ;
                RL      A                       ;
                RL      A                       ;
                RL      A                       ;
                RL      A                       ;
                ANL     A , # 0F0H              ;
                ORL     A , R0                  ;
                MOV     B , A                   ;
                MOVX    A , @ DPTR              ;
                CJNE    A , B , RamT7           ;
                MOV     A , DPL                 ;
                CJNE    A , # LOW ( ExtRAMStop ) , RamT4
                MOV     A , DPH                 ;
                CJNE    A , # HIGH ( ExtRAMStop ) , RamT4
                LJMP    RamT5                   ;
RamT7:                                          ; DPTR - fail address
                CLR     C                       ; A    - real data
                RET                             ; B    - req. data
RamT4:                                          ;
                INC     DPTR                    ;
                INC     R0                      ;
                MOV     A , R0                  ;
                CJNE    A , # 0CH , RamT6       ;
                MOV     R0 , # 0                ;
                LJMP    RamT6                   ;
RamT5:                                          ;
                SETB    C                       ;
                RET                             ;END (* RAMTest *) ;
;-----------------------------------------------------------------------------
RAMFailMessage:                                 ;PROCEDURE RAMFailMessage ( ) ;
;***************                                ;BEGIN (* RAMFailMessage *)
                MOV     DPTR , # RamFailTxt     ; SendSerialPoolTxt ( RamFailTxt ) ;
                LCALL   SendSerialPoolTxt       ;
                MOV     A , LOW ( MemAdr + 1 )  ; Conv ( R0R1 , HIGH ( MemAdr ) ) ;
                LCALL   Conv                    ;
                LCALL   SendR0R1Pool            ; SendR0R1Pool ( R0R1 ) ;
                MOV     A , LOW ( MemAdr )      ; Conv ( R0R1 , LOW ( MemAdr ) ) ;
                LCALL   Conv                    ;
                LCALL   SendR0R1Pool            ; SendR0R1Pool ( R0R1 ) ;
                MOV     DPTR , # RamFailTxt2    ; SendSerialPoolTxt ( RamFailTxt2 ) ;
                LCALL   SendSerialPoolTxt       ;
                MOV     A , LOW ( RlData )      ; Conv ( R0R1 , RealData ) ;
                LCALL   Conv                    ;
                LCALL   SendR0R1Pool            ; SendR0R1Pool ( R0R1 ) ;
                MOV     A , # '/'               ; SendSerialPool ( '/' ) ;
                LCALL   SendSerialPool          ;
                MOV     A , LOW ( RqData )      ; Conv ( R0R1 , ReqData ) ;
                LCALL   Conv                    ;
                LCALL   SendR0R1Pool            ; SendR0R1Pool ( R0R1 ) ;
                MOV     DPTR , # RamFailTxt3    ; SendSerialPoolTxt ( RamFailTxt3 ) ;
                LCALL   SendSerialPoolTxt       ;
                RET                             ;END (* RAMFailMessage *)
;-----------------------------------------------------------------------------
SendRAMOkMessage:                               ;PROCEDURE SendRAMOkMessage ;
;***************                                ;BEGIN (* SendRAMOkMessage *)
                MOV     DPTR , # RamOKTxt       ; SendSerialPoolTxt ( RamOKTxt ) ;
                LCALL   SendSerialPoolTxt       ;
                RET                             ;END (* SendRAMOkMessage *) ;
;-----------------------------------------------------------------------------
SRAMDiagnostic:                                 ;PROCEDURE SRAMDiagnostic ;
;****************                               ;BEGIN (* SRAMDiagnostic *)
                LCALL   RAMTest                 ; IF NOT RAMTest ( A , B , DPTR ) THEN
                JC      SRDiag_0                ;
                MOV     LOW ( RlData ) , A      ;  RlData := A ;
                MOV     A , B                   ;  RqData := B ;
                MOV     LOW ( RqData ) , A      ;
                MOV     A , DPL                 ;  MemAdr := DPTR ;
                MOV     LOW ( MemAdr ) , A      ;
                MOV     A , DPH                 ;
                MOV     LOW ( MemAdr + 1 ) , A  ;
                LCALL   RAMFailMessage          ;  RAMFailMessage ( ) ;
                RET                             ;  RETURN ;
SRDiag_0:                                       ; END (* IF *) ;
                LCALL   SendRAMOkMessage        ; SendRAMOkMessage ( ) ;
                RET                             ;END (* SRAMDiagnostic *) ;
;-----------------------------------------------------------------------------
HardInit:                                       ;PROCEDURE HardInit ;
;****************                               ;BEGIN (* HardInit *)
                MOV     SCON , # 01010000B      ; tryb 1 : transmisja asnynchr.
;                                76543210       ; 8 bitow
;                                               ; z szybk. okresl. program.
;                                               ; odbiornik odblokowany
                MOV     TMOD , # 00100001B      ;
                MOV     TCON , # 01010100B      ;
                MOV     TH1 , # 0FDH            ; 9600 bps ;
                MOV     TL1 , # 0FDH            ;
                RET                             ;END HardInit ;
;-----------------------------------------------------------------------------
Delay:                                          ;PROCEDURE Delay ( ) ;
;****************                               ;BEGIN (* Delay *)
                MOV     DPTR , # 0              ;
Dly_0:                                          ;
                INC     DPTR                    ;
                MOV     A , DPL                 ;
                ORL     A , DPH                 ;
                JNZ     Dly_0                   ;
                RET                             ;END (* Delay *) ;
;-----------------------------------------------------------------------------
LongDelay:                                      ;PROCEDURE LongDelay ;
;****************                               ;BEGIN (* LongDelay *)
                LCALL   Delay                   ; Delay ;
                LCALL   Delay                   ; Delay ;
                LCALL   Delay                   ; Delay ;
                LCALL   Delay                   ; Delay ;
                LCALL   Delay                   ; Delay ;
                LCALL   Delay                   ; Delay ;
                LCALL   Delay                   ; Delay ;
                LCALL   Delay                   ; Delay ;
                RET                             ;END (* LongDelay *) ;
;-----------------------------------------------------------------------------
RESET_SERVICE:                                  ;BEGIN (* SRAM *)
                MOV     SP , # LOW(STACKDATA)-1 ;
                MOV     P3 , # 0FFH             ;
                MOV     P1 , # 0FFH             ;
                LCALL   HardInit                ; HardInit ;
Main_0:                                         ; LOOP
                MOV     DPTR , # StartTxt       ;  SendSerialPoolTxt(StartKxt);
                LCALL   SendSerialPoolTxt       ;
                LCALL   SRAMDiagnostic          ;  SRAMDiagnostic ;
                LCALL   ClearRam                ;  ClearRam ;
                LCALL   LongDelay               ;  LongDelay ;
                LJMP    Main_0                  ; END (* LOOP *) ;
                                                ;END (* SRAM *)
;-----------------------------------------------------------------------------
StartTxt:       DB      Cr , Lf , '**** Static RAM diagnostic program ***'
                DB      Cr , Lf , 0
RamOKTxt:       DB      'RAM TEST O.K.' , Cr , Lf , 0
RamFailTxt:     DB      'RAM TEST FAIL AT ADDRESS ' , 0
RamFailTxt2:    DB      ' RL/RQ ' , 0
RamFailTxt3:    DB      Cr , Lf , Cr , Lf , 0
;-----------------------------------------------------------------------------
                END
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: Statyczna pamięć RAM

Postautor: tasza » niedziela 14 maja 2017, 15:49

No właśnie, nawiązując do pozyskanych ze starych urządzeń pamięci SRAM,
ja bardzo polecam uwadze stare, zakryte zazwyczaj pogardą nowobogackiej nowoczesności płyty starych kompów PC, szczególnie z CPU '386 i '486
Tam właśnie jako podręczne pamięci (cache) stosowano układy 61xxx, czyli mega szybkie (<20ns) kostki RAM, które z powodzeniem można zastosować w amatorskich realiach. Te układy, np 61256 mają ten sami układ wyprowadzeń co klasyczne 62256, jeno obudowa deczko węższa jest - prosta proteza na płytce stykowej zaradzi kłopocikowi, a zysk niezmierny - cała, statystyczna motherboard na targowisku to paręnaście złotych, cena kostek RAM luzem - tyleż za sztukę :) przebitka cenowa - bez komentarza :)
10_IMG_6583.JPG


Inna ciekawostka co do SRAM
w przemysłowych sterownikach często spotykanym był RAM-dysk, obszar pamięci widziany przez system jako zwykły napęd dyskowy, ale tak po prawdzie będący zewnętrznym modułem podtrzymywanej bateryjne pamięci, przykład poniżej, system złącz w standardzie PC104:
11_IMG_6584.JPG
12_IMG_6585.JPG
13_IMG_6586.JPG
14_IMG_6587.JPG

Gdy wpadnie nam w łapki taki moduł RAM-dysk - polecam szczerze najpierw pogoglować za specyfikacją kostek w nim użytych - bo można trafić na prawdziwe rarytasy ;)
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
xor
User
User
Posty: 169
Rejestracja: poniedziałek 05 wrz 2016, 21:44

Re: Statyczna pamięć RAM

Postautor: xor » niedziela 14 maja 2017, 16:45

Coś takiego wymontowałem kiedyś z płyty z AMD K6
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Ostatnio zmieniony niedziela 14 maja 2017, 18:44 przez xor, łącznie zmieniany 3 razy.

Awatar użytkownika
gaweł
Geek
Geek
Posty: 1259
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Statyczna pamięć RAM

Postautor: gaweł » niedziela 14 maja 2017, 17:46

tasza pisze:cała, statystyczna motherboard na targowisku to paręnaście złotych, cena kostek RAM luzem - tyleż za sztukę :) przebitka cenowa - bez komentarza :)

Da się nabyć starą płytę główną? Może jeszcze z 80386?
Chyba będę musiał odpalić kawałek kompa z DOS'em i wrócić do zaniechanych eksperymentów.

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: Statyczna pamięć RAM

Postautor: tasza » niedziela 14 maja 2017, 18:36

gaweł pisze:Da się nabyć starą płytę główną? Może jeszcze z 80386?

u na w OSTR. na targowisku to rzadkość jednak, no ale w WAW, na Olimpia czy Wolumen w dobre dni to raczej tak, w pięć dyszek można się wpasować, sporo szrotu leży i czeka na przygarnięcie; procek i inne trzeba zignorować (choc te z '486 czy 586 i wyższe są z typowym Tacc < 20ns ), kostki cache jednak rzucają się w oczy bo sporo ich, to znaczna część laminatu płyty głównej; jak będzie okazja to ci takie wezmę kiedyś, spoko :)
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
gaweł
Geek
Geek
Posty: 1259
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Statyczna pamięć RAM

Postautor: gaweł » niedziela 14 maja 2017, 18:49

tasza pisze:jak będzie okazja to ci takie wezmę kiedyś, spoko :)

Puki co, to możesz się wstrzymać. Mam tego całą szufladę: od płyt XT(8088), przez AT (80286, 80384 ... po PENTIUM). Łącznie z różnymi kartami. Raczej spojrzałem na to z takiego punktu widzenie, by popełnić jakiś własny kawałek softu do umieszczenia w EPROM. Jak możliwe jest powtórzenie eksperymentów, to może ...

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: Statyczna pamięć RAM

Postautor: tasza » niedziela 14 maja 2017, 18:56

xor pisze:Coś takiego wymontowałem kiedyś z płyty z AMD K6

surowa identyfikacja: 41256 - 32 kB pamięci dynamicznej z czasem dostępu na poziomie 120 ns, w amatorskich warunkach trudna do wykorzystania, głównie ze względu na konieczność odświeżania zawartości (specjalne cykle maszynowe), które nie każde MCU jest w stanie zapodać (Z80 i jego wrodzone predyspozycje pomijam)
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
xor
User
User
Posty: 169
Rejestracja: poniedziałek 05 wrz 2016, 21:44

Re: Statyczna pamięć RAM

Postautor: xor » niedziela 14 maja 2017, 19:33

tasza pisze:...32 kB pamięci dynamicznej...

Hmmm...na pewno? Tu piszą "CMOS static RAM": http://pdf1.alldatasheet.com/datasheet- ... SJ-12.html

Awatar użytkownika
gaweł
Geek
Geek
Posty: 1259
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Statyczna pamięć RAM

Postautor: gaweł » niedziela 14 maja 2017, 19:43

xor pisze:
tasza pisze:...32 kB pamięci dynamicznej...

Hmmm...na pewno? Tu piszą "CMOS static RAM": http://pdf1.alldatasheet.com/datasheet- ... SJ-12.html

W sensie numerków, to rzeczywiście 41256 jest oznaczeniem pamięci dynamicznej (256k*1bit) :arrow: znam takie, używałem. Jednak ta fotka nie przedstawia tej pamięci, bo... nie zgadza się liczba nóżek. 41256 na 16-pinów, ta ma 28 pinów, co raczej sugeruje, że jest to statyczna RAM 32k*8.

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: Statyczna pamięć RAM

Postautor: tasza » niedziela 14 maja 2017, 20:07

gaweł pisze:znam takie, używałem. Jednak ta fotka nie przedstawia tej pamięci, bo... nie zgadza się liczba nóżek.

:shock:
podziękowania zatem z głębi wątroby płynące dla producentów owych układów za spójną semantykę oznaczeń....no żesz XYZ!!!!!!
i chyba wypadałoby dla testu zalutować układ w testową aplikację i sprawdzić co i jak;
podobny suchar był wspominany w dokumentacji komputerka CA80 , w kontekście układów 2kB - Toshiba TC5516 ...
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
gaweł
Geek
Geek
Posty: 1259
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Statyczna pamięć RAM

Postautor: gaweł » niedziela 14 maja 2017, 21:03

Z różnych prehistorycznych pamięci RAM uchowało mi się jeszcze takie.
MCY7102 :arrow: 1k * 1 bit (moje pierwsze układy RAM)
IMG_5532.JPG


Później użycie 2114 = 2148 :arrow: 1k*4 bit to był już luksus
IMG_5533.JPG
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: Statyczna pamięć RAM

Postautor: tasza » poniedziałek 15 maja 2017, 08:53

gaweł pisze:Później użycie 2114 = 2148 :arrow: 1k*4 bit to był już luksus

no, a pewnie w socjalistycznych czasach to i jedyna alternatywa, gdy ktoś się z groszem liczył, tak myślę bo i tak podstawowe elementy do CA80 to była masa pieniążków
no, a na tę okazję powstała w MIK taka mała płytka-protezka dla dwóch układów 2114 właśnie, co dawało całe 1kB pamięci RAM, czad co nie?
poniżej skan z MIK05 i MIK06 i zdjęcie rzeczonej płyteczki - to małe, pod pcb od zasilacza

------

a odnośnie MCY7102 , tak mi się coś roi, że którymś Radioelektroniku był projekt takiego klucza do telegrafii, ale z pamięcią i to na tej kostce właśnie :)
on potrafił zapamiętać całą sekwencję tych bipnięć i potem to odgrywać z pamięci w kółko, muszę poszperać za tym numerem...
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
gaweł
Geek
Geek
Posty: 1259
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Statyczna pamięć RAM

Postautor: gaweł » wtorek 16 maja 2017, 16:58

tasza pisze:a odnośnie MCY7102

Te pamięci mają pewną cechę, która czasami jest użyteczną a czasami przeszkadzającą. Otóż w tych pamięciach są rozdzielone dane wejściowe i wyjściowe. W normalnym użyciu te dwie jednokierunkowe szyny danych były spinane przez 74S416 (I8216) do jednej dwukierunkowej. Czasami przydatne jest rozdzielenie. Kiedyś na bazie tych pamięci miałem zbudowany układ do generowania obrazu na telewizor. Procek z jednej strony zapisywał dane do pamięci (input w pamięciach) a z drugiej strony była banda liczników, która adresowa pamięć do pobierania danych do wyświetlania na ekran (output w pamięciach). To pierwsze rozwiązanie wyświetlało 32 wiersze po 32 znaki w wierszu (całe 1 kB w pamięci obrazu).

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse


Wróć do „Inne mikroklocki, również peryferyjne”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 4 gości