EZ-USB FX3 Technical Reference Manual, Document Number: 001-76074 Rev. *F 123
General Programmable Interface II (GPIF II)
Table 7-2. GPIF II Actions
No Action Description
Incompatibility with Other
Actions
1 IN_DATA
Samples data from the data bus and moves to the destination specified. Destination can be
Registers, PPRegisters, or Sockets. The data in the register can be accessed using the
CY_U3P_PIB_GPIF_INGRESS_DATA(thread_number) macro. The PPRegisters cannot be
accessed directly from the PPRegister space. These registers are for controlling the P-port
interface in PP mode. The data in Sockets can be controlled or accessed using DMA APIs.
Words from Socket can be accessed directly using the firmware API CyU3PGpifReadData-
Words().
Cannot be combined with
DR_DATA.
Cannot be combined with
IN_ADDR when the address and
data buses are multiplexed.
2 IN_ADDR
Selects a thread or socket after sampling the address word from the bus. If there are two or
fewer address bits, the address selects one of the four threads. If the address has more than
two bits, the thread or socket can be selected depending upon the The "Address Selecting"
parameter is available only when more than two address bits are used.
The "PP Register Access Only" option is available only if the width of the address bus is more
than or equal to 8
Cannot be combined with
IN_DATA when the address and
data buses are multiplexed
3 DR_DATA
Drives data onto the bus from the source specified. The source can be Registers, PPRegis-
ters, or Sockets. The data in Register can be sourced using the
CY_U3P_PIB_GPIF_EGRESS_DATA(thread_number) macro. The PPRegisters cannot be
accessed directly from the PPRegister space. These registers are for controlling the P-port
interface in PP mode. The data in Sockets can be controlled or sourced using DMA APIs.
Words from Socket can be sourced directly using the firmware API
CyU3PGpifWriteDataWords().
DR_DATA has two internal stages: update_bus and pop_data. The update_bus updates the
data bus with the word present in the source, and it happens as soon as the state machine
enters the particular state. The hardware state machine works using the interface clock (in
Synchronous protocol) or the FX3 internal clock (in Asynchronous protocol). In every clock
cycle, the update_bus happens regardless of the "Repeat actions until next transition" option
in the state setting. Pop_data removes the data word from the source and happens once or
multiple times depending on the "Repeat actions until next transition" option in the state set-
ting.
Cannot be combined with
IN_DATA.
Cannot be combined with
DR_ADDR when the address and
data buses are multiplexed.
4 DR_ADDR
Drives the value from the specified source to address bus. The source can be Registers,
AddressCounter, or ThreadSocket. The address in Registers can be sourced using the
CY_U3P_PIB_GPIF_EGRESS_ADDRESS(thread_number) macro. The data in Sockets can
be controlled or sourced using the DMA APIs. Words from Socket can be sourced directly
using the firmware API CyU3PGpifWriteDataWords().An AddressCounter can be used to
source the address.
Cannot be combined with
DR_DATA when the address and
data buses are multiplexed.
5 COMMIT
Commit or wraps up the buffer associated with the selected ingress thread and socket. The
buffer is transferred to the consumer side of the pipe. Typically, this is used to wrap up the buf-
fer in between a transaction prematurely.
None
6 DR_GPIO
Drives the GPIO signal to HIGH/LOW or toggles the value immediately or after a delay of one
clock cycle. The interface observes output latency between the time the DR_GPIO action is
called and the change in the GPIO signal in the interface.
The "Repeat actions until next transition" in the state setting
has no effect on the behavior of
the DR_GPIO action. This action is repeated for every clock cycle (the clock being the inter-
face clock or the FX3 internal clock).
None
7 LD_ADDR_COUNT
Loads the counter with initial settings. The initial settings are loaded while starting the state
machine. This value needs to be the same in all states within a given state machine diagram.
Multiple values are not allowed. These settings can be overridden using firmware APIs. When
the counter reaches the limit, the hardware sets the ADDR_CNT_HIT internal trigger signal.
This action is generally used with COUNT_ADDR and the ADDR_CNT_HIT trigger. The count
value can also be programmed by the firmware application using
CyU3PGpifInitAddrCounter(). The value programmed into the register at the time of execution
of the state machine will be used.
Cannot be combined with
COUNT_ADDR.
8 LD_DATA_COUNT
Loads the counter with initial settings. The initial settings are loaded while starting the state
machine. This value needs to be the same in all states within a given state machine diagram.
Multiple values are not allowed. These settings can be overridden using firmware APIs. When
the counter reaches the limit, the hardware sets the DATA_CNT_HIT internal trigger signal.
This action is generally used with COUNT_DATA and the DATA_CNT_HIT trigger. The count
value can also be programmed by the firmware application using
CyU3PGpifInitDataCounter(). The value programmed into the register at the time of execution
of the state machine will be used.
Cannot be combined with
COUNT_DATA.
9 LD_CTRL_COUNT
Loads the counter with initial settings. The initial settings are loaded while starting the state
machine. This value needs to be the same in all states within a given state machine diagram.
Multiple values are not allowed. These settings can be overridden using firmware APIs. When
the counter reaches the limit, the hardware sets the CTRL_CNT_HIT internal trigger signal.
This action is generally used with COUNT_CTRL and the CTRL_CNT_HIT trigger. The count
value can also be programmed by the firmware application using CyU3PGpifInitCtrlCounter().
The value programmed into the register at the time of execution of the state machine will be
used.
Cannot be combined with
COUNT_CTRL.