SRAM'leri eprom gibi kullanmak

Başlatan Sdttn, 08 Ocak 2012, 21:05:59

Sdttn

Elimde hurdalardan çıkma sram'ler var. Bazıları kendinden pilli.
Bunlar eprom gibi kullanılabilir gibime geliyor datasheet'den anladığım kadarıyla, yanlış anlamadıysam bu mümkün mü?

Bu pilli olan.


Bir de pilsiz olanları var onlarıda back up pil eklenirse olur mu?

Sadece öğrenme amaçlı. Pratik olmayacağı aşikar.

Kabil ATICI

Evet böyle kullanmak mümkün.Bu konu ile elektor dergisinin eski sayılarında bir örnek vardı. Adresleme hatları için 74ls244 ve veri hattı için 74ls245 ile tamponlanmış ve diğer sinyaller için birkaç kapı ile devre oluşturulmuştu.

Proje doğrudan anahtarlarla ram'in programlanmasını sağlıyordu. Böylece  programlayıcıya ihtiyaç olmuyordu. RAM gerektiğinde bir pil ile yedekleniyordu. Ve eprom bağlartısı doğrudan şerit kablo üzerinden bir konnektör bağlantısı sunuyordu. (galiba proje adı  "eprom simülatör"ü olarak geçiyordu.)

Resimdekini eprom olarak kullanmak için bacak bağlantısını eprom'unkine uydurman gerekir.
ambar7

Elektroemre

Selamlar,

Resimde verdiğiniz RAM 2KB büyüklüğünde. Elinizde kaç adet var?
Sırf eldekileri değerlendirmek adına hurdalarla uğraşıp devamı gelemeyecek ürünler çıkarmak ve emek harcamak zaman israfı olabilir.

Bu kadar küçük alan tampon devresi vs ile uğraşmak yerine normal bir 24 serisi eeprom ya da çok çok ucuza Mbit mertebesinde 8pinli flash'lar bile bulunabilir. Onlarla uğraşma daha mantıklı.

İyi çalışmalar.

Sdttn

@ambar7
O sayının pdf'si veya sadece o konunun resim dosyası felan var mı? (bu arada ben de bulmaya çalışacağım)

@elektroemre
Tabiki ben de kullanışsız olacağını biliyorum ama bir belleğin adreslenmesi gibi şeyleri uğreaşırken öğreneceğimi düşünüyorum.

Bu arada bazı beleklere baktığımızda her adres 8 bit bilgi tutarken, adresin uzunluğu 10-12 bit uzunluğuna kadar çıkıyor. 8 bitlik bilgi için 10-12 bit program hafızasından  harcanması garip değil mi? Neden direk olrak o değişken program hafızasında saklanmasın.


Kabil ATICI

evdeki dökümanlarımın arasında olması lazım bakamaya çalışayım bulabilirsen gönderirim. Normal RAM ile gerçekleştirmiştim.
ambar7

Burak B

Onunla uğraşmak bence de zaman kaybı. Ben elimdeki 5V' luk statik ramleri bile çöpe attım. Piyasada bulabileceğiniz 8 pin 256KB-2MB SPI RAM' ler mevcut. Adres ile adresteki veri farklı şeyler. 2^12 tane 8 bit veri depolayabiliyor demek ki. Yani adres 32 bit bile olabilir. Önemli olan verinin saklanma şekli.
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

Kabil ATICI

Lütfen arkadaşlar arkadaşımızın isteğine saygı gösterin. Bilmem farkında mısınız şu anda şevkini kırıyorsunuz.  Tamam hepimiz bir şeyler biliyoruz, bir yerlere gelmiş insanlarız, kendini istediği yönde geliştirmek isteyen bir arkadaşımızı da  engel olmayalım. Unutmayın ki o yaptığı projeden bizim ona saatlerce anlatacağımız, vereceğimiz bilgiden kat ve kat fazlasını kazanacak.

Vaktinizi bana ayırdığınız için teşekkür ederim...
ambar7

Sdttn

