Git Product home page Git Product logo

fpga-serial-mem-tester-1's Introduction

fpga-serial-mem-tester-1

FPGA Serial Mem Tester Version 1 by Timothy Stotts

Note that this project is deprecated. The most recent project, with wider hardware support and occasional updates, is Version 3 and is located at: fpga-serial-mem-tester-3

Description

A small FPGA project of different implementations for testing a N25Q Serial Flash. The design targets the Digilent Inc. Arty-A7-100T FPGA development board containing a Xilinx Artix-7 FPGA. Two peripherals are used: Digilent Inc. Pmod SF3, Digilent Inc. Pmod CLS.

The design is broken into two groupings.

The folder SF-Tester-Design-AXI contains a Xilinx Vivado IP Integrator plus Xilinx Vitis design. A microblaze soft CPU is instantiated to talk with board components, a SPI Flash peripheral, and a 16x2 character LCD peripheral. Sources to be incorporated into a Xilinx Vitis project contain a very small FreeRTOS program in C; drivers for the peripherals, a real-time task to operate the flash chip, two real-time tasks to display data, and a real-time task to color-mix RGB LEDs. (None of the real-time tasks demonstrate executing with a precise timer, but only demonstrate a best-effort execution; as such, calling these tasks real-time may be a misnomer. Executing these tasks with a precise timer can be achieved with FreeRTOS; but the benefit does not outweigh the added complexity for this specific implementation.)

The folder SF-Tester-Design-VHDL contains a Xilinx Vivado project with sources containing only VHDL-2002 and VHDL-2008 modules. Plain HDL without a soft CPU or C code is authored to talk with board components, a N25Q SPI Flash 256Mbit, and a 16x2 character LCD peripheral.

These two groupings of design provide equivalent functionality, excepting that the HDL design provides a much faster execution. Checkouts for the latest implementation should refer to tag Serial_Mem_Tester_All_Release_A .

Naming conventions notice

The Pmod peripherals used in this project connect via a standard bus technology design called SPI. The use of MOSI/MISO terminology is considered obsolete. COPI/CIPO is now used. The MOSI signal on a controller can be replaced with the title 'COPI'. Master and Slave terms are now Controller and Peripheral. Additional information can be found here. The choice to use COPI and CIPO instead of SDO and SDI for single-direction bus signals is simple. On a single peripheral bus with two data lines of fixed direction, the usage of the signal name "SDO" is dependent on whether the Controller or the Peripheral is the chip being discussed; whereas COPI gives the exact direction regardless of which chip is being discussed. The author of this website agrees with the open source community that the removal of offensive language from standard terminology in engineering is a priority.

Project information document:

./Serial Flash Sector Tester.pdf

Serial Flash Sector Tester info

Diagrams design document:

./SF-Tester-Design-Documents/SF-Tester-Design-Diagrams.pdf

Serial Flash Sector Tester Design Diagrams info

Target device assembly: Arty-A7-100T with Pmod SF3, Pmod CLS on extension cable

Target device assembly

Target device execution: Arty-A7-100T with Pmod SF3, Pmod CLS on extension cable

Target device assembly executing

Block diagram architecture of the HDL design:

SF3 Tester Architecture Diagram

Top Port diagram architecture of the HDL design:

SF3 Tester Top Ports Diagram

Tester FSM diagram of the HDL design:

SF3 Tester FSM Diagram

LCD FSM diagram of the HDL design:

LCD FSM Diagram

UART Feed FSM diagram of the HDL design:

UART Feed FSM Diagram

UART TX ONLY FSM diagram of the HDL design:

UART Feed FSM Diagram

4-input Multi-Debouncer for 4 exclusve inputs, such as switches or buttons, of the HDL design:

4-bit Multi-Debouncer

SF3 Custom Driver External Ports diagram of the HDL design:

SF3 Custom Driver Ports

SF3 Custom Driver Internal Ports diagram of the HDL design:

SF3 Custom Driver Ports, Internal

Pmod SF3 Extended SPI custom driver FSM for operating the QSPI Extended SPI driver to configure and operate the functions of the N25Q Flash chip of the Pmod SF3:

SF3 Custom Driver FSM

Generic QSPI Extended SPI Single Chip protocol bus driver, used by the SF3 driver

Generic Standard SPI Single Chip bus driver

CLS Custom Driver External Ports diagram of the HDL designs:

CLS Custom Driver Ports

CLS Custom Driver Internal Ports diagram of the HDL designs:

CLS Custom Driver Ports, Internal

Pmod CLS Standard SPI custom driver FSM for operating the standard SPI driver to send text line refreshes to the ATmega48 microcontroller chip of the Pmod CLS:

CLS Custom Driver readings driver FSM

Generic Standard SPI Single Chip protocol bus driver, used by the the CLS driver

Generic Standard SPI Single Slave bus driver

Utility FSMs: synchonous pulse stretcher FSM

Utility FSMs, one-shot, pulse stretcher

fpga-serial-mem-tester-1's People

Contributors

timothystotts avatar

Stargazers

 avatar  avatar

Watchers

 avatar

fpga-serial-mem-tester-1's Issues

Vitis project code can only test the SF3 flash up to 128 Mbits

Vitis project code can only test the SF3 flash up to 128 Mbits due to a limitation of Serial Flash Commands accepted by the AXI QSPI driver in the IPI-BD. The SF3 flash is actually 256 Mbits in size. There is a possibility that the method by which to access the upper 1/2 of the flash has been overlooked by the project author; but the AXI QSPI driver does not appear to accept 4-byte address commands (it only accepts 3-bytes of address space).

Vitis-Sources of AXI project reference old custom SF3_freertos driver instead of upgraded PmodSF3 driver

The PmodSF3 driver was upgraded in timothystotts/vivado-library to support Vitis 2020.1 and provide a way to use the driver with FreeRTOS. The main routine and Experiment.c require an update to use the updated driver in FreeRTOS mode.

In the Platform configuration, microblaze extra compiler flags requires the addition of: -D_USE_FREERTOS_=1 .

In the Application, Project Properties | C/C++ General | Paths and Symbols | Symbols:
(1) Define symbol _USE_FREERTOS_ with value 1
(2) Apply to all languages and all configurations

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.