Question: What do mean by the term thread in GPIF?
The GPIF port on the FX3 device provides 32 sockets that can be independently addressed and used for data transfer. However, there are some restrictions on how the application can switch the active socket, which is used for a transfer operation. The FX3 device implements four DMA transfer handlers or threads which are active concurrently.
Each of these threads can be associated with one DMA socket at a time. This means that the application can select a maximum of four sockets, which are bound to these threads and then switch between them with no added latency. The thread to be used for each word of data transferred can be specified directly by providing an input address or by specifying the target thread in the IN_DATA pr DR_DATA action settings in the GPIF state machine.
Changing the active socket bound to a thread involves additional latency. This switching can be made automatically by specifying the socket address (in cases where the address bus is between 3 and 5 bits wide) or with firmware intervention within the FX3 device.
The GPIF hardware only provides one set of DMA status flags per thread. The thread specific DMA flags for a thread always reflect the status of the active socket on that thread. When switching the active socket on a thread, sufficient time should be provided to ensure that a flag reflects the state of the new socket before using it to control data transfers.
Note that the socket to thread mapping is not flexible. Each socket N can be bound only to the thread numbered (N MOD 4). This means that it is not possible to bind sockets 0, 4, 8, and so on to different threads and thereby use them at the same time. The sockets to be used for GPIF data transfers should be selected keeping this constraint in mind.