How logic-design-services/ctu-can-fd works
CTU CAN FD is synthesizable VHDL soft IP implementing ISO and non-ISO CAN FD, with Linux and FPGA/ASIC integration paths. The principal workflow is: a host configures or submits a frame through the Linux driver and memory-mapped interface; the core queues, arbitrates, encodes, and transmits it on CAN, while received frames are decoded, filtered, buffered, and reported through interrupts back to the host. The tree also contains an optional Kvaser/Signal Tap logging utility; its detailed orchestration is only partially sampled.
Components 20
Host Integration
- Linux Driver
driver/ctucanfd_base.c - Hardware Access
driver/ctucanfd_hw.h - Register Map
driver/ctucanfd_regs.h
CAN Core
- CAN FD Core
src/ctu_can_fd_top.vhd - Bus Interfaces
src/interface - Bit Timing
src/bit_timing_logic - Protocol Control
src/medium_access_control/mac_top.vhd - Frame Filters
src/frame_filters/ff_top.vhd - Interrupt Manager
src/interrupt_manager/im_top.vhd
Frame Storage
- TX Buffers
src/txt_buffer/txtb_even_top.vhd - TX Arbitrator
src/tx_arbitrator/txarb_top.vhd - RX Buffer
src/rx_buffer/rxb_top.vhd
Logging Tools
- Kvaser Access
tools/Kvaser_logger/kvaser.c - Signal Tap Control
tools/Kvaser_logger/stp.c - Log Processor
tools/Kvaser_logger/data_processor.c - Log Output
Other components
- Linux CAN App
- CAN Bus
- Host Bus
- Kvaser Hardware
Connections 23
- Linux CAN App → Linux Driver: uses CAN
- Linux Driver → Hardware Access: accesses hardware
- Hardware Access → Register Map: maps registers
- Host Bus → Bus Interfaces: bus access
- Bus Interfaces → CAN FD Core: transfers commands
- Linux Driver → CAN FD Core: configures and queues
- CAN FD Core → Bit Timing: controls timing
- CAN FD Core → Protocol Control: controls protocol
- CAN FD Core → Frame Filters: applies filters
- CAN FD Core → Interrupt Manager: raises events
- CAN FD Core → TX Buffers: writes frames
- TX Buffers → TX Arbitrator: offers frames
- TX Arbitrator → Protocol Control: selects frame
- Protocol Control → CAN Bus: transmits frames
- CAN Bus → Protocol Control: receives frames
- Protocol Control → Frame Filters: checks frames
- Frame Filters → RX Buffer: stores accepted
- RX Buffer → Linux Driver: returns frames
- Interrupt Manager → Linux Driver: signals events
- Kvaser Hardware → Kvaser Access: reads and writes
- Kvaser Access → Signal Tap Control: coordinates capture
- Signal Tap Control → Log Processor: exports samples
- Log Processor → Log Output: writes output