SRAM không trống trên powerup, điều này có bình thường không?


19

Cuối cùng tôi cũng đã hoàn thành bảng nhớ Z80 của mình, nhưng tôi thất vọng khi thấy nó không hoạt động đúng (thử nghiệm NOP đơn giản với các dòng địa chỉ được kết nối với một số đèn LED) khi bộ đếm nhanh chóng vượt khỏi tầm kiểm soát thay vì tăng dần. Tuy nhiên, tôi không phải là người bỏ cuộc và sau khoảng ba mươi phút thử nghiệm liên tục để tiết lộ không bị đoản mạch và tất cả các kết nối thích hợp, cuối cùng tôi đã nghĩ sẽ kiểm tra xem chip SRAM có bật nguồn với tất cả 0 được lưu trữ không. Tôi nhận thức rõ rằng SRAM (trừ khi không biến động, mà con chip cụ thể của tôi không) sẽ mất tất cả nội dung khi mất điện, nhưng tôi luôn cho rằng nó sẽ được lấp đầy bằng 0 (tức là "trống") khi nó lấy lại được quyền lực. SRAM tôi đang sử dụng dường như được lấp đầy ngẫu nhiên với 1 và 0 mỗi lần đặt lại nguồn. Nó không bao giờ nhớ bất kỳ dữ liệu, nhưng nó không tải trống. Đây thực sự không phải là vấn đề vì tôi chỉ có thể viết một chương trình nhỏ vào ROM để tải tất cả 0 vào RAM khi bật nguồn, mặc dù tôi vẫn muốn biết liệu đây có phải là cách SRAM hoạt động hay không. Cảm ơn!

Chỉnh sửa: Tôi quên đề cập rằng sau khi sử dụng ROM để tải 0 vào SRAM, hệ thống đã hoạt động tốt, vì vậy đây thực sự là vấn đề.


7
Bạn có thể sử dụng SRAM tăng sức mạnh để tạo số ngẫu nhiên. Đây thường là cách chúng ta làm nếu chúng ta chỉ cần một hạt giống ngẫu nhiên.
b deg Nam

6
@bdegnan Một lần, có thể. Trạng thái tăng sức mạnh của SRAM có xu hướng có thể dự đoán được phần nào cho bất kỳ phần nào.
duskwuff

Câu trả lời:


36

Trừ khi bạn có một trạng thái ban đầu được lập trình, nó sẽ ít nhiều ngẫu nhiên. Mặc dù điều này có thể thay đổi với các triển khai SRAM khác nhau. Bạn cũng nói "trống". Một số người có thể nghĩ rằng ngẫu nhiên là "trống" hơn tất cả 0.

Bộ nhớ SRAM lưu trữ bộ nhớ trên các bộ biến tần trở lại.

sram đơn giản

Điều này tạo thành một hệ thống ổn định hai chiều (hai trạng thái rất ổn định với khả năng di chuyển phân chia chúng). Vì vậy, khi cấp nguồn, bộ biến tần trở lại có thể di chuyển trong thời gian ngắn.

Điều này xảy ra bởi vì khi điện áp tăng (từ khi được bật), cả biến tần NMOS và PMOS của bộ biến tần trở lại sẽ 'bằng nhau', giữ cả hai bitnode ở một nửa điện áp cung cấp (đây là trạng thái siêu bền). Cuối cùng, một số nhiễu nhiệt (hoặc bất kỳ quá trình nào đưa ra biến thể) sẽ đẩy hoặc kéo giá trị này xuống hoặc tăng lên một chút. Tại thời điểm này, các bitnodes chụp vào một trong những trạng thái có thể phân chia của chúng.

  • Như một ví dụ, hãy xem xét Q=Q=Vsupply2
  • Tiếp theo, một số nhiễu nhiệt trên Q làm tăng điện áp lên đến Vsupply2+δ
  • Vsupply2Vsupply2δ
  • Tiếp theo, vì điện áp tại cổng của nút Q lái xe của FET giảm, PMOS bật thêm một chút (và NMOS tắt nhiều hơn). Điều này khiến Q tăng thêm cho nguồn cung. Và điều này nhanh chóng đánh bật Q 'thành 0 và Q thành 1.

Trên thực tế, thậm chí còn có một bài báo "Trạng thái SRAM tăng sức mạnh như một dấu vân tay và nguồn gốc của các số ngẫu nhiên thực sự"

Một âm mưu rất hữu ích có trong bài báo dưới đây. Đường chấm chấm biểu thị điện áp cung cấp tăng cường:

khả năng di chuyển tại powerup

  • Ở phía bên trái, mọi thứ đều bình đẳng. Trong trường hợp này, sự thay đổi ngẫu nhiên do nhiệt độ hoặc một số yếu tố khác khiến bitnode chuyển sang trạng thái này hay trạng thái khác.
  • Ở phía bên phải, có một bitnode bị lệch (có chủ đích hoặc theo cách khác) có nhiều khả năng khởi tạo ở một trạng thái cụ thể.

