element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • 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
MicroZed Hardware Design confused about axi ps-pl interfacing
  • 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 8 replies
  • Subscribers 311 subscribers
  • Views 1848 views
  • Users 0 members are here
Related

confused about axi ps-pl interfacing

smvo555
smvo555 over 11 years ago

Hi everyone, (any one please!)

I'm not great with processor architectures and software development.

I've been trying to get a simple application running where an HDL module controls the state of the user LED.
I can do this on the processor side, but I haven't been able to have the processor check the state of my HDL port.

I know there are a number of ways to do this, like sharing dual port RAM, I would like to implement the most direct method, which I think is using the EMIO directly.

Please correct my understanding of this:  

When I enable the EMIO in the Zynq7 Processing System a port is created called GPIO_0. I specified the width as 1, and connected it to my HDL modules port in the wrapper.
So in the application, I should be able to check the state of MIO 54, the first EMIO pin. However when I do this the value is 0, which isn't correct.

Okay, so do I need to connect the AXI interconnect for this? How would this be done to have the PS check the state of a PL port? Do I need to instantiate the AXI in the wrapper as well as in the block design?

Any guidance is much appreciated, I've been at this for a while now trying to get my head around the AXI

Thanks

Sam

  • Sign in to reply
  • Cancel
  • smvo555
    0 smvo555 over 11 years ago

    I think I need to add a AXI GPIO interface in the HDL code so I can connect it to the master of the AXI interconnect, however I'm confused about how the EMIO plays into this because the EMIO is not a master or a slave on the ZYNQ7 Processing System block and thus I can't connect it to an AXI slave port.

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

    There are several ways to control Zynq outputs, including using either the built in PS (Processing System) GPIO or adding an AXI GPIO IP block in the PL (Programmable Logic) section of the device. If the Zynq output pin you want to control is connected to the PL portion of the device they you could use either method by connecting the axi GPIO directly to the output or by connecting the PS GPIO via EMIO connection to the PL.

     

    The User LED on the MicroZed you want to control is connected to one of the dedicated PS MIO pins (MIO[47]) so the only way to control this pins is using the PS GPIO directly (not using EMIO). You can take a look at the Zynq Technical Reference Manual, UG585, for more details: 

    http://www.xilinx.com/support/documentation/user_guides/ug585-Zynq-7000-TRM.pdf

     

    Once you have exported your design from Vivado to the SDK open up the system.mss file (under the 'bsp folder to the left in the Project Explorer pane if it did not open automatically) and click on the 'examples' link to the right of the ps7_gpio_0 under 'Peripheral Drivers' for examples on how to read and write the PS GPIO.

     

    There are also examples of using both PS GPIO and axi GPIO in the ZedBoard Zynq Concepts Tools and Techniques tutorial here: http://microzed.org/support/design/1521/11 that might be useful even though it targets the Zedboard. We will also be posting our Avnet Zynq SW and HW Speedway training material to the site in the near future. The labs for these trainings target either the ZedBoard or the MicroZed.

     

    -Gary

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

    Thanks Gary for your reply,

    If I want the PS to have access to a byte of data generated in the PL, what is the general procedure for connecting the PS GPIO via EMIO connection to the PL?
    When I create an external port connecting to GPIO_0, the EMIO port on the PL, the wrapper that gets generated has the connection specified as an inout and connected to an IO buffer. I only want the EMIO port to connect to a PL port, not an external pin. The GPIO_0 doesn't want to connect to my HDL port. I have not been able to find any available connections listed for GPIO_0. How do I interface with it? Now I am working on adding AXI lite slave connections to the HDL, I am still unclear on how the slave ports will connect to EMIO on ps7

    -Sam

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

    Please note that I am using the Vivado tool chain, I appreciate any help with my understanding

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

    I think I submitted this as a comment instead of a reply before, sorry if it ends with duplicate posts..

    Thanks Gary for your reply,

    If I want the PS to have access to a byte of data generated in the PL, what is the general procedure for connecting the PS GPIO via EMIO connection to the PL?
    When I create an external port connecting to GPIO_0, the EMIO port on the PL, the wrapper that gets generated has the connection specified as an inout and connected to an IO buffer. I only want the EMIO port to connect to a PL port, not an external pin. The GPIO_0 doesn't want to connect to my HDL port. I have not been able to find any available connections listed for GPIO_0. How do I interface with it? Now I am working on adding AXI lite slave connections to the HDL, I am still unclear on how the slave ports will connect to EMIO on ps7

    -Sam

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

    Take a look at chapter 3 of the Zedboard Zynq Concepts Tools and Techniques tutorial referenced earlier. It shows 'exposing' a PS GPIO input to the PL and connecting it to an external port. You want to do the same thing except that you will connect the GPIO_O (if it is an output) or GPIO_I signal (for an input) on the Zynq processing block to your internal logic instead of an external port.

     

    -Gary

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • smvo555
    0 smvo555 over 11 years ago

    Thanks, I'm working through the tutorial now
    Ill post back if all goes well

    -Sam

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

    Thanks Gary, this is the tutorial I wanted.
    The LED is blinking!
    Now I just need to make it discriminate high energy particles instead of flashing the LED...

    -Sam

    • 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