SRAM ไม่ว่างเมื่อเปิดเครื่องนี่เป็นเรื่องปกติหรือไม่


19

ในที่สุดฉันก็เสร็จสิ้นหน่วยความจำ Z80 ของฉัน แต่ฉันรู้สึกผิดหวังที่เห็นว่ามันทำงานไม่ถูกต้อง (การทดสอบ NOP แบบง่าย ๆ กับสายที่อยู่ที่เชื่อมต่อกับ LED บางอัน) เนื่องจากตัวนับหมุนวนอย่างรวดเร็วแทนที่จะควบคุมเพิ่มขึ้นตามที่ควร อย่างไรก็ตามฉันไม่ใช่คนเดียวที่ยอมแพ้และหลังจากนั้นประมาณสามสิบนาทีของการทดสอบความต่อเนื่องในการเปิดเผยว่าไม่มีวงจรลัดและการเชื่อมต่อที่เหมาะสมทั้งหมดในที่สุดฉันก็คิดว่าจะตรวจสอบว่าชิป SRAM นั้นเปิดเครื่องอยู่หรือไม่ ฉันตระหนักดีว่า SRAM (ยกเว้นกรณีที่ไม่ระเหยซึ่งชิปของฉันไม่ได้) จะสูญเสียเนื้อหาทั้งหมดเมื่อสูญเสียพลังงาน แต่ฉันคิดเสมอว่าจะเต็มไปด้วย 0 (เช่น "ว่างเปล่า") เมื่อมันกลับมา อำนาจ SRAM ที่ฉันใช้ดูเหมือนจะเต็มไปด้วยการสุ่มของ 1 และ 0 ทุกครั้งที่พลังงานถูกรีเซ็ต มันไม่เคยจำข้อมูลใด ๆ แต่มันไม่โหลดเปล่า นี่ไม่ใช่ปัญหาจริงๆเพราะฉันสามารถเขียนโปรแกรมขนาดเล็กใน ROM เพื่อโหลด 0 ทั้งหมดลงใน RAM บน powerup แม้ว่าฉันจะยังอยากรู้ว่านี่เป็นวิธีที่ SRAM ควรทำงานหรือไม่ ขอบคุณ!

แก้ไข: ฉันลืมที่จะพูดถึงว่าหลังจากใช้ ROM เพื่อโหลด 0 ลงใน SRAM ระบบทำงานได้ดีดังนั้นนี่จึงเป็นปัญหา


7
คุณสามารถใช้กำลัง SRAM เพื่อสร้างตัวเลขสุ่ม นี่เป็นวิธีที่เราทำได้ถ้าเราต้องการเพียงแค่เมล็ดสุ่มเท่านั้น
b degnan

6
@bdegnan ครั้งเดียวอาจจะ สถานะพลังของ SRAM มีแนวโน้มที่จะคาดเดาได้ค่อนข้างสำหรับส่วนใดก็ตาม
duskwuff

คำตอบ:


36

นอกจากว่าคุณมีสถานะเริ่มต้นโปรแกรมมันจะสุ่มมากขึ้นหรือน้อยลง แม้ว่าสิ่งนี้อาจแตกต่างกันกับการใช้งาน SRAM ที่แตกต่างกัน คุณยังพูดว่า "blank" บางคนอาจคิดว่าการสุ่มนั้นเป็น "blanker" มากกว่า 0 ทั้งหมด

หน่วยความจำ SRAM เก็บหน่วยความจำบนอินเวอร์เตอร์กลับไปด้านหลัง

sram ง่าย

สิ่งนี้ก่อให้เกิดระบบที่เสถียรสองระบบ (สถานะที่เสถียรมากสองสถานะที่มีการแพร่กระจายแบบกระจาย) ดังนั้นเมื่อเพิ่มพลังงานขึ้นอินเวอร์เตอร์กลับไปด้านหลัง

