I/O Assignment Tables

CORE-V-MCU Integration suggests that the MCU supports nine dedicated-function ports and a set of 48 user-selectable IO ports. However, the number of user-selectable IO ports is less than the total number of I/O signals supported by the CORE-V-MCU’s internal peripheral functions. An internal IO-MUX is used to connect a subset of peripheral I/O to top-level CORE-V-MCU IO ports. The peripheral functions selectable via the IO-MUX are:

  • uart0..1: I/O signals for one of two simple Universal Asynchronous Receiver/Transmitters.

  • qspim0..1: I/O signals for one of two Queued Serial Peripheral Interface masters.

  • i2cm0..1: I/O signals for one of two Inter-Integrated Circuit bus masters.

  • i2cs: I/O signals for the Inter-Integrated Circuit bus slave.

  • gpio_0..31: One of 32 general purpose I/O signals driven by the GPIO module.

  • pwm_chX.Y: Outputs of four PWMs supported by the Advanced Timer module.

  • fpgaio_0..31: One of 32 general purpose I/O signals driven by the eFPGA.

  • cam0: Camera (cpi) interface.

  • sdio: SDIO Card.

Per-port control of the IO-MUX is via the IO_CTRL[0..47] CSRs starting at offset 0x0400. Note: only 40 of the user-selectable IO ports are available to the user. These are IO_7 to IO_43 and IO_45 to IO_47.

The table below provides the mapping between the above peripheral I/O and the 40 user-selectable IO ports of the CORE-V-MCU. Headings have the following meaning:

  • IO_PORT: user-selectable top-level port of core-v-mcu.sv.

  • IO_CTRL.MUX=0..3: the value of the MUX field of the IO_CTRL CSR for the specified IO_PORT.

IO_PORT

IO_CTRL.MUX=0

IO_CTRL.MUX=1

IO_CTRL.MUX=2

IO_CTRL.MUX=3

Note

IO_0..6

IO_0..6 are not selectable

IO_7

uart0_rx

gpio_0

efpgaio_0

gpio_0 may also appear on IO_12 or IO_43

IO_8

uart0_tx

gpio_1

efpgaio_1

gpio_1 may also appear on IO_17

IO_9

uart1_tx

gpio_2

efpgaio_2

gpio_2 may also appear on IO_18

IO_10

uart1_rx

gpio_3

efpgaio_3

IO_11

pwm_ch0.0

uart1_tx

gpio_4

efpgaio_4

pwm_ch0.0 may also appear on IO_26 or IO_39

IO_12

gpio_0

uart1_rx

gpio_5

efpgaio_5

gpio_0 may also appear on IO_7 or IO_43

IO_13

qspim0_csn0

pwm_ch0.2

gpio_6

efpgaio_6

IO_14

qspim0_data0

pwm_ch0.3

gpio_7

efpgaio_7

IO_15

qspim0_data1

pwm_ch1.1

gpio_8

efpgaio_8

IO_16

qspim0_clk

pwm_ch1.2

gpio_9

efpgaio_9

IO_17

gpio_1

pwm_ch2.0

gpio_10

efpgaio_10

gpio_1 may also appear on IO_8

IO_18

gpio_2

pwm_ch2.1

gpio_11

efpgaio_11

gpio_2 may also appear on IO_9

IO_19

qspim0_data2

pwm_ch2.2

gpio_12

efpgaio_12

IO_20

qspim0_data3

pwm_ch2.3

gpio_13

efpgaio_13

pwm_ch2.3 may also appear on IO_40

IO_21

cam0_vsync

pwm_ch1.0

gpio_14

efpgaio_14

IO_22

cam0_hsync

pwm_ch1.3

gpio_15

efpgaio_15

IO_23

i2cm0_scl

gpio_16

efpgaio_16

IO_24

i2cm0_sda

gpio_17

efpgaio_17

IO_25

cam0_pclk

pwm_ch0.1

gpio_18

efpgaio_18

IO_26

pwm_ch0.0

qspim0_csn1

gpio_19

efpgaio_19

pwm_ch0.0 may also appear on IO_11 or IO_39

