历史上的今天
返回首页

历史上的今天

今天是:2025年03月25日(星期二)

正在发生

2018年03月25日 | 基于Verilog HDL的CAN总线控制器设计

2018-03-25 来源:eefocus

    在此利用Verilog HDL设计了一款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所示。

a.JPG

    1.2.2 本文中控制器的功能结构

    本文设计的CAN控制器参照SJA1000控制器的结构,功能基本框架包含如图2所示的3个功能模块。b.JPG

    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所示。

c.JPG

    图中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所示。d.JPG

    下面简单介绍CAN_Core模块中的位流处理器、位时序逻辑。
    位流处理器是CAN总线控制器中控制数据流的发生器。它还执行总线上的错误检测、仲裁、填充和错误处理等功能。主要有接收模块、发送模块、错误管理模块、CRC校验、验收滤波、FIFO等6个模块组成,如图6所示。其中CRC校验、FIFO、验收滤波在所执行的项目中已经有他人设计完成。

f.JPG

    位时序逻辑的设计包括位定时设计、采样点设计、位同步设计3部分。下面以定位时为例介绍其设计。
    位定时设计  在位定时设计中采用了一个有3个状态的状态机。3个状态分别对应的是同步段和相位缓冲段1以及相位缓冲段2。传播段占用的时间短,在控制上没有特别的意义,仅作为物理层的传播延时,所以没有设计进状态机,位定时部分的状态机设计如图7所示。

f.JPG

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

    2 测试验证

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

g.JPG


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

h.JPG

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

    3 结语

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


推荐阅读

史海拾趣

得倍(DBIC)公司的发展小趣事

在技术创新的基础上,倍(DBIC)公司积极拓展市场,加强品牌建设。公司制定了详细的市场营销策略,针对不同区域和行业进行精准推广。同时,倍(DBIC)公司还积极参与国际展会和论坛,与全球合作伙伴建立联系。这些努力使倍(DBIC)公司的品牌知名度不断提高,市场份额也逐步扩大。

遨格芯微(AGM)公司的发展小趣事

除了在智能手机和IoT市场取得突破外,AGM还深耕工业和消费类市场。公司自主研发并量产的可编程逻辑SoC产品系列广泛应用于工业和消费类市场,满足了客户对高容积率、低成本、高品质的市场需求。通过不断的技术创新和产品优化,AGM在工业和消费类市场逐渐形成了自己的竞争优势,并赢得了越来越多客户的认可和信赖。

Entegris公司的发展小趣事

在晶圆盒传输业务上,Entegris与台湾的家登精密之间发生了一场长达数年的专利侵权诉讼。Entegris最终获得了胜诉,家登被要求赔偿超过3,000万美元。这一胜利不仅保护了Entegris的知识产权,也进一步巩固了其在半导体材料市场的地位。

意普(ESPE)公司的发展小趣事

随着市场需求的不断增长,意普(ESPE)公司开始拓展产品线,推出了包括通用光栅、反射板等一系列光电保护产品。同时,公司注重产品创新,不断引进国外先进技术,并结合国内市场需求进行改进,成功推出了多款具有竞争力的新产品。这些产品广泛应用于机械加工、汽车制造等行业,有效提升了客户的安全生产水平。

博众电气(BZCN)公司的发展小趣事

博众电气深知人才是企业发展的核心力量。因此,公司高度重视人才培养和团队建设。通过引进优秀人才、建立完善的培训体系、营造良好的企业文化等措施,博众电气成功打造了一支高素质、专业化的团队。这支团队不仅为公司的发展提供了有力的人才保障,还为公司不断创新和进步注入了源源不断的动力。

这五个故事只是博众电气发展起来的冰山一角。在电子行业的激烈竞争中,博众电气凭借技术突破、质量管理体系建设、环保理念、国际化战略以及人才培养与团队建设等举措,不断壮大自身实力,逐步成为行业内的佼佼者。未来,博众电气将继续秉持创新、质量、环保、国际化和人才的理念,不断追求卓越,为实现更加辉煌的成就而努力拼搏。

DeLorme公司的发展小趣事

DeLorme公司成立于20世纪80年代初,当时正值全球定位系统(GPS)技术快速发展的时期。创始人XXX和XXX看到了GPS技术在户外导航领域的巨大潜力,于是决定投身这一领域。然而,创业初期他们面临了资金短缺、技术瓶颈和市场接受度低等多重挑战。他们通过不断的技术创新、优化产品设计和积极的市场推广,逐渐赢得了消费者的认可,并在行业内树立了良好的口碑。

问答坊 | AI 解惑

飞电容:模拟信号隔离方法之一

问题的由来 在电子工程专辑的论坛里,有个网友提问:如何解决4-20MA信号的隔离问题。我立刻想到了20多年前解剖的一个美国产品的过程,感觉在这里写个帖子,可能会对大家有启发。 这里要声明的是本文所论述的内容应该算是转述,有关“飞电容”概念的提 ...…

查看全部问答>

新生代工程师的技术人生(一)

一、成长--从摇滚青年到设计精英 9月的一天,在一场技术研讨会上,A君一边老到地翻看着Demo板,一边询问着一些技术细节,俨然一个技术高手,可是谁能想到,3年前,他曾是一个痴迷音乐的摇滚青年。 那是2003年的时候,他经常穿着 ...…

查看全部问答>

FPGA专用术语汇总

FPGA专用术语汇总…

查看全部问答>

请教触摸屏触摸不准的问题

我用的SAM9263Ek的开发板,触摸屏控制芯片是ads7843,Linux内核版本是2.6.20,前面接的一个320×240的屏,驱动正常,现在换成了一个800×600的屏,触摸的坐标不准,打印后发现一直在(65,90)附件。请问有没有哪位大侠知道原因,请指点一下。谢谢 ...…

查看全部问答>

光纤通信中的曼彻斯特解码问题。

我在光纤的接收端做了一个曼彻斯特解码模块(Verilog写的),没有任何校验算法加入。误码率很高,基本上是1%左右,哪位做过这东西,帮忙解释解释。谢谢…

查看全部问答>

关于驱动2次安装问题

按照网上各种网址上的安装介绍,装驱动连续安装2次就行了,可是我使用厂家给的驱动只能装1次  第二次装不了。。。得到截图如下,悲催的  怎么解决啊 USB型的430仿真器…

查看全部问答>

RS485总线隔离模块MRT485DLT在STM32F103VET系统中的使用

注意:在低功耗系统中需要主要在进入低功耗状态时,需要将MCU的串口设置为高阻态状态,以避免I/O口泄露的电流造成的不必要功耗。 点击这里下载PDF文档 http://www.miractech.com/soft/STM32_MRT485DLT.pdf 点击这里下载Protel99se格式文件 ht ...…

查看全部问答>

无线通信

新手求教,要求无线传输距离在200-1000m,请问用什么无线芯片或者模块号呢…

查看全部问答>

出一块FPGA开发板

本帖最后由 2638823746 于 2014-6-11 11:19 编辑 出一块zedboad 开发板,基本全新,包装在,所有的配件也在,光盘也在,基本是全新的,需要的联系我的QQ 2638823746,另外送一本书,嵌入式系统软硬件协同设计实战指南:基于Xilinx Zynq(附光盘) 照 ...…

查看全部问答>

【视频】演示在Altera SoC上面的Android应用程序

$(\'flv_Eoz\').innerHTML=(AC_FL_RunContent(\'width\', \'500\', \'height\', \'375\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\', \'http://player.youku.com/player.php/sid/XNjA1ODg4MDc2/v.swf\', \'qu ...…

查看全部问答>