Documentation
 Datasheet 
DCAN

Configurable CAN Bus Controller


The DCAN is a stand-alone controller for the Controller Area Network (CAN) widely used in automotive and industrial applications. DCAN conforms to Bosch CAN 2.0B specification (2.0B Active). The Core has simple CPU interface (8/16/32 bit configurable data width) with little or big endian adressing scheme. The DCAN supports both standard (11 bit identifier) and extended (29 bit identifier) frames. Hardware message filtering and 64 byte receive FIFO enables back-to-back message reception with minimum CPU load. The DCAN is described at RTL level allowing target use in FPGA or ASIC technologies.



CAN Overview

The Controller Area Network (CAN) is a advanced serial communications protocol developed by Robert Bosch GmbH. CAN protocol uses Data Link Layer and the Physical Layer in the ISO-OSI model. The CAN bus uses multi-master bus scheme with one logic bus line and equal nodes. The number of nodes is not limited by the protocol.

Nodes do not have specific addresses. Instead, message identifiers are used, indicating the message content and priority of message. This also means that multicasting and broadcasting is supported by CAN.

Number of nodes may be changed at run-time without disturbing the communication of the other nodes.
CAN provides sophisticated error detection and error handling mechanisms and, due to differential transmission, high immunity against electromagnetic interference. Frames with errors are automatically retransmitted (except single shot transmission feature implemented in the DCAN core).
Maximum data transfer rate is 1Mbps at maximum 40 m bus length when using a twisted wire pair.
The bus is handled with Carrier Sense Multiple Access / Collision Detection with Non-Destructive Arbitration. This means that collision of messages is avoided by bitwise arbitration without loss of time.
CAN controller is connected to host/CPU and CAN bus transceiver, which directly connects to CAN bus line (2-wire).



For more information about the CAN Bus protocol please see....



Key Features

Applications

  • Conforms to Bosch CAN 2.0B Active
  • 8/16/32-bit CPU slave interface with little or big endianess
  • Simple interface allows easy connection to CPU
  • Data rate up to 1 Mbps
  • Hardware message filtering (dual/single filter)
  • 64 byte receive FIFO
  • One transmit buffer
  • No overload frames are generated
  • Normal & Listen Only Mode
  • Single Shot transmission
  • Ability to abort transmission
  • Readable error counters
  • Last Error Code
  • Available system interface wrappers:
  • Fully synthesizable
  • Static synchronous design
  • Positive edge clocking and no internal tri-states
  • Scan test ready
  • Automotive, industrial
  • Embedded communication systems


Symbol

 qmr (31:0)
dmr (31:0) 
waddrmr (3:0) 
raddrmr (3:0) 
enrmr 
enwmr 
sclk 
 rxd
txd 
 be (3:0)
 addr (4:0)
 datai (31:0)
 rd
 wr
 cs
int 
datao (31:0) 
 qmt (31:0)
dmt (31:0) 
waddrmt (1:0) 
raddrmt (1:0) 
enrmt 
enwmt 

Pins description

PinTypeDescription
qmr (31:0)inputRX DPRAM data output - configurable 8, 16, 32 bits wide
rxdinputCAN receive data
be (3:0)inputHost byte enable - set accprdig to Data bus size
addr (4:0)inputHost Address bus
datai (31:0)inputHost output Data bus - configurable 8, 16, 32 bits wide
rdinputRead Data strobe
wrinputWrite data strobe
csinputChip select
qmt (31:0)inputTX DPRAM data output - configurable 8, 16, 32 bits wide
dmr (31:0)outputRX DPRAM data input
waddrmr (3:0)outputRX DPRAM write address
raddrmr (3:0)outputRX DPRAM read address
enrmroutputRX DPRAM read access
enwmroutputRX DPRAM write enable
sclkoutputSCLK Clock output
txdoutputCAN Transmit data
intoutputInterrupt request signal
datao (31:0)outputHost input data bus - configurable 8, 16, 32 bits wide
dmt (31:0)outputTX DPRAM data input - configurable 8, 16, 32 bits wide
waddrmt (1:0)outputTXDPRAM write address
raddrmt (1:0)outputTX DPRAM read address
enrmtoutputTXDPRAM read enable
enwmtoutputTX DPRAM write enable

Block diagram

Receive FIFO
RX RAM Interface
dmr (31:0)
waddrmr (3:0)
raddrmr (3:0)
enrmr
enwmr
qmr (31:0)
ACF Acceptance filter
BRP Baud Rate Prescaler
sclk
BSP Bit Stream Processor
BTL Bit Timing Logic
txd
rxd
EML Error Management Logic
IML Interface Management Logic
be (3:0)
addr (4:0)
datai (31:0)
int
datao (31:0)
rd
wr
cs
TX RAM Interface
dmt (31:0)
waddrmt (1:0)
raddrmt (1:0)
enrmt
enwmt
qmt (31:0)

Units

Receive FIFO

Receive FIFO controller

RX RAM Interface

Interface to external dual port memory used by the DCAN core to store received frames.

ACF Acceptance filter

Decides whether incoming messages are accepted or not based upon filter registers settings.

BRP Baud Rate Prescaler

Defines the length of time quantum.

BSP Bit Stream Processor

Translates messages into frames and vice versa.

BTL Bit Timing Logic

Processes the bit time, calculates position of the sample point and performs synchronization.

EML Error Management Logic

EML is responsible for fault confinement handling.

IML Interface Management Logic

Interprets commands from the CPU, provides interrupt and status indication.

TX RAM Interface

Interface to external dual port memory used by the DCAN core to store transmitted frames.

Performance


Each core has been tested in variety of FPGA and ASIC technologies. Its implementation's results are summarized below.

ImplementationSpeed
grade
Utilized Area
[Slices]
Frequency
[MHz]
SPARTAN-IIIE-4104962
SPARTAN-III-5103377
SPARTAN-IIE-7105560
VIRTEX-E-8105772
VIRTEX-II-61032103
VIRTEX-II pro-71034124
VIRTEX-IV-111032124

8-bit DCAN implementation results for XILINX devices.

ImplementationSpeed
grade
Utilized Area
[LC]
Frequency
[MHz]
APEX20KC-7195694
CYCLONE-61956123
CYCLONE-II-61899137
STRATIX-51956130
STRATIX-II-31529188
STRATIX-GX-51956131

8-bit DCAN implementation results inALTERA devices.