Forum Discussion
Hi,
Thank you for contacting Intel community.
- What is the FPGA device that was used?
- What is the Quartus version that was used? Quartus Pro 21.2? Quartus standard 20.1?
Regards,
Aiman
Hi Aiman,
Thanks for the Response
1. FPGA device used is Arria 10 (10AS066N3F40)
2. Quartus Pro 20.2
3. QSPI Boot Flash card provided with A10 SoC Dev Kit is used (Micron NOR Flash Memory MT25QU01GBBB)
Able to Read and Write to the flash memory in default SPI mode - 4 byte addressing mode by
- Erasing Sector before writing
- Adding delay (1s) after write operation.
But unable to change the flash memory mode to Quad I/O. Tried to write enhanced volatile, volatile and non volatile registers - registers values did not change from default value
Following are the steps followed to Enable in Quad mode using Enhanced Volatile Register
1. Enter Quad IO Mode (35h)
Observation: after writing this opcode to the flash memory register, all the values (Device ID, Enhanced Volatile Register) are set to 0x0000 0000. Not able to proceed after this. Resolved only after power ON
2. Write Enable (06h)
3.Write Enhanced Volatile Configuration Register (06h) -Writing 0x0000007F to the register (7th bit set as 0 to Enable Quad Mode)
4. Read Enhanced Volatile Configuration Register (65h)
Following are the steps followed to Enable in Quad mode using Non Volatile Register
1. Write Enable (06h)
2. Write Non Volatile Configuration Register (B1h) -Writing 0x0000FFF2 to the register (Enable Quad Mode)
Observation: after writing this register, all the values (Device ID, Non Volatile Register) are set to 0x0000 0000.
3. Power ON (to reset flash device)
Observation: even after power ON the register value is not changed from 0x0000 FFFF
4. Read Non Volatile Configuration Register (B5h)
Don't know reason for the device id to reset as 0x00000000 after register write
Is the sequence in the above two procedures correct? If not, what is the correct sequence?
How to Read/Write in Quad SPI Mode and perform flash read/write in burst mode?
Note: All the opcodes and scripts referred from GSFI IP User Guide
Regards,
Sindhu Parvathi
- SindhuParvathi4 years ago
New Contributor
Hi Aiman,
Adding points and snapshots related to query posted above
Script used for Enter Quad IO Mode :
proc enter_quad_io_mode {} {
global mp operating_protocols_setting flash_cmd_setting flash_cmd_ctrl flash_cmd_write_data_0
#read data and address set to quad IO mode in GSFI IP
master_write_32 $mp $operating_protocols_setting 0x00022000
#quad mode - Micron NOR Flash Opcode
master_write_32 $mp $flash_cmd_setting 0x00000035
master_write_32 $mp $flash_cmd_ctrl 0x1
}Observation: After the enter_quad_io_mode commands are executed Device ID Read and status registers value is 0x00000000
Script used for Write Enhanced Volatile Configuration Register :
proc write_evcr_quad {} {
global mp flash_cmd_setting flash_cmd_write_data_0 flash_cmd_ctrl
master_write_32 $mp $flash_cmd_setting 0x00001061
master_write_32 $mp $flash_cmd_ctrl 0x1#Set to 7F for Quad Mode in Flash Memory, default value is FF
master_write_32 $mp $flash_cmd_write_data_0 0x0000007F}
Script used for Read Enhanced Volatile Configuration Register :
proc read_evcr {} {
global mp flash_cmd_setting flash_cmd_ctrl flash_cmd_read_data_0master_write_32 $mp $flash_cmd_setting 0x00001865
master_write_32 $mp $flash_cmd_ctrl 0x1
set status_register [master_read_32 $mp $flash_cmd_read_data_0 1]
puts "Read Enhanced Volatile Configuration register : $status_register"
return 0
}Note: Not sure if the order of the commands used is creating the issue.
Attached the snapshot of the script results (System Console)