720 likes | 1.02k Views
NAND Flash Failure Behavior. Sponsored By Micron Technology Inc. Group Members and Topics. Rob Wells Project Introduction System Integration Jeremy Hamblin Firmware Design Roger White NAND DUT Interface NAND Controller & Timing David Chu Host GUI Interface & Application
E N D
NAND Flash Failure Behavior Sponsored By Micron Technology Inc
Group Members and Topics • Rob Wells • Project Introduction • System Integration • Jeremy Hamblin • Firmware Design • Roger White • NAND DUT Interface • NAND Controller & Timing • David Chu • Host GUI Interface & Application • Conclusions
Robert Wells Project Introduction System Integration
Introduction to NAND Flash • What NAND Flash Memory Is • NAND Flash Memory Applications • What NAND Flash Memory Is Not • Project Concept • An Affordable Platform • Customizable Usage/Programming Patterns • Characterization/Analysis of NAND Behavior
System Integration • High Level View • FPGA System • Block Diagram Interface • SOPC Builder Overview • Component Generation • HAL (Hardware Abstraction Layer) – NIOS II • HDL (Hardware Description Language) – Quartus II • Quartus II Overview • Integration of the FPGA system • Controller Development • NIOS II Overview • Device Drivers • Firmware • Firmware to Controller Integration • Host PC to Firmware Integration
High Level View • Components: • NIOS II Processor • SDRAM • USB • On-Chip Memory • LCD Display Quartus II .c • HAL (Hardware Abstraction Layer) • C Code • API (Application Programming Interface) • Firmware • Custom C Code • (Jeremy) .c .v SOPC .v NIOS II • HDL (Hardware Description Language) • Verilog Code • NAND Flash Controller • Custom Verilog Code • (Roger) • Application GUI Interface • Program the NAND Flash • Analyze/Display Results • (David) SOPC Builder (System On a Programmable Chip)
High Level View • Configure Memory Usage • Memory Range • Data Pattern • Number of Cycles • Analyze Performance • Will NAND Flash Work Over the Lifespan of a Given Device? • Application GUI Interface • Program the NAND Flash • Analyze/Display Results • (David)
System Integration • High Level View • FPGA System • Block Diagram Interface • SOPC Builder Overview • Component Generation • HAL (Hardware Abstraction Layer) – NIOS II • HDL (Hardware Description Language) – Quartus II • Quartus II Overview • Integration of the FPGA system • Controller Development • NIOS II Overview • Device Drivers • Firmware • Firmware to Controller Integration • Host PC to Firmware Integration
FPGA development system Clock Generation SOPC Built System (Jeremy) Reset Delay NAND Flash Controller (Roger)
System Integration • High Level View • FPGA System • Block Diagram Interface • SOPC Builder Overview • Component Generation • HAL (Hardware Abstraction Layer) – NIOS II • HDL (Hardware Description Language) – Quartus II • Quartus II Overview • Integration of the FPGA system • Controller Development • NIOS II Overview • Device Drivers • Firmware • Firmware to Controller Integration • Host PC to Firmware Integration
System Integration • High Level View • FPGA System • Block Diagram Interface • SOPC Builder Overview • Component Generation • HAL (Hardware Abstraction Layer) – NIOS II • HDL (Hardware Description Language) – Quartus II • Quartus II Overview • Integration of the FPGA system • Controller Development • NIOS II Overview • Device Drivers • Firmware • Firmware to Controller Integration • Host PC to Firmware Integration
System Integration • High Level View • FPGA System • Block Diagram Interface • SOPC Builder Overview • Component Generation • HAL (Hardware Abstraction Layer) – NIOS II • HDL (Hardware Description Language) – Quartus II • Quartus II Overview • Integration of the FPGA system • Controller Development • NIOS II Overview • Device Drivers • Firmware • Firmware to Controller Integration • Host PC to Firmware Integration
System Integration • High Level View • FPGA System • Block Diagram Interface • SOPC Builder Overview • Component Generation • HAL (Hardware Abstraction Layer) – NIOS II • HDL (Hardware Description Language) – Quartus II • Quartus II Overview • Integration of the FPGA system • Controller Development • NIOS II Overview • Device Drivers • Firmware • Firmware to Controller Integration • Host PC to Firmware Integration
Firmware to Controller Integration Controller Verilog Quartus II Firmware C Code NIOS II Buffer SOPC Builder
System Integration • High Level View • FPGA System • Block Diagram Interface • SOPC Builder Overview • Component Generation • HAL (Hardware Abstraction Layer) – NIOS II • HDL (Hardware Description Language) – Quartus II • Quartus II Overview • Integration of the FPGA system • Controller Development • NIOS II Overview • Device Drivers • Firmware • Firmware to Controller Integration • Host PC to Firmware Integration
Host PC to Firmware Integration Phillips ISP1362 (USB) WinDriver (Device Driver) SOPC Builder (HAL) NIOS II (Device Driver)
Conclusions • System Components • Custom Hardware Design (Verilog) • Custom Firmware Design (C) • Powerful Design Tools • Custom Built Application GUI Interface • Inexpensive Platform for Testing • Analysis of NAND Wear-Out From a Customizable Memory Usage Model • Allows Developers to Determine if NAND Flash is a Viable Solution for a Given Application • Evaluate Other Aspects of NAND Flash
Jeremy Hamblin Firmware Design
Firmware Design • SOPC Builder • System Components • Firmware Design (NIOS II) • Reset NAND Operation • USB Interface • Op-Code/Algorithm • NAND Flash Addressing • Example Algorithm Layout • Command Transferring
SOPC Builder(System On a Programmable Chip) NIOS II Processor • Instruction & Data • Block Mapping & Status SDRAM Displays Global Reset USB Buffer Read Enable
Firmware Design • SOPC Builder • System Components • Firmware Design (NIOS II) • Reset NAND Operation • USB Interface • Op-Code/Algorithm • NAND Flash Addressing • Example Algorithm Layout • Command Transferring
Firmware Design • Reset NAND Operation • First Operation After NAND Power Up • Occurs During System Initialization • Places NAND DUT (Device Under Test) in a Known State
Firmware Design • SOPC Builder • System Components • Firmware Design (NIOS II) • Reset NAND Operation • USB Interface • Op-Code/Algorithm • NAND Flash Addressing • Example Algorithm Layout • Command Transferring
Firmware Design • USB Interface • Generates IRQ (Interrupt ReQuest) • ISR (Interrupt Service Routine) Receives Data Sent From Host PC and Parses Data 00 00 00 00 | 00 00 00 00 | 00 00 00 00 | 00 00 00 00 - 16 Bytes 00 00 00 00 | 00 00 0000 | 00 00 00 00 | 00 00 00 00 - 16 Bytes 00 00 00 00 | 00 00 00 00 | 00 00 0000 | 00 00 00 00 - 16 Bytes 00 000000 - Byte0 Padding Algorithm OP Code Start Address – 3 Bytes End Address – 3 Bytes Padding – 1 Byte # Cycles – 3 Bytes Padding – 5 Bytes
Firmware Design • Op-Code Types • Read ID • Write • Read • Algorithm Types • Continuous • Checker Board • Random
Firmware Design NAND Flash Addressing Blocks Pages Bytes
Firmware Design • NAND Flash Addressing
Algorithm Example Page N Page N-1 … Page 1 Page 0 Erased Programmed Block-0 Block-1 … Block N-1 Block N Continuous Cycle I Cycle II Checker Board
Firmware Design • SOPC Builder • System Components • Firmware Design (NIOS II) • Reset NAND Operation • USB Interface • Op-Code/Algorithm • NAND Flash Addressing • Example Algorithm Layout • Command Transferring
Firmware Design • Command Transferring • Commands & Data Transferred Through Buffer • Different Data and Command Requirements • Write- 2119 Bytes Transferred to NAND, 0 Returned • Read- 7 Bytes Transferred to NAND, 2112 Returned • Erase- 5 Bytes Transferred to NAND, 0 Returned • Read Status- 1 Byte Transferred, 1 Returned • Each NAND Command Type Has its Own Buffer Function • Removes All NAND Device Timing Constraints From the Firmware • Firmware Too Slow
Firmware Design Conclusion • Command Received Over USB • Parsed in USB ISR • Execution of Op-Code • Command and Data are Passed to NAND Controller Through the Buffer • Command is Executed From Start Address to End Address • Repeated for # of Cycles Given in Command From Host • Block Status Returned Over USB
Roger White NAND DUT Interface NAND Controller & Timing
NAND DUT Interface • Daughter Card • Our Own?? • Boise State’s
NAND Controller & Timing • Pins to NAND Chip • Operations
NAND Controller & Timing • Pins to NAND chip • CLE (Command Line Enable) • CE# (Chip Enable) • WE# (Write Enable) • ALE (Address Line Enable) • R/B (Ready/Busy) • RE# (Read Enable) • WP# (Write Protect) • I/Ox (Input/Output)
NAND Controller & Timing • Pins to NAND Chip • Operations
NAND Controller & Timing • Operations • Read • Program • Erase • Read Status • Reset • Read ID
NAND Controller & timing • Program Operation
NAND Controller & Timing • Erase Operation
NAND Controller & Timing • Reset Operation
Conclusions NAND DUT Interface Daughter Card NAND Controller & Timing Pins Operations
User Interface, USB, and Conclusions By: David Chu
Overview • User Interface • Command Interface • Functionality and Scripting Information • Results Interface • Functionality, Database Information, and XML File Description • Charts Interface • Functionality • USB • Functionality and Bit Organization • Conclusions • Methods, Results, and Future Improvements