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

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

3天内不再提示

采用NIOSII处理器实现IEEE-1394b双向通信数据传输设计

电子设计 来源:郭婷 作者:电子设计 2019-01-08 09:23 次阅读

随着IEEE Std 1394-1995技术的高速发展,IEEE 1394已经成为众多电子设备基本的外部接口。然而,要进一步扩展它的适用领域,就必须克服其接口被限制工作在较短距离以及不适用于较高数据传输率的缺陷。IEEE Std 1394b-2002作为其修订版本支持800 Mb·s-1传输速率,且中继距离长达100m。它将原来的DS(Data-Strobe)编码方式改进为8B/10B编码方式,这对于1394性能的改进起着决定性作用。同时,1394b是向下兼容的,也就是说同一个电路既可以选择使用DS编码也可以选择使用8B/10B编码。

现在符合1394b标准的链路层和物理层控制芯片都遵循1394 OHCI(开放式主机控制接口协议),它的主要功能是实现总线的链路层协议。本系统通过NIOSII处理器,根据1394 OHCI,对FPGA以及1394套片进行控制,实现了双向数据传输。其主要功能是将外部视频数据打包,按照1394b协议,传输到主机端进行实时显示,并实现与主机的相互通信

1 1394 OHCI的特点

支持事务层和总线管理层,而且带有一个PCI主机总线接口,以及高速率数据传输所需要的DMA引擎。支持两种数据传输:异步传输和等时传输。

异步传输:1394 OHCI可以发送和接收所有1394所定义的数据包格式。无论是从主机存储器中读出发送数据包,还是将接收到的数据包写入主机存储器,都是通过DMA来实现的。在向主机总线存储空间读和写时,1394 OHCI也可以通过直接执行1394读和写请求而作为主机总线和1394之间的总线桥。

等时传输:1394 OHCI可以执行循环控制器的功能。也就是说它包含了一个循环计时器和计数器,可以在8 kHz时钟的每个上升沿后安排一个循环开始包的传输。1394 OHCI可以产生内部时钟。当它不是循环控制器时,1394 OHCI根据循环开始包,通过更正其循环计时器来保持它的内部时钟与主节点的周期同步。1394 OHCI为等时发送和等时接收各提供了一个DMA控制器。每个DMA控制器支持高达32个不同的DMA上下文(context)。等时发送DMA控制器可以在每个周期,从每个上下文发送数据。而每个上下文只能从唯一的等时信道发送数据。等时接收DMA控制器可以在每个周期,从每个上下文接收数据。但是每个上下文既可以从唯一的等时信道接收数据,也可以从多个等时信道接收数据。

2 硬件结构

以FPGA内嵌的NIOSII处理器为开发平台,控制实现数据的双向传输。其硬件结构框图如图1所示。主要由NIOSII系统模块、SPI口的数据输入输出模块、1394套片模块、SRAM模块、串口(UART)通信模块、电源管理模块、EPCS模块和Flash模块组成。其中,FPGA芯片为主控芯片,选择Ahera公司Cyclone II系列的EP2C70F672C8N;Flash芯片用于存储NIOSII嵌入式处理器的代码和数据,FPGA上电后从中读取;SRAM芯片一个用于对外部大量视频数据进行缓存,另一个作为C代码的运行空间。串口主要用以产生异步数据,外部视频数据则主要通过SPI口进行等时传输。

采用NIOSII处理器实现IEEE-1394b双向通信数据传输设计

图1 系统的硬件结构框图

3 软件工作流程

在NIOSII IDE集成环境下,根据1394 OHCI协议,使NIOSII处理器实现对总线的初始化,以及管理,并通过DMA方式实现等时和异步数据传输。其中等时数据传输仅考虑将外部视频数据打包发送到主机,而异步数据传输分为主机发起的异步传输和1394设备发起的异步传输。

3.1 系统的自举

主要为系统初始化、检测电缆以及根节点的确定。系统初始化主要是配置链路层芯片寄存器,使其工作在需要的状态下。分为对PCI寄存器的初始化和对OHCI寄存器的初始化。对PCI寄存器的初始化包括对TSB82AA2设备ID和PCI厂商ID的验证,OHCI基地址寄存器的设置以及对指令状态寄存器的配置。而对OHCI寄存器的初始化则包括对各个中断寄存器和DMA上下文的设置,以及控制寄存器的配置。检测电缆是否插入是通过读取物理层芯片某寄存器的相应位来判断的。电缆插入后,通过检查和配置Node ID寄存器,强制设置本节点为子节点,主机为根节点,直到成功为止。

