Changes

Jump to: navigation, search

BELK-AN-003: Interfacing DDR3 SDRAM to PL

1,749 bytes added, 12:16, 17 October 2018
no edit summary
{{Applies To Bora}}
{{InfoBoxBottom}}
{{WarningMessage|text=This application note was validated against specific versions of the kit only. It may not work with other versions. Supported versions are listed in the ''History'' section.}}
==History==
{| class="wikitable" border="1"
!Version
!Date
!BELK version
!Notes
|-
|1.0.0
|14:35, 31 August 2015 (CEST)
|[[Bora_Embedded_Linux_Kit_(BELK)#BELK_software_components|2.1.0]]
|First release
|-
|}
==Introduction==
Even if PL can share main SDRAM with PS, several applications need a dedicated bank for FPGA IPs in order to have exclusive access and to maximize bandwidth. In any case, since this additional SDRAM bank is accessible via AXI bus, it is mapped in the processor's memory space and thus it can be accessed by PS as well.
BoraEVB can optionally be populated with a 16-bit 512MB SDRAM chip that is directly connected to PL (1). This application note describes how to enable the support for this additional memory bank. An example Vivado design is released along with this application note, based on BELK 2.1.0 (http://wiki.dave.eu/index.php/[[Bora_Embedded_Linux_Kit_%28BELK%29#BELK_software_components)|BELK 2.1.0]].
(1) For more information about this option, please contact technical support ([mailto:support-bora@dave.eusupport-bora@dave.eu]).
==Physical interfacing==
[[File:an-belk-003_02.png | 800px | AXI Memory Controller Block Design]]
The Vivado example project can be downloaded from the following URL:
At this URL '''TBD''' a [https://www.dave.eu/system/files/area-riservata/AN-BELK-003-bora-AXI-DDR3-BELK-2.1.0_no_results.xpr_.zip AN-BELK-003 Vivado example project is available. (without synthesis and implementation results)] This project requires a 200 MHz clock source. It has been tested with
* Silicon Labs Si511BBA200M000BAG active ocillator populating reference XO1 on BoraEVB
* Micron MT41K64M16JT-15E DDR3 chip running at 400 MHz.
Here '''TBD''' The bitstream and boot binaries can be downloaded from the resulting following URL: [https://www.dave.eu/system/files/area-riservata/AN-BELK-003.bitstream-boot-binaries.zip AN-BELK-003 binaries]
==SDRAM bank mapping==
[[File:an-belk-003_03.png | 800px | AXI Memory Controller Address Mapping]]
The following dump shows a simple memory test run from U-Boot console:
<pre>
U-Boot 2013.04 (Aug 25 2014 - 23:52:57) [belk-2.1.0]
I2C: readyMemory: ECC disabledDRAM: 1 GiBWARNING: Caches not enabledNow running in RAM - U-Boot at: 3ff68000NAND: 1024 MiBMMC: zynq_sdhci: 0SF: Detected S25FL256S_64K with page size 64 KiB, total 32 MiBIn: serialOut: serialErr: serialNet: Gem.e000b000Hit any key to stop autoboot: 0zynq-uboot> help mtestmtest - simple RAM read/write test Usage:mtest [start [end [pattern [iterations]]]]zynq-uboot>zynq-uboot> mtest 0x48000000 0x4FFFFFFFTesting 48000000 ... 4fffffff:Pattern 00000000 Writing... Reading...Iteration: 53zynq-uboot> <INTERRUPT>zynq-uboot>zynq-uboot> mtest 0x48000000 0x4FFFFFFF 0xA5A5A5A5Testing 48000000 ... 4fffffff:Pattern A5A5A5A5 Writing... Reading...Iteration: 19zynq-uboot> <INTERRUPT></pre> It's also possible to extend Linux kernel memory with the external memory adding a second memory in the device tree:
<pre>
</pre>
Here '''TBD''' The kernel patch can be downloaded from the kernel following URL: [https://www.dave.eu/system/files/area-riservata/AN-BELK-003_Add_AXI_DDR3.patch_.zip AN-BELK-003 Linux patch.]
8,160
edits

Navigation menu