总线及数据传输技术【待完善】

作者:桂。

时间:2017-08-05  14:41:36

链接:http://www.cnblogs.com/xingshansi/p/7290224.html 


前言

  最近的工作内容涉及硬件,三个高频词汇:总线、接口、协议,例如I2C、PCIe、RS-232C、RapidIO(SRIO)以及Aurora等等,往细里说还有数据的带宽、位宽、工作频率、数据传输可靠性等等,打算不定期更新,梳理出一篇文章,理理头绪。

  知识范畴:高速串行接口、计算机网络基础(OSI-Open System Interconnection的七层协议:不同设备的互联以及数据交换)、总线(BUS)技术

 一、OSI七层协议

  OSI 模型各层间关系和通讯时的数据流向如图所示:

这个类似于今天的快递:一个名叫主机A的男孩有封信(数据)要寄给名叫主机B的姑娘:

主机A → 快递小哥,快递小哥根据数据特性对物品打包并填写的信息 → 成为包裹(数据添加了一些协议头)→ 根据地址特性,不同的卡车/飞机运往其他城市 → 流程逆过来,直到一个名叫主机B的用户收到包裹,流程结束。

各层的解释:

  • 应用层:就是应用软件使用的协议,如邮箱使用的POP3,SMTP、远程登录使用的Telnet、获取IP地址的DHCP、域名解析的DNS、网页浏览的http协议等;这部分协议主要是规定应用软件如何去进行通信的。
  • 表示层:决定数据的展现(编码)形式,如同一部电影可以采样、量化、编码为RMVB、AVI,一张图片能够是JPEG、BMP、PNG等。
  • 会话层:为两端通信实体建立连接(会话),中间有认证鉴权以及检查点记录(供会话意外中断的时候可以继续,类似断点续传)。
  • 传输层:将一个数据/文件斩件分成很多小段,标记顺序以被对端接收后可以按顺序重组数据,另外标记该应用程序使用的端口号及提供QOS。(不同的应用程序使用不同计算机的端口号,同样的应用程序需要使用一样的端口号才能正常通信)
  • 网络层:路由选路,选择本次通信使用的协议(http、ftp等),指定路由策略及访问控制策略。(IP地址在这一层)
  • 数据链路层:根据端口与MAC地址,做分组(VLAN)隔离、端口安全、访问控制。(MAC地址在这一层)处理VLAN内的数据帧转发,跨VLAN间的访问,需要上升到网络层。
  • 物理层:将数据最终编码为用0、1标识的比特流,然后传输。(例如将题主头像的图片,变为一串01100111100这样的数字来表示)。

以上参考知乎。

  例如一些常见的网络互联设备:

  1)中继器(repeater):物理层的网络互联设备;

  2)网桥(bridge):网桥属于作用在物理层和数据链路层的存储转发设备,在两个相同类型的网段之间进行帧中继,在局域网之间存储或转发数据帧。

  网桥用于在局域网中连接同一类型的不同网段,互连采用不同传输速率、不同传输介质的网络,即网桥所链接的不同网段之间,在网桥两侧的网络中,其网络协议和地址应该一致。

  3)路由器(router):路由器工作在物理层、数据链路层和网络层,它比中继器和网桥更复杂一点,并包含有软件。在路游击所包含的地址之间,可能存在若干路径,路由器可以为某次特定的传输选择一条最好的路径。

  4)网关:网关又被称为网间协议变换器,用以实现不同通信协议的网络之间的互联,一个普通的网关可用于连接两个不同的总线/网络,并由网关进行协议转换,提供更高层次的接口。网关允许在具有不同协议和报文组的两个网络之间传输数据,在报文从一个网段到另一个网段的传送中,网关提供了一种方式把报文重新封装,形成新的报文组。

 

二、高速数据传输

  目前涉及的高速数据传输都是利用串口(并口不是更快?参考知乎)。Xilinx的V7系列有GTX/H/Z模块,以提供高速串行通信支持。同时Xilinx提供多种串行通信协议IP核,Aurora 8B/10B,PCI Express 2.0和Serial RapidIO 2.0是其中较为常用的三种协议。

  几种传输的实现方式:

  A-Aurora 8B/10B

