BRAM Standalone driver
Introduction
This page gives an overview of bram (block ram comtroller) driver which is available as part of the Xilinx Vivado and SDK distribution.
Table of Contents
For more information, please refer BRAM which includes links to the official documentation and resource utilization.
Driver Sources
The source code for the driver is included with the Vitis Unified Software Platform installation, as well as being available in the Xilinx Github repository.
Driver Name | Path in Vitis | Path in Github |
---|---|---|
bram | <Vitis Install Directory>/data/embedded/XilinxProcessorIPLib/drivers/bram | https://github.com/Xilinx/embeddedsw/tree/master/XilinxProcessorIPLib/drivers/bram |
Info |
---|
Note: To view the sources for a particular release, use the rel-version tag in github. For example, for the 2020.1 release, the proper version of the code is: https://github.com/Xilinx/embeddedsw/tree/master/XilinxProcessorIPLib/drivers/bram |
The driver source code is organized into different folders.
Below diagramThe table below shows the
bramospipsv driver source organization.
Directory |
---|
Description |
---|
doc |
Provides the API and data structure details |
|
- Examples - Reference application to
data | Driver .tcl and .mdd file |
examples | Example applications that show how to use the driver |
|
- Source -
features | |
src | Driver source files |
Features Supported
Controller/Driver features supportedDriver Implementation
For a full list of features supported by this IP, please refer Chapter 73: Octal SPI Controller in TRM
Features
The Xilinx BRAM controller is a soft IP core designed for Xilinx FPGAs and contains the following general features,
- LMB v2.0 bus interfaces with byte enable support
- Separate read and write channel interfaces to utilize dual port FPGA BRAM technology
- Supports memory sizes up to a maximum of 2 MBytes
- Compatible with Xilinx AXI Interconnect
- Used in conjunction with bram_block peripheral to provide fast BRAM memory solution for MicroBlaze ILMB and DLMB ports
- Supports byte, half-word, and word transfers
- Supports optional BRAM error correction and detection
Known
issuesIssues and Limitations
- None
Test cases
BRAM selftest example
Example Applications
Refer to the driver examples directory for various example applications that exercise the different features of the driver. Each application is linked in the table below. The following sections describe the usage and expected output of the various applications. These example applications can be imported into the Vitis IDE from the Board Support Package settings tab.
Links to Examples
Examples Path:
https://github.com/Xilinx/embeddedsw/
tree/master/XilinxProcessorIPLib/drivers/bram/examples
/xbramTest Name | Example Source | Description |
---|---|---|
BRAM example | This example initializes ECC for BRAM and executes the selftest. | |
OSPI Interrupt mode example | This example configures interrupt for BRAM controller and evaluates triggering of interrupt through fault injection |
Example Application Usage
BRAM selftest example
This example initializes ECC for BRAM and executes the selftest.
Expected Output
Code Block | ||
---|---|---|
| ||
Successfully ran Bram Example |
BRAM interrupt example
https://github.com/Xilinx/embeddedsw/blob/master/XilinxProcessorIPLib/drivers/bram/examples/xbram_intr_example
.cThis example configures interrupt for BRAM controller and evaluates triggering of interrupt through fault injection
Output
Code Block | ||
---|---|---|
| ||
Successfully ran Bram Interrupt Example |
Changelog
2020.2
- bram: Modify Makefile to support parallel make execution
- Makefile: Remove realpath commandNone
2020.1
- Fixed the warnings reported by ARMCC compiler
2019.2
- No changes
2017.4
- No Changes
2017.3
- Updated bram.tcl to add U suffix for all the macros exported into xparameters.h
- Fixed compilation warnings in the driverNone