“Pmod™” is the trademark of Digilent Inc. The Pmod Interface Specification is the property of Digilent Inc. For more information on the use of the Pmod trademark, please see our Pmod License Agreement page.

Pmod Standard

Table Of Contents

Introduction

The Pmod Standard is a guideline developed by Digilent Inc. to establish and create peripheral modules that earn the Pmod™ status. In short, this document will cover how the peripheral module will adhere to a communication protocol, the form factor that Pmods need to have, and the supporting documentation that needs to be present for each Pmod.

Communication

Like other peripheral devices, Pmods need to be able to successfully communicate with the host board or other devices in order effectively operate in the overall electronic system. It is not the best plan (especially in electronics) to just plug something in to a random spot and hope the device works correctly. The vast majority of the peripheral modules in the Pmod line collect or receive data (or both) and need to communicate this data with the host board. A GPS module that doesn't send its coordinates to the host or an audio amplifier that does not receive data from the host are not terribly useful. Successful communication is key in any relationship, electronic or otherwise.

Communication Protocols

Digilent Pmods adhere to one or more of the major communication protocols that are used such as SPI, I2C, UART, or the straightforward general purpose input/output. If a Pmod is able to communicate with the host board with more than one communication protocol, jumper blocks on the Pmod will allow users to choose which communication protocol they wish to use.

As a reference, the required pins (in order) for each of the communication protocols are as follows:

Pin # SPI I²C UART GPIO
1 Chip Select (CS) Serial Data (SDA) CTS1 I/O2
2 Master-Out-Slave-In (MOSI) Serial Clock (SCK) Transmit Data (TXD) I/O2
3 Master-In-Slave-Out (MISO) N/A3 Receive Data (RXD) I/O2
4 Serial Clock (SCK) N/A3 RTS1 I/O2
5 Ground Ground4 Ground Ground
6 Vcc Vcc5 Vcc Vcc

1Not essential for operation; please see the UART page for more details
2Only one of these are required
3Not an applicable pin assignment for this communication protocol
4This pin would be on pin 3 in this particular protocol
5This pin would be on pin 4 in this particular protocol

For more information, please go to the individual pages for each of the communication protocols.

Pins

With the various communication protocols that Digilent uses, there are three different sets of pin configurations that will be used: 6-pin, 12-pin, and 4-pin configurations.

The 6-pin configuration consists of four pins, pins 1, 2, 3, and 4, that are to be available for the communication protocol. The remaining two pins, pins 5 and 6, are to act as the ground and power pins. The 6-pin configuration is commonly used in protocols such as SPI or UART which only require 4 communication pins to operate.

Some Pmods offer a style of the 6-pin configuration which is actually two sets of the 6-pin configuration that are side-by-side. The way to know that this style is two 6-pin configurations and not a 12-pin configuration is to observe what would happen if only one set of the 6-pin configurations was used. If the Pmod is able to retain functionality true to its original design purpose with both sets of the 6-pin configuration operated individually, then that Pmod follows the 6-pin configuration, albeit with two sets. Examples of this configuration style are the Pmod8LD and the PmodDHB1. In general, only the GPIO communication protocol will use this style of pin configuration.

A true 12-pin configuration also has the same physical configuration as two 6-pin configurations side-by-side, but requires that at least one of the physical sets of 6 pins do not allow the Pmod to retain functionality true to its original design purpose when that set of 6 pins is operated individually. An example of this is the PmodWiFi where its lower set of 6 pins consist of an Interrupt Output, a Hardware Reset, a Write Protect, a Hibernate, and ground and power pins; these pins by themselves would not allow the PmodWiFi to actually perform any WiFi communication.

The 4-pin configuration is solely used for the I²C communication protocol. The pin configuration consists of the data and clock pin (SDA and SCL, respectively) along with the ground and power pins. Most Pmods that support I²C as a communication protocol have two sets of these 4 pins in order to adhere with the bus system that I²C uses.

Note that if communication between the Pmod and the host board is only intended to occur in one direction and it would offer no benefit to the functionality of the Pmod (i.e. the chip on the Pmod only supports receiving information from the host board and is not designed to send information to the host board), it is permissible to use less than the total number of pins available for communication.

Form Factor

Pmod connections are made using standard 100mil spaced, 25mil square, pin-header style connectors.

The peripheral module board will have a male connector. This will typically be a right angle connector, at the board edge, for direct connection to a host board, This can be a straight male connector inboard from the board edge if only cable connections will be used.

The host board will typically have a right angle female connector at the board edge for direct connection of peripheral module boards. This connector can be a straight male connector inboard from the board edge if only cable connections will be used.

