xillybus.rst (0898782247ae533d1f4e47a06bc5d4870931b284) | xillybus.rst (f31a03b123b1f849bc0f60493edb95342f2c8e9a) |
---|---|
1========================================== 2Xillybus driver for generic FPGA interface 3========================================== 4 5:Author: Eli Billauer, Xillybus Ltd. (http://xillybus.com) 6:Email: eli.billauer@gmail.com or as advertised on Xillybus' site. 7 8.. Contents: --- 259 unchanged lines hidden (view full) --- 268sides, the implementation relies on a set of DMA buffers which is allocated 269for each channel. For the sake of illustration, let's take the FPGA to host 270direction: As data streams into the respective channel's interface in the 271FPGA, the Xillybus IP core writes it to one of the DMA buffers. When the 272buffer is full, the FPGA informs the host about that (appending a 273XILLYMSG_OPCODE_RELEASEBUF message channel 0 and sending an interrupt if 274necessary). The host responds by making the data available for reading through 275the character device. When all data has been read, the host writes on the | 1========================================== 2Xillybus driver for generic FPGA interface 3========================================== 4 5:Author: Eli Billauer, Xillybus Ltd. (http://xillybus.com) 6:Email: eli.billauer@gmail.com or as advertised on Xillybus' site. 7 8.. Contents: --- 259 unchanged lines hidden (view full) --- 268sides, the implementation relies on a set of DMA buffers which is allocated 269for each channel. For the sake of illustration, let's take the FPGA to host 270direction: As data streams into the respective channel's interface in the 271FPGA, the Xillybus IP core writes it to one of the DMA buffers. When the 272buffer is full, the FPGA informs the host about that (appending a 273XILLYMSG_OPCODE_RELEASEBUF message channel 0 and sending an interrupt if 274necessary). The host responds by making the data available for reading through 275the character device. When all data has been read, the host writes on the |
276the FPGA's buffer control register, allowing the buffer's overwriting. Flow | 276FPGA's buffer control register, allowing the buffer's overwriting. Flow |
277control mechanisms exist on both sides to prevent underflows and overflows. 278 279This is not good enough for creating a TCP/IP-like stream: If the data flow 280stops momentarily before a DMA buffer is filled, the intuitive expectation is 281that the partial data in buffer will arrive anyhow, despite the buffer not 282being completed. This is implemented by adding a field in the 283XILLYMSG_OPCODE_RELEASEBUF message, through which the FPGA informs not just 284which buffer is submitted, but how much data it contains. --- 95 unchanged lines hidden --- | 277control mechanisms exist on both sides to prevent underflows and overflows. 278 279This is not good enough for creating a TCP/IP-like stream: If the data flow 280stops momentarily before a DMA buffer is filled, the intuitive expectation is 281that the partial data in buffer will arrive anyhow, despite the buffer not 282being completed. This is implemented by adding a field in the 283XILLYMSG_OPCODE_RELEASEBUF message, through which the FPGA informs not just 284which buffer is submitted, but how much data it contains. --- 95 unchanged lines hidden --- |