AN1185 APPLICATION NOTE Designing for Compatibility between ST and AMD NOR Flash Memories STMicroelectronics offers a range of Flash memory products that are hardware and software compatible with AMD devices. Identifying differences (or similarities) between parts from different manufacturers can be a daunting task; this document aims at pointing out the similarities between the devices offered by each manufacturer and also highlights the differences that may require software or hardware modifications. The information content in this application note is believed to be correct at the time of publishing. However, frequent modifications to Flash memories occur and you must always check the information with the latest datasheets. NOR FLASH MEMORY TECHNOLOGY Different technologies exist to produce Flash memories. Today, NOR Flash memories still have the lion s share of the market but the demand for NAND Flash memories is growing fast. In terms of compatibility, a device of one technology can only be replaced by a device of the technology. Only NOR devices will be discussed in this Application Note, even though STMicroelectronics manufactures both technologies. NOR-type Flash memories are typically organized as a number of blocks whose size ranges between 16 KBytes and 128 KBytes. Each of these blocks can be individually erased or programmed. The architecture can be either uniform if all of the blocks are of the size, or asymmetrical, if the blocks vary in size. The array can be organized as a single piece of memory or split into dual or multiple banks. The device can also have a top or bottom boot block configuration depending on where the boot blocks, which are dedicated to the storage of the boot code, are located in the memory address space. NOR Flash memories offer fast random access times (currently in the region of 35ns to 120ns) and fast random write times (8µs per Byte). The fast random access of NOR memories and their excellent reliability make these memories suitable for code storage and low-density data storage. March 2004 1/8
TABLE OF CONTENTS NOR FLASH MEMORY TECHNOLOGY................................................ 1 PORTABILITY ISSUES.............................................................. 3 Device and Manufacturer Codes..................................................3 PART NUMBERS.................................................................. 4 Table 1. Part Numbering Scheme for Standard STMicroelectronics Flash memories.......... 5 Table 2. Equivalent Parts List..................................................... 6 CONCLUSION..................................................................... 7 REVISION HISTORY................................................................ 7 Table 3. Document Revision History................................................ 7 2/8
PORTABILITY ISSUES For two parts from different manufacturers to be compatible, a number of requirements should be satisfied: they should have the package, and the signals should be pin for pin compatible. the DC characteristics and the AC characteristics should also be compatible (e.g. voltage requirements and bus timing requirements). in the case of Flash memories, there is another layer that also needs to be compatible, the software command layer. When you write to a Flash memory you write to a Command Interface that interprets the commands you send, and executes them. In order for two Flash memories to be compatible they need to have more than pin-out compatibility, they need to be command compatible too. STMicroelectronics has different Command Set families, but only the M29 series Flash memories will be addressed in this Application Note. This Command Set is also used by some of AMD s devices and we will study the compatibility between these products and ST s M29 series. Within the Command Set shared by AMD and STMicroelectronics M29 series Flash memories there are some minor differences that do not affect most software code. The differences that did exist have been ironed out over time in order to try and make each part a second source to the other. Some of the command set differences are obvious and simple to fix, others are a little more obscure. Not all the differences between equivalent parts are discussed here because this would make too complex a document, however Table 2., Equivalent Parts List, shows the parts that can be used as a second source to each other. One of the main differences is related to Device and Manufacturer Codes that differ between the parts: some software may be written to work with different sized parts and may use the Device Code to select the correct memory size. When designing for compatibility between manufacturers it is necessary to include a means of identifying each part from each manufacturer, then the parts can be interchanged without modification to the software. A lot of software never reads the Device and Manufacturer codes and is, therefore, not affected by this difference. Device and Manufacturer Codes Coping with several Device and Manufacturer Codes in the software can be simple if it is designed into the software at the start. There are many instances, however, where it is necessary to write a quick fix so an additional Flash memory can be used. If the time pressure is such that the software cannot be made to look up the characteristics of several different Flash memories then a simple fix is to translate equivalent memories into a memory that is known by the system. Consider software that has a function called device_code(), written as follows: unsigned int device_code( void ) { unsigned int i; /* Write AutoSelect Sequence */ FlashWrite( 0x5555L, 0xAA ); /* Note the use of A0-A14 in AutoSelect */ FlashWrite( 0xAAAAL, 0x55 ); /* which allows Autoselct to identify older memories */ FlashWrite( 0x5555L, 0x90 ); /* Autoselect mode */ i = ReadFlash( 0x0001L ); /* Device code at address XXX1h */ FlashWrite( 0x0000h, 0xF0 ); /* Read/Reset to return to Read Mode */ } return i; 3/8
An effective way to quickly re-write this function so an AMD Am29F040B could be replaced by an M29F040B is: unsigned int device_code( void ) { unsigned int i; /* Write AutoSelect Sequence */ FlashWrite( 0x5555L, 0xAA ); /* Note the use of A0-A14 in AutoSelect */ FlashWrite( 0xAAAAL, 0x55 ); /* which allows Autoselct to identify older memories */ FlashWrite( 0x5555L, 0x90 ); /* Autoselect mode */ i = FlashRead( 0x0001L ); /* Device code at address XXX1h */ if( FlashRead( 0x0000L ) == 0x20h /* Check for ST manufacturer code */ && i == 0xE2 ) /* And M29F040B device code */ i = 0xA4; /* Replace with AMD s device code, they are compatible anyway */ FlashWrite( 0x0000h, 0xF0 ); /* Read/Reset to return to Read Mode */ return i; } No other changes are required to the software due to the compatibility of AMD and STMicroelectronics devices. This may be a crude way to adapt your software, but it will take 5 minutes. Adding a look-up table to a piece of software you have inherited and do not fully understand can lead to many unforeseen problems. Note that it may also be necessary to change the equivalent function, manufacturer_code(), if one exists. If you require further help with understanding the software required to operate a Flash memory then ST- Microelectronics has a range of software drivers for nearly all of our Standard Flash memory products. There are extensive comments in the code to help you understand how to operate your Flash memory. PART NUMBERS The part numbering scheme used by STMicroelectronics and AMD is very similar. Table 1. shows the example of the M29F400BB55N1 (equivalent to AMD s Am29F400BB55EC). All STMicroelectronics parts start with M29 and AMD parts start with Am29. The following letter(s) define the voltage: an F indicates a Single Supply 5V part; a W (STMicroelectronics) or LV (AMD) indicates a Single Supply 3V part, a D before W means that the memory array is split in dual or multiple banks with dual operation. The following three digits indicate the size and architecture of the memory, for example an 040 is a 4 Mbit Uniform Block memory; an 800 is an 8 Mbit Boot Block memory, etc. The following letter indicates the Device Revision (most parts are currently at revision D ). An optional letter located after the Device Revision letter refers to additional features like Reset/Block Temporary Unprotect pin (letter N ) or Write Protection pin ( H, L, U ). The Array Matrix (Top/Bottom for Boot Block memories, none for Uniform) follows the Device Revision. Finally the speed, package, temperature and other options follow. Table 2. lists the equivalent parts from the two manufacturers. If you cannot find a second source for a particular part, contact STMicroelectronics as parts are always in development. We may have the part you require ready in time for your production. 4/8
Table 1. Part Numbering Scheme for Standard STMicroelectronics Flash memories Device Type M29 STMicroelectronics Definition AMD Equivalent Example M29 F400B H B 55 N 1 Am29 Operating Voltage F = V CC = 5V ± 10% W = V CC = 2.7 to 3.6V DW= Dual Operation, V CC = 2.7 to 3.6V Device Function + Device Revision 010B = 1Mb (x8), Uniform 102B = 1Mb (x16), Boot 200B = 2Mb (x8, x16), Boot 002B, BN = 2Mb (x8), Boot, Reset/Block Temporary Unprot. pin 040B = 4Mb (x8), Uniform 004B = 4Mb (x8), Boot 400B, 400D = 4Mb (x8, x16), Boot 080D = 8Mb (x8), Uniform 800D, 800DX = 8Mb (x8, x16), Boot 016D, 017D= 16Mb (x8), Uniform 160D, 160E = 16Mb (x8, x16), Boot 032D = 32Mb (x8), Uniform 320D = 32Mb (x8, x16), Boot 323D = 32Mb (x8, x16), Dual Bank 8:24, Boot 324D =32Mb (x8,x16), Dual Bank 16:16, Boot 640D = 64Mb (x8, x16), Boot Additional Feature N = No Reset/Temporary Write Protect pin (for M29GF002B) F LV DL 080B 800B 160D 324G - Array Matrix T = Top Boot B = Bottom Boot Speed 35 = 35 ns 45 = 45 ns 55 = 55 ns 70 = 70 ns 90 = 90 ns 120 = 120 ns Package K = PLCC N = TSOP M = SO P = PDIP Temperature Range 1 = 0 to 70 C 3 = 40 to 125 C 6 = 40 to 85 C J E S P C E I 5/8
Table 2. Equivalent Parts List ST Part Number AMD Part Number Description M29F010B Am29F010B 1 Mbit (128Kb x8, Uniform Block) Single Supply 5V M29W010B Am29LV010B 1 Mbit (128Kb x8, Uniform Block) Single Supply 3V M29F102BB 1 Mbit (64Kb x16, Bottom Boot Block) Single Supply 5V M29W102BB, BT 1 Mbit (64Kb x16, Boot Block) Single Supply 3V M29F200BB, BT Am29F200B 2 Mbit (256Kb x8 or 128Kb x16, Boot Block) Single Supply 5V M29W200BB, BT Am29LV200B 2 Mbit (256Kb x8 or 128Kb x16, Boot Block) Single Supply 3V M29F002BB,BT, BNT,BNB Am29F002B, NB 2 Mbit (256Kb x8,boot Block, Reset/Block Temporary Unprotect pin) Single Supply 5V idem without Reset/Block Temporary Unprotect pin M29W022BB, BT No Equivalent 2 Mbit (256Kb x8, Boot Block) Low Voltage Single Supply Flash Memory M29F040B Am29F040B 4 Mbit (512Kb x8, Uniform Block) Single Supply 5V M29W040B Am29LV040B 4 Mbit (512Kb x8, Uniform Block) Single Supply 3V M29F400BB, BT Am29F400B 4 Mbit (512Kb x8 or 256Kb x16, Boot Block) Single Supply 5V M29W400BB, BT Am29LV400B 4 Mbit (512Kb x8 or 256Kb x16, Boot Block) Single Supply 3V M29W400DB, DT Am29LV400B 4 Mbit (512Kb x8 or 256Kb x16, Boot Block) Single Supply 3V M29W004BB, BT Am29LV004B 4 Mbit (512Kb x8, Boot Block) Single Supply 3V M29F080D Am29F080B 8 Mbit (1Mb x8, Uniform Block) Single Supply 5V M29F080A AM29F080B 8 Mbit (1Mb x8, Uniform Block) Single Supply Flash Memory M29F800A AM29F800B 8 Mbit (1Mb x8 or 512Kb x16, Boot Block) Single Supply Flash Memory M29F800DB, DT Am29F800B 8 Mbit (1Mb x8 or 512Kb x16, Boot Block) Single Supply 5V M29W008A AM29LV008B 8 Mbit (1Mb x8, Boot Block) Low Voltage Single Supply Flash Memory M29W800AT, AB AM29LV800B 8 Mbit (1Mb x8 or 512Kb x16, Boot Block) Low Voltage Single Supply Flash Memory M29W800DB, DT Am29LV800B 8 Mbit (1Mb x8 or 512Kb x16, Boot Block) Single Supply 3V M29F016B AM29F016D 16 Mbit (2Mb x8, Uniform Block) Single Supply Flash Memory M29F016D Am29F016D 16 Mbit (2Mb x8, Uniform Block) Single Supply 5V M29W160DB, DT Am29LV160D 16 Mbit (2Mb x8 or 1Mb x16, Boot Block) Single Supply 3V M29W160EB, ET Am29LV160D 16 Mbit (2Mb x8 or 1Mb x16, Boot Block) Single Supply 3V M29W017D Am29LV017D 16 Mbit (2Mb x8, Uniform Block) Single Supply 3V M29F032D Am29F032B 32 Mbit (4Mb x8, Uniform Block) Single Supply 5V M29W320DB, DT Am29LV320D 32 Mbit (4Mb x8, 2Mbx16 Boot Block) Single Supply 3V M29DW323DB, DT Am29DL323D 32 Mbit (4Mb x8, 2Mbx16, Dual Bank 8:24, Boot Block) Single Supply 3V M29DW324DB, DT Am29DL324G 32 Mbit (4Mb x8, 2Mbx16, Dual Bank 16:16, Boot Block) Single Supply 3V M29W640DB, DT Am29LW640D 64 Mbit (8Mb x8, 4Mbx16, Boot Block) Single Supply 3V M29DW640D Am29DL640G 64 Mbit (8Mb x8, 4Mbx16, Multiple Bank, Boot Block) Single Supply 3V 6/8
CONCLUSION This Application Note shows that the M29 series NOR Flash memories and the AMD AM29 series NOR Flash memories are very similar, which makes second sourcing possible. Most equivalent parts have the pinout, command set and bus configuration and so, are 100% compatible. The software only needs to be changed to cater for a few differences (when any), and when additional Flash memories are used as the manufacturer specific identification codes differ. But the modifications are straightforward. REVISION HISTORY Table 3. Document Revision History Date Version Revision Details 01-Jan-2001 1.0 First Issue 30-Mar-2004 2.0 Application Note completely rewritten. 7/8
If you have any questions or suggestions concerning the matters raised in this document, please send them to the following electronic mail addresses: ask.memory@st.com (for general enquiries) Please remember to include your name, company, location, telephone number and fax number. Information furnished is believed to be accurate and reliable. However, STMicroelectronics assumes no responsibility for the consequences of use of such information nor for any infringement of patents or other rights of third parties which may result from its use. No license is granted by implication or otherwise under any patent or patent rights of STMicroelectronics. Specifications mentioned in this publication are subject to change without notice. This publication supersedes and replaces all information previously supplied. STMicroelectronics products are not authorized for use as critical components in life support devices or systems without express written approval of STMicroelectronics. The ST logo is a registered trademark of STMicroelectronics. All other names are the property of their respective owners. 2004 STMicroelectronics - All rights reserved STMicroelectronics GROUP OF COMPANIES Australia - Belgium - Brazil - Canada - China - Czech Republic - Finland - France - Germany - Hong Kong - India - Israel - Italy - Japan - Malaysia - Malta - Morocco - Singapore - Spain - Sweden - Switzerland - United Kingdom - United States www.st.com 8/8