Aurora协议是Xilinx公司提供的一个链路层协议,可以用来进行点到点串行数据传输。Aurora允许器件之间以下图方式通过多个MGT通道绑定完成通信。单个GTX可以实现现750Mbit/s-6.5Gbit/s的通信传输,多个GTX通道的组合可实现几十Gbit/s 甚至上百Gbit/s的通信传输。

8B/10B即把8位数据编码为10位数据。Aurora提供了可直接与FIFO对接的用户接口,而其他协议通常需要用户自行编写GTP接口逻辑。

  Aurora核初始化的Aurora通道可传输任意大小的数据帧,且能在任意时刻打断。数字信号T0经过FPGA存入FIFO,通过FIFO对数据的存取实现光纤对数据的收发,再由光纤自接收,通过FOGA恢复T0信号。 高速收发器、Aurora、光纤几个概念便串了起来。

 

  B-PCI-Express 2.0

 参考:http://xilinx.eetrend.com/article/7995

  PCI Express(简称PCIe)总线技术是取代PCI的第三代IO技术。PCIe采用串行点对点互联,允许每个设备拥有专属的一条连接,不争夺带宽资源,同时保证了数据的完整性。PCI Express 2.0协议的链路线速率达到5Gb/s,最高支持32X链路。

  PCIe总线以包的形式在不同器件之间交换信息,数据按照协议首先被封装成一个包头,该包头长度在32bit地址下为12字节,当数据进入数据链路层后,会添加2字节的序列号和4字节的LCRC字段,数据包进入物理层后,使用1字节的开始字符和1字节的结束字符将其封装成帧。

  C-Serial RapidIO 2.0

   RapidIO是针对嵌入式系统芯片间和板间互联而设计的一种基于包交换的高速串行标准。

  SRIO是物理层采用串行差分模拟信号传输的RapidIO标准。SRIO 2.0协议性能进一步增强,链路线速率可达6.25Gb/s.

  D-三种协议比较

  1)协议结构:Aurora仅定义链路层+物理层,PCIe 2.0以及 SRIO 2.0都比Aurora复杂;

  2)网络拓扑结构:

  • Aurora 8B/10B协议不支持网络拓扑结构
  • PCIe规定了生成树拓扑结构,这种结构适合于单个主机,多个外围设备通信模式,但限制了端点数量,且不支持任意节点与节点间直接通信。PCIe的典型网络拓扑结构如下图所示:
  • SRIO的拓扑结构比PCIe更为灵活,可设计成网型,星型,雏菊链或树形拓扑结构,支持节点对节点通信,各节点间可对等的发起数据传输。

  3)线路速率(目前V7能力?待确认):Aurora 8B/10B协议在链路数目和链路线速率选择上比较灵活,链路数目可以在1x至16x之间自由选择,链路线速率可以在0.5Gb/s到6.6Gb/s间自由选择。PCIe 2.0支持1x,2x,4x,8x,12x,16x,32x链路,链路线速率支持2.5Gb/s和5.0Gb/s。SRIO 2.0支持1x、2x、4x、8x和16x链路,链路线速率支持1.25Gb/s、2.5Gb/s、3.125Gb/s、5.0Gb/s和6.25Gb/s。

  E-RocketIO

  RocketIO收发器是在Virtex2 Pro以上系列FPGA中集成的专用串行通信模块,在使用时不占用FPGA其他逻辑与片上存储资源。在Virtex5 LXT和SXT系列FPGA中,RocketIO称为GTP,每两个GTP共用一个PLL,组成一个GTP_Dual。其结构框图如下图所示。后来的GTX/H/Z都可以理解成升级版的RocketIO,指的是串行的高速收发模块。

DMA介绍:http://www.51hei.com/stm32/3864.html

 

