Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
software:flink [2014-12-04 08:02] grafsoftware:flink [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1
Zeile 1: Zeile 1:
-====== flink, Universal Serial Interface to FPGA's ====== 
- 
-<box blue right 38% | **Downloads**> 
-  * [[https://github.com/flink-project/ | flink on Github]] 
-</box> 
-flink is .. 
-  * an universal serial interface to FPGA's 
-  * is open-source 
-  * is highly flexibel 
-  * is real-time capable 
- 
-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 serial interface, e.g. PCI or SPI. The FPGA may contain several blocks such as counters or pulse-width modulation. Such blocks are extensively used in robotics for control applications.  
- 
-===== Overview ===== 
-<box green right 38% | **flink Modules**> 
-  * [[.:flink:flink_vhdl|flink VHDL modules and interfaces]]  
-  * [[.:flink:flink_linux|flink Linux Kernel Modules]]  
-  * [[.:flink:flink_lib|flink Userspace Library]] 
-  * [[.:flink:flink_liblite|flink Userspace Library Lite]] 
-  * [[.:flink:flink_utils|flink Utilities]] 
-  * [[.:flink:flink_deep|flink Java Library]] 
-</box> 
- 
-flink can be used on a multitude of targets and with various setups. \\ 
-flink includes the following modules 
-  * flinkVHDL: Configuration for an external FPGA toghether with a suitable hardware link 
-  * flinkLinux: Kernel Modules 
-  * flinkLib: Userspace library for C/C++ 
-  * flinkLibLite: Userspace library for OS-less systems for C/C++ 
-  * flinkUtils: Utilities and test programs for the flink library 
-  * flinkDeep: Library for Java  
- 
-=== Typical use with C/C++ under an operating system === 
-Implement all necessary hardware modules with [[.:flink:flink_vhdl|flink VHDL modules and interfaces]] and choose a suitable interconnection with the available [[.:flink:flink_linux|flink Linux Kernel Modules]]. Develop your application using the [[.:flink:flink_lib|flink Userspace Library]]. The following picture shows the system setup. 
-[{{ .:flink:flinkoverviewlinux.png?500 | //flink with OS and C/C++ programming//}}] 
- 
-===== System Architecture ===== 
-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''. 
-  * device: An external FPGA, group of subdevices. 
-  * subdevice: Modul with a specific function, such as ''digital IO'' or ''analog input''. 
-  * channel: Single channel of a subdevice, corresponds to a single pin of a ''digital IO'' subdevice. 
- 
-[{{ .:flink:systemarchitectureexample.png?700 | //System architecture for an example system with a motor drive. The drive controlled by an analog output signal. The motor position is determined with a counter module. //}}] 
- 
-===== Memory Mapping ===== 
-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| | | |reserved| 
- 
-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| 
-|  subfunction id  ||||||||  function version  |||||||| 
- 
-All the available functions can be found in [[.:flink:functions|Available Functions]]. Next comes a subheader. It contains a configuration and status register. The meaning of the single bits of this register 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 [[.:flink:functions|Available Functions]]