Alıntı yapılan: ByteMaster - 09 Ocak 2012, 17:53:09
Onunla uğraşmak bence de zaman kaybı. Ben elimdeki 5V' luk statik ramleri bile çöpe attım. Piyasada bulabileceğiniz 8 pin 256KB-2MB SPI RAM' ler mevcut. Adres ile adresteki veri farklı şeyler. 2^12 tane 8 bit veri depolayabiliyor demek ki. Yani adres 32 bit bile olabilir. Önemli olan verinin saklanma şekli.
Peki sonuçta bu adreslerin bir yerlere kaydedilmesi gerekmiyor mu daha sonra o adaresteki bilgiye ulaşmak için?
Adres dediğimiz şey pointer midir?

CPU ram rom ile yapılmış biligisayarları inceliyorum bu aralar hatta z80 işlemcili bir bilgisayar alacağım yakın zamanda uğraşmak için. Sanki bu şekilde bilgisayar mantığının en temel seviyesini öğreneceğim. Hatta bu parçaları söktüğüm fotokopi makinesi hurdasında da bu tipte bir bilgisyar kullanılmış. İşlemciler romlar ramler logic kapılar vs.

Edit: @ambar7 desteğin için çok teşekkür ederim.

Burak B

#8
Alıntı Yap
1 - Peki sonuçta bu adreslerin bir yerlere kaydedilmesi gerekmiyor mu daha sonra o adaresteki bilgiye ulaşmak için?
2 - Adres dediğimiz şey pointer midir?

1- Evet gerekiyor ama bu daha çok yazılımın konusu.
2- Öylede denebilir. Ancak bunu kelime manasında algılarsan sana daha anlaşılır gelecektir. Normal hayatta "adres" kelimesini ne için kullanıyorsun? Bu da öyle birşey. Bir örnekle pekiştireyim.(umarım) :)

Örn;
1 bit sadece 0 ve 1 değeri aldığına göre.
8 bit = 1 byte olduğuna göre
8 bit lik bir adres için.
2^8=256 adet farklı konum anlamına gelir. Yani 0-255 değerlerinin her biri bir farklı adrestir.
Şimdi gelelim bu adreslerin her biri 8 bit veri saklıyor olsun.
Bu durumda 256*8=2048/8=256Byte veri saklayabilirim demek oluyor.

Burada 256x8' lik bir RAM in tanımını yapmış olduk.  Bu RAM benim A0-A7 adres hattımın üzerinde olduğunu düşünürsem. A0-A7 hattı üzerinde oluşabilecek herhangi 0-255 değeri için D0-D7 adres hattına istediğim değeri yazabilirim.

Peki gelelim MCU+RAM+ROM' lu can alıcı noktaya. Z80 demişsin. İnceleyince sende farkedeceksin ki adres hattı 16 bit. Bunun bir sebebi var. Yukarıda bahsi geçen adres hattı üzerine ben 256x8 ramden 8 tane koymak istiyorum nasıl olacak. 8 bit veriyolu zaten sürekli kullanılıyor. 8 bit adres yolu sürekli kullanılıyor. Z80 kullandığımı farzedelim. 8 bit adres yolu geri kalıyor doğru mudur ? Yani A8-A15. İşte burası benim IO boşluğumdur. Aslında konu biraz daha derinleşebilir ama çok çorba olsun istemiyorum. Ben bu kalan 8 adres bitinin her birini bir RAM chipinin ENABLE pinine bağlarsam.  Adres değerinin düşük byte ı ram chipimdeki verinin yerini.  Yüksek byte ı ise kullanılacak RAM chipini belileyecektir. İşte MCU+ROM+RAM sistemlerinde kabaca IO adres v.s. ilişkisi böyle yürür. Ben düz yöntem anlattım ancak oldukça değerli olan bu adres yolunu değerlendirmek için genelde adres çözücü lojik entegreler sıkça kullanılır.

Yani Adres uzayım 0xFFFF ise 0x00FF içerik erişimi için 0xFF00 daki bitler ise chip seçimi için kullanılmış oluyor.
0x000 1.  RAM Başlangıcı (ROM da olaiblir)
0x100 2.  RAM Başlangıcı
0x200 3.  RAM Başlangıcı
0x400 4.  RAM Başlangıcı
0x1000 5.  RAM Başlangıcı
0x2000 6.  RAM Başlangıcı
0x4000 7.  RAM Başlangıcı
0x8000  8. RAM Başlangıcı

