Technical Document #122

Technical Document #122
PCI Transfers

There are two PCI transfer options: reading/writing to FIFO (string transfers), or reading/writing to different memory blocks.

In the case of reading/writing to memory blocks, the data is transferred to/from a memory address in the PC from/to a memory address in the card, and then both the card's memory address and the PC's memory address are incremented for the next transfer. This way, the data is transferred between the address in the PC and the same relative address in the card.

 
.
 

In the case of reading/writing to FIFO, the data is transferred to/from a memory address in the PC from/to a single address in the card, and then only the PC's memory address is incremented for the next transfer. This way the data is transferred between incremented memory addresses in the PC and the same FIFO in the card's memory.

 
.
 

The WD_TRANSFER structure includes an automatic increment flag, called fAutoinc. When defined as TRUE, the I/O or memory address is incremented for transfer to/from FIFO (string transfers), when defined as FALSE, all data is transferred to the same port/address.

For more information on PCI transfers, please refer to the description of WinDriver's WD_Transfer() function, which executes a read/write instruction to an I/O port or to a memory address.