当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]在项目的特殊环境要求下, CAN总线通信要求使用FPGA作为系统中的主控制器, 较之传统设计使用的单片机, FPGA能够在速度和体积上有更好的适应性。FPGA 一方面减少了电路板

在项目的特殊环境要求下, CAN总线通信要求使用FPGA作为系统中的主控制器, 较之传统设计使用的单片机, FPGA能够在速度和体积上有更好的适应性。FPGA 一方面减少了电路板的复杂程度, 缩短了实现周期; 另一方面, 其丰富的资源、超高的性能和灵活的可编程性, 提高了整个设备的可靠性, 大大增强了电路板设计的灵活性和可扩展性。文中通过设计FPGA 的接口电路, 并利用Verilog语言来编程实现CAN节点之间的通信功能。

1 CAN 接口硬件设计

1.1 CAN 节点的系统构成

一般来说, 每个CAN 模块能够被分成3 个不同的功能块,其结构如图1所示。CAN总线收发器提供CAN协议控制器与物理总线之间的接口, 控制从CAN 控制器到总线物理层或相反的逻辑电平信号。它的性能决定了总线接口、总线终端、总线长度和节点数, 是影响整个总线网络通信性能的关键因素之一。CAN 控制器执行在CAN 规范里规定的完整的CAN 协议, 它通常用于报文缓冲和验收滤波, 对外具有与主控制器和总线收发器的接口。主控制器负责执行应用的功能, 例如控制命令的发送、读传感器和处理人机接口等。它通过对CAN 控制器进行编程, 来控制CAN 总线的工作方式和工作状态, 以及进行数据的发送和接收。

 


图1 CAN 模块系统构成

1.2 接口电路设计

接口电路如图2所示。SJA1000的AD0~ AD7地址数据复用端口、ALE地址锁存端口、RD、WR、片选CS端口均通过转换芯片与FPGA的I /O口相连。SJA1000 的中断输出信号INT连入FPGA, 使CAN通信可以采用中断或查询方式。RST 端口的电路实现SJA1000的上电自动复位功能。MODE 模式选择端接+ 5 V, 设置SJA1000控制器为Intel模式。SJA1000 的时钟晶振采用16MH z, 频率调整电容取15 pF. R16为终端电阻,设计中取120Ω。 CAN 驱动器PCA82C250 的RS脚为工作模式选择位, 接地工作于高速模式, 接高工作于待机模式。系统通过电阻R14将芯片设定于斜率控制模式, 电阻值为47 kΩ , 这时CAN 总线应工作于低速模式, 可提高CAN 总线抵抗射频干扰的能力。在这种情况下, 可直接使用非屏蔽双绞线作为总线。

设计中有2点需要特别注意: 第一点是FPGA 并没有与SJA1000直接相连。这是因为对于设计选取的FPGAXCV600, 其接口电平不支持5 V TTL的I/O 标准, 如果与5 VI/O标准的SJA1000直接相连, 将可能导致FPGA 管脚电流过大, 造成器件锁死或者烧毁。为此采用双向总线收发器74ALVC164245, 把SJA1000的5 V TTL电平信号AD0 ~ AD7、

 

FPGA实现CAN总线通信节点设计 " />

、ALE 转换成3.3 V I/O 标准信号, 连接到FPGA 的引脚上。74ALVC164245 有2个8位电平转换端口, 可独立操作。其中电平信号AD0~ AD7必须按顺序连接在总线收发器的一个8位端口上, 不可以分开。第二点是: 在CAN 控制器与收发器之间不采用光电隔离。这是因为增加光电隔离虽然能增强系统的抗干扰能力, 但也会增加CAN 总线有效回路信号的传输延迟时间, 导致通信速率或距离减少。82C250等型号的CAN 收发器本身具备瞬间抗干扰、降低射频干扰( RFI)以及实现热防护的能力, 它具有的电流限制电路还提供了对总线的进一步保护功能。如果现场传输距离近、电磁干扰小, 可以不采用光电隔离, 以使系统达到最大的通信速率或距离。


图2 接口电路

2 系统软件设计

2.1 设计流程

FPGA对CAN 总线通讯模块的控制主要包括3 部分: CAN总线节点初始化、报文发送和报文接收。由于通讯模块对接收数据的实时性要求并不是很高, 因此CAN 总线的数据接收和发送采用查询方式。

2.1.1 初始化过程

系统上电后首先对82C250 和S JA1000 进行初始化, 以确定工作主频、波特率、输出特性等。SJA1000的初始化只有在复位模式下才可以进行, 初始化主要包括工作方式的设置、验收滤波方式的设置、验收屏蔽寄存器( AMR )和验收代码寄存器( ACR)的设置、波特率参数设置和中断允许寄存器( IER) 的设置等。在完成SJA1000 的初始化设置以后, SJA1000 就可以回到工作状态, 进行正常的通信任务。设计中使SJA1000工作在PeliCan的方式下。

2.1.2 发送过程

发送时, 用户只需将待发送的数据按特定的格式组合成一帧报文, 送入SJA1000发送缓冲区中, 然后启动SJA1000发送即可。当然, 在往SJA1000 发送缓存区送报文之前, 必须先判断发送缓冲区是否锁定, 如果锁定则等待; 判断上次发送是否完成, 未完成则等待发送完成。FPGA 通过SJA1000 向CAN 总线进行数据发送的流程图如图3所示。

 


图3 发送数据流程图

2.1.3 接收过程

