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

发布者:bullfish最新更新时间:2014-03-20 来源: elecfans关键字:FPGA  CAN总线  通信节点 手机看文章 扫描二维码
随时随地手机看文章

  在项目的特殊环境要求下, 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、

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

图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所示。[page]

图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。

图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作为核心控制单元, 与传统的单片机设计相比, 更加灵活并且扩展性更强。

关键字:FPGA  CAN总线  通信节点 引用地址:FPGA实现CAN总线通信节点设计

上一篇:CAN适配卡发电机状态监测仪中的设计方案
下一篇:使用MSO2000和DPO2000调试串行总线

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

教你设计出安全的CAN总线拓扑
摘要:随着CAN总线的应用越来越广泛,工程师在面对各种不同工况下,如何选择合适的网络拓扑方式就变成了一个让人头疼的问题。这里介绍主流的几种总线拓扑方式,可以帮您完成快速了解进行选择。 一、直线型拓扑 图1 直线型拓扑 直线型拓扑也叫总线型拓扑,如图1所示,所有的节点都接到同一总线上,总线上任意节点发送信息,其他节点都能正常接收。 它的优势包括: ● 布线施工简单; ● 阻抗匹配固定规则(首尾各1个120欧电阻匹配); ● 接线操作简单方便; ● 由于这些优势,在很多领域里都获得了广泛应用,可以满足大多数领域的应用要求,但是随着行业应用的扩展,逐渐发现了总线型拓扑的缺点,比如: ● 如果节点数较多,总线线
[模拟电子]
教你设计出安全的<font color='red'>CAN总线</font>拓扑
高云半导体设立北美销售办事处加速拓展美洲业务
  美国加州圣何塞,2018年5月21日,国内领先的低功耗、小封装和性能驱动的现场可编程逻辑器件( FPGA )供应商广东 高云半导体 科技股份有限公司(如下简称“ 高云半导体 ”),近日宣布在硅谷设立北美销售办事处,以顺应北美地区在消费电子、通信、工业、汽车电子和医疗领域对 FPGA 持续快速增长的市场需求,加速 高云半导体 在美洲地区的市场拓展与销售增长。下面就随嵌入式小编一起来了解一下相关内容吧。   此外,高云半导体还与Fahrner-Miller Associates签署协议,这家具有代表性的电子制造商将推进高云半导体在加利福尼亚北部和内华达北部 FPGA 产品线的营销。此举将有助于提升高云半导体在这一全球领先的技术开