三、总线技术

  A-总线分类

总线(BUS,即公共汽车,数据的公共传输路线)分类的方式有很多,如被分为外部和内部总线、系统总线和非系统总线等等,下面是几种最常用的分类方法。

另外,总线的传输核心思想是多路复用:时分多路复用-TDMA/频分多路复用-FDMA/码分多路复用-CDMA。

1.2.1按功能分

  以微机系统为例:

  (1) 片总线(Chip Bus, C-Bus) 又称元件级总线,是把各种不同的芯片连接在一起构成特定功能模块(如CPU模块)的信息传输通路,它的宽度可以是8、16、32或64位。目前比较流行的几种内部总线技术:I2C总线、SCI总线等。

  (2) 内总线(Internal Bus, I-Bus) 又称系统总线或板级总线,是微机系统中各插件(模块)之间的信息传输通路。例如CPU模块和存储器模块或I/O接口模块之间的传输通路。常用的有PC总线、AT总线(ISA总线)、PCI总线等。

  (3) 外总线(External Bus, E-Bus)

  又称通信总线,是微机系统之间或微机系统与其他系统(仪器、仪表、控制装置等)之间信息传输的通路,如EIA RS-232C、IEEE-488等。

  其中的系统总线,即通常意义上所说的总线,一般又含有三种不同功能的总线,即数据总线DB、地址总线AB和控制总线CB。

  地址总线是专门用来传送地址的。在设计过程中,见得最多的应该是从CPU地址总线来选用外部存储器的存储地址。地址总线的位数往往决定了存储器存储空间的大小,比如地址总线为16位,则其最大可存储空间为216(64KB)。

  数据总线是用于传送数据信息,它又有单向传输和双向传输数据总线之分,双向传输数据总线通常采用双向三态形式的总线。数据总线的位数通常与微处理的字长相一致。例如Intel 8086微处理器字长16位,其数据总线宽度也是16位。在实际工作中,数据总线上传送的并不一定是完全意义上的数据。

  控制总线是用于传送控制信号和时序信号。如有时微处理器对外部存储器进行操作时要先通过控制总线发出读/写信号、片选信号和读入中断响应信号等。控制总线一般是双向的,其传送方向由具体控制信号而定,其位数也要根据系统的实际控制需要而定。

1.2.2按传输方式分

  按照数据传输的方式划分,总线可以被分为串行总线和并行总线。从原理来看,并行传输方式其实优于串行传输方式,但其成本上会有所增加。通俗地讲,并行传输的通路犹如一条多车道公路,而串行传输则是只允许一辆汽车通过单线公路。目前常见的串行总线有SPI、I2C、USB、IEEE1394、RS232、CAN等;而并行总线相对来说种类要少,常见的如IEEE1284、ISA、PCI等。