3.2 数据的传输

在1394 OHCI中,不管是等时传输,还是异步传输,都是通过DMA方式实现的,而且每个DMA都有一个FIFO,用于暂时存放数据。其中各FIFO的存储容量为:异步发送(AT)FIFO为5 kB,异步接收(AR)F7FO为2 kB,等时发送(IT)fIFO为2 kB,等时接收(IR)FIFO为2 kB。无论是物理层接收到的还是要发送出去的数据包,都被暂时存放在相应的FIFO中,由1394套片的内部逻辑控制将其传送到1394总线上。

(1)主机发起的异步传输。

主机发起的异步传输即由主机发出异步传输请求,1394设备进行响应,因此在这一部分,主要是异步请求包的接收以及异步响应包的发送。其工作流程如图2所示。1394设备接收到主机发来的异步请求包后,就会产生异步接收请求中断,这可由链路层芯片中断寄存器的RQPkt位表征。当一个数据包传送完毕后,数据包的最后一个指令描述符的xferStatus字段将被重置,这时数据包已被成功传送到AT响应FIFO中。

采用NIOSII处理器实现IEEE-1394b双向通信数据传输设计

图2 主机发起的异步传输工作流程

(2)1394设备发起的异步传输。

同样,由1394设备发起的异步传输即由1394设备发出异步传输请求,主机进行响应。因此,这一部分主要是异步请求包的发送以及异步响应包的接收,其工作流程如图3所示。这时会产生异步请求输出DMA中断,这可由链路层芯片中断寄存器的reqTxComplete位表征。1394设备接收到主机发来的异步响应包后,会产生异步接收响应中断,这可通过链路层芯片中断寄存器得知。另外,发送出去的请求包也将被暂时存放在内存中,以便与返回的响应包对应。

采用NIOSII处理器实现IEEE-1394b双向通信数据传输设计

图3 1394设备发起的异步传输的工作流程

(3)等时传输。

等时传输主要实现的功能是通过1394设备将外部的视频数据等时传输到主机进行实时显示。外部视频数据与FPGA的SPI接口相连,FPGA把接收到的数据缓存在SRAM中,等时传输时,FPGA读取SRAM中的数据,生成等时数据包。这一部分的主要工作就是等时数据包的发送,其工作流程如图4所示。

采用NIOSII处理器实现IEEE-1394b双向通信数据传输设计

图4 等时传输的工作流程

4 测试结果分析

为了测试系统性能,进行了最快传输速度测试。设置总线传输速度为800Mb·s-1,根据1394总线协议的规定,每个数据包最大为4 096 bit。理论上一个传输周期125μs传送一个数据包,因此每秒最多传输数据31.25 Mb,转换为比特率,最大传输速度为250 Mb·s-1。实测的最快传输速度可达227 Mb·s-1,相对于1394a理论上的最大速度125 Mb·s-1提高了较多,因此该系统在传输速度上具有较大优势。同时,主机端实时显示的视频实时性和可靠性也较好。

5 结束语

本系统,采用800 Mb·s-1的总线传输速率,利用FPGA内嵌的NIOSII处理器作为控制核心,实现了双向传输,用异步传输方式传输主机端指令和摄像头方位及状态信息,用等时传输方式将摄像头数据传输到主机端进行实时显示。实验表明,相对于1394a,该方案具有高速通信、可靠性高、实时性强等优点,达到了预定目标,运行良好。本系统研究的是1394设备与主机间的通信,在此基础上还可以研究在脱离计算机的环境下,两个1394设备间的通信传输以及多个设备的组网传输。

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

    关注

    68

    文章

    19171

    浏览量

    229188
  • FPGA
    +关注

    关注

    1626

    文章

    21677

    浏览量

    601985
  • 芯片
    +关注

    关注

    454

    文章

    50450

    浏览量

    421940
