SRAM açılışta boş değil, bu normal mi?


19

Sonunda Z80 bellek kartımı bitirdim, ancak sayaç gerektiği gibi artmak yerine hızlı bir şekilde kontrolden çıktıkça düzgün çalışmadığını (bazı LED'lere bağlı adres hatları ile basit NOP testi) hayal kırıklığına uğradım. Ancak, vazgeçecek biri değilim ve kısa devre ve tüm uygun bağlantıları ortaya çıkarmak için yaklaşık otuz dakikalık süreklilik testinden sonra, sonunda SRAM yongasının depolanan tüm 0'larla açılıp açılmadığını kontrol etmeyi düşündüm. SRAM'ın (özel yongamın uçucu olmadığı sürece) güç kaybettikten sonra tüm içeriğini kaybedeceğinin farkındayım, ancak her zaman yeniden kazandığında 0'ın (yani "boş") ile doldurulacağını varsaymıştım. güç. Kullandığım SRAM, güç her sıfırlandığında 1 ve 0'larla rastgele doldurulmuş gibi görünüyor. Hiçbir veriyi asla hatırlamaz, ancak boş yüklenmiyor. Bu gerçekten bir sorun değil çünkü ben sadece powerup üzerinde 0 tüm RAM yüklemek için ROM'da küçük bir program yazabilirsiniz, ancak yine de bu SRAM nasıl çalışması gerektiğini bilmek istiyorum. Teşekkürler!

Düzenleme: 0 SRAM içine yüklemek için ROM kullandıktan sonra sistem iyi çalıştı bahsetmeyi unuttum, bu yüzden bu gerçekten sorun oldu.


7
Rastgele sayılar oluşturmak için SRAM gücünü kullanabilirsiniz. Sadece bir rastgele tohuma ihtiyacımız varsa, genellikle bunu yaparız.
b degnan

6
@bdegnan Bir keresinde, belki. SRAM'nin açılış durumu, herhangi bir bölüm için biraz tahmin edilebilir olma eğilimindedir.
duskwuff

Yanıtlar:


36

Programlanmış bir başlangıç ​​durumunuz yoksa, az çok rastgele olur. Her ne kadar bu, farklı SRAM uygulamalarına göre değişebilir. Ayrıca "boş" da diyorsunuz. Bazıları rastgele tüm 0'lardan "boş" düşünebilir.

SRAM bellek, belleği arka arkaya çeviricilerde saklar.

basit sram

Bu iki kararlı bir sistem oluşturur (bölünebilen metastabiliteye sahip iki çok kararlı durum). Böylece, güç açıldığında arka arkaya invertörler kısaca metastabildir.

Bunun nedeni, voltaj arttıkça (açılmadan), arka arkaya invertörlerin hem NMOS hem de PMOS'larının eşit olarak açık olacağı ve her iki bitnodu da besleme voltajının yarısında tutacağıdır (bu, ölçülebilir durumdur). Sonunda bazı termal gürültü (veya varyasyon getiren herhangi bir işlem) bu değeri biraz aşağı veya yukarı doğru iter veya çeker. Bu noktada, bit düğümleri iki durumlu durumlarından birine girer.

  • Örnek olarak, Q=Q=Vsupply2
  • Daha sonra, Q üzerindeki bir ısıl gürültü kadar gerilim artar Vsupply2+δ
  • Şimdi, Q 'besleyen Q' beslemesi biraz daha fazla açılır. Ve PMOS Q 'beslemesi biraz daha kapanıyor. Böylece Q ' aşağı çekerVsupply2Vsupply2δ
  • Daha sonra, FET'in sürüş Q düğümünün kapısındaki voltaj azaldığından, PMOS biraz daha fazla açılır (ve NMOS daha fazla kapanır). Bu, Q'nun arzın daha da artmasına neden olur. Ve bu hızlı bir şekilde Q'yu 0'a ve Q'yu 1'e çeker.

Aslında, "Parmak İzini Belirleyen ve Gerçek Rasgele Sayıların Kaynağı Olarak Güçlendirilen SRAM Durumu" makalesi bile var

Makalede yer alan çok yararlı bir konu aşağıdadır. Noktalı çizgi, yükselen besleme voltajını temsil eder:

açılışta metastabilite

  • Sol tarafta, her şey eşittir. Bu durumda, sıcaklık veya başka bir dizi faktöre bağlı rastgele varyasyon, bitnode bir duruma veya diğerine çarpar.
  • Sağ tarafta, belirli bir durumda başlatma olasılığının çok daha yüksek olması için (amaçlı veya başka şekilde) eğriltilmiş bir bitnode vardır.

Şu anda kullandığınız SRAM'deki her bitnode'un nasıl üretildiğine bağlı olarak, yukarıdaki iki durumdan bir veya daha fazlasıyla sonuçlanırsınız. Her iki durumda da, SRAM'ı kasıtlı olarak eğmedikçe, ilk çıkışlar az çok rastgele görünür. Sol el durumunda, sonraki her bir güçlendirme daha rastgele desenler üretecektir. Sağ el durumunda, ilk başlangıç ​​rastgele görünecektir. Ancak daha fazla güçlendirmeler, SRAM'ın belirli durumları daha ileriye götürme eğiliminde olmasına neden olacaktır.


Aslında bunun rastgele yüklenmesinin nedeni olacağını düşündüğümü biliyorsun. Bir devrenin parçası olarak bir NOR mandalı kullandım ve güç verildiğinde rastgele sıfırlanacaktı. Teşekkürler!
KeatonB

SRAM çiplerini, bilinen bir durumda güçlenecek şekilde tasarlayabileceğinizi düşündüm. Yapabilir misin?
John Dvorak

2
@ JanDvorak: Evet, yapabilirsiniz. Ancak bu yaygın olarak yapıldığı anlamına gelmez, özellikle uygulamaya özgü olmayan SRAM'de. Daha pahalı ve hangi amaçla olduğunu düşünürdüm? Nadiren tüketiciler için gereken başlangıç ​​durumu olacaktır.
jbord39

@ jbord39 Bu, bootloader'ı belleğe pişirmeme yardımcı olabilir ve işletim sistemini yüklemek için fazladan bir ROM yongasına sahip olmaktan kaçınabilir mi? Maliyetleri düşürmeye yardımcı olur mu?
John Dvorak

2
@JanDvorak: Belirli uygulamalar için bitcell'ler belirli durumlarda başlaması için eğri veya eğimli olabilir. Ama gerçekten maliyet buna değmez, çünkü her müşterinin farklı başlangıç ​​durumlarına ihtiyacı olacaktır. Harici devre (ROM gibi) ile başlatmak çok daha kolay ve düşük maliyetlidir. Sanırım istediğiniz başlangıç ​​durumlarında ya da başka bir şemada yanmanıza izin vermek için bazı programlanabilir devrelerde inşa edebilirler. Ancak, RAM'e yazma / okuma devresine zaten sahip olduğunuzda bu pahalı görünüyor. Yani, sadece istediğiniz durumu yazın.
jbord39

5

SRAM ile yıllarca çalıştıktan sonra, her seferinde neredeyse aynı rastgele görünümlü içeriklerle çalışan cihazlar gördüm, ancak görünüşe göre rastgele içeriklerle güçleneceğini söyleyebilirim. Kapatma döngüsü yeterince kısaysa (güç kaynağı özelliklerine ve bypass kapasitörlerinin sayısına ve değerine bağlı olarak), önceden yazılmış verilerin büyük parçaları, güç döngüleri aracılığıyla SRAM'da kalabilir - içerik bozulabilir.


2

Tek bir bit, 6 veya daha fazla transistörlü bir devrede bir SRAM'da saklanır. SRAM için tanımlanmış bir güç açma sıfırlama davranışı istiyorsanız, her RAM hücresinin yalnızca 6'dan fazla transistöre ihtiyacı vardır. Gerekli talaş alanı önemli ölçüde daha büyük olacak ve SRAM talaşları daha pahalı olacaktır. Bu, tüm bitlerin aynı anda sıfırlanmasında paralel bir güçtür. Seri sıfırlama, bir osilatör, bir adres sayacı ve güç açma sırasında tüm RAM bitlerini veya baytlarını sırayla sıfırlamak için yeterli zaman gerektirir. İşlemci, seri güç sıfırlaması bitmeden SRAM'a erişirse hatalar meydana gelebilir ve veriler kaybolabilir veya değiştirilebilir.

Çeşitli RAM alanlarının ayrıntılı bellek eşlemesine sahip mikroişlemciler için programlama ortamları vardır. Açılış sıfırlaması olan veya olmayan bir alanı, uygulamanın gerektirdiği şekilde tanımlayabilirsiniz. Aynı SRAM içinde birkaç farklı alan mümkündür. Program başlangıcında SRAM'ın tamamını sıfırlamak her zaman gerekli değildir.


3
Transistörlerin bazılarını diğerlerinden biraz daha büyük yapmak, sıfırlara karşı olanların olasılıklarını çarpıtır. Transistörler birçok parçada, üretim toleransları dahilinde dengelenecektir, yani bazı bitler sıfırlara, diğerlerine karşı eğimli olacaktır. Başlangıç ​​farklılıklarını ezici bir şekilde tek yönde saptırmak için boyut farklılıklarının çok büyük olması gerektiğinden şüpheliyim; RAM üreticileri bunu yapmak için herhangi bir neden varsa şeyleri tutarlı bir şekilde kolayca saptayabilir, ancak dengesiz olan bir RAM, hücreyi hoş olmayan yöne geçirmek için ekstra akım tüketir.
supercat
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.