สิ่งนี้เกิดขึ้นเนื่องจากเมื่อแรงดันไฟฟ้าเพิ่มขึ้น (จากการเปิดใช้งาน) ทั้ง NMOS และ PMOS ของอินเวอร์เตอร์กลับไปด้านหลังจะเป็น 'เท่ากัน' โดยถือ bitnode ทั้งสองที่ครึ่งแรงดันไฟฟ้า (นี่คือสถานะ metastable) ในที่สุดเสียงความร้อน (หรือกระบวนการใด ๆ ที่แนะนำการเปลี่ยนแปลง) จะผลักหรือดึงค่านี้ลงหรือเพิ่มขึ้นเล็กน้อย ณ จุดนี้ bitnodes snap เป็นหนึ่งในสถานะ bistable ของพวกเขา

  • ยกตัวอย่างเช่นพิจารณาQ=Q'=Vsยูพีพีล.Y2
  • ถัดไปเสียงรบกวนจากความร้อนบน Q จะเพิ่มแรงดันไฟฟ้าให้สูงถึงVsยูพีพีล.Y2+δ
  • ตอนนี้ NMOS ให้อาหาร Q 'จะเปิดขึ้นอีกนิด และ PMOS ที่ให้อาหาร Q 'ถูกปิดลงอีกเล็กน้อย ดังนั้นคิวจึงดึงลงจากเพื่อV s ยูพีพีลิตรYVsยูพีพีล.Y2δVsยูพีพีล.Y2-δ
  • ถัดไปเนื่องจากแรงดันไฟฟ้าที่เกตของ FET การขับ Q ของโหนดลดลง PMOS จะเปิดใช้งานอีกเล็กน้อย (และ NMOS จะปิดการทำงานมากขึ้น) นี่เป็นสาเหตุที่ทำให้ Q เพิ่มขึ้นอีกในการจัดหา และสิ่งนี้ได้อย่างรวดเร็วล็อค Q 'ถึง 0 และ Q ต่อ 1

ในความเป็นจริงมีแม้แต่กระดาษ "Power-up State SRAM เป็นลายนิ้วมือที่ระบุและแหล่งที่มาของตัวเลขสุ่มที่แท้จริง"

หนึ่งพล็อตที่มีประโยชน์มากที่มีอยู่ในกระดาษอยู่ด้านล่าง เส้นประแสดงถึงแรงดันไฟฟ้าของอุปทานที่เพิ่มขึ้น:

ความสามารถในการ metastability ที่ powerup

  • ทางซ้ายมือทุกอย่างเท่ากัน ในกรณีนี้การเปลี่ยนแปลงแบบสุ่มอันเนื่องมาจากอุณหภูมิหรือปัจจัยอีกจำนวนหนึ่งที่ทำให้ bitnode อยู่ในสถานะหนึ่งหรืออีกสถานะหนึ่ง
  • ทางด้านขวามีบิตโหนดซึ่งเบ้ (อย่างตั้งใจหรืออย่างอื่น) ที่จะเริ่มต้นในสถานะที่เฉพาะเจาะจงมากขึ้น

ขึ้นอยู่กับว่าแต่ละโหนดใน SRAM ที่คุณใช้นั้นถูกสร้างขึ้นมาอย่างไรคุณจะจบลงด้วยสถานการณ์หนึ่งหรือสองสถานการณ์ที่กล่าวมาข้างต้น ในทั้งสองกรณีเว้นแต่ว่าคุณตั้งใจเอียง SRAM เอาต์พุตเริ่มต้นจะดูสุ่มมากขึ้นหรือน้อยลง ในสถานการณ์ด้านซ้ายมือการเพิ่มพลังแต่ละครั้งจะสร้างรูปแบบการสุ่มมากขึ้น ในสถานการณ์ด้านขวาการเริ่มต้นครั้งแรกจะสุ่ม แต่การเพิ่มพลังต่อไปจะทำให้ SRAM มีแนวโน้มที่จะมีสถานะที่แน่นอนต่อไป


คุณรู้ว่าฉันคิดว่าจริง ๆ แล้วจะเป็นเหตุผลว่าทำไมมันกำลังโหลดแบบสุ่ม ฉันใช้สลัก NOR เป็นส่วนหนึ่งของวงจรและมันจะรีเซ็ตแบบสุ่มเมื่อเปิดเครื่อง ขอบคุณ!
KeatonB

ฉันคิดว่าคุณสามารถออกแบบชิป SRAM เพื่อให้พลังในสถานะที่รู้จัก คุณสามารถ?
John Dvorak

2
@JanDvorak: ใช่คุณทำได้ แต่นั่นไม่ได้หมายความว่ามันทำกันทั่วไปโดยเฉพาะใน SRAM ที่ไม่ใช่แอปพลิเคชันเฉพาะ ฉันคิดว่ามันมีค่าใช้จ่ายมากขึ้นและเพื่อวัตถุประสงค์อะไร? มันจะเป็นสถานะเริ่มต้นเดียวกันกับที่ผู้บริโภคต้องการ
jbord39

@ jbord39 สิ่งนี้จะช่วยให้ฉันอบ bootloader ลงในหน่วยความจำและหลีกเลี่ยงการมีชิป ROM พิเศษเพื่อโหลดระบบปฏิบัติการจากไหน? มันจะช่วยลดค่าใช้จ่ายหรือไม่?
John Dvorak

