基于Verilog HDL语言的CAN总线控制器设计及验证

发布者:创意火花最新更新时间:2012-08-01 来源: 现代电子技术 关键字:CAN总线  控制器  FPGA  Verilog  HDL 手机看文章 扫描二维码
随时随地手机看文章

0 引言
    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寄存器的寻址,向微处理器提供中断信息和状态信息。[page]
    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所示。[page]


    接着使用ModelSim软件对所设计的各个模块和整个CAN总线控制器进行了功能仿真,仿真结果表明达到了设计目标。

2 测试验证
    本文最后设计了CAN总线控制器的测试程序,其目的是模拟一块微处理器对CAN总线控制器进行读写操作,从而实现对CAN总线控制器的寄存器访问,完成总线收发功能。在该测试程序编写中,各个功能基本上以任务的形式实现,进行不同的仿真时只需调用相关的任务模块。图8为验证程序的组成框图。

 


    仿真验证完成以后将其HDL CAN总线程序下载到FPGA中进行测试,目标芯片采用Cyclone系列的EP1C6Q240C8,为了验证所设计的FPGA CAN总线控制器,还设计了一款基于该FPGA的CAN总线控制器的节点电路,然后利用所设计的节点电路与其他3个利用SJA1000作为控制器的CAN总线节点进行了通信测试。所有的节点使用AT89S52单片机作为节点微处理器,PCA82C250作为收发器,测试结果表明下载到FPGA中的控制器程序工作正常,实现了预计的CAN总线通讯功能。测试网络示意图如图9所示。


    测试时,按动节点1上的开关并将该状态发送到节点2,在节点2上能显示对应的状态,反之也可。同时也可在节点2通过键盘输入某一代码,而在节点1上的数码管上显示相应的结果。该实验结果表明下载到FPGA中的控制器程序工作正常。

3 结语
    本项目利用Verilog HDL语言设计了一款CAN总线控制器芯片,并使用ModelSire软件对所设计的CAN总线控制器进行了功能仿真;之后为了验证设计,还编制一个验证程序,并将验证之后的设计配置到了FPGA中;最后用所设计的基于FPGA的CAN总线控制器制作了CAN节点,并与其他采用SJA1000为控制器的CAN节点进行了通讯测试,实现了CAN总线良好的工作,验证了设计的正确性。

关键字:CAN总线  控制器  FPGA  Verilog  HDL 引用地址:基于Verilog HDL语言的CAN总线控制器设计及验证

上一篇:图书馆I-bus智能照明总线系统的应用
下一篇:CAN总线位定时和同步机制的分析

推荐阅读最新更新时间:2024-05-02 22:14

基于SoC FPGA进行工业设计及电机控制
  引言   在工业系统中选择器件需要考虑多个因素,其中包括:性能、工程变更的成本、上市时间、人员的技能、重用现有IP/程序库的可能性、现场升级的成本,以及低功耗和低成本。   工业市场的近期发展推动了对具有高集成度、高性能、低功耗FPGA器件的需求。设计人员更喜欢网络通信而不是点对点通信,这意味着可能需要额外的控制器用于通信,进而间接增加了BOM成本、电路板尺寸和相关NRE(一次性工程费用)成本。   总体拥有成本用于分析和估计购置的寿命周期成本,它是所有与设计相关的直接和间接成本的扩展集,包括工程技术成本、安装和维护成本、材料清单(BOM)成本和NRE(研发)成本等。通过考虑系统级因素有可能最大限度地减少总体拥有成本,从而带来可
[嵌入式]
FPGA与MSP430通信 UART串口操作
个人感觉,FPGA对数据的处理相对麻烦。在之前的等精度测频法中,明明是简简单单的一些除法,却需要引入IP核来进行一步一步的浮点数运算,当时为此死了很多脑细胞,比较详细的内容见我早一些时间的吐槽博客:Verilog设计练习 基于FPGA的等精度频率计_Krism0912的博客-CSDN博客_用verilog设计等精度频率计 所以最好的是FPGA采集一些基本数据量,然后直接传到电脑或者其他地方进行处理,免得浪费一大把好时光。。 这次是对FPGA串口操作进行的一些调试,FPGA的书写代码有参考网上的资源,不过进行了大幅度的更改,参考的代码太过久远突然找不到了、、 由于FPGA比较常用给别的MCU发数据而不是收数据,所以
[单片机]
<font color='red'>FPGA</font>与MSP430通信 UART串口操作
jz2440裸机开发与分析:内存控制器1之内存接口概念
JZ2440内部大致结构: CPU把值写到外部寄存器,使外部寄存器发出不同的波形,控制相应设备,由此我们将提出,芯片内部如何选择不同寄存器的,所以芯片内部引入了内存控制器。 CPU发送地址信息给了内存控制器,内存控制器根据addr,选择不同的模块 内存类设备 内存类接口(NOR FLASH,DM9000,SDRAM)是不同的,CPU直接发送地址,数据给内存类设备,而JZ2440的外部有许多的内存类设备,而如何做到互不干扰的哪?每一个内存类设备都有一片选控制端CS(chip select),用来控制开启那个内存类设备,而片选控制端CS的信号发出,是由内存控制器管理,CPU发出地址信息给了内存控制器,内存控制器根据地址发出
[单片机]
jz2440裸机开发与分析:内存<font color='red'>控制器</font>1之内存接口概念
抗电磁干扰的PWM风扇控制器原理及应用
      微芯科技(Microchip )公司提供一种工作于PWM模式的风扇制冷速度控制器系列产品,用于无刷直流风扇(参考文献1)。为了利用PWM波形的占空比来控制风扇速度,可以使用外部 NTC(负温度系数)热敏电阻或微芯公司的一种PIC微控制器及其 SMBus 串行数据总线。图1示出了TC664 和 TC665 控制器数据资料描述的一种典型应用(参考文献2)。利用电容值为1mF的频率控制电容器CF和风扇控制器IC1产生一个PWM脉冲串,它的标称频率为30 Hz,依赖于温度或命令的占空比变化范围是30%~100%。       虽然使用PWM模式的控制器可以降低晶体管QA(它驱动风扇)的功耗,但 100 mA 方波电机
