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 & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
  • 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
      • Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Vietnam
      • 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 & Tria Boards Community
  • Avnet Boards Forums
  • More
  • Cancel
Avnet Boards Forums
ZUBoard Custom AXI4 Lite I2C checking
  • 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
  • +1 person also asked this people also asked this
  • Replies 14 replies
  • Subscribers 356 subscribers
  • Views 570 views
  • Users 0 members are here
  • i2c
  • ZUBoard 1CG
  • AXI4
Related

Custom AXI4 Lite I2C checking

MATRIX7878
MATRIX7878 1 month ago

Hello,

       I have been working on a custom AXI4 Lite I2C core for the ZuBoard 1CG on board temp sensor.  The best I can do is read back a value of 0x00 for the WHO_AM_I register.  It should be 0xA0.  Since Xilinx's AXI4 IP creator is broken, I have created a custom AXI4 protocol.  I need help understanding what the problem with my design is.  I do not know if it is with my VHDL, or my C.  Everything in my C executes, so it seems like the hardware I built does not have errors in it, it just does not work.  The VHDL is 2019 version: MATRIX7878/AXI4-I2C: A simple I2C for AXI4.  I have confirmed the sensor works by using the Avnet IIC temp sensor AXI4.

Thank you

  • Sign in to reply
  • Cancel

Top Replies

  • michaelkellett
    michaelkellett 1 month ago +2
    Have you simulated your design ? If not, then simulate and get the simulation working. As a general rule, a design might not work in hardware even if the simulation works, but it will never work in…
  • padudle
    padudle 30 days ago +1
    I don't know what you mean by "AXI4 IP creator is broken". I use it all the time in recent Vivado releases. The Xilinx I2C core is not perfect but I am using it right now without problem. It will be much…
Parents
  • jc2048
    0 jc2048 29 days ago

    This might not be anything to do with the problem you're having, but I'll throw it in anyway for good measure.

    I have no direct experience with the Xilinx design software, but a problem that has come up here before a couple of times is to do with implementing tristates on the IO pins (you're using the tristate capability of the IO pins to emulate the open drain that you need for the I2C clock and data).

    As I understood it, the top level in your 'design block' isn't the device pins, it's one layer down from the pins. It gets extended up to the pin level automatically when the system generates that intermediate layer for itself, on a one-to-one basis, but tristates need to be in a particular form, with signal(s) and enable, related together by naming. (If it wasn't done like that, the synthesis would mess things up by trying to give you the equivalent of an internal tristate bus between the layers and then optimising it out because it doesn't do anything.)

    It's possible that process may have changed in the time since those questions came up - as I say I don't use the design software, so wouldn't know - but it might be worth a quick look at how other people do this when writing for that platform.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Reply
  • jc2048
    0 jc2048 29 days ago

    This might not be anything to do with the problem you're having, but I'll throw it in anyway for good measure.

    I have no direct experience with the Xilinx design software, but a problem that has come up here before a couple of times is to do with implementing tristates on the IO pins (you're using the tristate capability of the IO pins to emulate the open drain that you need for the I2C clock and data).

    As I understood it, the top level in your 'design block' isn't the device pins, it's one layer down from the pins. It gets extended up to the pin level automatically when the system generates that intermediate layer for itself, on a one-to-one basis, but tristates need to be in a particular form, with signal(s) and enable, related together by naming. (If it wasn't done like that, the synthesis would mess things up by trying to give you the equivalent of an internal tristate bus between the layers and then optimising it out because it doesn't do anything.)

    It's possible that process may have changed in the time since those questions came up - as I say I don't use the design software, so wouldn't know - but it might be worth a quick look at how other people do this when writing for that platform.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Children
  • MATRIX7878
    0 MATRIX7878 29 days ago in reply to jc2048

    I use the IOBUF (tri-state) IP for the pins.  I think I covered your point.  If this is not what you meant, let me know please.

    • 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 © 2026 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