2
@JanDvorak: สำหรับการใช้งานที่เฉพาะเจาะจงบิตเซลล์สามารถเอียงหรือเอนเอียงเพื่อเริ่มต้นในสถานะที่ระบุ แต่จริงๆแล้วต้นทุนนั้นไม่คุ้มค่าเพราะลูกค้าแต่ละรายจะต้องมีสถานะเริ่มต้นแตกต่างกัน มันง่ายกว่าและคุ้มค่าในการเริ่มต้นกับวงจรภายนอก (เช่น ROM) ฉันเดาว่าพวกเขาสามารถสร้างในวงจรที่ตั้งโปรแกรมได้เพื่อให้คุณสามารถเผาในสถานะเริ่มต้นที่คุณต้องการหรือรูปแบบอื่น ๆ แต่นี่ฟังดูแพงเมื่อคุณมีวงจรการเขียน / อ่านไปยัง RAM อย่างชัดเจนอยู่แล้ว ดังนั้นเพียงแค่เขียนรัฐที่คุณต้องการ
jbord39

5

ฉันทำงานกับ SRAM มาหลายปีแล้วฉันบอกได้เลยว่ามันจะเพิ่มพลังให้กับเนื้อหาแบบสุ่มที่ดูเหมือนว่าจะถึงแม้ว่าฉันจะเคยเห็นอุปกรณ์ที่ใช้พลังงานกับเนื้อหาที่ดูคล้าย ๆ กันทุกครั้ง หากรอบการปิดไฟสั้นพอ (ขึ้นอยู่กับลักษณะของแหล่งจ่ายไฟและจำนวน & ค่าของตัวเก็บประจุบายพาส) ชิ้นส่วนขนาดใหญ่ของข้อมูลที่เขียนไว้ก่อนหน้านี้สามารถอยู่ใน SRAM ผ่านวงจรไฟ - แม้ว่าเนื้อหาจะได้รับความเสียหาย


2

บิตเดียวจะถูกเก็บไว้ใน SRAM ในวงจร 6 หรือมากกว่าทรานซิสเตอร์ หากคุณต้องการพลังงานที่กำหนดไว้สำหรับพฤติกรรมการรีเซ็ตสำหรับ SRAM แต่ละเซลล์ RAM จะต้องการทรานซิสเตอร์มากกว่า 6 ตัวเท่านั้น พื้นที่ชิปที่ต้องการจะมีขนาดใหญ่ขึ้นอย่างมากและชิป SRAM จะมีราคาแพงกว่า นี่คือพลังงานแบบขนานเมื่อรีเซ็ตบิตทั้งหมดในเวลาเดียวกัน การรีเซ็ตแบบอนุกรมจะต้องใช้ oszilator ตัวนับที่อยู่และเวลาที่เพียงพอในระหว่างการเปิดเครื่องเพื่อรีเซ็ต RAM บิตหรือไบต์ทั้งหมดตามลำดับ หากหน่วยประมวลผลเข้าใช้ SRAM ก่อนที่จะเริ่มใช้พลังงานอนุกรมเมื่อรีเซ็ตเสร็จสิ้นข้อผิดพลาดอาจเกิดขึ้นและข้อมูลอาจสูญหายหรือเปลี่ยนแปลง

มีสภาพแวดล้อมการเขียนโปรแกรมสำหรับไมโครโปรเซสเซอร์ที่มีการแมปหน่วยความจำโดยละเอียดของพื้นที่ RAM หลายแห่ง คุณสามารถกำหนดพื้นที่ที่มีหรือไม่มีไฟเมื่อรีเซ็ตตามที่แอปพลิเคชันต้องการ พื้นที่ที่แตกต่างกันภายใน SRAM เดียวกันนั้นเป็นไปได้ ไม่จำเป็นต้องรีเซ็ต SRAM ทั้งหมดเมื่อเริ่มต้นโปรแกรม


3
การทำให้ทรานซิสเตอร์บางตัวมีขนาดใหญ่กว่าตัวอื่นเล็กน้อยจะทำให้ความน่าจะเป็นของคนเทียบกับศูนย์ ในหลายส่วนทรานซิสเตอร์จะมีความสมดุลภายในความคลาดเคลื่อนในการผลิตซึ่งหมายความว่าบิตบางส่วนจะเอนเอียงไปทางศูนย์ในขณะที่บางส่วนจะถูกลำเอียงไปทางวัตถุ ฉันสงสัยว่าความแตกต่างของขนาดจะต้องมีขนาดใหญ่มากเพื่ออคติพฤติกรรมการเริ่มต้นอย่างท่วมท้นในทิศทางเดียว ผู้ผลิต RAM สามารถทำการอคติอย่างต่อเนื่องได้อย่างง่ายดายหากมีเหตุผลใด ๆ ที่จะทำเช่นนั้น แต่ RAM ที่ไม่สมดุลจะใช้กระแสเพิ่มเติมเพื่อสลับเซลล์ไปยังทิศทางที่ไม่เหมาะสม
supercat
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.