[电源管理]
抗电磁干扰的PWM风扇<font color='red'>控制器</font>原理及应用
PFC控制器NCL2801提供更高能效和更优的THD
安森美半导体最新的NCL2801电流模式临界导通型 (CrM)功率因数校正(PFC) 升压控制器IC,适用于模拟/脉宽调制(PWM)可调光LED驱动器。该器件的市场优势是优化的总谐波失真(THD)性能,同时在宽负载条件下最大化系统能效,在启动和动态负载期间还具备更小的过冲/下冲,线性电平检测实现最优化的环路增益控制,集成误差放大器易于环路设计和降低功耗。采用SOIC-8的小外形封装,并集成一系列保护特性,提供较高的系统可靠性。此外,多个Vcc启动门限提高设计灵活性。 NCL2801的关键特性 NCL2801的关键特性包括:基于创新的谷底计数频率反走(Valley Count Frequency Fold-back, or
[电源管理]
PFC<font color='red'>控制器</font>NCL2801提供更高能效和更优的THD
产业分析:国产工业机器人核心控制器技术需恶补
控制器是机器人的大脑,它根据指令以及传感信息控制机器人来完成一定的动作或作业任务,控制器的好坏直接决定了机器人性能的优劣。从成本构成来看,控制系统占了机器人成本10%的比例,而控制器则是整个控制系统的核心。控制器是机器人最为关键的零部件之一,机器人控制器将受惠工业机器人的爆发式增长。    1.中国工业机器人发展元年 工业机器人是机器人发展最快的一个分支, 随着从中央到地方相关扶持政策的陆续出台,中国工业机器人产业受到了前所未有的热捧;在二级市场上,受产业发展利好政策影响,机器人板块股票也一路走俏。2014年可谓是中国工业机器人的发展元年。    人口红利消失、用工成本上升,劳动人口供给减少以及政策的大力扶持是推动中国工
[嵌入式]
基于FPGA的UART扩展总线设备逻辑设计
1 引言 在嵌入式领域,由于UART 具有操作简单、工作可靠、抗干扰强、传输距离远(组成 485 网络可以传输1,200 米以上),设计人员普遍认为UART 是从CPU 或微控制器向系统的其他部分传输数据的最佳方式,因此它们被大量地应用在工业、通信和家电控制等嵌入式领 域。而通常处理器都会自带一个UART 串口,实际应用中一个串口往往不够用,需要进行 UART 串口扩展。而本文在分析了片内总线技术和UART 的工作原理的基础上了实现UART 总线设备的设计,使主控芯片可以控制4~6 个外围设备。 本文中的嵌入式系统由AT91ARM9200 处理器、Linux 操作系统和ALTERA 公司的 ACEX 系列的EP1K 所组成。
[单片机]
埃夫特100万欧元与ROBOX签署技术协议,誓要完成控制器软件自主化布局
今日,埃夫特发布公告,公司拟与参股公司ROBOX签署《技术许可协议》,ROBOX将其拥有的“RTM和OB源代码及文件”“RPE和RPL源代码及文件”“RTE源代码及文件”转移并授权公司使用,并与公司共同开发技术平台,公司将支付ROBOX 100万欧元(约为695.5万人民币)的技术服务费,以及在10年内基于机器人整机产量支付ROBOX特许权使用费。 同时,埃夫特将以现金200万欧元(约为1390.9万人民币)收购ROBOX 9%的股权,分别来自Marzio Montorsi、Lea Montorsi各自持有的ROBOX 4.5%的股权。 对于本次协议,埃夫特表示,实现控制器这一核心部件自主化生产,是公司重要的战略目标和发展规划
[机器人]
埃夫特100万欧元与ROBOX签署技术协议,誓要完成<font color='red'>控制器</font>软件自主化布局
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved