Lack of storage space getting you down? Have no fear. The Pmod SF3 32 MB serial NOR flash module is here!
The Pmod SF3 joins the Pmod SF and Pmod SF2 in the storage category of Digilent Pmod boards and is the largest one yet. The Pmod SF3 is a 32 MB serial NOR flash memory module designed to add extra, mobile, non-volatile storage capacity to microcontroller (MCU) and FPGA boards. It uses Micron’s N25Q256A serial NOR flash chip to provide easy access via SPI and supports extended SPI protocol, dual I/O and quad I/O. At 100,000 erase cycles and more than the amount of flash included on most Digilent system boards, this module is durable and has more than ample capacity to handle most applications.
What is flash memory?
Flash memory is so commonplace now (think USB thumb drives) that we usually don’t bother ourselves with the finer details of the technology. We just use it. It doesn’t help that the names of the various types of memory and how they are classified can be quite confusing. However when choosing additional memory for an existing system board, it’s a good idea to back up and understand some of the distinctions between the different types available, so let’s see if we can tease it apart a bit.
Starting from a high level, there are two main categories of semiconductor memory technology, random-access memory (RAM) and read-only memory (ROM). They are volatile and non-volatile respectively. With volatile memory (RAM), the chip is returned to an unknown state each time the board is power cycled. In other words, when the power is turned off, the contents of volatile memory are lost. In contrast, the contents of non-volatile memory (ROM) are maintained through any number of power cycles. Both RAM and ROM are technically random-access memory types, meaning the data can be accessed in any random order in memory regardless of physical location.
Original ROM devices differ from RAM mainly in that they cannot be easily written to, or sometimes not at all (MROM), hence the name read-only memory. So although they have the useful quality of being non-volatile, they are very restrictive in their ability to be reprogrammed. This led developers to come up with PROM (programmable read-only memory), EPROM (erasable programmable read-only memory) and EEPROM (electrically erasable programmable read-only memory), in that order, with each being more easily erased and reprogrammed than the last.
This finally brings us to flash memory. Flash was created in the mid-1980’s largely with the intent to replace traditional ROM. Flash maintains random access ability and non-volatility while grossly improving the capacity and the durability of the device. Modern flash chips can be as large as 256 GB (microSD cards) with typical erase cycles between 10,000 to 100,000, going as high as over 1,000,000. This makes classifying flash under read-only memory seem a little strange. However there are technically still restrictions on the number and speed of program-erase (P/E) cycles as compared to RAM, which is effectively infinite in number and still thousands of times faster. Check out the tree below for a useful graphic on classifying the major types of semiconductor memory technologies, and specifically where the Pmod SF3 falls.
NOR flash vs NAND flash
Now that we understand flash memory, we can discuss the specific types, NOR flash and NAND flash. Each has their advantages and disadvantages. In summary, NAND flash is higher capacity, cheaper, has faster P/E cycles and is more durable in terms of number of P/E cycles the device can handle before becoming unreliable. Where NOR flash wins out is in its read capabilities. It is faster than NAND and provides full access to address and data buses, allowing byte-level random access to data at any location in memory, whereas NAND requires data to be read on a block-wise basis with a typical block size of hundreds to thousands of bits. This makes NOR flash devices, such as the Pmod SF3, especially good for use in embedded applications where byte-level code execution is required. See the table below for a side by side comparison of NOR flash versus NAND flash.
Feature | NOR | NAND |
Storage capacity | X | |
Cost per bit | X | |
Read speed | X | |
Write speed | X | |
Active power | X | |
Standby power | X | |
Code execution | X | |
Embedded applications | X | |
File storage | X |
Applications of flash
As illustrated above, NOR and NAND flash devices excel in different applications. With its high capacity and fast write speed, NAND is especially suited for file storage. That’s why you see USB thumb drives, memory cards such as SD cards, solid-state drives and other devices requiring general storage and transfer of data employing NAND flash technology. NOR flash is especially suited for code execution due to its byte-level random access ability and fast read time. As most microprocessor and microcontroller applications require byte-level code execution, NOR flash, as found on the Pmod SF3, remains the non-volatile discrete memory of choice for embedded applications. Both NAND and NOR flash are used to store configuration data for numerous different digital products such as mobile phones, personal computers, digital cameras, video games, etc. In fact any time you want your FPGA to be configured on boot, or your microcontroller to run a program on boot, there’s a good chance flash memory is involved. It’s high mechanical shock resistance and ability to withstand high temperature and immersion in water also makes it especially popular for portable devices. The Pmod SF3 is an ideal choice if you need extra non-volatile storage for embedded applications in which code execution, and therefor byte-level random read access, is required.
In terms of FPGA versus MCU, the only real difference in functionality of the Pmod SF3 lies in leveraging the dual and quad I/O features. Dual and quad I/O are extensions of the standard SPI protocol and are not supported by most microcontrollers, including those offered by Digilent. These extended protocols are, however, supported by Xilinx FPGA’s and by extension also supported by Digilent system boards.
Getting started with the Pmod SF3
To get users started quickly, we’ve written an MPIDE library and example code for use with Digilent microcontroller boards. If using the Pmod SF3 with a Digilent FPGA board, see our wiki page titled Using Pmod IP’s for a detailed tutorial on how to get up and running smoothly with the Pmod SF3 and Zynq or MicroBlaze designs.
Questions or comments? Use the comment section below or visit the Digilent Forum!
References (in addition to the various Wikipedia pages linked throughout this post):