FPGA, SoC, And CPLD Boards And Kits
FPGA Evaluation and Development Kits
Announcements
Intel Support hours are Monday-Fridays, 8am-5pm PST, except Holidays. Thanks to our community members who provide support during our down time or before we get to your questions. We appreciate you!

Need Forum Guidance? Click here
Search our FPGA Knowledge Articles here.

Flash Write/read

Altera_Forum
Honored Contributor II
1,045 Views

Hi.. I am trying to write/ read from the flash. I am working on an Altera DE2 board. I am just trying to write some value (8-bit) in into a fixed memory location in a flash, and am trying to read it. I am able to read values from flash code but not able to write the values I want. 

 

i.e The value being read is not the value I wrote in that memory, which shows that 'write' operation is not taking place.  

 

I guess there are some series of operations to be performed before writing to a flash. I am not able to find any material on that. 

 

Please help me out.. (attached below :code ) 

 

 

module flashcontroller( 

//REF_CLK, 

RESET_N, 

CLK, 

SW, 

SWIN, 

//controller outputs 

LEDR, 

FL_ADDR, 

FL_DQ, 

FL_CE_N, 

FL_OE_N, 

FL_WE_N, 

FL_RST_N, 

); 

 

 

//input REF_CLK; 

input RESET_N; 

input CLK; 

input SW; 

input [7:0] SWIN; 

inout [7:0] FL_DQ ; 

 

output [21:0] FL_ADDR;  

output FL_CE_N; 

output FL_OE_N; 

output FL_WE_N; 

output FL_RST_N; 

output [7:0] LEDR; 

 

wire[21:0] rFL_MAX; 

reg [21:0] rFL_ADDR;  

reg [7:0] rFL_DQ; 

reg rFL_RST_N; 

reg [7:0] rLEDR; 

reg rFL_WE_N; 

reg rFL_OE_N; 

reg rFL_CE_N; 

 

// assign rFL_MAX = 22'b1111111111111111111111; 

// assign FL_DQ = 8'b10000001; 

// assign FL_WE_N = 1'b1; 

// assign FL_OE_N = 1'b0; 

// assign FL_CE_N = 1'b0; 

assign FL_RST_N = rFL_RST_N; 

assign FL_ADDR = rFL_ADDR; 

assign LEDR = rLEDR; 

assign FL_DQ = rFL_DQ; 

assign FL_CE_N = rFL_CE_N; 

assign FL_OE_N = rFL_OE_N; 

assign FL_WE_N = rFL_WE_N; 

 

 

always@(posedge CLK or negedge RESET_N) 

begin 

if (!RESET_N) 

begin 

rFL_RST_N <= 0; 

rFL_ADDR <= 0; 

end 

else if (SW == 1) 

begin 

rFL_RST_N <= 1; 

rFL_DQ <= 8'bz; 

rFL_WE_N <= 1'b1; 

rFL_OE_N <= 1'b0; 

rFL_CE_N <= 1'b0; 

rLEDR <= FL_DQ; 

 

 

end 

else 

begin 

rFL_RST_N <= 1; 

rFL_WE_N <= 1'b0; 

rFL_OE_N <= 1'b1; 

rFL_CE_N <= 1'b0; 

rFL_DQ <= SWIN; 

rLEDR <= SWIN; 

 

 

// rFL_RST_N <= 1; 

// if (rFL_ADDR > rFL_MAX) 

// begin 

// rFL_ADDR <= 0; 

// end 

// else 

// begin 

// rFL_ADDR <= rFL_ADDR+1; 

// end 

 

end 

end 

endmodule
0 Kudos
3 Replies
Altera_Forum
Honored Contributor II
117 Views

 

--- Quote Start ---  

Hi.. I am trying to write/ read from the flash. I am working on an Altera DE2 board. I am just trying to write some value (8-bit) in into a fixed memory location in a flash, and am trying to read it. I am able to read values from flash code but not able to write the values I want. 

i.e The value being read is not the value I wrote in that memory, which shows that 'write' operation is not taking place.  

 

--- Quote End ---  

 

Are you using the correct flash write command or are you expecting the device behaves like a sram? Flash memory is not a sram: except reads, any other operation requires a special command sequence to be issued with a certain number of writes on specific addresses. 

 

 

--- Quote Start ---  

 

I guess there are some series of operations to be performed before writing to a flash. I am not able to find any material on that. 

 

--- Quote End ---  

 

Google the flash device part number and you'll find the datasheet. Read it and you'll get all the command codes for erase,write,identification,etc
Altera_Forum
Honored Contributor II
117 Views

Since I am working on the DE2 board, I don't have access to all the pins on the flash chip. For eg: I dont have access to BYTE pin and the RY/BY (ready/busy) pin.  

 

I am saying this because the .csv file for the DE2 board does not contain these pin assignments. Hence, I want to know, whether write operation can be done without the use of these pins.  

 

I have attached the datasheet for the flash, but cant find any such sequence. 

 

Thanks
Altera_Forum
Honored Contributor II
117 Views

Since you do have the datasheet, I can't understand why you don't read it. 

Anyway: 

- byte pin selects 8 or 16bit bus; this is usually hardwired high or low depending on how the flash memory is connected to your system, i.e. if you have only 8 data bits connected or all 16. 

- ry/by is optional: you can get the same information reading the status bits. 

The command sequences are summarized in table 16, page 37.
Reply