Oluyor. 0x100 deyince ikinci RAM chipini aktif etmiş oluyorum ve RAM chipinin ilk hücresinin adresini belirtiyorum. Tabi ENABLE pinlerinin LOW aktif olduklarını unutmamak gerekir. O zaman adres olarak 0xFE00 kullanırsak ikinci RAM chipini aktif eder ve ilk hücreyi görmüş oluruz.

Şunu unutmaki adres hattı adresleri belirtmek data hattı ise dataları iletmek içindir. Adres hattı tek data hattı ise çift yönlüdür.

Verdiğim örnekleri pekiştirmek adına bunu en iyi anlatabilecek en basit 8 bit bir konsolun şemasını veriyorum. Buyrun nintendo;


Yine basit bir Z80 Mikrobilgisayar. RAM ve ROM seçimi için kullanılan yönteme dikkat.








"... a healthy dose of paranoia leads to better systems." Jack Ganssle

Sdttn

Çok teşekkür ederim çok güzel anlatmışsınız.

Bu durumda bir ramin adres bit uzunluğuna ve veriyolu bit uzunluğuna bakarak hafızanın boyutunu her zaman hesaplayabilir miyiz?

Bir de z80 tabanlı bilgisayarlar nasıl boot ediyor? Mcu'lar kendi program hafızasından başlıyor, bunlar ROM'dan. İlk açıldığında Rom'un belli adresindeki bilgiyi kendinin başlatma registeri olarak mı kabul ediyor.


Tekrar teşekkür ederim.

berat23

Alıntı yapılan: Sdttn - 09 Ocak 2012, 20:42:32
Bu durumda bir ramin adres bit uzunluğuna ve veriyolu bit uzunluğuna bakarak hafızanın boyutunu her zaman hesaplayabilir miyiz?

adres veri yolu ortaklığını falan bir kenara bırakalım,bu verilerle maksimum adreslenebilir veri boyutunu bulabiliriz yani maks. hafızayı.

diyelim 16 bit adres yolu var,65536 kelime adresleyebiliriz.veri yolumuz yani kelime uzunluğumuz 8 bit ise yani byte 64k hafıza kullanabiliriz anlamına gelir,illa 64k hafıza kullanmak zorunda değiliz.

Burak B

#11
Boot işlemleri için Z80 User Manualine bakmanda fayda var. Temel bu olay şöyledir bir başlangıç adresi (Vektörü) vardır. İşlemci ilk açıldığında o adresi kontrol eder. Bu adres mimariye göre dahili veya harici olabilir. Bize düşen ise bu adrese bir kod yerleştirip (Bu bootloader olarak anılır.) gerekli düzenlemeleri yapıp -ana programa- bayrağı devretmektir.
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

Sdttn

#12
Alıntı yapılan: berat23 - 09 Ocak 2012, 21:04:31
adres veri yolu ortaklığını falan bir kenara bırakalım,bu verilerle maksimum adreslenebilir veri boyutunu bulabiliriz yani maks. hafızayı.

diyelim 16 bit adres yolu var,65536 kelime adresleyebiliriz.veri yolumuz yani kelime uzunluğumuz 8 bit ise yani byte 64k hafıza kullanabiliriz anlamına gelir,illa 64k hafıza kullanmak zorunda değiliz.
--

Sdttn

Alıntı yapılan: ByteMaster - 09 Ocak 2012, 23:01:03
Boot işlemleri için Z80 User Manualine bakmanda fayda var. Temel bu olay şöyledir bir başlangıç adresi (Vektörü) vardır. İşlemci ilk açıldığında o adresi kontrol eder. Bu adres mimariye göre dahili veya harici olabilir. Bize düşen ise bu adrese bir kod yerleştirip (Bu bootloader olarak anılır.) gerekli düzenlemeleri yapıp -ana programa- bayrağı devretmektir.
Yardımlarınız için teşekkürler.
Alacağım bilgisayar satılmış. Gerçi z80 nintendo gameboylarda da varmış. Onlara bakarım.

Bir site buldum burada geliştirme araçları mevcut verdiğiniz bilgiler de benim bootloaderim oldu  :)

Sdttn

#14
Alıntı yapılan: gerbay - 09 Ocak 2012, 23:43:31
hocam CPC6128 görürsen bana da haber ver lütfen..
Fiyat bana uygun olursa ben alırım  ;D
40 liraya bedava sayılırdı gitti alet.