The LogiCORE™ I/O Module is a highly
integrated and light-weight implementation of
a standard set of peripherals.
The I/O Module is a standalone version of the
tightly coupled I/O Module included in the
LogiCORE MicroBlaze™ Micro Controller
System (MCS). Using the I/O Module, a system
equivalent to MicroBlaze MCS can be design
using the ISE® Design Suite Embedded Edition
or the Vivado™ Design Suite.
The I/O Module connects to MicroBlaze
through the lmb_v10 bus.
Features
•LMB v1.0 bus interfaces to communicate
with MicroBlaze
•I/O Bus
•Interrupt Controller with fast interrupt
mode support
•UART
•Fixed Interval Timers
•Programmable Interval Timers
•General Purpose Inputs
•General Purpose Outputs
LogiCORE IP Facts Table
Core Specifics
Supported
Device
(1)
Family
Supported
User Interfaces
ResourcesSee Ta b le 2 -2 .
Zynq™-7000
(2)
, Virtex-7, Kintex™-7, Artix™-7,
Virtex-6, Spartan-6, Virtex-5, Virtex®-4,
Local Memory Bus (LMB), Dynamic
Reconfiguration Port (DRP)
Spartan®-3
Provided with Core
Design Files
Example
Design
Tes t B e nc h Not Provid e d
Constraints
File
Simulation
Model
Supported
S/W Driver
(3)
ISE: VHDL
Vivado: RTL
Not Provided
Not Provided
VHDL Behavioral
Standalone
Tested Design Flows
Design Entr y Xilinx Platform Studio (XPS)
SimulationMentor Graphics ModelSim
Synthesis
Xilinx Synthesis Technology (XST)
Vivado Synthesis
(5)
Support
Provided by Xilinx @ www.xilinx.com/support
Notes:
1. For a complete list of supported derivative devices, see the
mbedded Edition Derivative Device Support.
E
2. Supported in ISE Design Suite implementations only.
3. Standalone driver details can be found in the EDK or SDK
directory (<install_directory>/doc/usenglish/
xilinx_drivers.htm). Linux OS and driver support information is
available from //wiki.xilinx.com
4. For the supported versions of the tools, see the Xilinx Design
The I/O Module is a light-weight implementation of a set of standard I/O functions
commonly used in a MicroBlaze™ processor sub-system. The input/output signals of the I/O
Module are shown in Figure 1-1. The detailed list of signals are listed and described in
Tab le 2- 3. See the description of LMB Signals in the MicroBlaze Bus Interfaces chapter in the
MicroBlaze Processor Reference Guide[Ref 1].
.
X-Ref Target - Figure 1-1
Chapter 1
I/O Module v1.02awww.xilinx.com6
PG052 October 16, 2012
In a MicroBlaze system the I/O Module would typically be connected according to
Figure 1-2.
Figure 1-1:I/O Module Block Diagram
ILMB
MicroBlaze
LMB_v10
LMB BRAM
Interface Controller
BRAM Block
(Dual Port)
DLMB
LMB_v10
LMB BRAM
Interface Controller
I/O Module
X-Ref Target - Figure 1-2
Feature Summary
Figure 1-2:Typical MicroBlaze System
Feature Summary
I/O Bus
The I/O Bus provides a simple bus for accessing to external modules. The I/O Bus is mapped
in the MicroBlaze memory space, with the I/O Bus address directly reflecting the byte
address used by MicroBlaze Load/Store instructions. I/O Bus data is 32-bit wide, with byte
enables to write byte and half-word data.
The I/O Bus is fully compatible with the Xilinx Dynamic Reconfiguration Port (DRP).
UART
The Universal Asynchronous Receiver Transmitter (UART) interface provides the controller
interface for asynchronous serial data transfers. Features supported include:
•One transmit and one receive channel (full duplex)
•Configurable number of data bits in a character (5-8)
•Configurable parity bit (odd or even)
•Configurable and programmable baud rate
I/O Module v1.02awww.xilinx.com7
PG052 October 16, 2012
Licensing and Ordering Information
Fixed Interval Timer, FIT
The Fixed Interval Timer generates a strobe signal at fixed intervals. The Fixed Interval
Timer asserts the output signal and generates an interrupt according to the selected
parameter values.
Programmable Interval Timer, PIT
The Programmable Interval Timer, PIT, has a configurable width from 1 to 32. The PIT
operation and period are controlled by software. An interrupt can be generated when the
timer lapses.
General Purpose Output, GPO
The General Purpose Output, GPO, drives I/O Module GPO output signals defined by the
value of the corresponding GPO register, programmable from software. The width and
initial value are defined by parameters.
General Purpose Input, GPI
The General Purpose Input, GPI, makes it possible for software to sample the value of the
I/O Module GPI input signals by reading the GPI register. The width and whether to
generate an interrupt are defined by parameters.
Interrupt Controller INTC
The Interrupt Controller handles both I/O module internal interrupt events and external
ones. The internal interrupt events originate from the UART, the Fixed Interval Timers, the
Programmable Interval Timers, or the General Purpose Inputs.
Licensing and Ordering Information
This Xilinx LogiCORE IP module is provided at no additional cost with the Xilinx Vivado
Design Suite and ISE Design Suite Embedded Edition tools under the terms of the Xilinx End
User License.
Information about this and other Xilinx LogiCORE IP modules is available at the Xilinx
Intellectual Property page. For information on pricing and availability of other Xilinx
LogiCORE IP modules and tools, contact your local Xilinx sales representative
.
I/O Module v1.02awww.xilinx.com8
PG052 October 16, 2012
Product Specification
Standards
The I/O Bus interface provided by the I/O Module is fully compatible with the Xilinx
Dynamic Reconfiguration Port (DRP). For a detailed description of the DRP, see the 7 Series FPGAs Configuration User Guide[Ref 2].
Performance
The frequency and latency of the I/O Module are optimized for use together with
MicroBlaze™. This means that the frequency targets are aligned to MicroBlaze targets as
well as the access latency optimized for MicroBlaze data access.
Chapter 2
Maximum Frequencies
The following are clock frequencies for the target families. The maximum achievable clock
frequency can vary. The maximum achievable clock frequency and all resource counts can
be affected by the used tool flow, other tool options, additional logic in the FPGA, using
different versions of Xilinx tools, and other factors.
Table 2-1:Maximum Frequencies
ArchitectureSpeed gradeMax Frequency
Virtex-7-3320
Kintex™-7-3320
Artix™-7-3225
Virtex®-6-3300
Spartan®-6-4195
Latency
Data read from I/O Module registers is available two clock cycles after the address strobe is
asserted.
I/O Module v1.02awww.xilinx.com9
PG052 October 16, 2012Product Specification
Resource Utilization
Data write to I/O Module registers is performed the clock cycle after the address strobe is
asserted.
Data accesses to peripherals connected on the I/O Bus take three clock cycles plus the
number of wait states introduced by the accessed peripheral.
Throughput
The maximum throughput when using the I/O Bus is one read or write access every three
clock cycles.
Resource Utilization
Because the MicroBlaze MCS is a module that is used together with other parts of the
design in the FPGA, the utilization and timing numbers reported in this section are just
estimates, and the actual utilization of FPGA resources and timing of the MicroBlaze MCS
design will vary from the results reported here. All parameters not given in the table below
have their default values.
Table 2-2:Performance and Resource Utilization Benchmarks on Virtex-6 (xc6vlx240t-1-ff1156)
Parameter Values (other parameters at default value)Device Resources
LUTsFlip-Flops
C_USE_UART_TX
C_USE_UART_RX
C_INTC_USE_EXT_INTR
11000 0 000000 004075
11150 0 000000 0069110
11150 0 000000 01118173
11151650000000000075122
1115165000132000000121216
1115165000132132132 00121280
1115165000132132132 10119361
C_INTC_INTR_SIZE
C_USE_FIT1
C_FIT1_No_CLOCKS
C_USE_PIT1
C_USE_GPI1
C_PIT1_SIZE
C_GPI1_SIZE
C_USE_GPO1
C_GPO1_SIZE
C_USE_IO_BUS
C_INTC_HAS_FAST
I/O Module v1.02awww.xilinx.com10
PG052 October 16, 2012Product Specification
Port Descriptions
Port Descriptions
The I/O ports and signals for the I/O Module are listed and described in Ta bl e 2 -3.
Table 2-3:I/O Module I/O Signals
Port NameMSB:LSBI/ODescription
LMB Signals
LMB_ABus0:C_LMB_AWIDTH-1
LMB_WriteDBus0:C_LMB_DWIDTH-1
LMB_ReadStrobe
LMB_AddrStrobe
LMB_WriteStrobe
LMB_BE0:C_LMB_DWIDTH/8-1
Sl_DBus0:C_LMB_DWIDTH-1
Sl_Ready
Sl_Wait
Sl_CE
Sl_UE
I/O Bus Signals
IO_Addr_Strobe
IO_Read_Strobe
IO_Write_Strobe
IO_Address31:0
IO_Byte_Enable3:0
IO_Write_Data31:0
IO_Read_Data31:0
IO_Ready
I
LMB Address Bus
I
LMB Write Data Bus
I
LMB Read Strobe
I
LMB Address Strobe
I
LMB Write Strobe
I
LMB Byte Enable Bus
O
LMB Read Data Bus
O
LMB Data Ready
O
LMB Wait
O
LMB Correctable Error
O
LMB Uncorrectable Error
O
Address strobe signals valid I/O Bus output
signals
O
I/O Bus access is a read
O
I/O Bus access is a write
O
Address for access
O
Byte enables for access
O
Data to write for I/O Bus write access
I
Read data for I/O Bus read access
I
Ready handshake to end I/O Bus access
UART Signals
UART_Rx_IO
UART_Tx_IO
UART_Interrupt
I
Receive Data
O
Trans m i t Data
O
UART Interrupt
FIT Signals
FITx_Interrupt
FITx_Toggle
(1)
(1)
O
FITx timer lapsed
O
Inverted FITx_Toggle when FITx timer lapses
PIT Signals
I/O Module v1.02awww.xilinx.com11
PG052 October 16, 2012Product Specification
Table 2-3:I/O Module I/O Signals (Cont ’d)
Port NameMSB:LSBI/ODescription
(1)
(1)
(1)
(1)
(1)
[C_GPOx_SIZE - 1]:0
[C_GPIx_SIZE - 1]:0
[C_GPIx_SIZE - 1]:0
PITx_Enable
PITx_Interrupt
PITx_Toggle
GPOx
(1)
GPIx
GPIx_Interrupt
I
O
O
GPO Signals
O
GPI Signals
I
O
INTC Signals
Port Descriptions
PITx count enable when C_PITx_PRESCALER
= External
PITx timer lapsed
Inverted PITx_Toggle when PITx lapses
GPOx Output
GPIx Input
GPIx input changed
INTC_Interrupt0:[C_INTC_INTR_SIZE - 1]
INTC_IRQ
INTC_Interrupt_Address [C_INTC_ADDR_WIDTH-1]:0
INTC_Interrupt_Ack1:0
1. x = 1, 2, 3 or 4
I
External interrupt inputs
O
Interrupt Output
O
Interrupt Address Output
I
Interrupt Acknowledge Input
Parameter - Port Dependencies
The width of many of the I/O Module signals depends on design parameters. The
dependencies between the design parameters and I/O signals are shown in Tab le 2-4 .
Table 2-4:Parameter-Port Dependencies
Parameter NamePorts (Port width depends on parameter)
This register contains data received by the UART. Reading this location results in reading the
current word from the register. When a read request is issued without having received a new
character, the previously read data is read again. This register is a read-only register. Issuing
a write request to the register does nothing but generate the write acknowledgement. The
register is implemented if C_USE_UART_RX is set to 1.
Table 2-6:UART Receive Data Register (UART_RX) (C_DATA_BITS=8)
ReservedUART_RX
31870
Table 2-7: UART Receive Data Register Bit Definitions
Bit(s)Name
31:C_UART_DATA_BITS
[C_UART_DATA_BITS-1]:0
Core
Access
-R0
UART_RXR0
Reset
Value
Description
Reserved
UART Receive Data
UART Transmit Data Register (UART_TX)
A register contains data to be output by the UART. Data to be transmitted is written into this
register. This is write only location. Issuing a read request to this register generates the read
acknowledgement with zero data. Writing this register when the character has not been
transmitted will overwrite previously written data, resulting in loss of data. The register is
implemented if C_USE_UART_TX is set to 1.
Table 2-8:UART Transmit Data Register (UART_TX) (C_DATA_BITS=8)
ReservedUART_TX
31870
Table 2-9: UART Transmit Data Register Bit Definitions
Bit(s)Name
Core
Access
Reset
Value
Description
31:C_UART_DATA_BITS-R0
[C_UART_DATA_BITS-1]:0UART_TXR0
Reserved
UART Transmit Data
I/O Module v1.02awww.xilinx.com14
PG052 October 16, 2012Product Specification
Register Space
UART Status Register (UART_Status)
The UART Status Register contains the status of the receive and transmit registers, and if
there are any errors. This is read only register. If a write request is issued to status register
it will do nothing but generate write acknowledgement. The register is implemented if
C_USE_UART_RX or C_USE_UART_TX is set to 1.
Table 2-10:UART Status Register (UART_Status)
ReservedUART_Status
31870
Table 2-11: UART Status Register Bit Definitions
Bit(s)Name
7Parity ErrorR0
6Frame ErrorR0
5Overrun ErrorR0
Core
Access
Reset
Value
Description
Indicates that a parity error has occurred after the last time
the status register was read. If the UART is configured without
any parity handling, this bit is always ‘0’. The received
character is written into the receive register. This bit is cleared
when the status register is read.
0 = No parity error has occurred
1 = A parity error has occurred
Indicates that a frame error has occurred after the last time
the status register was read. Frame Error is defined as
detection of a stop bit with the value 0. The receive character
is ignored and not written to the receive register.
This bit is cleared when the status register is read.
0 = No Frame error has occurred
1 = A frame error has occurred
Indicates that a overrun error has occurred since the last time
the status register was read. Overrun occurs when a new
character has been received but the receive register has not
been read. The received character is ignored and not written
into the receive register. This bit is cleared when the status
register is read.
0 = No interrupt has occurred
1 = Interrupt has occurred
4- R0Reserved
Indicates if the transmit register is in use
3Tx Used R 0
2- R0Reserved
1- R0Reserved
0Rx Valid DataR0
0 = Transmit register is not in use
1= Transmit register is in use
Indicates if the receive register has valid data
0 = Receive register is empty
This register sets the baud rate when using programmable baud rate. The initial value of the
register is determined from the selected fixed baud rate C_UART_BAUDRATE and the clock
frequency C_FREQ, using the formula:
Table 2-13: UART Programmable Baud Rate Register Bit Definitions
Bit(s)Name
31:20---
19:0UART_BAUDWSee above
Core
Access
Reset
Value
Description
Reserved
Programmed UART Baud Rate
General Purpose Output x Register (GPOx) (x = 1, 2, 3 or 4)
This register holds the value that will be driven to the corresponding bits in the I/O Module
GPOx port output signals. All bits in the register are updated when the register is written.
This register is not implemented if the value of C_USE_GPOx is 0.
Table 2-14:General Purpose Output x Register (GPOx)
ReservedGPOx
31C_GPOx_SIZE C_GPOx_SIZE-10
Table 2-15:General Purpose Output x Register Bit Definitions
Bit(s)Name
31:C_GPOx_SIZE
[C_GPOx_SIZE-1]:0
Core
Access
---
GPOxW0
Reset
Valu e
Description
Reserved
Register holds data driven to corresponding bits in the GPO
port
General Purpose Input x Register (GPIx) (x=1, 2, 3 or 4)
This register reads the value that is input on the corresponding I/O Module GPIx port input
signal bits. This register is not implemented if the value of C_USE_GPIx is 0.
Table 2-16:General Purpose Input x Register (GPIx)
ReservedGPIx
31C_GPIx_SIZE C_GPIx_SIZE-10
I/O Module v1.02awww.xilinx.com16
PG052 October 16, 2012Product Specification
Table 2-17:General Purpose Input x Register Bit Definitions
Register Space
Bit(s)Name
31:C_GPIx_SIZE
[C_GPIx_SIZE-1]:0
Core
Access
-R0
GPIxR0
Reset
Value
Description
Reserved
Register reads value input on the I/O Module GPIx port input
signals
Interrupt Status Register (IRQ_STATUS)
The Interrupt Status Register holds information on interrupt events that have occurred. The
register is read-only and the IRQ_ACK register should be used to clear individual interrupts.
Table 2-19:Interrupt Status Register Bit Definitions
Bit(s)Name
31:[C_INTC_EXT_INTR + 16]-R0
[C_INTC_EXT_INTR+15]:16INTC_InterruptR0
Core
Access
Reset
Value
Description
Reserved
I/O Module external interrupt input signal
INTC_Interrupt [C_INTC_EXT_INTR-1:0]
mapped to corresponding bit positions in
IRQ_STATUS
15-R0
14GPI4R0
13GPI3R0
12GPI2R0
11GPI1R0
10FIT4R0
9FIT3R0
8FIT2R0
7FIT1R0
6PIT4R0
5PIT3R0
4PIT2R0
3PIT1R0
2UART_RXR0
1UART_TXR0
0UART_ERRR0
Reserved
GPI4 changed
GPI3 changed
GPI2 changed
GPI1 changed
FIT4 strobe
FIT3 strobe
FIT2 strobe
FIT1 strobe
PIT4 lapsed
PIT3 lapsed
PIT2 lapsed
PIT1 lapsed
UART Received Data
UART Transmitted Data
UART Error
I/O Module v1.02awww.xilinx.com17
PG052 October 16, 2012Product Specification
Register Space
Interrupt Pending Register (IRQ_PENDING)
The Interrupt Pending Register holds information on enabled interrupt events that have
occurred. IRQ_PENDING is the contents of IRQ_STATUS bit-wised masked with the
IRQ_ENABLE register. The register is read-only and the IRQ_ACK register should be used to
clear individual interrupts.