1.2.3按时钟信号方式分

  按照时钟信号是否独立,可以分为同步总线和异步总线。同步总线的时钟信号独立于数据,也就是说要用一根单独的线来作为时钟信号线;而异步总线的时钟信号是从数据中提取出来的,通常利用数据信号的边沿来作为时钟同步信号。

  B-总线评价指标

  总线的带宽指的是单位时间内总线上传送的数据量,即每钞传送MB的最大数据传输率。

  总线的位宽指的是总线能同时传送的二进制数据的位数,或数据总线的位数,即32位、64位等总线宽度的概念;总线的位宽越宽,数据传输速率越大,总线的带宽就越宽。

  总线的工作时钟频率以MHz为单位,它与传输的介质、信号的幅度大小和传输距离有关。在同样硬件条件下,我们采用差分信号传输时的频率常常会比单边信号高得多,这是因为差分信号的的幅度只有单边信号的一半而已。
  总线的带宽、位宽和工作频率,这三者密切相关,它们之间的关系:

  C-总线通信协议

 对于总线的学习,了解其通讯协议是整个过程中最关键的一步,所有介绍总线技术的资料都会花很大的篇幅来描述其协议,特别是文中第一部分关于ISO/OSI的那七层定义。其实要了解一种总线的协议,最主要的就是去了解总线的帧数据每一位所代表的特性和意义,总线各节点间有效数据的收发都是通过各节点对帧数据位或段的判断和确信来得以实现。

  上图所示是常见的I2C总线上传输的一字节数据的数据帧,其总线形式是由数据线SDA和时钟SCL构成的双线制串行总线,并接在总线上的电路模块即可作为发送器(主机)又可作为接收器(从机)。帧数据中除了控制码(包括从机标识码和访问地址码)与数据码外还包括起始信号、结束信号和应答信号。

  起始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。

  控制码:用来选泽操作目标与对象,即接通需要控制的电路,确定控制的种类对象。在读期间,也即SCL时钟线处于时钟脉冲高电平时,SDA上的数据位不会跳变。

  数据码:是主机向从机发送的具体的有用的数据(如对比度、亮度等)和信息。在读期间,SDA上的数据位不会跳变。

  应答信号:接收方收到8bit数据后,向发送方发出特定的低电平。读/写的方向与其它数据位正好相反,也即是由从机写出该低电平,主机来读取该低电平。

  结束信号:SCL为高电平时,SDA由低电平向高电平跳变表示数据帧传输结束。

  当然不同的总线其数据位或段的定义肯定不同,但依据同样的原理可以更快的去了解它的协议的特性和特点。虽然其信息帧的大小不一,但具体的某一数据位或数据段都类似于本文所提及的I2C总线,会依据它的协议的要求来定义它所达标的意义和功能。

 

四、常用总线协议

记录用到的总线的细节信息。

  A-I2C总线

http://blog.csdn.net/ce123_zhouwei/article/details/6877000

http://www.cnblogs.com/Camilo/p/3778868.html

EEPROM读写例程(用到IIC协议)

  B-

 

  C-

参考:

  • 总线:http://blog.csdn.net/ce123_zhouwei/article/details/6853195

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/242862.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初识TCL

