在此运用VerilogHDL规划了一款CAN总线操控器,首要依据协议把整个CAN总线操控器划分为接口逻辑办理、寄存器逻辑和CAN中心模块3个模块,然后用Verilog HDL硬件描绘言语规划了各个功用模块,并运用Modelsim软件对各个模块的功用进行了仿真,最终运用FPGA芯片对规划的CAN总线操控器验证,并连接了一个包含该FPGA CAN总线操控器的4节点CAN总线网络。测验结果表明所规划的CAN总线操控器能够完结设定的功用。
CAN(Controller Area Network)是由ISO界说的一种串行通讯总线,它是一种能有效地支撑高安全等级的散布实时操控的新一代网络通讯协议,归于现场总线领域。CAN最早被规划作为轿车环境中微操控器的通讯,在车载各电子操控设备与ECU之间交流信息,构成轿车电子操控网络,现在运用领域现已适当广泛。
近年来,支撑CAN协议的芯片不断推出,给CAN总线用户带来了极大的便利。跟着我国对现场总线技能需求的添加,CAN总线现已会成为我国最常用的现场总线之一。
依据CAN总线的ECU电子操控单元的开发,也是现在最抢手的研讨。现在对CAN总线芯片的研讨现已不再局限于单一芯片的研讨,而是把一切的功用芯片都会集在一块芯片上完结一个完好的ECU的功用。
本项目意图是运用FPGA完结一款支撑CAN2.0协议的总线操控器,完结一个通用的能够满意CAN2.0协议的CAN总线操控器软IP核,这样能够在今后的运用中便利的集成到其他体系中去。本文运用VerilogHDL言语,规划了一款支撑CAN2.0协议的CAN总线操控器,并运用FPGA芯片在CAN总线网络中对其进行了测验,完结了规划意图。立异点为CAN_Registers规划中寄存器模块、位流处理器的收发部分功用、测验程序、依据该FPGA的CAN总线操控器的节点电路等。
1 CAN总线操控器规划
1.1 CAN操控器规划流程
1.1.1 功用规划
首要对CAN2.0协议进行了深化的剖析,把握了CAN总线协议的各部分内容;然后参照和剖析了几种典型的CAN总线操控器的功用;最终挑选PHILPS公司出产的CAN总线操控器SJA1000进行进一步的剖析,把握了它的各部分模块的功用。在这些基础上依据需要规划了所规划的CAN总线操控器的功用。
1.1.2 规划描绘和功用验证
功用规划完结后,依据功用并参照CAN总线2.0协议,将操控器划分为若干功用模块,清晰了各个功用模块的效果。确认模块及其功用之后,用Verilog HDL言语完结了各模块的规划。接着,运用Modelsim对整个规划进行了功用验证。
1.1.3 逻辑归纳
功用仿真经过今后,运用QUARTusⅡ对所规划的CAN总线操控器进行逻辑归纳,并把其装备到FPGA中。
1.1.4 硬件验证
装备到FPGA中今后,用所规划的依据FPGA的CAN总线操控器作为一个节点,与选用SJA1000作为操控器的节点电路进行了通讯测验,验证了所规划的CAN总线操控器的功用。
1.2 CAN总线操控器的全体规划
1.2.1 操控器SJA1000的功用结构
SJA1000是PHILIPS公司于1997年推出的一种独立CAN总线操控器,用于轿车和一般环境中的操控器局域网络。SJA1000主要由以下几个部分构成:接口办理逻辑、发送缓冲器、接纳缓冲器、接纳滤波器、位数据流处理器、位时序逻辑、过错办理逻。SJA1000是双列直插式集成电路,功用框图如图1所示。
1.2.2 本文中操控器的功用结构
本文规划的CAN操控器参照SJA1000操控器的结构,功用根本结构包含如图2所示的3个功用模块。
CAN_IML是CAN总线操控器接口逻辑,主要功用是解说来自微处理器的指令,操控CAN寄存器的寻址,向微处理器供给中止信息和状况信息。
CAN_Core为CAN协议操控器的中心部分,完结CAN协议中的数据链路层的悉数功用以及物理层的部分功用,包含LLC子层的接纳滤波、超载告诉和康复办理、MAC子层的数据封装/拆装、帧编码、媒体拜访办理、过错检测、过错标定、应对和串行化/解串行化、以及物理层的位编码/解码、位守时和同步。CAN_Registers为一寄存器组,外部微处理器能够经过地址直接拜访这些寄存器。依据功用框图,规划了CAN总线操控器的程序结构,如图3所示。
1.3 CAN总线各个功用模块的规划
1.3.1 CAN_IML规划
参照SJA1000,规划FPGA CAN总线操控器的接口,如图4所示。
图中Port_0_io_7到Port_0_io_0为地址/数据复合总线。Cs_can_i为片选输入信号。当Cs_can_i为0时答应拜访CAN总线操控器。Ale_i为1时,答应对寄存器进行赋值。Rd_i和Wr_i为微处理器的读使能信号和写使能信号。IRQ_on为中止输出信号,用于中止微处理器。Rst_i为复位输入,用于复位CAN接口。Clkout_o为FPGA CAN操控器供给给微处理器的时钟输出信号,时钟分频寄存器可制止该引脚输出。Bus_off_on操控总线封闭和总线敞开接口,Tx_o和Rx_i与收发器相连,向总线发送和接纳数据。
1.3.2 CAN_Registers规划
规划的CAN总线操控器的寄存器模块包含以下寄存器:形式寄存器、指令寄存器、状况寄存器、中止寄存器、中止使能寄存器、总线守时寄存器0~1、裁定丢掉捕获寄存器、过错代码捕获寄存器、过错报警约束寄存器、接纳过错计数器、发送过错计数器、检验代码寄存器0~3、检验屏蔽寄存器0~3、接纳信息计数器和接纳/发送缓冲器。
1.3.3 CAN_Core规划
CAN_Core为整个CAN操控器的中心,负责处理CAN的协议。中心模块由4个部分组成,结构如图5所示。
下面简略介绍CAN_Core模块中的位流处理器、位时序逻辑。
位流处理器是CAN总线操控器中操控数据流的发生器。它还履行总线上的过错检测、裁定、填充和过错处理等功用。主要有接纳模块、发送模块、过错办理模块、CRC校验、检验滤波、FIFO等6个模块组成,如图6所示。其间CRC校验、FIFO、检验滤波在所履行的项目中现已有别人规划完结。
位时序逻辑的规划包含位守时规划、采样点规划、位同步规划3部分。下面以定位时为例介绍其规划。
位守时规划 在位守时规划中选用了一个有3个状况的状况机。3个状况别离对应的是同步段和相位缓冲段1以及相位缓冲段2。传达段占用的时间短,在操控上没有特别的含义,仅作为物理层的传达延时,所以没有规划进状况机,位守时部分的状况机规划如图7所示。
接着运用ModelSim软件对所规划的各个模块和整个CAN总线操控器进行了功用仿真,仿真结果表明达到了规划方针。