Lines Matching refs:FPGA

2 Xillybus driver for generic FPGA interface
22 -- Host never reads from the FPGA
37 An FPGA (Field Programmable Gate Array) is a piece of logic hardware, which
48 level, even lower than assembly language. In order to allow FPGA designers to
51 FPGA parallels of library functions. IP cores may implement certain
57 One of the daunting tasks in FPGA design is communicating with a fullblown
60 (registers, interrupts, DMA etc.) is a project in itself. When the FPGA's
62 make sense to design the FPGA's interface logic specifically for the project.
63 A special driver is then written to present the FPGA as a well-known interface
65 FPGA differently than any device on the bus.
73 interface logic for the FPGA, and write a simple ad-hoc driver for the kernel.
79 elementary data transport between an FPGA and the host, providing pipe-like
81 effort solution for mixed FPGA-host projects, for which it makes sense to
84 Since the communication requirements may vary significantly from one FPGA
92 just like any pipe file. On the FPGA side, hardware FIFOs are used to stream
115 names of these files depend on the IP core that is loaded in the FPGA (see
116 Probing below). To communicate with the FPGA, open the device file that
146 some data has been submitted and acknowledged by the FPGA. This slows down
148 require data at a constant rate: There is no data transmitted to the FPGA
154 For FPGA to host pipes, asynchronous pipes allow data transfer from the FPGA
159 In summary, for synchronous pipes, data between the host and FPGA is
173 to the user logic at the FPGA. Such a pipe is also seekable on the host API.
175 FPGA side to the seekable stream. Reading or writing to a certain address in
199 Each pipe has a number of attributes which are set when the FPGA component
204 * is_writebuf: The pipe's direction. A non-zero value means it's an FPGA to
205 host pipe (the FPGA "writes").
208 host and FPGA.
234 Host never reads from the FPGA
240 quite likely as a result of an accidental reprogramming of the FPGA while the
247 reading from the device's register space. All communication from the FPGA to
250 invoked. Rather, the FPGA prepares a small buffer which contains short
260 a data channel between the FPGA and the host. The distinction between channels
262 related messages from the FPGA, and has no pipe attached to it.
269 for each channel. For the sake of illustration, let's take the FPGA to host
271 FPGA, the Xillybus IP core writes it to one of the DMA buffers. When the
272 buffer is full, the FPGA informs the host about that (appending a
276 FPGA's buffer control register, allowing the buffer's overwriting. Flow
283 XILLYMSG_OPCODE_RELEASEBUF message, through which the FPGA informs not just
286 But the FPGA will submit a partially filled buffer only if directed to do so
289 the FPGA to submit a DMA buffer as soon as it can. This timeout mechanism
293 A similar setting is used in the host to FPGA direction. The handling of
295 driver to submit all data it has in the buffers to the FPGA, by issuing a
309 The data arrives or is sent at the FPGA as 8, 16 or 32 bit wide words, as
315 FPGA, so the transmission of up to one word may be held until it's fully
318 This somewhat complicates the handling of host to FPGA streams, because
320 the FPGA, and hence can't be sent. To prevent loss of data, these leftover
328 loads and their attributes depend on the Xillybus IP core in the FPGA. During
330 Interface Description Table (IDT), is sent from the FPGA to the host. The
370 catch regarding the FPGA to host direction: The FPGA may have filled a DMA
372 the buffer's submission by the FPGA, there would be a possibility that the
373 FPGA side has sent data, but a select() call would still block, because the
375 XILLYMSG_OPCODE_NONEMPTY messages sent by the FPGA when a channel goes from