{"id":22960,"date":"2017-11-29T08:10:57","date_gmt":"2017-11-29T16:10:57","guid":{"rendered":"https:\/\/blog.digilentinc.com\/?p=22960"},"modified":"2025-07-21T08:47:16","modified_gmt":"2025-07-21T15:47:16","slug":"how-to-design-a-pmod-best-practices","status":"publish","type":"post","link":"https:\/\/digilent.com\/blog\/how-to-design-a-pmod-best-practices\/","title":{"rendered":"How to Design a Pmod &#8211; Best Practices"},"content":{"rendered":"<p>As with many open hardware standards, the <a href=\"https:\/\/digilent.com\/shop\/pmod-modules\/\">Pmod<\/a> Standard consists of a formal specification document as well as best practices. In order to ensure compliance and to use the Pmod name, all a designer needs to do is follow the <a href=\"https:\/\/digilent.com\/reference\/pmod\/start\">Digilent Pmod Interface Specification<\/a>. However, to ensure your Pmod or Pmod host platform can be used with as many other Pmod products as possible, consistency is key.<\/p>\n<p>Contained in the spec, there is a lot of language like &#8220;should be&#8221; and &#8220;in general.&#8221; While we believe this is necessary to allow design flexibility and adaptation to unpredictable applications, we also want it to be easy to design to best practices for those who are interested in doing so for widespread support of the Pmod community.\u00a0Furthermore, for those who may be interested in one day getting their Pmod sold on the <a href=\"https:\/\/digilent.com\/shop\/\">Digilent website<\/a>, best practices must be followed. The best practices followed by Digilent are listed below.<\/p>\n<p><strong>Best Design Practices\u00a0<\/strong><\/p>\n<p>In no particular order, the following list enumerates the best practices for hardware design. This includes mechanical and electrical.<\/p>\n<ol>\n<li><strong>The PCB should be 0.8&#8243; wide.\u00a0<\/strong><\/li>\n<\/ol>\n<p>In order to optimize the number of Pmod ports that can reasonably fit on a system board, the mechanical specification for the placement of Pmod host ports is 0.9&#8243; center to center. Keeping the width of the Pmod PCB to 0.8&#8243; allows for simultaneous utilization of all Pmod host ports. In other words, Pmods can comfortably sit side-by-side with 0.1&#8243; of wiggle room in between. The below drawing illustrates this nicely.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-22972 aligncenter\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/side-by-side-Pmod-placement.png\" alt=\"\" width=\"550\" height=\"516\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/side-by-side-Pmod-placement.png 814w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/side-by-side-Pmod-placement-600x563.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/side-by-side-Pmod-placement-768x721.png 768w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/side-by-side-Pmod-placement-800x751.png 800w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/p>\n<p>Of course many Pmods will be wider than 0.8&#8243; by necessity. This is fine, but a good rule of thumb is to increase the length of a Pmod prior to increasing the width if possible. Again, the above drawing illustrates this concept.<\/p>\n<p><strong>2. There should be &gt;25 mil of clearance from the board edge to any components.<\/strong><\/p>\n<p>Digilent has designed the <a href=\"https:\/\/digilent.com\/shop\/pmod-clip-mechanical-mount-for-pmod-boards\/\">Pmod Clip<\/a> for convenient mounting of Pmods. This can be useful for applications that require some rigidity, such as accurately measuring dynamic acceleration. To leave this mounting solution open to users, there must be &gt;25 mil of clearance for the clip to properly latch the edge of the board. Although the Digilent Pmod clip was designed for the standard 0.8&#8243; wide Pmod, it could easily be adapted to fit wider PCB&#8217;s. See the below image.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-22974 aligncenter\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/pmod-clip-in-use-1-1024x566.png\" alt=\"\" width=\"531\" height=\"294\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/pmod-clip-in-use-1-1024x566.png 1024w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/pmod-clip-in-use-1-600x332.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/pmod-clip-in-use-1-768x425.png 768w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/pmod-clip-in-use-1-800x442.png 800w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/pmod-clip-in-use-1.png 1215w\" sizes=\"auto, (max-width: 531px) 100vw, 531px\" \/><strong>3. All Pmod connectors intended for primary connection of Pmod boards to host platforms should be right angle connectors at board edge.<\/strong><\/p>\n<p>Straight male connectors or female host ports inboard from board edge are technically allowed by the spec, although it is discouraged for design of the primary connector. Sticking to right angle connectors will limit Pmod space requirements to the X-Y plane of the host platform as opposed to Pmods potentially sticking out in both the X-Y and Z planes simultaneously. It will also improve the visual branding, enhancing the recognizability of the Pmod or Pmod host as a member of the Pmod ecosystem. The below image illustrated right angle host ports on the right and a straight female host port on the left. The <a href=\"https:\/\/digilent.com\/shop\/cmod-a7-breadboardable-artix-7-fpga-module\/\">Cmod A7<\/a>, on the left, is the only Digilent product with a straight female host port.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-23042\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/stright-vs-right-angle-pmod-ports-1024x552.png\" alt=\"\" width=\"702\" height=\"378\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/stright-vs-right-angle-pmod-ports-1024x552.png 1024w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/stright-vs-right-angle-pmod-ports-600x323.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/stright-vs-right-angle-pmod-ports-768x414.png 768w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/stright-vs-right-angle-pmod-ports-800x431.png 800w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/stright-vs-right-angle-pmod-ports.png 1283w\" sizes=\"auto, (max-width: 702px) 100vw, 702px\" \/><\/p>\n<p>That being said, some Pmod boards benefit from a secondary connector. In this case, a straight male connector in-board from board edge is not discouraged. An example of this is the Digilent <a href=\"https:\/\/digilent.com\/shop\/pmod-gyro-3-axis-digital-gyroscope\/\">Pmod GYRO<\/a>, which uses a standard 2&#215;6 right angle male header for primary communication over an SPI bus, but also pins out an additional I2C header should the user prefer to communicate via I2C or to daisy chain the module using cables. The Pmod GYRO is pictured below.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/cdn6.bigcommerce.com\/s-7gavg\/products\/185\/images\/3850\/Pmod_GYRO__90476.1456866490.1280.1280.png?c=2\" alt=\"Pmod GYRO, oblique.\" width=\"399\" height=\"399\" \/><\/p>\n<p><strong>4. Pmods should be designed to plug directly into system boards.<\/strong><\/p>\n<p>The use of cables should not be <em>required\u00a0<\/em>for\u00a0connection of any Pmod to a host platform. Care should be taken to ensure there is no mechanical interference preventing the direct connection of Pmods to hosts. This mostly applies to straight male connectors inboard from the board edge of a Pmod, if this header type is chosen for primary connection to a host platform. Although keep in mind that straight male connectors are discouraged for primary connection to begin with, as explained by number three above.<\/p>\n<p>In cases where temporary connections are necessary or more precision is required, tools such as <a href=\"https:\/\/digilent.com\/shop\/mini-grabber-test-clips-6-pack-for-use-with-instrumentation-flywires\/\">Mini Grabbers<\/a> can provide an excellent solution for making secure, reliable connections to small pins or test points. Similarly, when you need a more permanent, secure connection or when cables are impractical, the <a href=\"https:\/\/digilent.com\/shop\/pmod-con1-wire-terminal-connectors\/\">CON1 Connectors<\/a> are a great option. These connectors offer a reliable way to interface with Pmods and ensure secure wiring without the need for a standard Pmod header.<\/p>\n<p>See the image below for an example of an old Digilent Pmod that requires the use of cables for connection to a host, i.e., what not to do if following best practices.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-22976 aligncenter\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/Pmod-CLS-top.png\" alt=\"\" width=\"499\" height=\"283\" \/><strong>5. Connectors should be on the top of the board.<\/strong><\/p>\n<p>To improve mechanical stability and ease of use, male Pmod connectors should be on the top of the Pmod. Pin 1 is always required to be on the far left of a 6-pin module and upper left of a 12-pin module.<\/p>\n<p><strong>6. I2C Pmods should include a female header to support daisy chaining.<\/strong><\/p>\n<p><a href=\"https:\/\/digilent.com\/reference\/_media\/reference\/pmod\/pmod-interface-specification-1_1_0.pdf\">Digilent Pmod Interface Specification 1.1.0<\/a> and higher requires that I2C Pmods use the standard 6-pin male header. This is opposed to the original <a href=\"https:\/\/digilent.com\/reference\/lib\/exe\/fetch.php?tok=6c721a&amp;media=https%3A%2F%2Fwww.blog.digilentinc.com%2FPmods%2FDigilent-Pmod_%2520Interface_Specification.pdf\">1.0.0 spec<\/a> which allowed 2&#215;4-pin headers when using an I2C bus. Daisy chaining should be enabled via a female 6-pin header opposite the male header. This allows for daisy chaining through direct connection of Pmods or through the use of cable connections. If an additional male header was used in-board from board edge instead of the female header described, daisychaining would be restricted solely to the use of cable connections. See the image below for an example of the 6-pin female header used for daisychaining.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-22980 aligncenter\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/pmod-cmps2.png\" alt=\"\" width=\"390\" height=\"229\" \/><\/p>\n<p><strong>7. I2C pull-up jumpers should be on the top of the Pmod board.<\/strong><\/p>\n<p><a href=\"https:\/\/digilent.com\/reference\/_media\/reference\/pmod\/pmod-interface-specification-1_1_0.pdf\">Digilent Pmod Interface Specification 1.1.0<\/a> and higher requires I2C Pmods to have onboard pull-ups that can be jumpered in and out. For mechanical stability, these jumpers should be on the top of the Pmod board if possible. In certain circumstances this may not be possible, as in the case of the <a href=\"https:\/\/digilent.com\/shop\/pmod-color-color-sensor-module\/\">Pmod COLOR<\/a> colored light sensor which experienced measurement interference from the jumpers themselves. In a case such as this that requires the jumpers to be moved to the bottom of the board, they should be right angle jumpers to prevent the Pmod from sitting higher than the host platform on a flat surface. See the image below for an example using the Pmod COLOR.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-22981 aligncenter\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/pmod-color-top-and-bottom-1024x344.png\" alt=\"\" width=\"580\" height=\"195\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/pmod-color-top-and-bottom-1024x344.png 1024w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/pmod-color-top-and-bottom-600x201.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/pmod-color-top-and-bottom-768x258.png 768w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/pmod-color-top-and-bottom-800x268.png 800w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/pmod-color-top-and-bottom.png 1365w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/p>\n<p><strong>8.\u00a0<\/strong><strong>Include jumpered pull-ups on system boards to be backward compatible with old I2C Pmods.<\/strong><\/p>\n<p>I2C Pmods that were designed in compliance with the original <a href=\"https:\/\/digilent.com\/reference\/lib\/exe\/fetch.php?tok=6c721a&amp;media=https%3A%2F%2Fwww.blog.digilentinc.com%2FPmods%2FDigilent-Pmod_%2520Interface_Specification.pdf\">Digilent Pmod Interface Specification 1.0.0<\/a> were not required to have onboard pull-ups. Therefor, system boards designed to host I2C Pmods should include jumpered pull-ups for <em>maximum<\/em> compatibility with all existing I2C Pmods, should maximum compatibility be of concern to the designer. There is no way of knowing exactly how many legacy I2C Pmods exist in the world that do not have onboard pull-ups, however it is less than ten Digilent designed Pmods.<\/p>\n<p><strong>9. Assume LVCMOS 3.3 V logic conventions.<\/strong><\/p>\n<p>Digilent system boards use exclusively 3.3 V at the power supply pins on Pmod host ports. Operation at 5 V is allowed by the Digilent Pmod Interface Specification, but care should be taken to ensure 5 V will not damage the host\u2019s input pins. For widest adoption, it is recommended to stick to LVCMOS 3.3 V logic conventions where possible.<\/p>\n<p><strong>10. Include ESD protection diodes and 200-ohm series resisters on standard Pmod ports.<\/strong><\/p>\n<p>Most Pmod host ports are standard ports and include ESD protection diodes and 200-ohm series resistors on the I\/O pins in order to limit short circuit currents and driver conflicts. Some Digilent system boards have one or two &#8220;high speed&#8221; Pmod ports that exclude protection diodes and series resistors in exchange for higher switching speeds. If a Pmod host port is not intended for high speed use, it should include the protection diodes and series resistors. Most Pmods do not require the use of high speed ports.<\/p>\n<p><strong>11. Stacking multiple communication protocols on a single host port is encouraged, but a primary 12-pin communication protocol should be supported.<\/strong><\/p>\n<p>It is advantageous to design Pmod host ports (on host platforms) to support as many Pmod communication types as possible. When combining protocols on a single host port, at least one 12-pin Pmod communication type, as listed in the Digilent Pmod Interface Specification, should be supported as its primary type. Secondary 6-pin types may be supported for additional functionality. In other words, a host port should not be designed to support a 6-pin type on the top row of pins and a 6-pin type on the bottom row if it will exclude the use of 12-pin Pmods.<\/p>\n<p>For example, if Pmod port A supports the 12-pin expanded SPI protocol as its primary type, it will by default also support all 6-pin SPI Pmods on the top row of pins. The converse may not be true. If it was designed specifically to support the 6-pin SPI protocol on the top row of pins and a different 6-pin protocol on the bottom row, it would not necessarily support 12-pin SPI Pmods by default. Therefor it is wise to support at least one 12-pin type. It may then be possible to support an additional 6-pin type, such as I2C, on the bottom and or top row of pins.<\/p>\n<p>The example pinout table below is from a Digilent microcontroller board. The primary 12-pin communication types supported are expanded SPI, expanded UART and expanded GPIO, or types 2A, 3A and 1A respectively. In addition, 6-pin UART is enabled on the bottom row.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-22984 aligncenter\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/pmod-port-pinout-example-1024x320.png\" alt=\"\" width=\"756\" height=\"236\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/pmod-port-pinout-example-1024x320.png 1024w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/pmod-port-pinout-example-600x188.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/pmod-port-pinout-example-768x240.png 768w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/pmod-port-pinout-example-800x250.png 800w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/pmod-port-pinout-example.png 1484w\" sizes=\"auto, (max-width: 756px) 100vw, 756px\" \/><\/p>\n<p>Remember that the above 11 bullets are best practices for Pmod design, but not necessarily requirements for compliance and use of the Pmod name. There will be cases where design restrictions require some of these best practices to be broken. Some of the examples given above even illustrate cases in which Digilent has broken best practices. However these are exceptions to the rule and care should be taken to avoid making such exceptions wherever possible. It is recommended to read the<a href=\"https:\/\/digilent.com\/reference\/pmod\/start\"> Digilent Pmod Interface Specification<\/a> in its entirety for all compliance requirements, then cross reference the requirements with the best design practices.<\/p>\n<p>For any questions or comments, please use the comment section below or visit the <a href=\"https:\/\/forum.digilent.com\/\">Digilent Forum<\/a>!<\/p>\n<div class='watch-action'><div class='watch-position align-left'><div class='action-like'><a class='lbg-style6 like-22960 jlk' data-task='like' data-post_id='22960' data-nonce='8208653786' rel='nofollow'><img src='https:\/\/digilent.com\/blog\/wp-content\/plugins\/wti-like-post-pro\/images\/pixel.gif' title='Like' \/><span class='lc-22960 lc'>+1<\/span><\/a><\/div><div class='action-unlike'><a class='unlbg-style6 unlike-22960 jlk' data-task='unlike' data-post_id='22960' data-nonce='8208653786' rel='nofollow'><img src='https:\/\/digilent.com\/blog\/wp-content\/plugins\/wti-like-post-pro\/images\/pixel.gif' title='Unlike' \/><span class='unlc-22960 unlc'>0<\/span><\/a><\/div><\/div> <div class='status-22960 status align-left'><\/div><\/div><div class='wti-clear'><\/div>","protected":false},"excerpt":{"rendered":"<p>Learn the proper way to design a Pmod!<\/p>\n","protected":false},"author":26,"featured_media":23049,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[38,1563],"tags":[72],"ppma_author":[4491],"class_list":["post-22960","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-expansion-modules","category-guide","tag-design"],"jetpack_featured_media_url":"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2017\/11\/nav-vs-cls.png","jetpack_sharing_enabled":true,"authors":[{"term_id":4491,"user_id":26,"is_guest":0,"slug":"talesab","display_name":"Talesa Bleything","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/4ebebd593afbf3d758e9127934708634ab09aeaa7fcfcf6151f4e9ceb9cf6d0e?s=96&d=mm&r=g","1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":"","9":"","10":""}],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/22960","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/users\/26"}],"replies":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/comments?post=22960"}],"version-history":[{"count":3,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/22960\/revisions"}],"predecessor-version":[{"id":31782,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/22960\/revisions\/31782"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/media\/23049"}],"wp:attachment":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/media?parent=22960"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/categories?post=22960"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/tags?post=22960"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=22960"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}