EE Product News

Selecting the Correct Memory Type for Embedded Applications

By Alex Martinez,
Memory Products Division Microchip Tecnologies

The type of memory a designer selects for an embedded project drives overall system operation and performance, so obviously this is a very important decision. Whether the system runs on batteries or AC power, the application's requirements determine whether volatile or nonvolatile memory is needed and whether the memory to be used is for program space, data parameters or both. Additionally, memory size and cost play a major role in the selection process. Smaller systems may have enough memory within the microcontroller to meet system requirements, while larger systems may require external memory. A few design parameters to consider when selecting the appropriate memory type include:

  • Microcontroller selection
  • Voltage range
  • Battery life
  • Read/write speeds
  • Memory size
  • Memory volatility
  • Erase/write endurance levels
  • Overall system costs

Figure 1 illustrates the memory types most commonly used in embedded applications. The following text is a set of guidelines for selecting memory.


Usually, designers make the decision to use internal or external memory after they define the required amounts of code space and data memory. Internal memory is typically the most cost effective memory type, but it is also the least flexible. For this reason, designers must determine future growth possibilities and whether there is an upgrade path to microcontrollers with larger code space. Since cost is always a factor, the microcontroller with the least amount of memory to fit the application is typically selected. Therefore, care must be taken when predicting code size, since an increase in code size might require a different microcontroller.

External memory devices are available in various sizes, so it is easy to add memory to accommodate an increase in code size. This sometimes means replacing existing memory with a larger memory device in the same package, or adding additional memory devices to the bus. Even if the microcontroller has internal memory, an external serial EEPROM or Flash device can support requirements for non-volatile memory.

In larger microcontroller or processor-based systems, the design might use boot code for initialization. The application usually determines if boot code is needed and whether a separate boot-memory device is required. For example, if no external address bus or serial boot interface exists, internal memory is generally used, and a separate boot device is not required. However, in designs that do not have internal program memory, initialization is part of the operational code, so all code will reside in the same external program memory. Some microcontrollers have both internal memory and an external address bus. In this case, the boot code could reside in internal memory, and the operational code in external memory. This is probably the safest method, because the operational code can change without accidentally modifying the boot code. In all cases, the boot memory must be non-volatile.

For Field Programmable Gate Arrays (FPGAs) or System-On-a-Chip (SOC) designs, memory devices are used to store configuration information. This memory must be non-volatile EPROM, EEPROM or Flash. In most cases, FPGAs use a SPI, but some older ones still use an FPGA serial interface. Serial EEPROM or Flash devices are used most frequently, rather than EPROMs.

All systems with a processor utilize program memory, but the designer must determine whether this memory will reside internally or externally. Once this decision is made, the designer can move on to memory density and type. Of course, there are occasions when the microcontroller has both internal program memory and an external address bus, so the designer may choose to use either memory, or a combination of both. This is why selecting the best memory for the application is often complicated by the choice of microcontroller and why changing the memory size can also force a change of microcontrollers.

If the microcontroller utilizes both internal and external memory, internal memory is usually used for code that does not change often, and external memory for code and data that are updated more frequently. A designer also needs to consider whether the memory will be reprogrammed in-circuit or replaced with a new, programmed device. In applications that require reprogrammability, a microcontroller with internal Flash is the typical choice, but a microcontroller with internal OTP or ROM and external Flash or EEPROM also meets this requirement. To save cost, external Flash can be used for both code and data space. However, care must be taken to prevent the accidental modification of code when storing data.

In most embedded systems, Flash is used for program memory to allow for in-circuit firmware upgrades. Older applications with stable code can still use ROM and OTP memory, but more and more applications are moving toward Flash because of its versatility. Table 1 is a comparison of program memory types.

Like program memory, data memory can reside within the microcontroller or in external devices. However, there are a few differences. Data memory such as SRAM (volatile) and EEPROM (non-volatile) are sometimes both available within the same microcontroller, but at other times an internal EEPROM is not available. In these cases, a designer can select an external serial EEPROM or a serial Flash device when large amounts of data are involved. Parallel EEPROMs or Flash are also available, but typically used for program memory only.

When external, high-speed data memory is needed, the typical choice is parallel SRAM, with an external serial EEPROM device to support non-volatile requirements. In some designs, a Flash device is used for program memory, but has a section reserved for data storage. This saves cost, space and provides nonvolatile data memory.

For non-volatile memory requirements, serial EEPROM devices support the I2C, SPI or Microwire communication buses, while serial Flash typically uses the SPI bus. In some applications, FRAM is used for its very fast write speeds, and is available with I2C and SPI serial interfaces. Table 2 shows a comparison of data memory types.

