一种基于FPGA的ISA总线转CAN总线设计与实现.docVIP

一种基于FPGA的ISA总线转CAN总线设计与实现.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种基于FPGA的ISA总线转CAN总线设计与实现.doc

一种基于FPGA的ISA总线转CAN总线设计与实现 【摘 要】 本设计采用FPGA芯片及其技术实现了智能CAN通讯卡的设计和开发。本设计主要包括:ISA总线、主控制器模块、缓冲区模块、CAN协议控制器模块、以及CAN总线驱动器模块。本设计已在实际工程中得到运用。实践结果表明数据传输稳定,可靠性高。 【关键词】 CAN总线 FPGA VHDL 循环存储 ISA(Industry Standard Architecture,工业标准体系结构)总线是Intel/IEEE/和EISA在62线PC总线基础上经过扩展36根线而开发出的一种系统总线。ISA具有16位数据线,最高工作频率为8MHz,数据传输速率达16Mb/s。24根地址线,可寻址16Mb。使用ISA总线的外部设备不需要具有非常快的吞吐速率。 CAN(Controller Area Network)即控制器局域网络,是一种全数字化、多主和双向的现场总线。CAN总线数据通信具有很高的可靠性、实时性和灵活性,越来越广泛地应用于各种工业现场。 随着计算机应用技术的迅速发展,对高性能/高效率板卡的需求将会越来越大,微机中低性能的ISA总线必将被淘汰。但是在现实应用中仍有数量众多的支持ISA总线的板卡在使用。因此,CAN到ISA总线桥在一定时期内将扮演一种特殊的角色。 1 系统总体设计(图1) 2 工作原理 CAN模块共由四个部分组成:主控制器模块、缓冲区模块、CAN协议控制器模块、以及CAN总线驱动器。见图1。 2.1 主控制器 主控制器是整个模块的控制中心,通过访问CAN协议控制器来实现对CAN总线的访问;同时控制缓冲区,减少数据的丢失率、增加CPU的工作效率。 2.2 数据缓冲区 为了增加模块的数据吞吐量,减少数据丢失率,同时减少CPU的工作负担,在设计时增加了数据接收和发送缓冲器。该缓冲器应该同时满足CPU对其的读写,及CAN协议控制器对其的读写。 双口RAM有时会发生共享冲突问题。因此,将双口RAM作为缓冲区使用,利用FPGA控制程序,它不仅保证了数据的先后次序,也保证了数据流通的速度。 2.3 CAN协议控制器 CAN协议控制器实现CAN协议的数据链路层和物理层功能,对外具有与主控制器和总线接收器的接口。通过对其编程,主控制器可以设置它的工作方式,控制它的工作状态,进行数据的发送和接收,把应用层建立在它的基础之上。 2.4 CAN总线收发器 CAN控制器SJA1000并不能直接与总线连接,还要通过总线收发器才能接于总线上。CAN总线收发器提供CAN协议控制器与物理总线的接口,总线收发器的性能决定了总线接口、总线终端、总线长度和节点数,是影响整个总线网络通信性能的关键因素之一。 3 程序设计 程序可分为三个部分:(1)控制双口RAM。(2)控制SJA1000。(3)写SJA1000命令寄存器程序流程如图2所示。 由流程图可看出在发送CAN总线数据帧时,必须先从双口RAM中读出数据,所以需使双口RAM的片选信号、读信号有效:同时根据前两个字节中的信息获取数据帧信息;然后将读取的数据依次写入SJA1000发送缓冲区;最后写SJA1000命令寄存器,通知SJA1000可以发送CAN数据。 4 读写CAN数据 4.1 写CAN通道数据 如果模块未向CPU发中断以申明某路8KRAM已满,则CPU可以将数据写入该通道。每次最多只能写10个数据。CPU可以根据数据长度来写数据。当需要发送的数据写完后,CPU必须发写结束命令以终止写操作。这样可以节约CPU的操作时间。写数据过程为(以下以写第一通道为例):(1)查询数据状态寄存器(基址+2),看1通道是否能写。(2)向通道1命令口(基址+00)写入写操作开始命令(0x01)。(3)向通道1数据口(基址+01)连续写入1帧的数据(小于等于10字节)。(4)向通道1命令口(基址+00)写入写操作结束命令(0x00)。(5)其他通道的写操作与此类同。 4.2 读CAN通道数据 CPU可以采用扫描方式查询各个通道的状态,当某个通道内有数据时CPU可读取这些数据。CPU可以根据ID1和ID2的数据长度来读取数据。当读数据结束后,CPU必须发读结束命令以告诉CAN终止读操作。这样CPU可以尽早结束读操作,节约CPU的CAN操作时间。读数据过程为(以下以写第二通道为例):(1)查询数据状态寄存器(基址+10),看2通道是否有数据,如果没有数据结束操作,如果有数据则向通道2命令口(基址+04),写入读操作开始命令(0x02)。(2)从通道2数据口(基址+05),连续的读出1帧的数据(小于等于10字节),读完指定长度的数据后,向通道2命令口(基址+04),写入读操作结束命令(0x00)。 参考文献 [1]徐伟业.基于FPGA的CPU核及其虚拟平台的设计与实现[D

文档评论(0)

fa159yd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档