0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于QuartusⅡ和控制器实现总线通讯板的设计

电子设计 来源:现代电子技术 作者:徐军涛,许化龙 2021-06-08 15:43 次阅读

PC/104嵌入式控制PC出现于20世纪80年代末,并于1992年形成IEEEP966.1标准。它一方面继承了PC的所有资源,另一方面又对PC的各个方面做了优化设计,使其与IBM PC完全兼容,并具有体积小,功耗低,工作温度宽,可靠性高等特点。采用了独特的“自栈式”总线连接、模块化结构,使用起来灵活方便;采用面向对象的硬件设计方法,使得在PC/104标准上开发的扩展模块具有更强的通用性和更长的生命期;它以其优良的品质、高可靠性及模块化,广泛应用于工业控制、航空航天、军事、医疗、消防设备、智能仪器仪表、导航、通讯、数控、自动化生产设备、便携式计算机等领域。

CAN(Controller Area Network)总线是一种有效支持分布控制或实时控制的串行通信网络,采用多主协议,废除了传统的站地址编码,而采用对通信数据块进行编码的方法,使网络内节点个数在理论上不受限制。它具有总线仲裁、错误检测、自动重发等功能。由于采用了许多新技术及独特的设计,CAN总线具有高实时性、卓越性能、高可靠性、能独特灵活设汁和低廉价格,已广泛应用于工业现场、控制、智能大厦、小区安防、交通工具、医疗仪器、环境监控等众多领域。目前,它已被公认为是几种最有前途的现场总线之一。随着科技的发展,同一系统应用多种总线技术已经成为一种趋势。本设计利用FPGA完成PC/104总线和CAN总线之间的相互通讯,将两总线相结合,优势互补,使两总线有更大应用价值和更广阔的使用前景。

1 硬件设计

1.1 系统硬件结构

本设计采用PC/104模板形式,具有很强的方便性和可扩展性,其系统的硬件结构如图1所示。

由于PC/104总线采用的是地址数据总线分离的总线结构,而CAN总线协议控制器SJA1000T采用的是地址数据总线分时复用的总线结构,因此系统使用FPGA器件EP20K100实现总线转换和时序逻辑控制转换。该通讯板采用I/O映射方式,其内部寄存器地址为280H~2BFH。为了增强系统的抗干扰能力,在控制器SJA1000T与收发器82C250之间接入光电耦合器6N137。光耦6N137的上升时间典型值为30 ns,隔离电压为3 000 V,其支持最大频率值超过30 MHz。

1.2 FPGA设计

QuartusⅡ是Altera公司在21世纪初推出的FP-GA/CPLD开发环境,是Altera前一代FPGA/CPLD集成开发环境MAx+PlusⅡ的更新换代产品,其功能强大,界面友好,使用便捷。QuartusⅡ软件集成了Al-tera的FPGA/CPLD开发流程中所涉及的所有工具和第三方软件接口。QuartusⅡ软件的开发流程如图2所示。

采用原理图输入和硬件描述语言相结合的方式,进行编译后写人器件中;同时可在线更改写入内容,修改和调试简单易行。FPGA的设计主要由两部分组成:第一部分实现时序逻辑控制信号的转换,第二部分实现地址译码和地址数据线的复用。QuartusⅡ图表文件及器件管脚如图3所示。

由于PC/104的地址总线和数据总线是各自独立的,SJA1000T的地址总线和数据总线是分时复用的,所以它们之间不能直接相连,必须通过时序逻辑控制,再配合软件来实现读/写操作。对SJA1000T的操作方法是:首先,对地址为CAN首地址+0(A2A1A0=000)的端口进行写操作(WR为低,有效),CANALE为高,有效,此时复用的地址、数据总线上的数据被视为地址信号,进入SJA1000T内部锁存器;然后,对地址为cAN首地址+1(A2A1A0=001)的端口进行读或写操作(RD/WR为低,有效),CANALE为低,上述中的地址信号已被锁存,此时复用的地址、数据总线上的数据被视为数据信号,这样即可完成对SJA1000T的各个寄存器和缓冲区的读或写操作。

1.3 硬件电路测试

主要检测硬件结构及电路板设计是否正确。建立一个简单的通讯连接,将两个通讯板连接进行测试,用通讯板A作为输出,通讯板B作为输入。编程通过通讯板A发送数据,内容为8个随机数,检测通讯板B接收数据,如果不同则作加1计数。反之将通讯板B作为输出,通讯板A作为输入,进行相同测试。测试200万次循环未见异常。