收藏 人收藏

    评论

    相关推荐

    基于IEEE1394b双向传输设备驱动程序设计

    介绍了基于IEEEl394b总线双向数据传输系统PC机端设备驱动程序。结合IEEEl394b总线规范,以Windows环境为例详细介绍了利用Fir-eAPI SDK开发
    发表于 10-31 15:47 1955次阅读
    基于<b class='flag-5'>IEEE1394b</b>的<b class='flag-5'>双向</b><b class='flag-5'>传输</b>设备驱动程序设计

    基于FPGA和DSP的1394b双向数据传输系统

    会给FPGA之外的电路或者系统带来诸多问题。因此这里采用PCI9054总线接口芯片配合FPGA和DSP来实现1394b双向数据传输系统,将对
    发表于 05-14 12:35

    面向回路供电应用的隔离式单线双向数据传输参考设计包括BOM,PCB文件及光绘文件

    描述此设计的重点是适用于回路供电应用的跨隔离层双向通信。此类解决方案的挑战首先是在传感发送内的尺寸受限,如果是回路供电系统,则总电流消耗受限。主要特色隔离式单线双向
    发表于 08-15 06:40

    采用音频接口实现数据传输模块设计

    为标准曼彻斯特编码数据信息,送入读写装置。电路设计如图2所示。3 数据传输模块的软件设计3.1 设计线程 通信双方的手机终端采用软件方法实现
    发表于 06-21 05:00

    如何正确实现EndDevice和Coordinator之间的数据传输

    大家好:我正在学习使用 IEEE 802.15.4 中的 JN5169 来开发项目。我的项目基于JN-AN-1174。我已经实现了从EndDevice到Coordinator的数据传输,但是现在我
    发表于 03-24 08:38

    采用DataSocket技术实现远程数据传输设计

    采用DataSocket技术实现远程数据传输设计DataSocket技术是虚拟仪器设计过程中面向网络4B-)N控的技术扩展,它支持实时数据
    发表于 02-26 09:41 129次下载

    IEEE 1394传输方式

    IEEE 1394传输方式 1394接口以半双工方式工作,可以进行双向通信,但在某一时刻只能有一个方向传送
    发表于 08-01 08:08 3641次阅读

    基于IEEEl394b总线双向数据传输设备驱动程序设计

      介绍了基于IEEEl394b总线双向数据传输系统PC机端设备驱动程序。结合IEEEl394b总线规范,以Windows环境为例详细介绍了利用Fir-eAPI SDK开发
    发表于 12-17 10:10 1166次阅读
    基于IEEEl394<b class='flag-5'>b</b>总线<b class='flag-5'>双向</b><b class='flag-5'>数据传输</b>设备驱动程序设计

    基于IEEE1394b双向传输设备驱动程序设计

    结合IEEE1394b总线规范,以Windows环境为例详细介绍了利用FireAPI SDK开发IEEE1394b设备驱动程序的设计原理﹑实现方法。
    发表于 02-08 15:43 41次下载
    基于<b class='flag-5'>IEEE1394b</b>的<b class='flag-5'>双向</b><b class='flag-5'>传输</b>设备驱动程序设计

    PIS车地无线双向数据传输方案设计

    PIS车地无线双向数据传输方案设计
    发表于 12-27 16:51 0次下载

    基于ARM处理器和FPGA在数据传输中的应用与研究

    基于ARM处理器和FPGA在数据传输中的应用与研究
    发表于 10-15 10:28 4次下载
    基于ARM<b class='flag-5'>处理器</b>和FPGA在<b class='flag-5'>数据传输</b>中的应用与研究

    基于STM32微处理器的GPRS数据传输技术的研究

    本文介绍了一种基于STM32微处理器的GPRS数据传输技术的研究。对STM32微处理器串口的设置以及中断的配置来阐述STM32微处理器底层的配置,再通过SIM900A的发送和接收
    发表于 12-28 14:06 3053次阅读

    1394b数据传输有什么特点?如何利用FPGA设计一个1394b双向数据传输系统?

    传输IEEE又公布了支持更高传输速率的IEEE Std 1394b-2002(简称1394b
    发表于 08-18 09:40 1.6w次阅读
    <b class='flag-5'>1394b</b><b class='flag-5'>数据传输</b>有什么特点?如何利用FPGA设计一个<b class='flag-5'>1394b</b><b class='flag-5'>双向</b><b class='flag-5'>数据传输</b>系统?

    利用Fir-eAPI SDK开发IEEE1394b设备驱动程序设计

    现有的大部分数据传输接口总线造价比较高,且难以满足实际运用中对传输速率的要求,成了阻碍整个系统性能提高的一大屏障。IEEE-1394是现今最高速的串行总线接口之一,IEEE1394lb
    的头像 发表于 10-02 14:02 2996次阅读
    利用Fir-eAPI SDK开发<b class='flag-5'>IEEE1394b</b>设备驱动程序设计

    I2C隔离如何实现双向数据传输

    观看此视频,了解ADuM1250/ADuM2250 iCoupler®数字隔离如何利用Philips针对I2C开发的三电平逻辑系统来实现双向数据传输
    的头像 发表于 08-01 06:06 5324次阅读