[嵌入式]
莱迪思半导体和WEIKENG INDUSTRIAL签署扩展代理协议
美国俄勒冈州希尔斯波罗市 - 2012 年 1 月 30 日 - 莱迪思半导体公司(NASDAQ: LSCC)和 Weikeng Industrial Co., Ltd 今日宣布签署了 他 们已经签署了一项扩展代理协议。根据协议条款,莱迪思半导体公司授权 Weikeng Technology Pte Ltd 公司在东南亚(印度尼西亚、马来西亚、菲律宾、新加坡、泰国和越南)和印度销售莱迪思所有系列创新的低功耗、低成本FPGA、PLD和可编程电源管理解决方案。 “ 扩展 Weikeng 在 东南亚和印度地区的代理是一个重要的里程碑,标志着 Lattice-Weikeng 的合作 关系达到了新的高度”, Weiken
[半导体设计/制造]
简述DDS原理及其基于FPGA的实现
DDS同 DSP (数字信号处理)一样,是一项关键的数字化技术。DDS是直接数字式 频率合成器 (Direct Digital Synthesizer)的英文缩写。与传统的频率合成器相比,DDS具有低成本、低功耗、高分辨率和快速转换时间等优点,广泛使用在电信与 电子 仪器 领域,是实现设备全数字化的一个关键技术。在各行各业的测试应用中, 信号源 扮演着极为重要的作用。但信号源具有许多不同的类型,不同类型的信号源在功能和特性上各不相同,分别适用于许多不同的应用。目前,最常见的信号源类型包括任意波形 发生器 , 函数发生器 ,RF信号源,以及基本的模拟 输出模块 。信号源中采用DDS技术在当前的测试测量行业已经逐渐称为一种主流的做法
[嵌入式]
简述DDS原理及其基于<font color='red'>FPGA</font>的实现
基于CAN总线的分布式多电机同步控制系统
多台异步电机协调控制在工业生产中占有重要地位。目前实现方法主要有无速度传感型和有速度传感型两类变频控制方式。无速度传感型实现价格低,但精度较差。带速度反馈型精度高,但设置复杂且价格高。基于Lenze9326矢量型伺服变频器(带速度反馈)组控制系统采用CAN总线网络结构,现场控制单元集中现场总线、调节器的功能优势,控制功能强大且具有极高的可靠性,实现了生产线各段运行线速度误差小,在加、减速过程中,能动态同步的控制目标。本方案对于化工生产线控制系统的设计及研究都具有较高的参考价值。 系统调速方案 本方案应用于工艺要求高,传送带的运行速度误差小,生产线工艺连续性强,自动化程度高,对运行可:靠性,速度协调性与稳定性等都有比较高要求的场所。
[嵌入式]
一种并行存储器系统的FPGA实现
   摘 要: 介绍一种可在现代小卫星上应用的高(低)位交叉并行存储系统,并给出了该存储系统控制器的FPGA实现。该系统的应用将极大地增强星上计算机的数据通信和图象处理的能力,并提高整个系统的可靠性。     关键词: 现代小卫星 星载计算机 并行存储系统 FPGA 硬件描述语言     现代小卫星,通常指80年代以后发展起来的小卫星。它建立在微电子技术,计算机(包括软件)、微型光学和机械、轻型复合材料及高精机械加工的基础上,是航天高技术发展的产物。虽然现代小卫星的体积和重量很小,成本和风险都很低,但由于选用了高新技术,整个小卫星的容量和性能,即小卫星的功能密度是很高的。而且小卫星组成星座可拓宽全新的应用领
[缓冲存储]
基于SOPC技术的软件无线电系统研究
  自从MITRE公司的Jeo MITOLA于1992年5月在美国电信系统会议上首次明确提出了软件无线电的概念 以来,经过十多年的发展,无论在理论研究方面还是实践应用方面,软件无线电都取得了长足的进展。软件无线电 的中心思想就是构造一个具有开放性、标准化、模块化的通用硬件平台,通过软件的重构或升级来实现灵活多变的通信体制和通信功能,并尽可能地使宽带A/D和D/A转换器靠近射频天线,以研制出具有高度灵活性和开放性的新一代无线通信系统。   在软件无线电的早期实现方案中多是用DSP和ASIC来完成。然而这种方案有2个突出的缺点:一是系统的速度很难满足高速动态实时数字信号处理的要求;二是系统的体积大、功耗高。这2个突出缺点制约了软件无
[嵌入式]
基于SOPC技术的软件无线电系统研究
基于CAN总线控制器82527实现智能节点的软硬件电路设计
引言 CAN(Controller Area Network,控制局域网)属于工业现场总线,是德国Bosch公司20世纪80年代初作为解决现代汽车中众多的控制与测试仪器间的数据交换而开发的一种通信协议。1993年11月,ISO正式颁布了高速通信控制局域网(CAN)的国际标准(ISO11898)。CAN总线系统中现场数据的采集由传感器完成,目前,带有CAN总线接口的传感器种类还不多,价格也较贵。本文给出一种由8051单片机和82527独立CAN总线控制器为核心构成的智能节点电路,在普通传感器基础上形成可接收8路模拟量输入和智能传感器节点。 1 、独立CAN总线控制器82527介绍 82527是Intel公司生产的独立CAN总线控
[单片机]
基于<font color='red'>CAN总线</font>控制器82527实现智能<font color='red'>节点</font>的软硬件电路设计
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

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