2 软件设计

2.1 软件流程图

在该通讯板的设计中,控制部分的核心采用了PC/104嵌入式计算机系统。由于PC/104嵌入式计算机系统几乎具有和一般的PC机一样的强大功能,所以该通讯板的开发是在和系统模块栈接在一起后,直接在嵌入式计算机上进行的。这些工作都是采用C语言进行编程设计的。采用C语言的优点在于其快速性、高效性。在利用嵌入式计算机强大资源的条件下,C语言能满足模块的实时性要求。在系统软件的设计中,采用了结构化、模块化的设计方法,满足了仪器功能的要求。本接口系统的软件任务基本为在CAN协议芯片SJA1000T有中断发生时,根据SJA1000T的中断寄存器的内容完成相应的操作(如发送、接收数据帧等)。其流程图如图4所示。

系统设计中要进行接口驱动程序的设计,为保证操作系统的稳定和安全,驱动程序必须按一定的规范来编写。本系统的驱动程序主要考虑以下内容:设置端口和中断号,设置通讯板通讯默认参数,通讯板内存分配,映射I/O地址,创建通讯板事件和数据接收事件,初始化中断等。

SJA1000T初始化只有在复位模式下才能进行,初始化主要包括:工作方式的设置、接收滤波方式的设置、接收屏蔽寄存器和接收代码寄存器的设置、波特率设置和中断允许寄存器的设置等。SJA1000T在完成初始化后就可以回到工作状态进行正常的通讯任务了。

2.2 CAN多帧数据通信打包和解包技术

CAN通信数据传输采用短帧结构,每帧最多发送8个字节的有效数据,总线的有效传输速率很低,当在传输的数据量超过8个字节有效数据时,给用户编程带来了一定的困难。利用如图5所示的CAN的数据包格式,只需将待传输的数据进行相应的打包和解包操作即可实现数据的单帧和多帧传输,有效地简化了数据通信。

采用如图5所示的CAN数据包格式,无论是单帧还是多帧传输,只要把数据填入相应的发送缓冲区即可,在接收方,则将数据解包并放入接收缓冲区即可。与上述数据包格式相对应,当CAN总线进行多帧传输时,其CAN的多帧数据传输帧结构如图6所示。

在图6中,当发送的有效数据个数不超过4个时,一帧数据即可传输;当有效数据超过4个时,则需要多帧传输。此处的地址变址是指从发送缓冲区所取的存放于该帧的第一个有效数据的存储地址相对于缓冲区首地址的偏移量,如第一帧中地址变址为4,第二帧中的地址变址是10。地址变址的设置,使得对数据包的解包和打包实现起来较容易。

3 结 语

该通讯板设计简单,只需一块FPGA,一个CAN控制器SJA1000T和收发器PCA82C250,为增强系统的稳定性,在通信通道上均采用光电隔离技术,保护PC机避免因地环流而损坏,增强系统在恶劣环境中使用的可靠性。该通讯板采用的CAN数据包格式提高了总线的有效传输速率,经测试达到500 Kb/s,提高了通讯板通讯的实时性。本设计方案已成功应用于工业控制器中,效果理想。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1629

    文章

    21729

    浏览量

    602964
  • 控制器
    +关注

    关注

    112

    文章

    16332

    浏览量

    177800
  • 总线
    +关注

    关注

    10

    文章

    2878

    浏览量

    88051
