Search the Community

Showing results for tags 'flash'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • News
    • New Users Introduction
    • Announcements
  • Digilent Technical Forums
    • FPGA
    • Test and Measurement
    • Measurement Computing (MCC)
    • Add-on Boards
    • Digilent Microcontroller Boards
    • Non-Digilent Microcontrollers
    • LabVIEW
    • FRC
    • Other
  • General Discussion
    • Project Vault
    • Learn
    • Suggestions & Feedback
    • Buy, Sell, Trade
    • Sales Questions
    • Off Topic
    • Educators
    • Technical Based Off-Topic Discussions
    • Archived

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start





Website URL







Found 9 results

  1. Has anyone had troubles with the PMOD SD Flash Internface where the 10k resistors are too big for the VCU118 board. We may have to create a new PMOD as the 10k causes excessive delay in the ramp above a certain frequency.
  2. Hey everyone, I'm having a problem with pmodSF3 that uses a flash memory with FBGA code RW146 ( datasheet). The problem is once I try to modify the enhanced volatile configuration registers, the flash starts sending ones. I tried to follow the datasheet by sending a write enable, then 0x61 command and then the value to write in the register. I did check the commands using a scope, and they are sent correctly. What's weird is the flash works fine but once I try to modify that register the flash starts sending ones and nothing works until I power off and on the board. As you can see the first tests works fine, then I try to modify the volatile enhanced register and then things get messy. Someone has an idea of what's happening ?
  3. Dear All, Board in use: ARTY A7-100T Flash in use: FL128SAIF00 Spansion Goal: to write 10 bytes of user data to flash and then read it later to use it in code. Present status : I am using microblaze , along with axi quad spi, mig , clock wizard, small PL logic etc. in my block design. I am able to program the flash and I am able sucessfully use bootloader to load the srec image from flash when the board powers up. So flash reading/ writing is working for this purpose. Now I want to simply write few bytes to flash and then read it from microblaze code. For this I followed a link found on this forum: I made small changes to the code to suit my requirements and now it looks like this: #include "xparameters.h" /* EDK generated parameters */ //#include "xscugic.h" /* Interrupt controller device driver */ #include "xil_exception.h" #include "xil_printf.h" #include "xplatform_info.h" #include <xilisf.h> /************************** Constant Definitions *****************************/ /* * The following constants map to the XPAR parameters created in the * xparameters.h file. They are defined here such that a user can easily * change all the needed parameters in one place. */ #define SPI_DEVICE_ID XPAR_SPI_0_DEVICE_ID /* * The following constants define the offsets within a FlashBuffer data * type for each kind of data. Note that the read data offset is not the * same as the write data because the SPI driver is designed to allow full * duplex transfers such that the number of bytes received is the number * sent and received. */ #define DATA_OFFSET 4 /* Start of Data for Read/Write */ #define DUMMY_SIZE 1 /* Number of dummy bytes for fast, dual and quad reads */ /* * The following constants specify the page size, sector size, and number of * pages and sectors for the FLASH. The page size specifies a max number of * bytes that can be written to the FLASH with a single transfer. */ #define SECTOR_SIZE 0x10 #define NUM_SECTORS 0x02 /* * Flash address to which data is to be written. */ #define TEST_ADDRESS 0x003D0D00 #define UNIQUE_VALUE 0x05 /* * The following constants specify the max amount of data and the size of the * the buffer required to hold the data and overhead to transfer the data to * and from the FLASH. */ #define MAX_DATA SECTOR_SIZE * NUM_SECTORS /* * The following constant defines the slave select signal that is used to * to select the FLASH device on the SPI bus, this signal is typically * connected to the chip select of the device */ #define FLASH_SPI_SELECT_1 0x01 #define FLASH_SPI_SELECT_0 0x00 /**************************** Type Definitions *******************************/ /***************** Macros (Inline Functions) Definitions *********************/ /************************** Function Prototypes ******************************/ int FlashErase(XIsf *InstancePtr, u32 Address, u32 ByteCount); int FlashWrite(XIsf *InstancePtr, u32 Address, u32 ByteCount, u8 Command); int FlashRead(XIsf *InstancePtr, u32 Address, u32 ByteCount, u8 Command); int WriteEnable(XIsf *InstancePtr); int SpiFlashPolledExample(XSpi *SpiInstancePtr, u16 SpiDeviceId); /************************** Variable Definitions *****************************/ /* * The instances to support the device drivers are global such that they * are initialized to zero each time the program runs. They could be local * but should at least be static so they are zeroed. */ static XSpi SpiInstance; static XIsf Isf; /* * The following variables are used to read and write to the eeprom and they * are global to avoid having large buffers on the stack */ u8 ReadBuffer[MAX_DATA + DATA_OFFSET + DUMMY_SIZE]; u8 WriteBuffer[MAX_DATA + DATA_OFFSET]; u8 IsfWriteBuffer[XISF_CMD_SEND_EXTRA_BYTES + 1]; /*****************************************************************************/ /** * * Main function to call the SPI Flash example. * * @param None * * @return XST_SUCCESS if successful, otherwise XST_FAILURE. * * @note None * ******************************************************************************/ int main(void) { int Status = XST_FAILURE; xil_printf("SPI FLASH Polled Example Test \r\n"); /* * Run the Spi Interrupt example. */ Status = SpiFlashPolledExample(&SpiInstance,SPI_DEVICE_ID); if (Status != XST_SUCCESS) { xil_printf("Status: %d \r\n", Status); xil_printf("SPI FLASH Polled Example Test Failed\r\n"); return XST_FAILURE; } xil_printf("Successfully ran SPI FLASH Polled Example Test\r\n"); return XST_SUCCESS; } /***************************************************************************** * * The purpose of this function is to illustrate how to use the XSpiPs * device driver in interrupt mode. This function writes and reads data * from a serial FLASH. * * @param None. * * @return XST_SUCCESS if successful else XST_FAILURE. * * @note * * This function calls other functions which contain loops that may be infinite * if interrupts are not working such that it may not return. If the device * slave select is not correct and the device is not responding on bus it will * read a status of 0xFF for the status register as the bus is pulled up. * *****************************************************************************/ void FlashWriteSPI(XIsf *InstancePtr, u32 Address, u32 ByteCount, u8 Command); int SpiFlashPolledExample(XSpi *SpiInstancePtr, u16 SpiDeviceId) { xil_printf("Inside SPI Flash Polled Example\r\n"); u8 *BufferPtr; u8 UniqueValue; u32 Count; XSpi_Config *ConfigPtr; /* Pointer to Configuration ROM data */ u32 TempAddress; u32 MaxSize = MAX_DATA; u32 ChipSelect = FLASH_SPI_SELECT_1; if (XGetPlatform_Info() == XPLAT_MICROBLAZE) { MaxSize = 10 * 1; ChipSelect = FLASH_SPI_SELECT_0; /* Device is on CS 0 */ xil_printf("If 1 \r\n"); } /* * Lookup the device configuration in the temporary CROM table. Use this * configuration info down below when initializing this component. */ ConfigPtr = XSpi_LookupConfig(SpiDeviceId); if (ConfigPtr == NULL) { xil_printf("If 2 \r\n"); return XST_DEVICE_NOT_FOUND; } XSpi_CfgInitialize(SpiInstancePtr, ConfigPtr, ConfigPtr->BaseAddress); /* Initialize the XILISF Library */ XIsf_Initialize(&Isf, SpiInstancePtr, ChipSelect, IsfWriteBuffer); memset(WriteBuffer, 0x00, sizeof(WriteBuffer)); memset(ReadBuffer, 0x00, sizeof(ReadBuffer)); /* Unprotect Sectors */ FlashWrite(&Isf, 0, 0, XISF_WRITE_STATUS_REG); FlashErase(&Isf, TEST_ADDRESS, MaxSize); /* * Initialize the write buffer for a pattern to write to the FLASH * and the read buffer to zero so it can be verified after the read, the * test value that is added to the unique value allows the value to be * changed in a debug environment to guarantee */ TempAddress = TEST_ADDRESS; for (UniqueValue = UNIQUE_VALUE, Count = 0; Count < MaxSize; Count++, UniqueValue++, TempAddress++) { WriteBuffer[0] = (u8)(UniqueValue); FlashWrite(&Isf, TempAddress, 1, XISF_WRITE); xil_printf("Flash Write to %d, value is %d \r\n", TempAddress, WriteBuffer[0]); } /* * Read the contents of the FLASH from TEST_ADDRESS, using Normal Read * command */ FlashRead(&Isf, TEST_ADDRESS, MaxSize, XISF_READ); /* * Setup a pointer to the start of the data that was read into the read * buffer and verify the data read is the data that was written */ BufferPtr = &ReadBuffer[DATA_OFFSET]; for (UniqueValue = UNIQUE_VALUE, Count = 0; Count < MaxSize; Count++, UniqueValue++) { xil_printf("Flash Read is %d \r\n", BufferPtr[Count]); if (BufferPtr[Count] != (u8)(UniqueValue)) { //return XST_FAILURE; } } return XST_SUCCESS; } I edited only main and SpiFlashPolledExample function, all other functions are untouched. Now when I run it , I get (consoleOutput.png). I fear that flash is not being written at the first place. What am I missing here? Kindly help @D@n Any other working projects/examples would be of great help.
  4. Hello, I tried posting this on the Xilinx forums but got no response. These forums look more active and friendly so hopefully somebody can help me. I am really stuck. I am trying to follow along with the "How To Store Your SDK Project in SPI Flash" tutorial (, but I cannot get it to work. I am using an Artix-7 35T Arty FPGA Evaluation Kit. I am running Vivado v2017.2 (64-bit) and SDK v2017.2 on a Windows 10 machine. First, I created a simple "Hello World" program by following the steps in the "Arty - Getting Started With Microblaze" tutorial ( The only deviation from the instructions that I made was that after adding the MIG to the board, I added an AXI Quad SPI, with enabled port SPI_0, and then ran "Run Connection Automation". When I ran my C program on the Arty board it worked fine, and printed "Hello World" to my PuTTY terminal. I've attached my board file as both .bd and .png. Second, I tried store this "Hello World" program to the Arty's SPI Flash using the "How To Store Your SKD Project in SPI Flash" tutorial. But, it did not work. I'll walk you through what I did because there are a few things that I am confused about. Unless otherwise noted I followed the instructions exactly. Before step 0: I don't know what the QSpi mode jumper setting is referring to, so I didn't do anything. Step 1.3: I compressed my bitstream so I left FLASH_IMAGE_BASEADDR as 0xF8000000, like I found it. Steps 2.1 and 2.2: I used my "Hello World" app that I created by following the "Arty - Getting Started with Microblaze" tutorial. I couldn't place the sections into mig_7series_0 because that wasn't an option, so instead I used mig_7series_0_memaddr. Step 4.1: I used offset 0xF8000000 because that is what I used in Step 1.3. One other thing: the test says to use Arty flash type mt25ql128-spi-x1_x2_x4 (which I do), but the image of the "Program Flash Memory" window shows them using Arty flash type n25ql128-spi-x1_x2_x4. Step 5: it doesn't work. Does anyone have any suggestions? Is the SPI Flash some sort of external hardware that I need to plug into the Arty? Thanks in advance.
  5. Hi All, After I did a firmware update I can't auto-connect to my wifi. OpenScope v1.301.0 Written by: Keith Vogel, Digilent Inc. Copyright 2016 Digilent Inc. File Systems Initialized MRF24 Info -- DeviceType: 0x2 Rom Version: 0x31 Patch Version: 0xC USB+: 4703392uV VCC 3.3: 3297119uV VRef 3.0: 3000000uV VRef 1.5: 1501465uV USB-: -4662143uV Using calibration from: flash Unable to connect to WiFi AP. Error 0xA000001B Upon further investigation it appears I can't read/wite from flash anymore: Getting error trying to save calibration: Calibrating instruments Connect DCOUT1 to OCS1 and DCOUT2 to OCS2 To connect DCOUT1 to OCS1, wire the solid red wire to the solid orange wire To connect DCOUT2 to OCS2, wire the solid white wire to the solid blue wire Enter C when ready Starting Calibration Calibration time was: 28177 msec Do you want to save this calibration Y/N? Unable to save calibration info for DCOUT1 Error: 0x80000003 When I try to open or read WIFI connections I get this: Unable to open volumn: 1: When I add a new connection I get the following: Please enter PassPhrase for: uware PSK value: 0F:CE:D2:A1:29:55:E2:6C:31:18:A2:D7:DB:2E:5D:F3:8C:14:82:7F:39:C4:71:99:F3:C7:F2:57:EC:B6:0D:C8 Connected to AP: uware Would you like to auto-connect to this network? Y/N Is Linked to the physical network Link status: 0x0 Network Initialized My IP: Gateway IP: Subnet mask: Dns0: IP: Dns1: IP: Dns2: IP: Dns3: IP: My MAC: 00:1E:C0:42:5F:1C 10 Sockets Listening on IP: Listening Sockets = 10 Error Saving file: WFPARM_001EC0425F1C_uware When I "View all files names in flash: I get the following: 1. DCOUT1_FACTORY_001EC0425F1C 2. DCOUT2_FACTORY_001EC0425F1C 3. AWG1_FACTORY_001EC0425F1C 4. OSC1_FACTORY_001EC0425F1C 5. OSC2_FACTORY_001EC0425F1C 6. DCOUT1_001EC0425F1C 7. DCOUT2_001EC0425F1C 8. AWG1_001EC0425F1C 9. OSC1_001EC0425F1C 10. OSC2_001EC0425F1C 11. WFPARM_001EC0425F1C_uware 12. NONE_001EC0425F1C_uware Any suggestions?
  6. I'm trying to build a design for the Arty A7-100 (not using MicroBlaze), using the AXI Quad SPI memory for user data (and also for bitstream storage). The Reference Manual (and the master .xdc file) mention six external pins for this (actually the .xdc file only mentions five). But when I select the Arty A7100/External Memory/Quad SPI Flash from the "Board" window, it gives me a block for which the SPI_0 interface has 18 pins. Essentially each data pin has become three (_i, _o and _t). Am I supposed to put IO buffers there myself, or have I somehow got the wrong block? If so, please would someone point me to the right package? Thanks
  7. Hi FPGA gurus ! Merry Christmas and happy new year to all of you FPGA lovers at Digilent ! I'm trying (unsuccessfully) to store Atlys HDMI demo to SPI/Flash so that whenever I turn the Atlys board on the project runs, without the need to upload and launch it through SDK. Atlys HDMI demo is a PLB based project and the only piece of info I can find about storing projects to SPI/Flash is for AXI based projects. Can anybody help me achieving this ? Any help would be greatly appreciated. Cheers
  8. I am starting with working design for the CMOD S7 where I program the device through SDK and all functionality works as intended. Now where I am falling short is getting the program to run out of the SPI Flash. I have been following the "How To Store Your SDK Project in SPI Flash" guide from Digilent in order to put a Microblaze design into SPI Flash on the CMOD S7 located at the link here: There is a recommended offset of 0x00300000 for the CMOD A7 - My question is what is the recommended offset for CMOS S7? I tried both 0x00000000 and 0x0030000 and could not get the design to work. Kind Regards, James
  9. Hi, I am working on a project where i'm using Digilent zybo AP SoC with xilinx vivado for Hardware design and Xilinx SDK for software design. My application uses following protocol/peripherals: 1. UARTns16550 PL side (Programmable Logic) in interrupt mode. 2. GPIOs 3. Ethernet mac (lwIP stack) I started my software design using xilinx lwip perf client application project. Then i started modifying the perf client C code according to my need. My project contains Uartns16550, tcp/ip server and client program which receives real-time data. So coming to my problem, i am able to run my application from xilinx sdk GDB and system debugger. But, when i dump my code in QSPI flash and try to boot, the zybo is not booting up. I also tried loading different application project like tcp perf server, perf client. By doing this the processor boots up properly through QSPI flash. I followed the steps provided by Digilent for programming the flash and i also ensured that the jumpers are in the right place where it has to be. I believe that there's a problem with my program since i have started modifying the tcp perf client code for my project. I am not getting a clue where my code is going wrong. Operating System : Windows 10 Software : Xilinx vivado 2018.3/SDK 2018.3 Any inputs related to this will be appreciated. Thanks & Regards Ajeeth kumar