Downloads
flink is ..
flink can be read as fast link or as the German “flink” meaning fast. It enables any processors to communicate with an external FPGA over a parallel interface (e.g. PCI, EIM, LPB, AXI) or serial interface (e.g. SPI). The FPGA may contain several blocks such as counters or pulse-width modulation. Such blocks are extensively used in robotics for control applications.
flink was developed at and is maintained by the Institute of Computer Science at OST.
flink can be used on a multitude of targets and with various setups.
flink includes the following modules
First Steps and Examples
Implement all necessary hardware modules with flink VHDL modules and interfaces and choose a suitable interconnection with the available flink Linux Kernel Modules. Develop your application using the flink Userspace Library. The following picture shows the system setup.
An external FPGA contains hardware modules, which provide certain functions such as a pwm generator or an analog input channel. Such an external FPGA is represented by a flink device
. Every flink device
contains one or more subdevices
. A subdevice
represents a function. At last every subdevice
has one or more channels
.
digital IO
or analog input
.digital IO
subdevice.Every subdevice which is specified in a device offers a standardised memory interface towards the driver library. The first 16 bytes comprise the header information which is read-only.
Offset | Size [byte] | Name | r/w | Const | Description |
---|---|---|---|---|---|
0x00 | 4 | function | r | yes | function, which this subdevice implements |
0x04 | 4 | memory size | r | yes | total memory size of this device, including header, subheader and subdevice specific information |
0x08 | 4 | nof channels | r | yes | number of channels of this subdevice |
0x0c | 4 | unique id | r | yes | id identifying this subdevice |
The field function
has the following meaning:
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
function id | |||||||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
subtype id | interface version |
All the available functions can be found in Available Subdevices. Next comes a subheader. It contains a configuration and status register. The meaning of the single bits of these registers can vary according to the function of the subdevice.
Offset | Size [byte] | Name | r/w | Const | Description |
---|---|---|---|---|---|
0x10 | 4 | status | r | no | status of subdevice |
0x14 | 4 | configuration | r/w | no | configuration word for subdevice |
0x18 | 4 | reserved | |||
0x1c | 4 | reserved |
Header and subheader is followed by a subdevice specific part. The content varies according to the function and is listed in Available Subdevices