接收子程序负责节点报文的接收以及其他情况处理。接收子程序比发送子程序要复杂一些, 因为在处理接收报文的过程中, 同时要对诸如总线关闭、错误报警、接收溢出等情况进行处理。只有在总线正常, 没有错误报警, 并且接收缓冲区中有新报文, 才开始进行数据接收操作。对接收缓冲区的数据读取完毕后释放CAN接收缓冲区。FPGA 通过SJA1000接收CAN总线上的数据流程图如图4所示。


图4 接收数据流程图

2.2 FPGA 顶层模块设计

FPGA顶层的模块设计如图5 所示。其中c lkdiv 模块是将输入的50MH z时钟clock十分频后作为模块基准时钟。SJACTROL模块是控制总线通信的主模块, 而R&W 模块则是根据主模块的信号生成SJA1000所需要的读写时序信号。SJACTROL模块通过start和isw r两个信号通知R&W 模块是否要进行读或写总线操作。若是写操作, 则将地址和数据通过Addrout和Dataout传递给R&W, R&W 将负责把数据准确地送到S JA1000的数据地址复用总线ADDR, 并驱动SJA1000接收数据, 在写操作完成后发送w riteover信号通知SJACTROL写操作完成。读操作时R&W根据SJACTOL送来的地址, 从SJA1000的数据总线上读取数据, 并将得到的数据通过Datasave 总线返回给SJACTROL。[!--empirenews.page--]

 


图5 顶层模块设计

SJACTROL的状态机通过5个状态的转换来实现控制: 空闲状态、初始化状态、查询状态、读状态、写状态。R&W 则是按照SJA1000的芯片数据手册进行时序逻辑设计。在编写模块时, 需注意双向总线的编写技巧。双向口最好在顶层定义, 否则模块综合的时候容易出错。

3仿真结果

FPGA中利用Verilog 编程产生SJA1000的片选信号CS, 地址锁存信号ALE, 读写信号RD、WR.这些控制信号共同驱动SJA1000进行数据接收和发送。设计选取的是v irtex系列的芯片, 逻辑开发在ISE 平台上进行。在FPGA 的调试阶段, 使用xilinx的应用软件 ChipScope pro( 在线逻辑分析仪) 来在线观察FPGA设计内部信号的波形, 它比传统的逻辑分析仪更方便。图6为在线进行数据传送接收时的实际波形。

 


图6SJA1000接收和发送数据的时序仿真

4 结束语

实现了CAN 总线的通信功能, 系统工作状态良好。实践证明CAN 通信节点采用FPGA作为核心控制单元, 与传统的单片机设计相比, 更加灵活并且扩展性更强。

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

开放、透明、共享是区块链网络的本质特性,是区块链技术爱好者们、社区参与者们最为重视的因素,也是帮助一个区块链项目成长的动力源泉。节点,通过参与区块生产、社区共建、网络治理等方式在区块链网络走向成

关键字: 区块链 节点设计

关注、星标公众号,不错过精彩内容 素材来源:CiA 编辑整理:strongerHuang CAN总线是德国BOSCH公司从80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议。 当时应...

关键字: 宝马 汽车 通信网络 CAN总线通信

引 言 在图像处理系统中常需要对图像进行预处理。由于图像处理的数据量大,对于实时性要求高的系统, 采用软件实现通常难以满足实时性的要求。Altera的QuartusⅡ作为一种可编程逻辑的设计环境,由于其强大的设计能力和直...

关键字: 拉普拉斯 FPGA实现 模板 BSP

引 言 在图像处理系统中常需要对图像进行预处理。由于图像处理的数据量大,对于实时性要求高的系统, 采用软件实现通常难以满足实时性的要求。Altera的QuartusⅡ作为一种可编程逻辑的设计环境,由于其强大的设计能力和直...

关键字: 拉普拉斯 FPGA实现 模板 BSP

I2S总线是一种用于音频设备间传输数据的串行总线标准,该总线采用独立的时钟线与数据线,避免了时差诱发的失真。随着多媒体的广泛应用,该总线已被应用于越来越多的数字系统

关键字: 接口转换 音频 转换电路 FPGA实现

摘要 提出了一种基于FPGA实现的PCI-I2S音频系统方法。通过在FPGA中将PCI软核、FIFO以及设计的接口电路等相结合,在FPGA上实现了 PCI、I2C、I2S等多种总线,并且结合音频解

关键字: PCI 接口转换 转换电路 FPGA实现

现代飞机座舱显示技术的发展日新月异,需要显示各种传感器信息的数据已经达到海量规模。飞行员在不同飞行时段获得的信息也越来越多,为了使飞行员能够在某特定的飞行时段认

关键字: 高清视频 视频处理 机载 FPGA实现

汽车CAN总线设计规范对于CAN节点的波特率容忍度有着严格的规定,每个节点都必须具备一定的波特率容忍度,才能使节点组合到一起后,实现较好的通信性能,不至于很容易就出现

关键字: 通信节点 CAN通信 SCOPE BSP

随着软件无线电理论的日趋成熟,软件无线电技术越来越多地应用到军用或民用通信系统中。其中,数字下变频技术(DDC)是软件无线电中的核心技术之一。数字下变频工作在模拟前端

关键字: 变频器 宽带 下变频 FPGA实现

汽车CAN总线设计规范对于CAN节点的波特率容忍度有着严格的规定,每个节点都必须具备一定的波特率容忍度,才能使节点组合到一起后,实现较好的通信性能,不至于很容易就出现总线通讯不正常,通讯错误增加

关键字: CAN通信 通信节点 SCOPE 节点
关闭
关闭