Tùy thuộc vào cách mỗi bitnode trong SRAM bạn đang sử dụng hiện đang được chế tạo, bạn kết thúc với ít nhiều một trong hai tình huống trên. Trong cả hai trường hợp, trừ khi bạn cố tình làm lệch SRAM, các đầu ra ban đầu sẽ trông ít nhiều ngẫu nhiên. Trong tình huống bên trái, mỗi powerup tiếp theo sẽ tạo ra nhiều mẫu ngẫu nhiên hơn. Trong tình huống bên tay phải, khởi động ban đầu sẽ có vẻ ngẫu nhiên. Nhưng việc tăng sức mạnh hơn nữa sẽ khiến SRAM có xu hướng tiếp tục ở một số trạng thái nhất định.


Bạn biết tôi thực sự nghĩ rằng đó là lý do tại sao nó được tải ngẫu nhiên. Tôi đã sử dụng chốt NOR như một phần của mạch điện và nó sẽ thiết lập lại ngẫu nhiên khi bật nguồn. Cảm ơn!
KeatonB

Tôi nghĩ bạn có thể thiết kế chip SRAM để chúng tăng sức mạnh ở trạng thái đã biết. Bạn có thể?
John Dvorak

2
@JanDvorak: Vâng, bạn có thể. Nhưng điều đó không có nghĩa là nó thường được thực hiện, đặc biệt là trong SRAM không phải là ứng dụng cụ thể. Tôi sẽ nghĩ rằng chi phí nhiều hơn và cho mục đích gì? Nó sẽ hiếm khi là cùng một trạng thái ban đầu được yêu cầu trên người tiêu dùng.
jbord39

@ jbord39 Điều này có thể giúp tôi nướng bộ tải khởi động vào bộ nhớ và tránh có thêm một chip ROM để tải HĐH không? Nó sẽ giúp cắt giảm chi phí?
John Dvorak

2
@JanDvorak: Đối với các ứng dụng cụ thể, bitcell có thể bị lệch hoặc sai lệch khi khởi động ở các trạng thái được chỉ định. Nhưng thực sự chi phí không đáng là bao, vì mỗi khách hàng sẽ cần những trạng thái ban đầu khác nhau. Nó dễ dàng hơn nhiều và hiệu quả chi phí khi chỉ khởi tạo nó với mạch bên ngoài (chẳng hạn như ROM). Tôi đoán họ có thể xây dựng trong một số mạch lập trình để cho phép bạn ghi ở trạng thái ban đầu mong muốn hoặc một số sơ đồ khác. Nhưng điều này chỉ nghe có vẻ đắt khi bạn rõ ràng đã có mạch để ghi / đọc vào RAM. Vì vậy, chỉ cần viết trạng thái mong muốn của bạn.
jbord39

5

Đã làm việc với SRAM trong nhiều năm, tôi có thể nói với bạn rằng nó sẽ tăng sức mạnh với nội dung dường như ngẫu nhiên, mặc dù tôi đã thấy các thiết bị tăng sức mạnh với nội dung gần như ngẫu nhiên mỗi lần. Nếu chu kỳ tắt nguồn đủ ngắn (tùy thuộc vào đặc điểm nguồn điện và số lượng & giá trị của tụ điện bỏ qua), các đoạn dữ liệu lớn được ghi trước đó có thể tồn tại trong SRAM thông qua các chu kỳ nguồn - mặc dù nội dung sẽ bị hỏng.


2

Một bit đơn được lưu trữ trong SRAM trong mạch từ 6 bóng bán dẫn trở lên. Nếu bạn muốn có một hành vi thiết lập lại nguồn được xác định cho SRAM, mỗi ô RAM sẽ chỉ cần nhiều hơn 6 bóng bán dẫn. Diện tích chip cần thiết sẽ lớn hơn đáng kể và chip SRAM sẽ đắt hơn. Đây là công suất song song khi thiết lập lại tất cả các bit cùng một lúc. Thiết lập lại nối tiếp sẽ yêu cầu một oszilator, bộ đếm địa chỉ và đủ thời gian trong khi cấp nguồn để đặt lại tất cả các bit hoặc byte RAM theo tuần tự. Nếu bộ xử lý truy cập SRAM trước khi thiết lập lại nguồn nối tiếp kết thúc, lỗi có thể xảy ra và dữ liệu có thể bị mất hoặc thay đổi.

Có môi trường lập trình cho bộ vi xử lý với ánh xạ bộ nhớ chi tiết của một số vùng RAM. Bạn có thể xác định một khu vực có hoặc không có nguồn bật lại theo yêu cầu của ứng dụng. Một số khu vực khác nhau trong cùng một SRAM là có thể. Không phải lúc nào cũng cần thiết lập lại toàn bộ SRAM khi bắt đầu chương trình.


3
Làm cho một số bóng bán dẫn lớn hơn một chút so với các bóng bán dẫn khác sẽ làm lệch xác suất của các bóng bán dẫn so với số không. Trên nhiều phần, các bóng bán dẫn sẽ được cân bằng trong phạm vi dung sai chế tạo, có nghĩa là một số bit sẽ bị lệch về số 0 trong khi các phần khác sẽ bị lệch về phía. Tôi nghi ngờ sự khác biệt về kích thước sẽ cần rất lớn để thiên vị hành vi khởi động áp đảo theo một hướng; Các nhà sản xuất RAM có thể dễ dàng thiên vị mọi thứ một cách nhất quán nếu có bất kỳ lý do nào để làm như vậy, nhưng RAM bị mất cân bằng sẽ tiêu tốn thêm dòng điện để chuyển tế bào sang hướng không hài lòng.
supercat
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.