This website uses cookies. By using this site, you consent to the use of cookies. For more information, please take a look at our Privacy Policy.
Home > FPGA Technical Tutorials > Design Recipes for FPGAs Using Verilog and VHDL > Memory > Flash Memory

TABLE OF CONTENTS

Xilinx FPGA FPGA Forum

Flash Memory

FONT SIZE : AAA

As has been discussed previously, flash memory is essentially a form of EEPROM (Electrically Erasable and Programmable Read Only Memory). This is slightly different from a standard RAM where the address is given to the memory and depending on the R/W signals, the data is read or written, respectively. A typical set of interface pins for a flash memory consists of the following elements:

Basic Verilog SRAM Simulationpng

Figure 11.5 

Basic Verilog SRAM Simulation.

In addition to these control signals there is of course an address bus and a data bus. To implement this we can use a similar entity to that for a standard RAM block in VHDL:

1 entity flash is

2 generic ( 3 a : natural := 10;

4 d : natural := 8

5 );

6 port ( 7 clk : in std_logic;

8 addr : in std_logic_vector(a−1 downto 0);

9 data : inout std_logic_vector (d−1 downto 0);

10 cle : in std_logic;

11 ale : in std_logic;

12 ce : in std_logic;

13 re : in std_logic;

14 we : in std_logic;

15 wp : in std_logic;

16 busy : out std_logic;

17 );

18 end entity flash;

In most cases we won’t need to model the flash memory itself, but rather we need to interface to it, so the entity for a flash interface controller could be as follows:

1 entity flashif is

2 port ( 3 clk : in std_logic;

4 read : in std_logic;

5 en : in std_logic;

6 cle : out std_logic;

7 ale : out std_logic;

8 ce : out std_logic;

9 re : out std_logic;

10 we : out std_logic;

11 wp : out std_logic;

12 busy : in std_logic;

13 );

14 end entity flashif;

A typical architecture for this device could be as follows:

1 architecture basic of flashif is

2 begin

3 process (clk) is

4 if busy = 1 then

5 if rising_edge(clk) then

6 ce <= en;

7 ale <= 1 ;

8 cle <= 1 ;

9 if read = 0 then

10 we <= 1 ;

11 re <= 1 ;

12 else

13 we <= 0 ;

14 re <= 0 ;

15 end if;

16 if prog = 0 then

17 wp <= 0 ;

18 else

19 wp <= 1 ;

20 end if;

21 end if;

22 end if;

23 end process;

24 end architecture basic;

This is a basic outline for a flash controller and this will obviously change from device to device.

  • XC3090A-6PC84C

    Manufacturer:Xilinx

  • FPGA XC3000 Family 6K Gates 320 Cells 135MHz 5V 84-Pin PLCC
  • Product Categories:

    Lifecycle:Obsolete -

    RoHS: No RoHS

  • XC2V250-4CS144I

    Manufacturer:Xilinx

  • FPGA Virtex-II Family 250K Gates 3456 Cells 650MHz 0.15um Technology 1.5V 144-Pin CSBGA
  • Product Categories:

    Lifecycle:Obsolete -

    RoHS: No RoHS

  • XC2V250-4FG456I

    Manufacturer:Xilinx

  • FPGA Virtex-II Family 250K Gates 3456 Cells 650MHz 0.15um Technology 1.5V 456-Pin FBGA
  • Product Categories: FPGAs

    Lifecycle:Obsolete -

    RoHS:

  • XCV300-6FG456C

    Manufacturer:Xilinx

  • FPGA Virtex Family 322.97K Gates 6912 Cells 333MHz 0.22um Technology 2.5V 456-Pin FBGA
  • Product Categories: Condensateurs électrolytiques en aluminium

    Lifecycle:Obsolete -

    RoHS:

  • XC5VLX110T-3FF1136C

    Manufacturer:Xilinx

  • FPGA Virtex-5 LXT Family 110592 Cells 65nm Technology 1V 1136-Pin FCBGA
  • Product Categories: Special equipment devices and IC

    Lifecycle:Active Active

    RoHS: No RoHS

Need Help?

Support

If you have any questions about the product and related issues, Please contact us.