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
MiniZed Hardware Design GPIO can be used as input/output port?
  • 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 Suggested Answer
  • Replies 6 replies
  • Answers 1 answer
  • Subscribers 320 subscribers
  • Views 1094 views
  • Users 0 members are here
Related

GPIO can be used as input/output port?

koseiyokoyama
koseiyokoyama over 1 year ago

I am trying to comunicate with Temp/Humid module DHT11
However data pin should be pull up to 3.3 but while my RTL trying to comunicate with DHT11 throgh IO13 pin, Data line pull down to GND.
if GPIO can be inout port, then any one know how?

My RTL working fine in simulation with Vivado

  • Sign in to reply
  • Cancel

Top Replies

  • embeddedguy
    embeddedguy over 1 year ago +2 suggested
    As you are using DHT11 sensor, you should use Serial protocol i.e. UART RX line to sample the received values. The DHT11 sensor works like following. "Data line remains in high normally, then master…
  • embeddedguy
    0 embeddedguy over 1 year ago

    As you are using DHT11 sensor, you should use Serial protocol i.e. UART RX line to sample the received values.

    The DHT11 sensor works like following.

    "Data line remains in high normally, then master in this case FPGA will start communication first. The the sensor will respond with temparature, humidity data".

    See the following image of timing diagram.

    image

    The output given out by the data pin will be in the order of 8bit humidity integer data + 8bit the Humidity decimal data +8 bit temperature integer data + 8bit fractional temperature data +8 bit parity bit. To request the DHT11 module to send these data the I/O pin has to be momentarily made low and then held high as shown in the timing diagram below

    components101.com/.../dht11-temperature-sensor

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject Answer
    • Cancel
  • shabaz
    0 shabaz over 1 year ago

    It seems a waste to use such a sensor directly attached to a MiniZed. There are better sensors, that interface through more normal interfaces.

    One typical approach to connect such a sensor, is to use two ports; one as input, and the other as output, and build yourself an interface. You'd have to check if the values below are appropriate (I've not read the DHT11 datasheet). With such an interface circuit, the controller (FPGA or microcontroller or otherwise, it's up to you) doesn't need to switch between input and output. 

    When a logic high is sent by the controller, the sensor line is pulled low. When a logic low is sent by the controller, the line is pulled up, and the remote sensor is free to pull the line low.

    image

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • jc2048
    0 jc2048 over 1 year ago

    I think this has cropped up here before and is actually an issue with how the Vivado top-level wrapper works and how you get the tristate control (that I presume you're using to implement the open-drain) to propagate up from your code level, one step down from the wrapper. I seem to remember (vaguely) something about a specific naming convention you have to use for the two drive signals (output signal and tristate control) in order for Vivado to understand what you're asking for and create a wrapper with the tristate implemented up at the actual pin.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • michaelkellett
    0 michaelkellett over 1 year ago in reply to jc2048

    The advantage of the external MOSFET approach is that the output of your FPGA is protected if you get things wrong. Most FPGAs don't offer a real open drain output so you end up having to never slip up with your code to avoid the FPGA sometimes pulling up an external active pull down.

    In the OP's case I'd recommend this since adding a MOSFET to his sensor is not a big deal.

    MK

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • jc2048
    0 jc2048 over 1 year ago in reply to jc2048

    Here's the thread that I dimly remembered, in case it's of any use to anyone:

    /technologies/fpga-group/f/forum/50650/vivado-and-zynq-tri-state-help/197015

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • koseiyokoyama
    0 koseiyokoyama over 1 year ago

    Thank you so many help!!

    I finally make my RTL working!

    the keys are

            use Global option when Generate output Objects...

            use PULLUP(inout signal port); 

                   assign inout_port = output_enable ? output_reg : 1'bZ;

                     in RTL

            use set_property PULLUP true [get_port inout_port] in xdc

    thanks again!!

                            

    • 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