精华内容
下载资源
问答
  • 工业标准 NRZ异步串行数据传输格式

    千次阅读 2019-01-20 11:29:14
    在了解NRZ之前,我们先来了解一下RZ 编码(Return-to-zero Code),即归零编码,所谓的归零编码就是在进行编码时每传输完一位数据,信号电平就会返回为0电平(零电平状态),比如正电平代表逻辑1(正电平状态),...

    NRZ (Non-return-to-zero Code),不归零编码。

    在了解NRZ之前,我们先来了解一下RZ 编码(Return-to-zero Code),即归零编码,所谓的归零编码就是在进行编码时每传输完一位数据,信号电平就会返回为0电平(零电平状态),比如正电平代表逻辑1(正电平状态),负电平代表逻辑0(负电平状态),那么在信号传输的过程中就会出现3种不同的信号状态,正电平、负电平、零电平状态。信号传输过程如下图所示

    依此类推,那么NRZ就是传输每一位数据都不用归零,信号传输过程如下图所示。

    接下来讲解一个各自的优缺点

    RZ编码从上图就可以看出它每传输一位数据就会归零,所以接收者只需要采样归零状态之后的采样即可,不需要再加其它时钟信号,实际上, RZ 编码就是相当于把时钟信号用归零编码在了数据之内。这样的信号也叫做自同步(self-clocking)信号。但是这样有一个缺点就是许多数据带宽被用来归零而浪费掉了,所以就有了NRZ,但是这样的话又会失去宝贵的自同步特性。为了解决这个问题就需要用到一种特殊的数据传输技巧,例如,先发送一个一个同步的数据头,比如1010110的这样一个方波信号,让接收者通过这个数据头计算出发送方发送数据的频率,接收方接下来用这个频率进行采样即可解决这个问题。

    展开全文
  • 并行与串行传输串行高速传输

    千次阅读 2018-03-24 17:17:05
    不存在信号线之间的串扰,而且串行还可以采用低压差分信号,可以大大提高它的抗干扰性,所以可以实现更高的传输速率,尽管并行可以一次传多个数据位,但是时钟远远低于串行,所以目前串行传输是高速传输的首选。...

    在高速状态下,并行口的几根数据线之间存在串扰,而并行口需要信号同时发送同时接收,任何一根数据线的延迟都会引起问题。而串行只有一根数据线,不存在信号线之间的串扰,而且串行还可以采用低压差分信号,可以大大提高它的抗干扰性,所以可以实现更高的传输速率,尽管并行可以一次传多个数据位,但是时钟远远低于串行,所以目前串行传输是高速传输的首选。

    从另外的角度来看,并行传输还有很多方式如系统同步(共同时钟)方式及源同步时钟方式等。先来看系统同步先天的内在问题


    首先,并行信号由于需要多位传输路径,这在早期是可以接受的。但是摩尔定律的现象使得与几十年前相比可生产的芯片中硅电路的数量大幅增加,而芯片封装技术的pin密度并没有像硅密度一样以相同的速度在增加,因此I/O pin的封装实际上比硅电路还贵,这就意味着对于大多数芯片来说pin管脚越来越多变得不可接受。

    第二个内在问题就是时序的需求。由上图可知数据由芯片#1同步启动并被芯片#2使用相同的时钟同步捕获,芯片#2输入端的数据必须满足相对于芯片的时钟输入的建立和保持时间。详细的系统同步时序模型如下图所示。这些建立和保持时间必须用足够的余量来计算,以允许时钟分配路径延迟到两个芯片的差异,并通过芯片到启动和捕捉触发器。延迟可能会因芯片工艺,电压和温度(PVT)条件而异,并且必须增加余量以应对最坏的情况。对于较高的时钟频率,可能需要在芯片中使用锁相环(PLL)来调整时钟相位,以补偿芯片内的时钟分配延迟,并适应变化的工艺,电压和温度条件。 如果时钟频率足够高,则不可能建立一个可以通过这种共同时钟总线来可靠地传输数据的系统。

    我们都知道源同步方式的典型代表是DDRx信号,下面就来介绍源同步方式是怎样改善系统同步的先天不足的。

    源同步要解决的第一个问题是减少在芯片之间传输数据所需的I/O引脚数量。这通过将芯片#1的输出处的n位数据复用到k位互连(k <n),然后将芯片#2的输入上的互连的k位解复用到n位内部数据路径上来实现,如下图所示。所得到的系统只需要每个芯片上的k个I/O引脚,而不需要先前的n个引脚。


    当然,虽然引脚数量要求已经通过k:n的比率降低,但是参考时钟的所需频率已经增加了这个比率的倒数。由于噪声,电磁干扰(EMI)和功耗问题,系统设计人员通常不喜欢在系统内分配高速参考时钟。通常,分配较低频率的时钟,并且使用芯片中的PLL将该参考时钟乘以可用频率,但所产生的时钟相位的变化以及数据传输的频率越高,往往会加剧并行数据总线的时序问题。

    源同步的第二个法宝就是在两个芯片之间的数据通路中增加了一个高速时钟,如下图所示。假设该时钟源提供的时钟频率略低于在芯片互连上对数据进行触发的时钟频率,每个芯片都使用PLL来产生这个频率倍数的时钟,所得到的时钟用于启动和捕获相应芯片中的数据。芯片#1中用于从该芯片启动数据的PLL的输出时钟也是该芯片的输出,芯片#2使用该时钟来捕获数据,这种方法称为时钟转发。


    时钟转发的优点是用于在芯片#1上启动数据的高速时钟可用于芯片#2作为捕获数据的参考。这样之前通过时钟分配网络驱动两个芯片的延迟的变化在时序分析中就不需要考虑了,只有时钟路径和数据位之间的延迟变化是相关的。 虽然制程,电压和温度导致的这些路径之间的变化在一定程度上相互影响,但接口的时序分析需要的余量较少,因此建立和保持时间更容易满足。

    我们还是来看看典型的例子吧,图中所示的时钟可以是单数据速率(SDR)或双倍数据速率(DDR)的时钟,如下图所示。SDR就是接收芯片在SDR时钟的每个上升沿(或每个下降沿)捕获数据; 而DDR则是接收芯片捕获DDR时钟的每个边沿(上升沿和下降沿)的数据。


    无论时钟是SDR还是DDR时钟,接收芯片都使用该时钟直接捕获数据。 该芯片还使用参考时钟以相同的频率生成内部系统时钟,这些时钟是中间同步的。 虽然频率相同(鉴于它们共享共同的频率参考),但是时钟之间的相位关系是未知的,并且可能由于PVT变化而变化。 因此,接收芯片通常将接收到的数据从接口时钟域重新定时到内部芯片时钟的时钟域。 FIFO用于执行此重定时功能, 期望最小化由接口时钟计时的触发器的数量,以便最小化时钟分配网络中的延迟,否则时钟问题将会加剧。

    高速串行信号相对于并行信号最主要的就是通信方式的改进,这种通信方式又叫自同步方式,也即两块芯片之间通信,其中发送芯片产生的数据流同时包括数据和时钟信息,如下图所示。


    要实现上图所示的通信,在芯片内部还有更加详细的一些要求及模块来操作,具体实现可以参考下图所示模块框图。


    这些最主要的模块包括串行器(也有叫串化器)、时钟数据恢复(CDR)、解串器以及均衡器等。这样的设备与源同步接口不同,因为接收机设备包含时钟和数据恢复(CDR)电路,其基于信号的跳变沿来动态地确定数据信号的最佳采样点。 换句话说,从数据中直接提取时钟信息,而不是依赖于单独的时钟。本篇我们主要来简单介绍前面三种必要的模块,均衡器会在后续的内容中介绍。

    串行器要实现的功能就是并串转换,简单来说就是将原本并行的数据转换成串行的数据。目前有两种主要的并串转换方式——可装载移位寄存器和回转选择器。

    解串器的功能正好和串行器的功能及步骤相反,那就是将串行的信号又重新转换成并行信号,又叫串并转换,

    时钟数据恢复(CDR)顾名思义就是将数据流里面的数据和时钟在接收端恢复出来,说起来感觉很简单的样子,但实际上如下图所示时钟恢复过程无法产生一个共用时钟或者同数据一起发送的时钟。作为替代,由锁相环(PLL)合成出一个与输入串行信号的时钟频率一致的时钟,也即PLL能根据参考时钟和输入信号来产生锁定于输入信号的新时钟,所以PLL对于Serdes的接收也是至关重要的。

    这就是我们的串行信号,呈现出来的确实是比较简单,无非就是几对差分线路,但内部的操作却非常复杂。虽然简化了PCB设计,但对芯片的设计挑战巨大,因为有更多的模块集成在芯片内部了

    并行信号之于串行信号,唯一的区别就是多比特同传,因而产生了:更多的布线/连接线的空间需求;在高波特率下可能的一致性要求:驱动器,信道的时域/频域一致性;密集信号线间的串扰隔离需求。  但是,并行信号本质上就是串行信号的聚合,串行信号物理层能采用的技术,比如差分,加重/均衡/链路训练,CDR等等,都可以在并行信号中采用;此时需要额外考虑的是如何完成信号间一致性的信息收集与恢复和数据的拆分聚合。  为低成本,低延迟设计的单端、随路时钟的并行信号对为高吞吐,简化互联设计的高速差分信号,自然存在串扰,EMI,布线空间,等长/SKEW等等问题。   

    1,高速串口不需要传时钟来同步数据流,没有时钟周期性的沿变,频谱不会集中,所以噪声干扰少。通过数据流的沿变可以直接用PLL恢复出时钟,再用恢复的时钟采集数据流。不传时钟可以降低功耗,减少噪声。  2,所有高速串口都采用差分总线传输,外界噪声同时加载到并行传输的两条差分线上,相减之后可以抵消,对外部噪声的抵抗能力强。  3,没有时钟skew问题,因为它根本就没有同步时钟,不存在时钟和数据流的对齐问题。只需要保证差分信号线是对齐的就行,因为差分信号线的值总是相反,相关性强,易控制。  4,线少,干扰少。串行传输一般就4根数据线,分成Rx两根差分线和Tx两根差分线,差分线总是往相反方向跳,可以抵消各自的跳变噪声,这种噪声可以被Rx的负极性以相反的跳变直接抵消掉,总的噪声为0,根绝了内部噪声。  另外,串行采用差分信号,CDR,信道均一化等技术使得信号质量得到保障。串口的特性和应用场景,决定了它更加适合采用一些可以提高单根信道速率的设计方法,这些方法用在并口上并不合适。  综上,串口传输的各种优势使得其内外噪声皆免疫,又没有信号对齐之忧,可以以极高的速率传输。这种速率,并行传输是根本做不到的,更不要说串行传输还能节省大量引脚。    

    您了解的均衡器的种类与功能有哪些?

    相信大家通过阅读之前高速串行简史的文章也对串行信号有比较深刻的认知了。为什么要用到串行信号,客观原因是从我们对数据传输的需求,因此迫使我们在速率上不断向摩尔定律靠拢。基于之前所述的串行信号的种种优势,因此在速率不断提高的情况下,我们就会认为串行信号是最好的选择。但是真到了速率不断攀升的时候,我们用同一个串行链路去承载它们时,就会发现没有想象中那么容易。


    那再往10G,25G,56G走呢,岂不是就玩不转啦?


    在我们的串行链路中,损耗可以算是眼睛张不开的最大元凶,从理想的插损曲线来判断的话,我们一般会记住几个常用的数值:

    0dB=1,-3dB=0.7,-6dB=0.5,-12dB=0.25,-20dB=0.1。。。然后速率越高,dB值肯定越大啦,那么眼高自然就慢慢没了…… 


    当然,我们也会想出很多方法来应对,比如板材是影响损耗的重要因素,我们从原始普通的FR4板材到中等损耗板级,再到低损耗板材,再到超低损耗板材,那在同样的走线长度,自然损耗就小了,或者换句话说在同样的损耗情况下,我们可以走得更长了;然后铜箔粗糙度也会影响损耗,因此我们把铜箔的工艺研究得非常深入,也制造出了各种的铜箔类型;

    然而无论是对板材还是对铜箔的优化,付出的是更高的成本,更新板材和铜箔也需要经历时间的等待。我们习惯性把一个链路分成三个部分,分别为发送芯片,传输通道和接收芯片。我们上述对板材,铜箔的优化其实都是对传输通道进行的优化,那我们能不能在芯片本身做点文章呢?


    答案当然是可以的。均衡技术就是针对芯片端的其中一种技术。实际上均衡技术种类有很多,从结构上分类,分为线性和非线性均衡,或者说是模拟和数字的区别;按作用来分类则可分为频域均衡和时域均衡,前者是校正频率特性,而后者是直接校正畸变的波形;按调节方法还可以分为固定均衡和可变均衡,而可变均衡分为手动均衡和自适应均衡。按抽样时间间隔的不同来分类,又可以分为码元间隔均衡和分数间隔均衡等等。


    在那么多的分类之中,的确在我们的PCB链路上常用的一般就三种:CTLE(Continuous Time Linear Equalization)连续时间线性均衡,FFE(Feed Forward Equalization)前向反馈均衡和DFE(Decision Feedback Equalization)决策反馈均衡。前面两种是线性的均衡器,而且后面的DFE是非线性的。


    均衡的终极作用就是把我们接收端的眼图给睁开,的确从PCB相关的仿真或者测试中也验证了这个是一项非常有用的技术,在芯片里面去做这样的技术,与从板材铜箔这些的优化相比,也是成本较低的方案。


    为了把信号传输更远距离,通常在发送端和接收端使用预加重或去加重的均衡技术,通过提升信号的高频部分能量,以补偿传输通道对高频的衰减。均衡器有:1.CTLE连续时间性均衡器,特点是功耗低,实现简单,不会增大抖动。2.FFE前端反馈式均衡器,由延时电路、乘法器、加法器组成的模拟均衡器。3.DFE判决反馈均衡器,特点不会放大噪声和串扰,易于实现,广泛应用高速收发芯片中。  


    为什么损耗全频段都变差的情况下,居然能够使眼图张开呢,隐藏着什么秘密???

    基于上文那个张开和闭合的眼图,我们来对比下它们接收端的波形:


    可以看到,眼图之所以闭合,主要是由于在蓝色圈圈处的地方出了问题,通过观察,我们发现了最容易出问题的地方就是在低频信号向高频信号电平转换的地方,即连续的0或1之后转换成单独的1或0 的地方

    通过该通道的损耗情况能够发现,由于连续0或连续1对应的频率是比较低的,因此对应的幅度衰减也比较小,单独的1或0 的转换则代表高频的情况,幅度衰减则比较大,因此连续0或连续1在经历高幅度后突然要转换成相反电平的高频数据,这个高频数据幅度衰减很大,就会跟不上节奏,不能拉回到一个属于它电平的正确位置。


    我们对这种码型带来的恶劣影响的情况称为ISI,码间干扰,这是又一种重要影响信号质量的因素,不同于阻抗不匹配,反射或者串扰这些影响,即使把传输线优化得很好,阻抗反射串扰这些都考虑得很完善,但是只要通道的衰减达到一定的幅度,都有可能出现码间干扰

    另外,上篇文章眼图之所以能张开,是因为我们人为的把低频的衰减变大了,这样的话,连续0或连续1的幅度就没那么高,这样转向的时候单独1或0的这一位数据就能拉得更上一点。加入CTLE均衡就是这个效果,在上文的接收端频率响应中,虽然加入CTLE后整体的损耗都变差了,但是把低频分量衰减更多。这样的话高频和低频损耗的差距却明显变小了,这样面对这种码间干扰时就很有帮助。当然缓解这种码间干扰还有其他一些方法,这里就先继续卖关子了

    前面文章说过,在高速链路中导致接收端眼图闭合的原因,很大部分并不是由于高频的损耗太大了,而是由于高低频的损耗差异过大,导致码间干扰严重,因此不能张开眼睛。针对这种情况,前面有讲过可以通过CTLE和FFE(包括DFE)均衡进行解决,原理无非就是衰减低频幅度或者抬高高频幅度,从而达到在接收端高低频均衡的效果。同时我们在前文还埋了个伏笔:

    现在就把这个关子拿出来讲讲,也就是今天要说的编码方式。说到针对于NRZ数据的编码方式,本人听过的有4B/5B,8B/10B,64B/66B,64/67B,128B/130B,128B/132B编码(可能各位还有其他吧),不同的编码方式针对于不同的信号协议,当然效率也是不一样的。什么叫效率?在数据包传送的术语叫开销,意思就是除了实际需要的数据之外的一些数据bit,例如冗余校验等。那大家看上面的编码的数值比就知道了,例如8B/10B,要把8bit的实际数据扩展为10B,那开销就是20%,效率就只有80%了,更通俗来说就是增加了20%的非实际数据的传输 。所以一个好的编码方式,除了看它本身的算法优化情况外,还要注重效率高不高。


    本人将用两期的篇章主要介绍下8B/10B和64/66B编码方式,其他的主要都是由他们扩展开来的。那介绍完前面总体的情况后,进入本期的主题,8B/10B编码。


    首先,为什么要编码?原来的码型有什么不好的地方吗?其中最主要的原因用下面这个图来进行解释:

    大家看明白了吧,由于我们的串行链路中会有交流耦合电容,我们知道理想电容的阻抗公式是Zc=1/2πf*C,因此信号频率越高,阻抗越低,反之频率越低,阻抗越高。因此上面的情况,当码型是高频的时候,基本上可以不损耗的传输过去,但是当码型为连续“0”或者“1”的情况时,电容的损耗就很大,导致幅度不断降低,带来的严重后果是无法识别到底是“1”还是“0”。因此编码就是为了尽量把低频的码型优化成较高频的码型,从而保证低损耗的传输过去。


    上面解释了原因,下面就介绍下这种8B/10B的编码方式的算法。


    对于一些常见的编码方式而言,即使在我们不知道它们有什么好处的情况下,也很容易想到它的缺点,那就是需要增加额外的数据bit。因此我们看到很多像PCIE1,明明传输了2.5Gbps的数据,但是实际上有用的数据只有2G;PCIE2也一样,5Gbps的数据由于的只有4G。对于8B/10B编码而言,这是一笔不小的损失。人们还是要用这种编码,也正说明了它的好处显然会大于它的坏处。很多网友也回答得非常精准,我再稍微汇总下大家的答案哈。


    首先,使用8B/10B编码的根本目的是为了直流平衡,所谓直流平衡,在上文中也图文并茂的解释过了。但是说到保证直流平衡又是为了什么呢?我们可以对上文的prbs7码型(10Gbps)进行有和没有8B/10B编码的频谱进行分析,如下所示:

    可以看到,进行8B/10B编码后,信号在低频段的能量明显少了,补充到了高频能量中去了。其实,这就相对于一个高通滤波器,根本作用和之前说的加重均衡时一样的,就是使经过传输通道后保持平坦的频域曲线,这样能有效缓解ISI码间干扰,使接收眼图扩大。所以说,使眼图变好的方式有很多,但是万变也不离其中,原理都是殊途同归的。


    另外,通过8B/10B后,连续0或1的数量减少了,对于时钟恢复电路(CDR)也是有帮助的。它使CDR能够有更多的边沿变换,对于CDR的PLL来说,更能把握到数据的内嵌时钟,对正确采样数据和减小抖动有很大的益处。

    其他的作用还包括:


    增加一些校验的码型,起到数据对齐和控制命令的作用,增加纠错的能力;


    编码后起到加密的作用;


    编码有一定的规律的码型,对解码来说也有帮助。


    上文说完了8B/10B之后,我们再来说说貌似更复杂的64B/66B编码。很多人可能在想,8B/10B编码主要作用的优化直流平衡,从8bit中插2个bit进去,这样的话最终效果能够使长0或者长1的位数不超过5位,达到很好的效果。那64B/66B编码方式呢?在从64个bit中仅加入2个bit,能够很好的解决长0长1的问题吗?作用似乎只是杯水车薪,2个bit相对于64个bit太少了。但是这种64B/66B的编码方式流行至今,肯定是有它自己的优势所在,其实它和8B/10B编码还是有原理上和算法上的区别的。


    当然,如果仅靠这2个bit来实现8B/10B的作用显然不太现实。其实上,这两个bit只是起一个同步头的作用,主要用于接收端的数据对齐和接收数据位流的同步。这两个bit有“10”和“01”两种同步表征方式,“01”表征后面的64个bit都是数据bit,“10”表示后面的64bit是数据和控制信息的混合,其他的“00”或者“11”都表征为错误信息。数据bit用“D”表示,每个数据码是8bit;控制bit用“Z”表示,每个数据码是7bit。其中在“10”这种数据控制信息混合的情况下,后8个bit划分为表征类型域,其后的56bit才是真正的控制信息或数据控制两者的混合。另外“S”表示包开始传送,“T”表示包传送结束,值得注意的是“S”只能在第0和第4字节出现。“T”可以出现在任何的字节。


    那按照上面说的,新加的2个bit只是作为同步,那后面的数据可以如何优化呢?这里有一项区别于8B/10B编码的技术——扰码。


    所谓扰码,就是一种将数据重新排列或者进行编码以使其最优化的方法。怎么才能最优化呢?就是使数据bit的“0”和“1”最大程度的达到随机分布,进一步减轻了抖动的码间串扰,提高了数据传输的可靠性。从本质上说,扰码就是为了达到这个目的而在传输数据进入信道传输之前,对其进行的比特层的随机化处理过程。它的方法就是使用上面prbs码型所说到的多项式,关于多项式的选择通常是基于扰码的特性,包括生成数据的随机度,以及打乱连0和连1的能力。从prbs多项式的角度说,其实就是重新生成伪随机码型的过程。64B/66B的扰码使用的多项式是1+X39+X58。按照前期说的prbs生成器,得到该扰码器的框图如下所示:


    就是前几期prbs说的第39和第58位的异或运算,然后通过移位寄存器输出的码型结果。当然,前面说了,64B/66B编码的这种扰码方式目标是使数据的“0”和“1”最大程度的随机分布,减小连续出现的情况,因此它可能并不能适用于所有的码型,不像8B/10B编码一样对所有的bit组合都有出色的表现,具体还要看接收器的能力。但是无可否认,它最大的好处是效率比较高,传输冗余的bit只有2位,不像8B/10B编码需要20%的开销。这方面在更高速的传输环境下更具有优势。

    转载自:高速先生

    展开全文
  • 利用串行接口传输各种数值数据

    千次阅读 2015-03-05 12:48:14
    利用串行接口传输各种数值数据 天津滨海职业学院机电系 刘景文 胥宝萍 300451 摘 要:介绍了一种无应答数值发送、接收的协议,如何利用MCS-51单片机进行各种数值发送、在VC下借助 MSComm通信控件进行数值接收 ,...

    利用串行接口传输各种数值数据

    天津滨海职业学院机电系  刘景文 胥宝萍 300451

    摘  要:介绍了一种无应答数值发送、接收的协议,如何利用MCS-51单片机进行各种数值发送、在VC下借助 MSComm通信控件进行数值接收 ,并且给出了发送和接收处理程序的源代码及详细注释。解决了串行通信仅能发送字符型数据的难题,提出利用串行通信接口直接传输各种数值数据的方案,运行效果良好。

    关键词:串行通信;MSComm;联合体

    一、引言

    随着计算机技术的发展 ,串口通信在诸多领域得到了广泛的应用 ,迫切需要通过串口来发送诸如浮点型等各种数值数据 ,然后利用计算机进行接收后,再编制程序对接收数据进行进一步分析处理。

    本文采用MCS-51单片机进行数据采集和简单处理,将处理后的各种数值数据通过单片机扩展的RS-232串行接口传输出去,计算机端进行数据加工处理。本系统采用周期性的数值数据发送方法,为保证能可靠接收设计了独特的数据包格式,形成一种简单的无应答数值发送、接收协议。计算机根据此协议进行数据接收,还原出各种数值后,进行进一步分析处理。

    二、MCS-51单片机端设计

    1、通信协议

    为做演示说明我们仅发送3个数据顺序依次为:字符型数据、整型数据、浮点型数据,字符型数据、整型数据、浮点型数据在MCS-51单片机的C语言中分别占用1、2、4个字节。由于是采用周期性的数值数据发送方法,为使PC机端能准确接收所发送数据设计数据包如下:

    l  所有数据按发送顺序及占用字节数顺序排列,等待发送。

    l  数据包以两个字节的数据0XFF表示数据包结尾。

    l  当等待发送数据为0XFF时,插入转义字符0X27,避免发送数据中出现连续的两个0XFF,造成虚假的数据包结尾。

    l  插入的转义字符在接收时自动删除,为避免发送数据为0X27时被自动删除,在其后也插入转义字符0X27。

    2、单片机程序设计

    由于发送、接收双方距离较近,故波特率设置为9600bps、数据位数为8 位、没有奇偶校验位、1位停止位。系统的定时器/记数器T0、T1已另作它用,故选择T2做为波特率发生器。使用T2做为波特率发生器时不会产生通讯中断。

    单片机发送程序由两个子程序组成:串口初始化、数据发送。代码如下:

    void init232(void) //串口初始化子程序
    {
        SCON=0x50;
        PCON=0x80;
        T2CON=0x34;
        RCAP2L= 0xb2;
        RCAP2H= 0xff;
        TL2= 0xb2;
        TH2= 0xff;
        TR2=1;
    }
    void senddata()//数据发送子程序
    {
        uchardata * data pd;
        uchari;
        pd=&char_data; &nbsp;//send char data
        SBUF=*pd;
        while(TI==0);TI=0;
        if(((*pd)==0xff)|| ((*pd)==0x27))
        {
            SBUF=0x27;
            while(TI==0); TI=0;
        }
        pd=&int_data; &nbsp;//send int data
        for(i=0;i<2;i++)
        {
            SBUF=*pd;
            while(TI==0); TI=0;
            if(((*pd)==0xff) || ((*pd)==0x27))
            {
                SBUF=0x27;
                while(TI==0); TI=0;
            }
            pd++;
        }
        pd=&float_data; &nbsp;//send float data &nbsp; &nbsp; &nbsp; &nbsp;
        for(i=0;i<4;i++)
        {
            SBUF=*pd;
            while(TI==0); TI=0;
            if(((*pd)==0xff) || ((*pd)==0x27))
            {
                SBUF=0x27;
                while(TI==0); TI=0;
            }
            pd++;
        }
        SBUF=0xff;//sendend flag
        while(TI==0); &nbsp;TI=0;
        SBUF=0xff;
        while(TI==0); &nbsp;TI=0;
    }

    数据发送子程序利用指针指向要发送数据,然后根据数据占用字节数,确定循环次数,在循环体内发送。由于我们定义的指针是字符型,在其指向整型数据、浮点型数据在内存的首地址时,编译器会给出WARNING性提示: “pointer to different objects”,它并不会影响程序的执行效果,可不予理会。要避免出现WARNING性提示,可采用计算机端的方法定义联合体型数据来解决,但代码会很长;另外编译器一般会按定义的次序顺序为变量分配内存,所以指针只要指向要发送的第一个数据,再根据全部数据占用字节数进行循环,可极大减少代码长度。

    三、计算机端设计

    Visual C++6.0是 Windows环境下的一种简单、高效的可视化编程语言开发系统 ,以其可视化界面设计风格和面向对象的程序设计等特点在工程实践中得到了广泛的应用 ,其简洁性和实用性已经受到了众多计算机用户和程序员的欢迎 ,尤其是其 6. 0版本 ,功能强大且易于掌握。它不但提供了良好的界面开发环境 ,而且具有功能强大的通信控件MicrosoftCommunications Control (MSComm)实用性强、功能完善 ,是实现计算机与外部设备数据交换的强有力工具 ,提供了很强的串口通信能力。计算机端设计过程如下:

    1、在程序中嵌入通讯控件

    启动VisualC++6.0,利用MFC的AppWizard新建一个项目文件,并命名为CommTe。在Appwizard第一步选择基于对话框的应用程序类型(Dialog based)。在第二步将ActiveX Controls 复选框选中,表示本程序支持ActiveX Controls控件。其他均接收缺省设置,AppWizard将自动生成一个以对话框为主窗口的应用程序。

    单击Progect菜单,从菜单中选Add to Project,再单击Commponents and Control,从弹出对话框中单击Registered ActiveXControls,在列表框中选MicrosoftCommunications Control,单击OK。这时会询问你是否加入CMSComm类,单击OK,返回后看到控件工具条上添加了一个通讯控件(在图中用标有“电话”的方框表示),将其拖放到对话框中此时项目中增加一个类MSComm。

    2、设置通讯控件的属性值

    通过设置MSComm控件的属性对串口实例进行初始化,在OnInitDialog()中填入如下代码:

    m_comm.SetCommPort(1);//指定串口号
    m_comm.SetSettings("9600,n,8,1");//通信参数设置
    m_comm.SetInBufferSize(256);//指定接收缓冲区大小
    m_comm.InputMode( 1 );//设置数据获取方式
    m_comm.SetInputLen(1 );//每次读操作从缓冲区中取1个字符
    m_comm.SetRThreshold(1); //每接收1个字符就触发1次接收事件
    m_comm.SetSThreshold(0); //不触发发送事件
    m_comm.SetInBufferCount(0);//清空接收缓冲区
    m_comm.SetPortOpen(TRUE);//打开串口

    3、接收端数值的识别

           接收端数值的识别是方案实施的关键,接收端数值的识别分三种情况:字符型、整型数据、浮点型数据的识别。字符型数值的识别直接将接收的数据赋给字符型变量既可完成识别任务。

    浮点型数值的识别采取联合体进行数据转换,以使用普遍的keil C为例,其规定浮点型数据占四个字节,保存顺序是低位在前、高位在后;keil C的浮点型数据和Visualc++6.0基本一致。我们可以定义联合体,利用联合体全部成员占用同一个存储空间的性质完成数据转换,定义的联合体形式如下:

    union
    {float m_ok_f;//最终转换的浮点数</span>
        struct{
            unsignedchar m_m1;//接收的浮点数据
            unsignedchar m_m2;
            unsignedchar m_m3;
            unsignedchar m_m4;
        }m_m;
    }m_ok;

    将接收到的四个字节的浮点型数据依次赋给m_ok .m_m .m_m4~1,后通过提取联合体数据成员m_ok.m_ok_f的数值完成浮点型数值转换。

    整型数值的识别有多种方法,其识别依据是整型数值在单片机内的表示形式。整型数值以使用普遍的keil C为例,其规定整型数值占两个字节,以16位补码形式保存,低位在前、高位在后;keil C的整型数据和Visualc++6.0不一致,Visualc++6.0的整型数据占四个字节。现介绍两个识别方法:

    方法1:在联合体中增加整型数据成员intm_ok_i,将接收到的两个字节的整型数据依次赋给m_ok .m_m .m_m4~3,判断m_ok.m_m .m_m4的值,如果大于0x80,则m_ok.m_m .m_m1~2赋值为0xFF,否则赋值0x00,后通过提取联合体的数据成员m_ok.m_ok_i的数值完成整型数值转换。

    方法2:接收到的两个字节的整型数据,如果第一个字节大于0x80说明是负数,否则说明是正数;对正数第一个字节乘256再加第二个字节即可;对负数第一个字节乘256加第二个字节再减0X10000即可。

           需要提起注意,不同编译器存放数据的方式不同,有采用高位在前、低位在后的;也有采用低位在前、高位在后的;在进行接收端数值识别时一定要搞清存储方式再进行。

    4、接收程序编制

    当有通讯事件发生时(如接收数据),就会触发OnComm事件,在该事件的处理函数中调用Get CommEvent()函数,通过返回值确定是哪类事件,再做出相应的处理。为显示接收数值和进行协议处理,需填加变量和控件,不在缀述。

    利用ClassWizard为MSCOMM控件填加消息响应的函数OnComm (),在该函数中添加代码,实现对串口事件的处理,函数GenInput()返回VARIANT型变量,经过COleSafeArray型变量转换为unsigned char型变量,后依次保存在unsigned char型数组buf(接收缓冲区)中,在保存过程中删除转义字符,同时判断是否出现数据包结尾字符,出现结尾标记时进行显示处理并清除接收缓冲区。代码如下:

    VARIANTvariant_inp;
    COleSafeArraysafearray_inp;
    BYTErxdata[256];
    longk,len;
    if(m_comm.GetCommEvent()==2)
    {
    	variant_inp= m_comm.GetInput();
    	safearray_inp= variant_inp;
    	len= safearray_inp.GetOneDimSize();
    	for(k= 0;k < len; k++ )
    	safearray_inp.GetElement(&k,rxdata+k);
    	buf[m_no]=rxdata[0];m_no++;m_st=0;
    	if(m_no>9)
    	m_no=0;
    	if(m_no>1)
    	{
    		if(((buf[m_no-2]==0xff)&&(buf[m_no-1]==0x27))|| ((buf[m_no-2]==0x27)&&(buf[m_no-1]==0x27)))
    		{
    			m_no--;  m_st=1;goto lp;
    		}
    	}
    	if((buf[m_no-2]==0xff)&&(buf[m_no-1]==0xff)&&(m_st==0))
    	{
    		if(m_no==9)//
    		{
    			m_f1.Format("%d",buf[0]);// 转换字符型数据
    			if( buf[1]>=0x80) //转换整型数据
    			m_f2.Format("%d", buf[1]*256+ buf[2]-0x10000);
    			else
    			m_f2.Format("%d", buf[1]*256+ buf[2]);
    			m_ok.m_m.m_m1=buf[6];//转换浮点型数据
    			m_ok.m_m.m_m2=buf[5];
    			m_ok.m_m.m_m3=buf[4];
    			m_ok.m_m.m_m4=buf[3];
    			m_f3.Format("%f",m_ok.m_ok_f);
    		}
    		m_no=0;
    		UpdateData(FALSE);
    		m_comm.SetPortOpen(false);//关串口
    		m_comm.SetPortOpen(true);//开串口
    	}
    lp:;
    }

     需要额外说明,接收程序在使用过程中,碰到仅接收显示第一数据包数值的情况,接收到的其后各包值等于第一包;重新执行接收程序后,可正确接收第一数据包值,其后各包值仍等于重新执行接收程序后第一包。在接收完每一数据包后,关、开串口方解决此情况。如果没有出现此情况,可去掉关、开串口两语句。

    四、结束语

    本文提出了一种利用MCS-51单片机C语言程序和Visual C++实现单片机与计算机串口通讯的程序设计思路, 在此基础上设计的通讯协议可以传送各种类型数值信息,解决串行通信仅能发送、接收字符型数据的难题,运行效果良好。以上方法, 只要稍加改动便可实现计算机与计算机、单片机与单片机间的直接数值传输。该方案简单实用、可靠性高 ,在实际应用中取得了满意的效果。

    参考文献:

    1、马忠梅等. 单片机的C语言应用程序设计,北京航空航天大学出版社,2003

    2、刘景文. 用delphi开发多媒体教室系统[J]. 天津成人高等学校联合学报 , 2005,(02)

    作者简介:刘景文 (1968 - ,)男,天津市人,天津滨海职业学院电子信息工程技术教研室主任,副教授,主要研究计算机技术、电子技术的系统应用。胥宝萍(1970 - ,)女,天津市人,天津滨海职业学院电气自动化教研室主任,副教授,主要研究电子技术应用。

    Transmit various type value with SerialCommunication interface

    LIU Jing-wen   Xu bao-ping(Tianjin Binhai Professional Institute; Tianjin 300451 China)

    [Abstract] The sended-received value protocol of non-response isintroduced in this paper, and how to  sendedvarious type value base on msc-51 mcu, and how to received various type valueusing Communication-controller of MSComm depended on VC, the software design ofsending-receiving data  was  described。the problem of Serial Communication only can sended- received char typevalue was Resolved, provides the design of transmitted various type value with Serial Communication interface,,theresult shows that the presented method is effective.

    [ Key words]  serialcommunication   MSComm  union

     

    展开全文
  • 并行传输VS串行传输

    千次阅读 2013-06-21 10:45:31
    无论从通信速度、造价还是通信质量上来看,现今的串行传输方式都比并行传输方式更胜一筹。  近两年,大家听得最多的一个词可能就是串行传输了。从技术发展的情况来看,串行传输方式大有彻底取代并行传输方式的势头...

    众人拾柴火焰高”是句老话,但电脑领域却发生了多根线比不过1根线的怪事。无论从通信速度、造价还是通信质量上来看,现今的串行传输方式都比并行传输方式更胜一筹。

      近两年,大家听得最多的一个词可能就是串行传输了。从技术发展的情况来看,串行传输方式大有彻底取代并行传输方式的势头,USB取代IEEE 1284,SATA取代PATA,PCI Express取代PCI……从原理来看,并行传输方式其实优于串行传输方式。通俗地讲,并行传输的通路犹如一条多车道的宽阔大道,而串行传输则是仅能允许一辆汽车通过的乡间公路。以古老而又典型的标准并行口(Standard Parallel Port)和串行口(俗称COM口)为例,并行接口有8根数据线,数据传输率高;而串行接口只有1根数据线,数据传输速度低。在串行口传送1位的时间内,并行口可以传送一个字节。当并行口完成单词“advanced”的传送任务时,串行口中仅传送了这个单词的首字母“a”。

      图1: 并行接口速度是串行接口的8倍

      

      那么,为何现在的串行传输方式会更胜一筹?下文将从并行、串行的变革以及技术特点,分析隐藏在表象背后的深层原因。

    一、并行传输技术遭遇发展困境

      电脑中的总线和接口是主机与外部设备间传送数据的“大动脉”,随着处理器速度的节节攀升,总线和接口的数据传输速度也需要逐步提高,否则就会成为电脑发展的瓶颈。

      我们先来看看总线的情况。1981年第一台PC中以ISA总线为标志的开放式体系结构,数据总线为8位,工作频率为8.33MHz,这在当时却已算是“先进技术”了,所以ISA总线还有另一个名字“AT总线”;到了286时,ISA的位宽提高到了16位,为了保持与8位的ISA兼容,工作频率仍为8.33MHz。这种技术一直沿用到386系统中。

      到了486时代,同时出现了PCI和VESA两种更快的总线标准,它们具有相同的位宽(32位),但PCI总线能够与处理器异步运行,当处理器的频率增加时,PCI总线频率仍然能够保持不变,可以选择25MHz、30MHz和33MHz三种频率。而VESA总线与处理器同步工作,因而随着处理器频率的提高,VESA总线类型的外围设备工作频率也得随着提高,适应能力较差,因此很快失去了竞争力。PCI总线标准成为Pentium时代PC总线的王者,硬盘控制器、声卡到网卡和显卡全部使用PCI插槽。

      图2:

      

      并行数据传输技术向来是提高数据传输率的重要手段,但是,进一步发展却遇到了障碍。首先,由于并行传送方式的前提是用同一时序传播信号,用同一时序接收信号,而过分提升时钟频率将难以让数据传送的时序与时钟合拍,布线长度稍有差异,数据就会以与时钟不同的时序送达另外,提升时钟频率还容易引起信号线间的相互干扰。因此,并行方式难以实现高速化。另外,增加位宽无疑会导致主板和扩充板上的布线数目随之增加,成本随之攀升。

      在外部接口方面,我们知道IEEE 1284并行口的速率可达300KB/s,传输图形数据时采用压缩技术可以提高到2MB/s,而RS-232C标准串行口的数据传输率通常只有20KB/s,并行口的数据传输率无疑要胜出一筹。因此十多年来,并行口一直是打印机首选的连接方式。对于仅传输文本的针式打印机来说,IEEE 1284并行口的传输速度可以说是绰绰有余的。但是,对于近年来一再提速的打印机来说,情况发生了变化。笔者使用爱普生6200L(同时具备并行口和USB接口)在打印2MB图片时,并行口和USB接口的速度差异并不明显,但在打印7.5MB大小的图片文件时,从点击“打印”到最终出纸,使用USB接口用了18秒,而使用并行口时,就用了33秒。从这一测试结果可以看出,现行的并行口对于时下的应用需求而言,确实出现了瓶颈。

      你知道吗?IEEE 1284的三种接口

      早期的并行口是一种环形端口,IEEE 1284则采用防呆设计的D型连接器。IEEE 1284定义了D-sub、Centronics和MDR-36等三种连接器(图3)。我们所见到打印机电缆,一端是D-sub连接器,用来与主机连接,另一端为带有锁紧装置的Centronics连接器,用来连接到打印机。连接起来不仅方便,而且十分可靠。D-sub连接器有25根插针,而Centronics连接器有36根插针,多出来的11根基本上是冗余的信号地。MDR(Mini Delta Ribbon,小型三角带)连接器也是36根插针,这种小尺寸连接器是为数码相机、Zip驱动器等小型设备而设计的,实际上很少被使用。

      图3: 三种不同尺寸的并行口连接器

      

    二、USB,让串行传输浴火重生

      回顾前面所介绍的并行接口与串行接口,我们知道IEEE 1284并行口的速率可达300KB/s,而RS-232C标准串行口的数据传输率通常只有20KB/s,并行口的数据传输率无疑要胜出一筹。外部接口为了获得更高的通信质量,也必须寻找RS-232的替代者。

      1995年,由Compaq、Intel、Microsoft和NEC等几家公司推出的USB接口首次出现在PC机上,1998年起即进入大规模实用阶段。USB比RS-232C的速度提高了100倍以上,突破了串行口通信的速度瓶颈,而且具有很好的兼容性和易用性。USB设备通信速率的自适应性,使得它可以根据主板的设定自动选择HS(High-Speed,高速,480Mbps)、FS(Full-Speed,全速,12Mbps)和LS(Low-Speed,低速,1.5Mbps)三种模式中的一种。USB总线还具有自动的设备检测能力,设备插入之后,操作系统软件会自动地检测、安装和配置该设备,免除了增减设备时必须关闭PC机的麻烦。USB接口之所以能够获得很高的数据传输率,主要是因为其摒弃了常规的单端信号传输方式,转而采用差分信号(differential signal)传输技术,有效地克服了因天线效应对信号传输线路形成的干扰,以及传输线路之间的串扰。USB接口中两根数据线采用相互缠绕的方式,形成了双绞线结构(图4)。

      图4: 采用差模信号传送方式的USB

      

      图5: 差分传输方式具有更好的抗干扰性能

      

      图5是由两根信号线缠绕在环状铁氧体磁芯上构成的扼流线圈。在单端信号传输方式下,线路受到电磁辐射干扰而产生共模电流时,磁场被叠加变成较高的线路阻抗,这样虽然降低了干扰,但有效信号也被衰减了。而在差动传输模式下,共模干扰被磁芯抵消,但不会产生额外的线路阻抗。换句话说,差动传输方式下使用共模扼流线圈,既能达到抗干扰的目的,又不会影响信号传输。

      差分信号传输体系中,传输线路无需屏蔽即可取得很好的抗干扰性能,降低了连接成本。不过,由于USB接口3.3V的信号电平相对较低,最大通信距离只有5米。USB规范还限制物理层的层数不超过7层,这意味着用户可以通过最多使用5个连接器,将一个USB设备置于距离主机最远为30米的位置。

      为解决长距离传输问题,扩展USB的应用范围,一些厂商在USB规范上添加了新的功能,例如Powered USB和Extreme USB,前者加大了USB的供电能力,后者延长了USB的传输距离。

    三、差分信号技术:开启信号高速传输之门的金钥匙

      电脑发展史就是追求更快速度的历史,随着总线频率的提高,所有信号传输都遇到了同样的问题:线路间的电磁干扰越厉害,数据传输失败的发生几率就越高,传统的单端信号传输技术无法适应高速总线的需要。于是差分信号技术就开始在各种高速总线中得到应用,我们已经知道,USB实现高速信号传输的秘诀在于采用了差分信号传输方式。

      差分信号技术是20世纪90年代出现的一种数据传输和接口技术,与传统的单端传输方式相比,它具有低功耗、低误码率、低串扰和低辐射等特点,其传输介质可以是铜质的PCB连线,也可以是平衡电缆,最高传输速率可达1.923Gbps。Intel倡导的第三代I/O技术(3GIO),其物理层的核心技术就是差分信号技术。那么,差分信号技术究竟是怎么回事呢?

      图6: 差分信号传输电路

      

      众所周知,在传统的单端(Single-ended)通信中,一条线路来传输一个比特位。高电平表示为“1”,低电平表示为“0”。倘若在数据传输过程中受到干扰,高低电平信号完全可能因此产生突破临界值的大幅度扰动,一旦高电平或低电平信号超出临界值,信号就会出错(图7)。

      图7: 单端信号传输

      

      在差分电路中,输出电平为正电压时表示逻辑“1”,输出负电压时表示逻辑“0”,而输出“0”电压是没有意义的,它既不代表“1”,也不代表“0”。而在图7所示的差分通信中,干扰信号会同时进入相邻的两条信号线中,当两个相同的干扰信号分别进入接收端的差分放大器的两个反相输入端后,输出电压为0。所以说,差分信号技术对干扰信号具有很强的免疫力。

      图8: 差分信号传输

      

      正因如此,实际电路中只要使用低压差分信号(Low Voltage Differential Signal,LVDS),350mV左右的振幅便能满足近距离传输的要求。假定负载电阻为100Ω,采用LVDS方式传输数据时,如果双绞线长度为10米,传输速率可达400Mbps;当电缆长度增加到20米时,速率降为100Mbps;而当电缆长度为100米时,速率只能达到10Mbps左右。

      在近距离数据传输中,LVDS不仅可以获得很高的传输性能,同时还是一个低成本的方案。LVDS器件可采用经济的CMOS工艺制造,并且采用低成本的3类电缆线及连接件即可达到很高的速率。同时,由于LVDS可以采用较低的信号电压,并且驱动器采用恒流源模式,其功率几乎不会随频率而变化,从而使提高数据传输率和降低功耗成为可能。因此,LVDS技术在USB、SATA、PCI Express以及HyperTransport中得以应用,而LCD中控制电路向液晶屏传送像素亮度控制信号,也采用了LVDS方式。

    四、新串行时代已经到来

      差分传输技术不仅突破了速度瓶颈,而且使用小型连接可以节约空间。近年来,除了USB和FireWire,还涌现出很多以差分信号传输为特点的串行连接标准,几乎覆盖了主板总线和外部I/O端口,呈现出从并行整体转移到新串行时代的大趋势,串行接口技术的应用在2005年将进入鼎盛时期(图9)。

      图9: 所有的I/O技术都将采用串行方式

      

      1.LVDS技术,突破芯片组传输瓶颈

      随着电脑速度的提高,CPU与北桥芯片之间,北桥与南桥之间,以及与芯片组相连的各种设备总线的通信速度影响到电脑的整体性能。可是,一直以来所采用的FR4印刷电路板因存在集肤效应和介质损耗导致的码间干扰,限制了传输速率的提升。

      在传统并行同步数字信号的速率将要达到极限的情况下,设计师转向从高速串行信号寻找出路,因为串行总线技术不仅可以获得更高的性能,而且可以最大限度地减少芯片管脚数,简化电路板布线,降低制造成本。Intel的PCI Express、AMD的HyperTansport以及RAMBUS公司的redwood等I/O总线标准不约而同地将低压差分信号(LVDS)作为新一代高速信号电平标准。

      一个典型的PCI Express通道如图9所示,通信双方由两个差分信号对构成双工信道,一对用于发送,一对用于接收。4条物理线路构成PCI Express x1。PCI Express 标准中定义了x1、x2、x4和x16。PCI Express x16拥有最多的物理线路(16×4=64)。

      图10: PCI Express x1数据通道

      

      即便采用最低配置的x1体系,因为可以在两个方向上同时以2.5GHz的频率传送数据,带宽达到5Gbps,也已经超过了传统PCI总线1.056Gbps(32bit×33MHz)的带宽。况且,PCI总线是通过桥路实现的共享总线方式,而PCI Express采用的“端对端连接”(图11),也让每个设备可以独享总线带宽,因此可以获得比PCI更高的性能。

      图11: PCI Express端对端连接消除了桥路

      

      AMD的HyperTransport技术与PCI Express极其相似,同样采用LVDS数据通道,最先用于南北桥之间的快速通信。其工作频率范围从200MHz到1GHz,位宽可以根据带宽的要求灵活选择2、4、8、16或32位。HyperTransport最先用于南北桥之间的快速通信,今后会用于所有芯片间的连接。

      2.SATA,为硬盘插上翅膀

      在ATA33之前,一直使用40根平行数据线,由于数据线之间存在串扰,限制了信号频率的提升。因此从ATA66开始,ATA数据线在两根线之间增加了1根接地线正是为了减少相互干扰。增加地线后,数据线与地线之间仍然存在分布电容C2(图12),还是无法彻底解决干扰问题,使得PATA接口的最高工作频率停留在133MHz上。除了信号干扰这一根本原因之外,PATA还存在不支持热插拔和容错性差等问题。

      图12: 并行ATA的线间串扰

      

      SATA是Intel公司在IDF2000上推出的,此后Intel联合APT、Dell、IBM、Seagate以及Maxtor等业界巨头,于2001年正式推出了SATA 1.0规范。而在春季IDF2002上,SATA 2.0规范也已经公布。

      SATA接口包括4根数据线和3根地线,共有7条物理连线。目前的SATA 1.0标准,数据传输率为150MB/s,与ATA133接口133MB/s的速度略有提高,但未来的SATA 2.0/3.0可提升到300MB/s以至600MB/s。从目前硬盘速度的增长趋势来看,SATA标准至少可以满足未来数年的要求了。

      3.FireWire,图像传输如虎添翼

      FireWire(火线)是1986年由苹果电脑公司起草的,1995年被美国电气和电子工程师学会(IEEE)作为IEEE 1394推出,是USB之外的另一个高速串行通信标准。FireWire最早的应用目标为摄录设备传送数字图像信号,目前应用领域已遍及DV、DC、DVD、硬盘录像机、电视机顶盒以及家庭游戏机等。

      FireWire传输线有6根电缆,两对双绞线形成两个独立的信道,另外两根为电源线和地线。SONY公司对FireWire进行改进,舍弃了电源线和地线,形成只有两对双绞线的精简版FireWire,并取名为i.Link。

      FireWire数据传输率与USB相当,单信道带宽为400Mbps,通信距离为4.5米。不过,IEEE 1394b标准已将单信道带宽扩大到800Mbps,在IEEE 1394-2000新标准中,更是将其最大数据传输速率确定为1.6Gbps,相邻设备之间连接电缆的最大长度可扩展到100米。

    五、“串行”能红到哪天?

      阅读本文之后,如果有人问关于串行传输与并行传输谁更好的问题,你也许会脱口而出:串行通信好!但是,串行传输之所以走红,是由于将单端信号传输转变为差分信号传输,并提升了控制器工作频率的原因,而“在相同频率下并行通信速度更高”这个基本道理是永远不会错的,通过增加位宽来提高数据传输率的并行策略仍将发挥重要作用。当然,前提是有更好的措施来解决并行传输的种种问题。

      技术进步周而复始,以至无穷,没有一项技术能够永远适用。电脑技术将来跨入THz时代后,对信号传输速度的要求会更高,差分传输技术是否能满足要求?是否需要另一种更好的技术来完成频率的另一次突破呢?不妨拭目以待!

     

    展开全文
  • 总线揭密 串行传输VS并行传输

    千次阅读 2018-11-15 09:10:27
    总线揭密 串行传输VS并行传输
  • 串行差分传输

    千次阅读 2019-04-17 22:02:18
    并行接口因为有多条并行且紧密的导线,但时钟频率提高的一定程度时,传输数据已经无法恢复。 而串口因为导线少,线间干扰容易控制,反而可以通过不断提高时钟频率来提高传输速率。而且串口的端子也会比较...
  • 数据传输的顺序可以分为串并行通信(传输)和串行通信(传输); 按数据传输的同步方式可分为同步传输和异步传输,而同步和异步同属于串行通信,是串行通信的两种基本形式!!! 按数据传输的流向和时间关系可以...
  • 总线揭密:串行传输VS并行传输

    万次阅读 多人点赞 2011-10-30 15:17:10
    近两年,大家听得最多的一个词可能就是串行传输了。从技术发展的情况来看,串行传输方式大有彻底取代并行传输方式的势头,USB取代 IEEE 1284,SATA取代PATA,PCI Express取代PCI……  从原理来看,并行传输方式...
  • 已经定义了数百种通信协议来实现这种数据交换,并且通信的方式主要可以分为两类:并行或串行。 2、并行通信 并行是指多比特数据同时通过并行线进行传送,这样数据传送速度大大提高。 但并行传送的线路长度受...
  • 学习通信的时候,这几个名词单工通信/半双工通信/全双工通信,串行传输/并行传输,同步传输/异步传输我一直都很迷,现在我总结一下,也是加深我的记忆了 1.按照信息在信道中的传输方向分为: a.单工通信: 消息只能...
  • 整理资料如下: 1.并行传输:  字符编码的各位(比特)同时传输... 串行数据通信的方向性结构有三种:  1)单工;  2)半双工;(I2C)  3)全双工; (UART)  1).同步通信原理  同步通信是一种连续串...
  • 串行接口 微型计算机主机与外部设备的连接,基本上...串行通信是指数据一位位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信,并可以利用电话线,从而大大降低了成本,特别适用于远距离通信,...
  • 数据通信中,按每次传送的数据位数,通信方式可分为:并行通信和串行通信两种方式,在多微机系统以及现代测控系统中信息的交换多采用串行通信方式 1.2、并行通信 并行通信时数据的各个位同时传送,可以字或...
  • 数据传输方式

    千次阅读 2005-12-18 11:36:00
    数据传输方式(1)并行传输与串行传输  并行传输指的是数据以成组的方式,在多条并行信道上同时进行传输。常用的就是将构成一 个字符代码的几位二进制码,分别在几个并行信道上进行传输。例如,采用8单位代码的字 符...
  • 并行通信传输中有多个数据位,同时在两个设备之间传输。发送设备将这些数据位通过 对应的数据线传送给接收设备,还可...串行数据传输时,数据是一位一位地在通信线上传输的,先由具有几位总线的计算机内的发送设备,
  • [基础] 什么是串行接口和并行接口

    千次阅读 2007-12-12 15:23:00
    串行接口的特点是一次只能传输一个位的数据!而并行接口的话,一次可以传输多个 位的接口.这就像是我们道路的单行道和双行道.单行道是串行接口,而双行道是并行接口。 并行接口是指数据的各位同时进行传送,其特点是...
  • 串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路,我们称为串行接口电路。数据转换是指数据的...
  • USB能够代替1394接口吗  现在出现了很多能够在台式机及本本上都能够使用的外置视频采集卡,相对内置板卡来说,安装使用更简单快捷。...USB数据线能把DV转录到电脑吗?USB能够代替1394接口进行采
  • 异步串行通讯和同步串行通讯区别

    千次阅读 2014-12-01 20:17:14
    而按照串行数据的时钟控制方式,串行通信又可分为同步通信和异步通信两种方式。    1、异步串行方式的特点    所谓异步通信,是指数据传送以字符为单位,字符与字符间的传送是完全异步的,位与位之间的传送...
  •  DO串行数据输出引脚  DI串行数据输入信号 二、从主机角度描述SPI通信过程,假定CS片选信号高电平有效:  1、主机将CS片选管脚设置为高电平;  2、CLK设置为高电平;  3、CLK设置为低电平;  4、写...
  • DTU -- 数据传输单元

    千次阅读 2019-09-13 15:21:21
    DTU -- 数据传输单元 DTU (Data Transfer unit),是专门用于将串口数据转换为IP数据或将IP数据转换为串口数据通过无线通信网络进行传送的无线终端设备。 硬件组成 DTU硬件组成部分主要包括CPU控制模块、无线...
  • FPGA的GTP高速串行接口数据收发

    千次阅读 2018-10-25 23:20:30
    GTP(吉比特收发器)简称Gigabit Transceiver with Low Power,经常应用于板级通信,板与板,应用在高速串行接口的数据收发。在A7系列芯片中我们叫GTP、在K7系列我们叫GTX、V系列叫GTH、对于不同速度等级的高速通信...
  • 串行接口与并行接口的概念与区别

    万次阅读 2019-04-03 19:58:29
    串口的出现是在1980年前后,数据传输率是115kbps~230kbps,串口一般用来连接鼠标和外置Modem以及老式摄像头和写字板等设备,目前部分新主板已开始取消该接口。 并行接口 并行接口,简称并口,也就是LPT接口,是采用...
  • C6000与C2000系列DSP之间串行数据通讯的研究与实现[日期:2008-7-31]来源:中电网 作者:韩开亮,张 涛[字体:大 中 小] TMS320C6711是TI公司TMS320C6000系列32位浮点DSP,它具有专用硬件逻辑的CPU、片内存储器、片...
  • 文章目录简介特点Avro数据类型和模式Avro基本类型Avro复杂类型Avro数据序列化/反序列化方法1 使用编译的方式序列化反序列化方法2 不使用编译的方式序列化反序列化 简介    &n...
  • 串行通信学习

    千次阅读 2014-07-15 17:14:55
    这种方式的特点传输速度相对较快,但是如果进行长距离的数据传送,成本会很高。 ●串行通讯方式 串行通信就是将数据分成一位一位的,在一条数据线上逐个的进行传输。因此对于一个字节的数据至少需要分八次传输,...
  • 智能卡数据传输T=1传输协议

    千次阅读 2016-01-22 17:50:55
    这项协议以严格的层次划分为特点,可作为数据链路层归入OSI参考模型中。在这种意义上,层次划分也 就意味着数据指向较高的层次,诸如应用层,并可完全由数据链路层透明地处理。除了这一层直接和所传输 的数
  • Micro2440数据传输---串口通信

    千次阅读 2016-04-02 18:44:02
    比较经典的i2c、CAN等数据传输,到以后的usb、ZigBee的数据传输。在这里先聊一聊串口的数据传输。 在Micro2440开发板上进行串口通信,要做的第一步便是串口驱动。这次我的开发板已经移植好了串口驱动。我只需进行...
  • I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。 主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为...
  • 异步串行接口

    千次阅读 2016-11-30 23:35:41
    并行通信:是指利用多条数据传输线将一个资料的各位同时传送。它的特点是传输速度快,适用于短距离通信,但要求通讯速率较高的应用场合。 串行通信:是指利用一条传输线将资料一位位地顺序传送。特点是通信线路简单...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,435
精华内容 14,174
关键字:

串行数据传输的特点是什么