收藏 人收藏

    评论

    相关推荐

    车载智能控制器 工程机械控制器 CAN总线控制器 硕博电子 #控制器 #can总线 #国产化替代

    控制器总线
    长沙硕博电子科技股份有限公司
    发布于 :2024年08月29日 10:43:57

    PowerPC 60x总线的存储控制器的设计与实现

    章介绍了PowerPC 60x 处理总线接口和操作,详细阐述了60x 总线存储 控制器在CPLD 上的设计与
    发表于 08-26 10:38 58次下载

    PCI总线目标控制器的设计

    本文在PCI2.2 总线规范的基础上,给出了一种PCI 总线目标控制器的设计方案。重点从控制逻辑和数据通路的建立上阐述了目标控制器的设计:用
    发表于 12-12 16:58 33次下载

    PCI总线从设备控制器的设计与实现

    本文重点分析了PCI 总线设备控制器的设计方案。以PCI 总线协议的分析和理解为基础,对PCI 总线设备控制器进行了功能分析和结构划分,对P
    发表于 01-13 16:57 49次下载

    利用单总线控制器通讯

    利用单总线控制器通讯 本示例的程序采用C 语言编写,主程序为:“Get Temperature”(获取温度),它完成1-Wire 控制器的初始化,搜索1-Wire
    发表于 03-18 10:05 27次下载

    基于CAN总线的家庭控制器的设计与实现

    基于CAN总线的家庭控制器的设计与实现  引言   CAN(Controller Area Network)总线是德国Bosch公司为解决现代汽车中众多的
    发表于 11-07 09:30 729次阅读
    基于CAN<b class='flag-5'>总线</b>的家庭<b class='flag-5'>控制器</b>的设计与<b class='flag-5'>实现</b>

    基于Lonworks总线的模糊控制器实现

    介绍了一种基于Lonworks现场总线的模糊控制器实现方法 该方法采用多级递阶控制结构,利用LON技术提供的DDE 建立现场设备与PC 主机的动态通道,
    发表于 06-18 17:14 17次下载
    基于Lonworks<b class='flag-5'>总线</b>的模糊<b class='flag-5'>控制器</b><b class='flag-5'>实现</b>

    FPGA实现CAN总线控制器源码

    Xilinx FPGA工程例子源码:FPGA实现CAN总线控制器源码
    发表于 06-07 14:13 92次下载

    基于MCS-51单片机和CAN总线控制器实现总线节点的设计

    CAN(Controller Area Network)即控制器局域网络。由于其具有较强的抗干扰能力、通讯中没有地址的概念及节点数不受限制等优点,已经被广泛应用于汽车、数控机床、仪器仪表、现场总线
    的头像 发表于 04-12 07:48 7359次阅读
    基于MCS-51单片机和CAN<b class='flag-5'>总线</b><b class='flag-5'>控制器</b><b class='flag-5'>实现</b><b class='flag-5'>总线</b>节点的设计

    采用CAN总线控制器SJA1000实现控制电路接口的设计

    硬件电路的设计主要是CAN通信控制器与微处理之间和CAN总线收发与物理总线之间的接口电路的设计。CAN通信
    发表于 03-13 10:45 7811次阅读
    采用CAN<b class='flag-5'>总线</b><b class='flag-5'>控制器</b>SJA1000<b class='flag-5'>实现</b><b class='flag-5'>控制</b>电路接口的设计

    浅谈PCA9564 I2C 总线控制器评估

    PCA9564 评估展示了飞利浦 PCA9564 I2 C 总线控制器在主设备(连接到其并行总线及其控制信号)与任何连接到其 I2 C
    的头像 发表于 06-17 17:26 3342次阅读
    浅谈PCA9564 I2C <b class='flag-5'>总线</b><b class='flag-5'>控制器</b>评估<b class='flag-5'>板</b>

    如何使用FPGA和CAN控制器MCP2515实现惯导系统的CAN总线接口的设计

    接口控制新型的CAN 控制器MCP2515,使惯导系统不仅具备了接入CAN 总线的能力,而且在系统实现之后,节点可以根据现场应用提出的新要求进行升级,增加了使用的灵活性。目前实验样机
    发表于 01-27 15:52 17次下载
    如何使用FPGA和CAN<b class='flag-5'>控制器</b>MCP2515<b class='flag-5'>实现</b>惯导系统的CAN<b class='flag-5'>总线</b>接口的设计

    如何用FPGA实现CAN总线通信控制器

    CAN 总线插卡可以任意插在 PC AT XT 兼容机上,方便地构成分布式监控系统。因此,用 FPGA 实现 CAN 总线通信控制器具有非常重要的应用价值。本篇将通过一个实例讲解利用
    发表于 07-29 09:43 2731次阅读

    plc控制器为什么要带通讯口?

    plc控制器的工作,其实就是在不断的重复三个动作,即: (1)输入采样 (2)用户程序执行 (3)输出刷新 其中,输入采样靠的是采集型IO实现的,输出刷新靠的是输出IO实现的,用户程序执行离不开
    的头像 发表于 02-22 08:15 594次阅读

    CAN总线控制器是什么意思

    CAN总线控制器(Controller Area Network Bus Controller)是CAN总线通信系统中的核心部件,它扮演着接收、处理并转发CAN总线数据的关键角色。下面
    的头像 发表于 09-03 14:16 967次阅读