When multiple connectors are placed side-by-side along a board edge (either host or peripheral), the connectors are spaced 0.9”, center-to-center. This allows for 0.8” wide modules to be plugged side-by-side into a host without interference. Peripheral modules with multiple connectors must also have them spaced on 0.9” centers for direct connection to a host.

Peripheral modules with a single connector that are intended for direct connection to a host, or that are intended to fit into the Pmod mounting clip, should be 0.8” wide. There should also be >25mil of clearance from the board edge to any components to allow clearance for the Pmod clip to latch the board edge. The connector should be centered along the 0.8” side of the module.

Peripheral modules that are more than 0.8” wide can be directly connected to a host in some cases but may interfere with adjacent connectors on the host.

The following diagrams show physical connector placement and pin numbering conventions for the host (system board) and peripheral module sides of the connection. Note that the pin numbering conventions for the 2×6 connectors are non-standard and are mirrored between the host connector and the peripheral board connector.

Electrical Specifications

The digital signal characteristics for Pmods are not specified due to the fact that the on-board ICs will inevitably have different requirements. However, the general expectation is that a 3.3V logic power supply will be used and the signals will conform to LVCMOS 3.3V or LVTTL 3.3V logic conventions.

Similarly, the driver current source/sink capability isn’t specified and depends on the capabilities of the specific system board or module. The I/O pins on the system board are generally directly driven by the FPGA or microcontroller. The I/O pins on Xilinx FPGAs generally have symmetrical 24mA source/sink capability. The drive capability of microcontrollers is generally less and some of them are not symmetrical. The drive strength for microcontroller pins is generally in the range +/-5mA to +/-10mA, although the Digilent chipKIT™ microcontroller line can handle +/- 15mA.

The I/O pins on system board Pmod connectors generally have ESD protection diodes and 200ohm series resistors. The resistors are to limit short circuit currents if pins are inadvertently shorted, or to protect against driver conflicts if outputs are inadvertently connected together.

Peripheral modules may be connected to the host board via cables of up to 18” in length. The drivers on the host or peripheral module should have sufficient drive strength to drive this length of cable at whatever the operating speed of the interface on the Pmod is expected to be. In general, this means that the driver should be able to source or sink at least 5mA of current.

Peripheral modules may not assume that pull-up or pull-down resistors are present on the host and must provide for proper termination of inputs, if necessary, and may not use open drain or open collector outputs, unless the pull-up is provided on the peripheral module itself.

An exception to the no open collector (open drain for CMOS) output rule is the I²C bus, which is an open collector bus as specified by the I²C protocol. Because of the mix of system boards on the market, including Digilent system boards, that either have or do not have pull-up resistors installed on their own I²C headers, Pmods tend to not have any pull-up resistors for their own I²C connectors as it is not recommended to have multiple sets of pull-up resistors on the same I²C bus line due to the increased capacitance. However, a few of the Pmods, such as the PmodCDC1, provide their own pull-up resistors for the SDA and SCL lines. Please check the reference manual of your respective Pmod and system board to see if there are pull-up resistors already present or if they have to be provided externally. A list of Pmods with their pull-up resistor status is provided on the I²C page. Some Digilent system boards use current mirrors rather than simple pull-up resistors to provide the logic high level to allow driving longer busses with greater capacitive load.

Microcontroller system boards are generally provided with dedicated I2C connectors and usually provide pull-up resistors that are jumper selectable to be in or out of circuit. FPGA based system boards generally do not provide dedicated I2C connectors, and depend on the internal pull-up resistors in the FPGA I/O blocks to provide the pull-ups.

Power Requirements

The power and ground pins for each physical pin configuration allow the host board to provide power to the peripheral module. Many Pmods only need the 3.3V that Digilent system boards operate at in order to perform correctly. However, if a Pmod needs to operate at a higher voltage than 3.3V, but does not require more current, a booster circuit should be incorporated into the Pmod. Pmods that need both more current and a higher voltage, such as the PmodCON3 when driving multiple servo motors simultaneously, should provide an option to get their power from an external source in such a way that does not damage the host board.

Physical pin configurations that are two rows deep, such as the 12-pin configuration or a pair of 4-pin configurations for I²C, should have their two ground pins and two power pins shorted together, respectively, on the Pmod itself. The amount of current that a peripheral module is allowed to draw from the host is not specified, but it is assumed that the Pmod will not draw more than approximately 100mA.

Supporting Documentation

There are a number of documents that are needed before a Pmod is able to “go live”. These include the obvious documents such as a schematic and a reference manual (which some Pmods are missing anyway), but also include documentation such as, but not limited to, user guides, sell sheets, and example code.

