element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Avnet Boards Forums
  • Products
  • Dev Tools
  • Avnet Boards Community
  • Avnet Boards Forums
  • More
  • Cancel
Avnet Boards Forums
Software Application Development Easiest way to access PL memory from PS on Zynq/Zedboard
  • Forum
  • Documents
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Avnet Boards Forums to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Not Answered
  • Replies 3 replies
  • Subscribers 328 subscribers
  • Views 2851 views
  • Users 0 members are here
Related

Easiest way to access PL memory from PS on Zynq/Zedboard

linux.matthew
linux.matthew over 10 years ago

I'm trying to design an app where my Zedboard's FPGA takes some input data, processes it, and puts the results somewhere in its DDR memory.  Rather than DMA it over to the PS side for further processing, is there a way for me to allow the PS to access that data directly?  Seems like mmap() is the way to go, but I only see the PS side memory listed in my devicetree.dts.  I vaguely recall someone posting a how to on adding the PL DDR as another 512MB block, but I can't seem to find that anymore.

Thanks for any help.

Matt

  • Sign in to reply
  • Cancel
  • Former Member
    0 Former Member over 10 years ago

    All of the 512 MByte DDR memory on the ZedBoard is connected directly to a built-in DDR controller in the PS section of the Zynq device. With the exception of Block Ram memory in the Programmable Logic (PL) all of the Zynq RAM on the Zedboard, including the ARM caches, the DDR, and the On Chip Memory (OCM) is contained in the Processor Section (PS) of the device.

     

    It is conceivable to build a 'soft' DDR controller in the Zynq PL and connect DDR memory directly to the PL section on a custom board but that is not an option on the ZedBoard.

     

    So, unless your application data will fit in the available BRAM memory, you will need to move your data to the PS section in some fashion. If your data set is small enough you could build an AXI based BRAM memory controller in the PL and the ARM could access it directly as you have in mind.

     

    -Gary

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 8 years ago in reply to Former Member

    Gary, Thanks a lot for your clarifications.

    A few more aspects:

    1) Since on Zedboard DDR is only connected to PS side, this would be the only way to access it then (using integrated to PScontroller). However it's still possible to insert say MIG controller to Zedboard'd vivado design, although I'm not sure how it'll then handle it further on in implementation parts.. 

    BTW,  since any DDR  controller would need a processing power (iether ARM or say a Microblaze) would it be possible to connect MIG controller and ARM core? Or since in Zedboard MIG is not connected with DDR, there is not much use of such an experiments?

    2) Another question is more related to mini-ITX type boards, where 1G DDR is split between PS and PL parts. In such a board I assume it would be possible to use both  MIG (with Microblaze) and PS parts both addressing different parts of DDR in the same design. Is it not? or ARM controlling MIG? Question here is also regarding performance, if say I need to transfer data from ADC to DDR (in mini-ITX), which way would be more preferable using PS or MIG?

    Thank you in advance.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • drozwood90
    0 drozwood90 over 8 years ago

    Hi there,
    1) the DDR that is on this board is ONLY connected to PS pins.  The MIG is used for connecting to memory that is on the PL pins.  I would not spend time on this experiment.

    2) You can use both independently if the memory is on BOTH the PL and PS pins.  You can use AXI to connect to memory through the PL pins.  As for what is more preferable, it depends on what you are trying to do with the data.  If you need PL acceleration, it is better to keep it there to minimize data flowing through an AXI interconnect until you need to move the data.  If you need to process it by the PS, then pass it directly to the DDR over one of the many AXI interconnects provided.

    --Dan

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube