Open search

CAN Newsletter magazine

CAN FD open-source IP core

The Faculty of Electrical Engineering (FEE) at Czech Technical University in Prague (CTU) reached another milestone in July 2022. Their CAN FD IP offer is fully supported by a mainline Linux kernel. According drivers, emulation, and applications are available.

(Source: Adobe Stock)

The complete article is published in the September issue of the CAN Newsletter magazine 2022. This is just an excerpt.

Now, the CTU FEE team offers CAN FD solutions fully supported by the mainline Linux kernel version 5.19 after four years of the out-of-tree support. The VHDL (very high-speed integrated circuits hardware description language) design integration is available for PCI-express Cyclone FPGA-based cards, Xilinx Zynq, and Intel SoC (system on chip) systems. The work is ongoing on optional extension with the parity bits support for fault-tolerant space applications. The core functional emulation is available in the QEMU (open-source system and user-level emulator) emulator out of the box from the year 2020. This enables continuous integration testing against the actual Linux kernel and provides a valuable tool for the driver-porting to other operating systems.

Historical background

The CTU CAN FD design started at the CTU FEE Department of Measurement under the lead of Jiří Novák to extend their long-term CAN testing support for Volkswagen and Skoda Auto by CAN FD. CTU activities in the area of real-time distributed control and communications (fieldbus area) started in the early 1990s when the CTU experts were invited to participate in the joint project with PTB Berlin (Physicalisch-Technische Bundesanstalt, German Metrology Institute) focused on electromagnetic susceptibility of fieldbus technologies in harsh industrial environments. Simultaneously the university cooperated with the Czech company Unicontrols on the implementation of an extensive CANopen design and development system.

Within this cooperation, the team has focused on a dual-CAN interface implementation. This included the channel redundancy, message queuing, and timestamping in both directions. The developers also have worked on the interface’s driver support for several hardware platforms as well as real-time operating systems (e.g. OS9, VxWorks) and generic OS systems (e.g. GNU/Linux, Windows). In the middle 1990s, the CTU team was contacted by Volkswagen to design and develop an in-vehicle system for identification of the CAN network error sources within the car. On this basis, a long-term cooperation with Škoda Auto began, which is still ongoing. Within the 20 years, the engineers designed, developed, and deployed many technologies that were used for testing during the vehicle development. Here are two examples. The first is an automated test system for CAN/LIN ECUs (electronic control unit). It implements a list of tests that ECUs should pass at the physical, data-link, and application layers. The tests are focused on the behavior within the networked system, not on the individual ECU functionality. The second example is a HIL (hardware in the loop) system for overall vehicle integration tests.

Figure 1: CTU CAN FD IP core structure (Source: CTU)

The Skoda Fabia and Skoda Scala vehicles were completely tested using this system. Pavel Píša (FEE Department of Control Engineering at CTU) and his students from the department also contributed to the open-source technologies as well as the real-time and control-related projects starting in the 1990s. Drivers for data acquisition, control cards, and devices have been developed during the years. Investments into the generic Linux CAN (LinCAN) support preceded even the SocketCAN sub-system. When the community chose SocketCAN as the preferred solution, the knowledge and some card supports were reused. An updated bit-timing-parameter computation algorithm has been developed and is the base for the generic CAN and CAN FD bit-rate setup till now. The need for a common platform for the CAN driver development and testing emerged during the work on the RTEMS system (real-time executive for multi-processor systems). The QEMU emulator CAN sub-system has been designed based on previous experience with the Humusoft data acquisition cards emulation. The work, initially supporting SJA1000 CAN controller (NXP) only, has been accepted for QEMU mainline in 2018 and is a base for the Xilinx controllers and CTU CAN FD emulation support.


Figure 1 shows the CAN FD IP core structure with Rx and Tx paths. The IP core provides the following features:

  • VHDL design with no vendor-specific libraries required, yet RAM for buffers and Rx FIFO automatically inferred by Xilinx and Intel tools
  • Compliant with ISO 11898-1:2015
  • Rx buffer FIFO with 32 to 4096 words (1 to 204 CAN FD frames with 64 bytes of data)
  • 2 to 8 TXT buffers (one CAN FD frame in each TXT buffer)
  • 32-bit device memory interface (APB, AHB, RAM-like interface)
  • Support of “ISO and non-ISO” conform CAN FD implementations
  • Time-stamping and time-triggered transmission
  • Interrupts
  • Loop-back mode, bus monitoring mode, ACK forbidden mode, self-test mode, restricted operation mode

Ondrej Ille is a digital design expert working for several chip design centers. The initial goal of his work on a new core VHDL design was a specialized controller for CAN FD Skoda Auto analyzer update with support for time-based transmission of messages. In 2018, it was extended into development of a generic CAN FD controller to support the needs of the Volkswagen subsidiary to replace the commercial core. The latter did not fit in a required count into their Xilinx Zynq based project limited by the already produced hardware.

But if you would like to read the full article, you can download it free of charge or you download the entire magazine.