初识TCL 安装TCL编辑器 如果你的电脑上装有编写TCL脚本的软件(Vivado等),执行在命令串口输入tcl,点击就行 输入expr 2 2 每一条命令都由一个或多个“单词”组成,单词之间用空格或制表符(即空白字符&…

如何看透借款人的隐形负债?

借款人的负债有两种情况,一种是显性负债,另一种是隐性负债。显性负债比较好判断,而隐性负债则比较难以判断。因此如何全面的掌握借款人真实负债是每个信贷员和风控人员都必须掌握的功课。一、显性负债显性负债就是通过材料可以直接看出的负债…

产生脉冲之间的延迟

产生脉冲之间的延迟 题目要求 FPGA产生两个输出脉冲,要求这两个脉冲之间的延迟为0.5ns,请描述你的实现方案 题目分析 1 使用计数器延迟不太可能,FPGA内部逻辑没有一个专用的delaybuffer。 2 IOB (input output block) iodelay。去实现小分辨…

Chipscope使用

作者:桂。 时间:2017-08-07 06:47:31 链接:http://www.cnblogs.com/xingshansi/p/7297482.html 前言 Chipscope在FPGA调试中被用来观察内部信号,程序里加入Chipscope相当于有了数字示波器。 本文主要记录Chipscope的基本操作&…

设计FIFO深度

设计FIFO深度 假设FIFO的写时钟为100MHZ,读时钟为80MHZ。在FIFO输入侧写数据侧,每100个时钟,写入80个数据,FIFO读出侧每个时钟读出一个数据。设计合理的FIFO深度,使FIFO不会溢出。 如果读出侧每3个时钟读出1个数据&am…

银行假流水怎么识破?

银行流水作为借款人最有效的还款证明,审核的时候一定要特重视,特别是要注意区分借款人的假流水。(1)真假流水有哪些特征真流水特征:银行流水能真实的反映借款人的工作或生意情况,能从借款人的生意来往合同中…

模拟电子技术基础笔记

模拟电子技术基础笔记 二极管的特性 1 单向导电性(小写是交流,大写是直流) 二极管的应用 1、整流二极管 利用二极管单向导电性,可以把方向交替变化的交流电变换成单一方向的脉动直流电。 2、开关元件 二极管在正向电压作用下电阻…

simulink简介

simulink简介 simulink是基于matlab的框图设计环境,可以用来对各种动态系统进行建模、分析和仿真,它的应用领域十分广泛,任何能用数学模型来描述的系统都可以在simulink中进行仿真分析,如:空气动力学、导航制导、通讯、电子、机械…

建模与仿真的流程

建模与仿真的流程 以例子为例 第一步:建立模型,列出输出表达式 第二步:解出输出方程 可以参考:解单位冲激 第三步:在simulink中建立仿真图 ctrlr:表示旋转90 按住ctrl可以引出多条线 点击保存&…

vcs 入门

synopsys vcs 软件是仿真和验证的软件,必须掌握。 vcs 即 verilog compile simulator 支持 verilog, systemVerilog, openvera, systemC等语言,同时也有代码覆盖率检测等功能。 可以合第三方软件集合使用,例如 Vera , Debussy ,S…

输入输出及子模块

输入输出及子模块 常用模块库 1 事先规划好功能子系统 2 建立好系统后对系统进行功能划分 在进行动态系统的建模过程中,可以根据需要将模型中比较复杂,或者共同完成某一功能的基本模块(低一层次的子系统)封装起来,并…

简单模块说明

接地模块(Ground)和终端模块(Terminator) 进入接地模块的帮助系统 右击选择帮助 接地模块表示:输入模块中没有值的部分 Ground 模块连接到其输入端口不连接到其他模块的模块。如果您使用具有未连接的输入端口的模块运…

贷款时,如何评估借款人的还款意愿

贷款有一个公式:正常还款还款能力还款意愿。也就是说借款人能不能正常还款,除了借款人的还款能力之外,借款人的还款意愿也有着至关重要的作用。因此贷款审核过程中,对借款人还款意愿的审核是很重要的一个环节,那信贷员…

FPGA时序分析和约束实例

FPGA时序分析和约束实例

数据库设计笔记——概述(一)

数据库数据库(DataBase,DB)是长期存储在计算机内,有组织的,可共享的数据集合。是存放数据的仓库,并且有组织,有管理。数据库管理系统数据库管理系统(Database Management System&…

你应该知道的浮点数基础知识

本文从一个有趣而又令人意外的实验展开,介绍一些关于浮点数你应该知道的基础知识 文章欢迎转载,但转载时请保留本段文字,并置于文章的顶部 作者:卢钧轶(cenalulu) 本文原文地址:http://cenalulu.github.io/linux/about…

简单模块说明(二)

简单模块说明(二) 利用linmod函数提取状态矩阵 输入输出必须以 in模块和out模块代替 状态空间法的状态向量和状态变量不唯一的。 传递函数模块 得出其是个低通滤波器 零极点增益模块 使用零极点增益来表示传递函数 PID及二阶积分模块 几…

模块说明(三)

模块说明(三) 惯性环节、超前滞后环节 一般先使用连续列出传递函数,然后通过极性法或者双线线性不变法将连续转换为离散。 实例讲解 通常是通过电子电路对其进行补偿的。 记忆模块、零阶保持器、一阶保持器 离散PID 可参考连续PID…

数据库设计笔记——MySQL基础知识(四)

概述关系型数据库——由表来存储相关的数据,MySQL,SQL Server,Oracle等都是关系型数据库;元数据:用于集成并管理数据。MySQL数据库 用户数据库:用户根据需求创建数据库系统数据库information_schema&#x…

哪些钱借了可以不还?

借钱竟然可以不还?这个估计很多人都不知道,但是在实际民间借贷中,确实是有一些借贷关系是不受法律保护的,那哪些债务还是不受法律保护的呢?(一)借款用于非法用途案例:任某在生意场上…