Details that should be provided in each of these documents are listed in their respective section below.

Schematic

Have one.

Datasheet

This is an internal document that lets people here at Digilent know all of the things that a particular Pmod is supposed to do and what specifications that this particular Pmod conforms to. This could be IEEE standards for internet access, connection speeds, communication protocols that are able to run up to a specific rate, input/output voltage/current limits, etc.

Reference Manual

  • Photo
  • Current product revision
  • What is this Pmod
    • Features
      • The notable features for people who would know what it implies
      • The “obvious” features for people who are not electronically inclined, i.e. Bluetooth lets you do long distance wireless communication, or a PS/2 allows for and keeps track of multiple simultaneous key presses
  • How to connect the Pmod
    • Power
    • Communication
      • Protocol and where to generically connect to on a host board, i.e. 4-pin protocol, 6-pin protocol, pin 1 is here on the Pmod and here on the appropriate header
    • Pin diagram and description for ALL pins and jumpers with an accompanying photo
  • Physical dimensions
  • Where to find example code and additional documentation (schematics, user guides, overview documents on what is and how to use various communication protocols like I²C, SPI, UART, and USB)
  • Redirect to the forum for any questions they may have
  • Redirect to the wiki for the latest documentation

Short User Guide

(so it can be easily handed out and can come with the Pmod package)

  • Photo
  • What is this Pmod
    • Features
      • The notable features for people who would know what it implies
      • The “obvious” features for people who are not electronically inclined, i.e. Bluetooth lets you do long distance wireless communication, or a PS/2 allows for and keeps track of multiple simultaneous key presses
  • Connections
    • How and where to? (pin 1 is here on the Pmod and pin 1 on the board is…)
  • Things users should know
    • The communication protocol that the Pmod uses
    • Reiterate what the Pmod does
  • Pin diagram and description for ALL pins and jumpers with an accompanying photo
  • Physical dimensions
  • Where to find example code and additional documentation (schematics, user guides, overview documents on what is and how to use various communication protocols like I²C, SPI, UART, and USB)
  • Redirect to the forum for any questions they may have
  • Redirect to the wiki for the latest documentation

Comprehensive User Guide

* See Basys 3 Manual for a good example but specifically for Pmods…

  • Photo
  • Current product revision
  • What is this Pmod
    • Features
      • The notable features for people who would know what it implies
      • The “obvious” features for people who are not electronically inclined, i.e. Bluetooth lets you do long distance wireless communication, or a PS/2 allows for and keeps track of multiple simultaneous key presses
  • “Walk around the board”
  • Physical dimensions
  • Fritzing files
  • How to connect the Pmod
    • Power requirements
    • Communication
      • Protocol and where to generically connect to on a host board, i.e. 4-pin protocol, 6-pin protocol, pin 1 is here on the Pmod and here on the appropriate header on the host board
    • Pin diagram and description for ALL pins and jumpers with an accompanying photo
  • Communication in detail
    • Start-up requirements
      • How to turn on the Pmod (if appropriate)
      • Necessary time delays
      • Initial communication sequences
    • Link to other document for explanation of its particular protocol for people who may not know what it is (SPI and its variations, I²C and its variations, UART and its variations, GPIO, USB, and any other mainstream standards)
    • Communication protocol things specific to this Pmod
      • I²C addresses
      • Other addressing or command signals
      • SPI or UART is limited to certain communication directions
      • Speed requirements and/or restrictions
      • How information should be transmitted (for example, 4 ignored bits, 4 command bits, 12 information bits, and 12 more ignored bits for a total of 32 bits for the Pmod DA4)
    • Accepted or variable input/output formats that can be used or selected to be used via jumpers or code signals
  • Appropriate schematic diagram
  • Where to find example code and other documentation that is not already in here (since this is a comprehensive user guide) such as a link to the datasheet for the particular Pmods IC
  • Any FAQ that isn't really a topic that merits having its own section in the user guide
  • Redirect to the wiki for the latest documentation (just in case somebody had chosen to print out the comprehensive user manual)
  • If they did not find what they were looking for, redirect them to the Digilent Forum and encourage any questions (which, if appropriate, will have the answers (and perhaps questions) integrated into the user guide(s) and reference manual)

Sell Sheet

To be more formally planned.

Example Code and Demonstrations

An example piece of code that has the Pmod perform its application in some way should be available for be available to the general public

MPIDE

MPLAB

Vivado

Verilog
VHDL

LabVIEW VI

Learn Module

Instructable