Implements a CAN protocol bus controller that performs serial communication according to the CAN 2.0A, 2.0B, and the Bosch CAN FD Flexible Data-Rate specifications.
The CAN protocol uses a multi-master bus configuration for the transfer of frames between nodes of the network and manages error handling with no burden on the host processor. The core enables the user to set up economic and reliable links between various components. It appears as a memory-mapped I/O device to the host processor, which accesses the CAN core to control the transmission or reception of frames.
The CAN core is easy to use and integrate. featuring programmable interrupts, data and baud rates; a configurable number of independently programmable acceptance filters; and a generic processor interface or optionally an AMBA-APB interface. It implements a flexible buffering scheme, allowing fine-tuning of the core size to the requirements of each specific application. The number of receive buffers is synthesis-time configurable from 2 to 31. Two types of transmit buffers are implemented: a high-priority primary transmit buffer (PTB) and a lower-priority secondary transmit buffer (STB). The PTB can store one message, while the number of included buffer slots for the STB is synthesis-time configurable 0 to 16 slots. Moreover, an optional wrapper instantiating multiple CAN controller cores easies integration in cases where multiple bus-nodes need to be controlled by the same host processor.
The core implements functionality similar to the Philips SJA1000 working with its PeliCAN mode extensions, providing error analysis, diagnosis, system maintenance and optimization features.
Additionally, the core offers a CAN FD extension to increase net data throughput. It comprises data fields up to 64 bytes, extended CRC checksum, and a higher data rate for the data phase.
The CAN core is robustly verified and proven in multiple production designs.
- CAN Specifications
- CAN2.0A and CAN2.0B (ISO 11898)
- Optional CAN FD
- Enhanced Functionality
- Error Analysis features enabling diagnostics, system maintenance and system optimization
- Last error type capture
- Arbitration lost position capture
- Programmable Error Warning Limit
- Listen-Only Mode enables CAN bus traffic analysis and automatic bit-rate detection
- Flexible Message Buffering and Filtering
- Configurable number of receive buffers
- One high-priority transmit buffer
- Configurable number of lower-priority transmit buffers, 0 to 16
- Configurable number of independently programmable 29-bit acceptance filters, 1 to 16
- Easy to Use and Integrate
- Programmable data rate up to 1 Mbit/s with CAN 2.0 and several Mbit/s with CAN-FD option
- Programmable baud rate prescaler. 1/2 up to 1/256
- Single Shot Transmission Mode for lower software overhead and fast reloading of transmit buffer
- Flexible programmable interrupt sources
- Generic 8-bit host-controller interface and optional AMBA-APB
- Buffers can be implemented as Flip-Flops or RAM
- A single host can control multiple CAN bus nodes via an optional Multi-CAN wrapper
- Zero Risk
- Verified with the Bosch reference model
- Link to commercial bus drivers (e.g. PCA82C250T by Philips)
- Multiple times production proven
- Efficient and Portable Design
- Available in RTL, and portable to ASIC and FPGA technologies
- Size of approximately 12,000 gates.
- The core includes everything required for successful implementation:
- VHDL or Verilog RTL source code
- Post-synthesis EDIF (netlist licenses)
- Behavioral tests
- Bosch reference model
- Post-synthesis verification
- Simulation scripts
- Synthesis scripts
- The CAN-CTRL core can be integrated in devices that use CAN or higher-layer, CAN-based communication protocols. In addition to traditional automotive applications, such devices are used in industrial (e.g. the CANopen and DeviceNet protocols), aviation (e,g. the ARINC-825 and CANaerospace protocols), marine (e.g. the NMEA 2000 protocol) and other applications.
Block Diagram of the CAN 2.0 & CAN FD Bus Controller