IO_27

i2cs_scl

qspim0_csn2

gpio_20

efpgaio_20

IO_28

i2cs_sda

qspim0_csn3

gpio_21

efpgaio_21

IO_29

cam0_data0

gpio_22

efpgaio_22

IO_30

cam0_data1

gpio_23

efpgaio_23

IO_31

cam0_data2

gpio_24

efpgaio_24

IO_32

cam0_data3

gpio_25

efpgaio_25

IO_33

cam0_data4

gpio_26

efpgaio_26

IO_34

cam0_data5

gpio_27

efpgaio_27

IO_35

cam0_data6

gpio_28

efpgaio_28

IO_36

cam0_data7

gpio_29

efpgaio_29

IO_37

sdio0_data3

qspim1_data3

gpio_30

efpgaio_30

IO_38

sdio0_cmd

qspim1_csn0

gpio_31

efpgaio_31

IO_39

sdio0_data0

qspim1_data0

pwm_ch0.0

efpgaio_32

pwm_ch0.0 may also appear on IO_11 or IO_26

IO_40

sdio0_clk

qspim1_clk

pwm_ch2.3

efpgaio_33

pwm_ch2.3 may also appear on IO_20

IO_41

sdio0_data1

qspim1_data1

pwm_ch3.0

efpgaio_34

IO_42

sdio0_data2

qspim1_data2

pwm_ch3.1

efpgaio_35

IO_43

i2cs_intr

pwm_ch3.2

efpgaio_36

IO_44

IO_44 not selectable

IO_45

pwm_ch3.3

efpgaio_37

IO_46

i2cm1_scl

qspim1_csn1

efpgaio_38

IO_47

i2cm1_sda

qspim1_csn2

efpgaio_39

Nexys A7 with Xilinx XC7A100T FPGA

The Nexys A7 makes many of the FPGA balls accessible via one of many on-board resources such as PMOD connections or a dedicated header, switch or LED. Please consult the Digilent Nexys A7 FPGA Board Reference Manual for the locations and pinouts of the PMODs and other resources on the board. The default mapping from CORE-V-MCU top-level IO to these Nexys A7 connections is provided in the table below.

Nexys A7

MCU Port

Notes

JB[10]

jtag_tck

JB[8]

jtag_tdi

JB[9]

jtag_tdo

JB[7]

jtag_tms

SW[0]

jtag_trst

Put this switch in the “up” position

CLK10MHZ

ref_clk

Convenient on-board resource

CPU_RESETN

rstn

On-board push-button

UART_RXD_IN

IO_7

Shared UART/JTAG USB port

UART_TXD_OUT

IO_8

Shared UART/JTAG USB port

JB[2]

IO_9

JB[3]

IO_10

LED[0]

IO_11

JB[4]

IO_12

JXADC[1]

IO_13

JXADC[2]

IO_14

JXADC[3]

IO_15

JXADC[4]

IO_16

JXADC[7]

IO_17

JXADC[8]

IO_18

JXADC[9]

IO_19

JXADC[10]

IO_20

JC[1]

IO_21

JC[2]

IO_22

JC[3]

IO_23

JC[4]

IO_24

JC[7]

IO_25

JC[8]

IO_26

JC[9]

IO_27

JC[10]

IO_28

JD[1]

IO_29

JD[2]

IO_30

JD[3]

IO_31

JD[4]

IO_32

JD[7]

IO_33

JD[8]

IO_34

JD[9]

IO_35

JD[10]

IO_36

JA[1]

IO_37

JA[2]

IO_38

JA[3]

IO_39

JA[4]

IO_40

JA[7]

IO_41

JA[8]

IO_42

JA[9]

IO_43

JA[10]

stm

Special Test Mode: I/Os connected directly to efpga

SW[1]

bootsel

Can also be configured for fpgaio_45

TMP_SCL

IO_46

Hardwired to on-board temperature sensor

TMP_SDA

IO_47

Hardwired to on-board temperature sensor

ASIC Pin-out

Note: the ASIC pin-out is still being worked out. An update to this table will be made when it is finalized.