All memory types can be classified as volatile or non-volatile. Volatile memory loses data when power is removed from the device, while non-volatile memory maintains the data without power. Designers sometimes use a backup battery with volatile memory to make it behave like a non-volatile device, but this can be more expensive than simply using non-volatile memory. However, for designs with very large memory requirements, DRAM with a battery backup can be a cost-effective approach that still meets the design requirements.

In systems with continuous power, either volatile or non-volatile memory can be used, but the final decision must be based upon the possibility of a power loss. If the information in memory can be recalled from another source when power returns, volatile memory can be used.

Another reason for choosing volatile memory plus a battery is speed. Even though non-volatile memory devices retain data in the absence of power, they have the disadvantage of longer write-cycle times to store a byte, page or sector of data.

When the application is defined, the choice of microcontroller will be one factor in determining whether serial or parallel memory is used. Microcontrollers typically do not have enough internal memory for larger applications. In these cases, external memory is necessary. Since the external address bus is usually parallel, the external program and data memories will also be parallel.

For smaller applications, microcontrollers with internal memory and no external address bus are commonly used. If additional data memory is needed, an external serial memory device is the best choice. And in most cases, this additional external data memory will be non-volatile.

Boot memory can be serial or parallel, depending upon the design. If the microcontroller does not have internal memory, a parallel, non-volatile memory device is a good choice for most applications. For some high-speed applications, though, an external, non-volatile serial-memory device can be used to boot the microcontroller and allow the main code to operate from either internal or external high-speed SRAM.

As memory technologies have matured, the line between RAM and ROM has blurred. Today, several memory types combine features of both, such as EEPROM and Flash. These devices read and write like RAM, but maintain their contents without power, like ROM. Both are electrically erasable and programmable, yet each has its own advantages and disadvantages.

From a software viewpoint, standalone EEPROM and Flash devices are similar. The main difference is that EEPROM devices can be modified byte-by-byte, while Flash devices only support sector erase and either word, page or sector programming of erased cell locations. The additional steps for reprogramming Flash require the use of SRAM, so more devices are turned on for a longer period of time, which in turn uses more battery power. The designer must also make sure that there is a sufficient amount of SRAM available to make the modifications.

Memory density is another factor in determining whether to select serial EEPROM or Flash. Standalone serial EEPROM devices are available in densities of 128 KB and below, while standalone Flash is available with densities of 32 KB and above.

Applications above 128 KB are possible with serial EEPROM if multiple devices are cascaded together. High erase/write endurance requirements drive an EEPROM choice as a typical serial EEPROM offers one million erase/write cycles. Flash is typically rated at 10,000 cycles, with a few devices offering 100,000 cycles.

Today, most Flash devices are manufactured with a voltage range of 2.7V to 3.6V. Applications within this voltage range can benefit from the lower costs associated with Flash, if byte addressability or high erase/write endurance levels are not required.

Design parameters for EEPROM and FRAM are similar, but FRAM tends to have higher read/write endurance levels and faster write speeds. Even with these advantages, the main reasons customers select EEPROM over FRAM are cost, quality level and availability. FRAM is expensive, so designers typically use lower-cost serial EEPROM unless endurance or speed is a mandatory system requirement.

DRAM and SRAM are both volatile, but SRAM is mainly used for data memory, although both types can be used for both program and data memory. The primary difference between DRAM and SRAM is the lifetime of the data stored. SRAM retains its contents as long as electrical power is present, but DRAM has an extremely short data lifetime—typically about four milliseconds.

DRAM might seem useless in comparison to SRAM; however, a DRAM controller within some microcontrollers makes DRAM behave like SRAM. The DRAM controller periodically refreshes the stored data before it expires, so the memory contents can be stored as long as necessary.

DRAM is typically used for program memory because of its low cost per bit, so applications with huge memory requirements can greatly benefit from DRAM. Its biggest drawback is its slow speed, but computer systems today use high-speed SRAM as cache memory to supplement the much slower DRAM.

Table 3 summarizes the features of each type of memory mentioned in this article. Designers should keep in mind that each type serves a different purpose. Each has its strengths and weaknesses, so sideby-side comparisons are not always effective.

Though it is possible to use almost any type of memory to meet embedded system requirements, the end application and overall costs are usually the main drivers in this decision. Sometimes, a combination of memory types can best suit the application. For example, PDA designs use both volatile and nonvolatile memory for program and data memory. Permanent programs are stored in non-volatile ROM, while programs and data downloaded by the user are stored in battery-backed, volatile DRAM. Whatever memory type or types are selected, designers must carefully consider all design trade-offs before selecting the memory that will be used for the final application.

Alex Martinez is a Product Marketing Manager for the Memory Products Division of Microchip Technology Inc. He can be reached at [email protected]

Company: Microchip Technology Inc.

Product URL: Click here for more information

Hide comments


  • Allowed HTML tags: <em> <strong> <blockquote> <br> <p>

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.