GPIO

Block: GPIO (gpio)
Block Author: Pierre-Yves Droz
Document Author: Billy Mallard

Contents

Summary

The gpio block provides access to GPIO pins on any board that has GPIO headers.

Mask Parameters

Parameter

Variable

Description

I/O group

io_group

Selects the board architecture and the GPIO header on that board.

I/O direction

io_dir

Chooses whether the pin sends data out of or in to the FPGA.

Data Type

arith_type

Specifies data type of register.

Data bitwidth

bitwidth

Specifies data bitwidth.

Data binary point

bin_pt

Specifies the binary point position of data.

GPIO bit index

bit_index

Specifies the pin on the selected GPIO header.

Sample period

sample_period

Specifies sample period of interface.

Use DDR

use_ddr

???

Pack register in the pad

reg_iob

???

Register clock phase

reg_clk_phase

0, 90, 180, 270.

Termination method

termination

None, Pullup, Pulldown.

Ports

Port

Dir

Data Type

Description

reg_out

in

inherited

Output from design to GPIO pin. Only in I/O in mode.

sim_out

out

double

Simulation output of pin value. Only in I/O in mode.

sim_in

in

double

Simulation input of pin value. Only in I/O out mode.

reg_in

out

inherited

Input from GPIO pin to design. Only in I/O out mode.

Description

ROACH Specific Information

Main article: ROACH FPGA Interfaces

Each GPIO header has one direction selector that controls the direction of all 8 of its pins. You must set a direction. So, in addition to your normal gpio block (configured for I/O group ROACH:gpio[ab]), add another gpio block, and set the following parameters:

  • I/O group = ROACH:gpio[ab]_oe_n

  • I/O direction = out

  • bitwidth = 1

  • bit_index = 0

The direction selector takes a boolean value as its input, so wire it to a Xilinx constant block:

  • 0 - output from ROACH

  • 1 - input to ROACH

The two SMA connectors on the back of the board are wired directly to GPIO pins. Specifically, J11 and J10 are wired to pins 6 and 7 on GPIO A.

Notes

The order of the FPGA GPIOs have been changed from “3 2 1 0 7 6 5 4” to now match the order printed on the PCB “0 1 2 3 4 5 6 7”.

image

Old mapping: 3 2 1 0 7 6 5 4

New mapping: 0 1 2 3 4 5 6 7