串行数据传输

2024-06-22

串行数据传输(精选10篇)

串行数据传输 篇1

目前空间遥感技术在农业、地质探测、气象以及军事等领域有着广泛的应用[1]。搭载在航天器上的空间遥感仪器将拍摄到的图像数据通过数据传输系统发送到地面[2]。空间遥感仪器进行工作时会获取大量的图像数据信息, 为了便于后期数据的处理和分析应用, 需要对获取的高速数据进行采集存储。由于数据量十分庞大, 目前通常采用高速串行差分的方式进行传输, 这样可以大大减少信号之间的相互串扰以及外部噪声的干扰。在进行高速数据传输系统设计的过程中, 使用现成的高效高速数据传输芯片将会使整个设计工作事半功倍。本文重点介绍了基于TI公司的TLK2711高速数据传输芯片的串行传输系统设计。

1 系统硬件设计

本文研究的是一种基于TLK2711的高速串行传输方案, 在实现高速实时数据传输的基础上进行数据信号处理。系统中的关键组成部分包括PCI Express总线接口模块、FPGA数据处理控制模块、DDR3 SDRAM存储模块以及TLK2711高速串/并转换接口模块, 系统框图如图1所示。系统的工作原理:发送端PC通过PCI Express总线接口与发送板进行数据通信, 将PC模拟的卫星成像数据源通过缓存DDR3 SDRAM由TLK2711高速串/并转接口发送给数据信号处理器;经过数据信号处理器处理的数据再通过TLK2711高速串/并转接口发送给接收板, 接收板通过缓存DDR3 SDRAM由PCI Express总线接口上传给接收端PC, 最后在接收端PC中进行数据校验和相应处理。

2 系统逻辑设计

2.1 总体逻辑设计

作为系统的控制核心, FPGA起着前端TLK2711发送/接收控制、数据链路多路转换控制、DDR3 SDRAM控制器、PCI Express总线DMA传输控制的作用。发送端的PC将数据源在发送板总线主控DMA控制器的控制下, 通过PCIE-8x通道将数据传入FPGA存储到片外的DDR3 SDRAM, FPGA通过内部逻辑对DDR3 SDRAM中缓存的数据进行必要的时序控制和相关处理, 处理过后的并行数据流在FPGA内部进行重组, 形成满足TLK2711数据格式要求的16 bit数据流。这个过程主要是同步字符、帧头、帧尾以及控制信号的添加等。TLK2711根据参考时钟对输入的并行数据进行8B/10B编码, 然后以20倍的参考时钟频率将数据以高速差分串行输出的方式通过铜缆传送给数据信号处理器。

经过数据信号处理器处理过的数据以串行差分方式通过铜缆传送给接收板的TLK2711, TLK2711在参考时钟下完成高速串行输入数据的串/并转换, 转换后的20 bit并行数据经过内部同步到恢复时钟, 然后利用8B/10B解码格式将20 bit并行数据解码为原始的16 bit并行数据输出到FPGA进行数据处理, FPGA通过内部逻辑对高速数据进行必要的时序控制和相关处理。这个过程主要是去除帧头、帧尾、同步字符, 同时检测控制信号并对数据进行处理。处理过后的数据缓存到片外的DDR3 SDRAM, 在总线主控DMA控制器的控制下, 通过PCIE-8x通道将缓存的数据写入计算机硬盘。FPGA内部逻辑示意图如图2所示。

2.2 TLK2711传输协议

TLK2711高速串行协议是一种基于点对点的单工协议, 它以16 bit为一个基本的传输单位, 数据被分成了高8位和低8位, 因此每个控制字符都定义成了2 B (分别由D码和K码组成) , 编码方式由2个控制信号TKMSB/RKMSB和TKLSB/RKLSB决定。协议的工作过程如图3所示。

系统上电或复位后, 收发双方处于失步状态 (在发送端复位后要保证接收端已处于接收状态) , 发送端首先发送同步字符且时间长度不小于1 ms, 1 ms结束后认为系统完成同步过程, 发送端开始数据帧的发送。在每一帧数据发送结束后和下一帧数据开始发送前, 发送端要发送同步字符来保持数据传输链路的同步状态。在同步状态建立后, 接收端不断检测输出控制信号RKLSB和RKMSB, 根据RKLSB和RKMSB的状态判断数据类型, 舍去帧头、帧尾和同步字符, 锁存真正需要的数据。接收端在数据帧传输过程中如果失步, 则依靠数据帧间的同步字符重新建立起收发间的同步关系, 同步关系建立后立刻转入正常数据接收状态。根据协议工作过程, 定义TLK2711芯片用作发送通路时的6个状态分别是:空闲、建立同步、发送帧头、发送数据、发送帧尾、发送同步字符, 其发送通路的状态转换如图4所示。

2.3 带宽动态分配

系统采用6片TLK2711并行工作, 接收端要根据发送端的速率适时调整接收端TLK2711的工作数量, 以实现带宽的动态分配。当接收端的6片TLK2711同时接收数据时, FPGA需要在一个时钟周期内将96 bit并行数据转换为与PCI Express总线位宽匹配的64 bit并行数据, 然后才能进行相应处理。考虑到调用FPGA内部的RAM IP核或者FIFO IP核无法实现该位宽转换, 因此设计了一个输入位宽可变的RAM来处理数据位宽, 从而实现接收端TLK2711工作数量可调。

首先FPGA在接收板TLK2711的恢复时钟下将重构的并行数据锁存一个周期, 然后根据伴随着数据流的输入控制信号判断是否有有效数据到来, 当接收到有效数据后, 将数据写入异步FIFO进行不同时钟域的数据处理。当一个信号从一个时钟域传递到另外一个时钟域时经常会出现亚稳态问题, 解决这一问题可以使用一个异步FIFO使得另外一个时钟域的信号足够稳定。将接收端TLK2711从串行数据流中提取的恢复时钟作为FIFO的写时钟, 将PCIE总线250 MHz分频产生一个同相的125 MHz时钟作为FIFO的读时钟。当FIFO半满信号有效时, 读写控制逻辑开始将FIFO中的数据读出来作为位宽可调的RAM的输入, 从而实现位宽转换。该RAM的接口如图5所示, 其中adjust为通道选择信号, wr为异步FIFO的读使能。

考虑到RAM的读写时钟以及输入/输出数据位宽, 可以发现RAM的写数据速度远小于其读取数据的速度, 故系统采用乒乓操作对接收板TLK2711的数据进行处理。FIFO读出的数据首先写进ram0, ram0写满之后开始向ram1写数据, 同时将ram0写入的数据读取出来。由于ram的写数据速度远小于其读取数据的速度, 所以当ram0中的数据读取完时ram1还未写满, 此时ram0停止读取数据并且处于等待状态直至ram1中写满数据。当ram1中写满数据时开始写ram0, 同时紧接着读取ram1中的数据。同理, 当ram1中的数据读取完时ram0还未写满, 所以此时ram1同样停止读取数据并且处于等待状态, 直至ram0中满数据。当ram0写满数据时, 立即开始写ram1读取ram0中的数据, 如此循环。该乒乓操作示意图如图6所示。

按照设计思路将模块功能在Xilinx公司的FPGA设计平台ISE 14.2上进行代码编译综合、功能仿真和时序仿真等, 通过JTAG口将程序下载到FPGA中进行实际运行, 然后利用ISE 14.2自带的逻辑分析仪采集所要观察的数据信号并进行在线调试。图7为使用ISE 14.2中Chipscope采集的对单通道TLK2711接收到的数据进行不同时钟域处理和乒乓操作的时序图。从图中可以看出整个工作情况与以上描述一致, 证明该模块从代码设计和时序约束到功能实现全部通过, 数据传输速率在TLK2711芯片内可以达到194.74 MB/s。

2.4 设计中应注意的问题

高速数据传输系统要求有高稳定性和高精度的时钟源, 抖动和频偏是衡量时钟源的两个重要指标。TLK2711内部对输入参考时钟进行20倍频, 同时TLK2711的时钟稳定度要求小于±10 ppm, 在设计时不能使用FPGA内部的MMCM模块倍频生成参考时钟。因为经过MMCM模块倍频的时钟容易引起比较大的抖动, 导致TLK2711接收锁相环无法稳定地锁定发送时钟从而产生误码。考虑到时序的设计要求, 系统选用125 MHz的有源晶振作为TLK2711的时钟源, 并将其输出时钟接至FPGA的全局时钟引脚, 同时使用IBUFG+BUFG对该全局时钟进行处理后作为6路TLK2711的输入参考时钟。为了保证高速差分信号的传输质量, 差分线对的两根线应尽可能靠近并且远离其他信号, 在进行PCB布线时, TLK2711的16 bit并行总线与伴随时钟也要进行等长处理, 以保证输入数据的同步和一致性[3,4,5]。

对于高速串化解串器TLK2711, 当它只用作发送通路时, 应将LCKREFN引脚置低, 这样接收通道的RXD[0:15]、RXCLK、RKLSB、RKMSB等引脚都会处于高阻抗状态;当只用作接收通路时, 发送端不用的TXD[0:15]、TKLSB、TKMSB等引脚应当拉高或拉低使其处于一个稳定的状态。

基于TLK2711的高速串行传输系统的设计大大降低了高速数据传输过程中的互联复杂程度, 同时保证了信号传输的实时性和准确性。基于此设计的6通道串行传输系统工作稳定可靠, 各项指标达到设计要求。本系统创新点在于采用输入位宽可调的RAM对接收端进行带宽动态分配, 对于解决高速多通道TLK2711的串行传输系统设计有较高的参考价值。

参考文献

[1]任建岳.空间光学遥感器专题文章导读[J].光学精密工程, 2008, 16 (10) :1852-1852.

[2]曹小涛, 徐抒岩, 赵运隆.空间相机连续调焦地面仿真测试系统设计[J].液晶与显示, 2011, 26 (3) :409-412.

[3]张达, 徐抒岩.高速CCD图像数据光纤传输系统[J].光学精密工程, 2009, 17 (3) :670-675.

[4]Texas Instruments.TLK2711 1.6 to 2.7 Gb/s transceiver datasheet[Z].2001.

[5]张达, 徐抒岩.基于TLK2711的高速图像数据串行传输系统[J].微计算机信息, 2009, 25 (1-2) :284-286.

说说串行这件事 篇2

关于《何以笙箫默》是否真的很烂,抑或真的是经纪人黄斌导致的“烂” 果,这是个见仁见智的问题,不是我们今天要讨论的重点。我们更有兴趣了解的是,一个经纪人究竟是怎样变成一个导演?而且,似乎当下票房好的电影,几乎都不是真正的导演的作品,有作家,有歌手,有演员,所谓外来的和尚好念经,真的是串行的买卖才能挣钱么?

渊源:反串

说起串行,表演行业自古有之,最早是起源于中国的传统戏曲表演中,只是过去正式的说法叫“反串”,但这个反串并非现在人们通常所理解的那种男扮女或女扮男的反串,而是指演出与自身本工的行当不同的戏的情形,譬如说演小生的演员去演花旦,或者演花脸的演员去演老旦,这叫反串,是与演员以及剧中人的性别无关的。说个最简单的例子,譬如梅兰芳本身是男的,但他工旦行青衣,所以他在《贵妃醉酒》里演女性角色杨贵妃不叫反串,而他在《辕门射戟》里扮演男性角色吕布就叫反串了。

戏曲演员中,有很多人都是有这种反串能力的。譬如著名京剧演员李慧芳,正行是唱青衣的,但人家戏路宽广,一专多能,除了青衣,老生、小生、花旦、刀马旦、老旦等各行全能,形成她特有的“杂家”风格,经常在一个剧目中扮演两个不同行当的角色,如在《四郎探母》中,前饰公主,后饰四郎;在《吕布与貂蝉》中,前饰貂蝉,后饰吕布。这种表演在戏曲行还有个通常的说法叫“一赶N”,就是指一个人在一出戏里扮演多个不同行当或身份的角色;还有种说法叫“一脚踢”,常常会说某个演员“四大名旦一脚踢”,意思是指这个演员梅(兰芳)派、尚(小云)派、程(砚秋)派、荀(慧生)派的风格都会唱,指的是一种表演能力。

这种表演形式并不只出现在中国戏曲里,话剧表演里也常常会有这种情况,尤其是在实验性质的小剧场话剧里,譬如著名导演孟京辉的名作《盗版浮士德》中,演员陈建斌和杨婷就在戏中分别扮演了十几个不同的角色,但这个时候,也基本上不再是原来戏曲中反串的定义了。

兴起:春晚

串行也不仅局限于同一个表演体系内,现在我们比较多见到的串行,往往都是跨表演领域的,譬如改革开放后最早的串行,应该算是1983年央视首届春节联欢晚会上,相声演员姜昆跨行担任了主持人,而电影演员刘晓庆则跨行唱了两首歌(当然人家本身就是音乐学院毕业的),另一位电影演员斯琴高娃还表演了舞蹈。后来这种表演形式在历年的春节晚会上都大受欢迎,譬如歌手李谷一唱京剧、唱花鼓戏,影视演员刘晓庆、张国立担任主持人,主持人朱军唱歌演小品,歌手韦唯唱京剧,京剧演员尚长荣唱流行歌,几乎每年的春晚都会有这样的安排,今年的春晚甚至专门安排了这么一个环节,就叫“反串”,很显然观众也都很喜欢,因为首先是表演形式充满新鲜和惊喜,而另一方面,也让人们看到了喜爱的明星不为人知的其他表演能力,是一个各方加分皆大欢喜的事情。

一件事,有一个人做成功了,马上就会有无数人赶紧效仿,这是几千年不变的中国国情,串行这种风潮,大抵也就是从这里风生水起并蔚然成风的。

发展:跨界

1 有一种串行是因“优”而串

串行这件事情,偶尔为之,可以叫做玩票,主要是图开心图个即时效果,譬如朱军在春晚被人起哄,唱了一嗓子西北民歌,其实唱得很专业也很惊艳,但朱军并没有因此在歌唱方面做专门的发展,这就只叫玩票,甚至包括戏曲频道主持人白燕升都出了几张流行专辑,都只在玩票的范畴。但也有变成职业行为的,那就是真的串行了。港台演员在这方面一直走在前列,一个艺人同时兼具歌手、演员、主持人甚至是其他行当的身份,在港台演艺圈是再正常不过的事情,譬如香港歌手谭咏麟、张国荣、梅艳芳、刘德华、郭富城、张学友、叶倩文、郑秀文,都演过电影,其中不少还是影帝影后级的人物;台湾歌手中演过电影的也不在少数,但相比演电影,台湾歌手们在主持领域显然表现更为精彩,譬如我们现在所熟悉的综艺主持人吴宗宪、陶晶莹都是歌手出身,而庾澄庆、张宇、张清芳等也都曾是综艺节目的著名主持人。娱乐圈曾经特别流行两个词叫“唱而优则演”或“演而优则唱”,说的就是这种现象。

“演而优则导”的在电影圈中也特别常见,像国外的克林特·伊斯特伍德、梅尔·吉布森、罗伯特·雷德福、西恩·潘等影帝级人物同时也都是优秀的电影导演,而华人演员中,周星驰、姜文、张艾嘉、尔冬生等也都是从演员转型导演的成功代表。可能好多人不曾了解,大导演张艺谋也曾经是演员,1988年就曾以电影《老井》拿下过第2届东京国际电影节的影帝大奖。

这里提到的串行,无论是“唱而优则演”“演而优则唱”“唱而优则说(主持)”还是“演而优则导”,当中都少不了一个“优”字,这个“优”字代表了两层含义:一是当事者在自身首先被主要认定的行业中已经做到了“优”,而串行之后的他们,在串起的行业中依然干得相当出色,或者至少是在往出色的方向努力,串行者自身的能力是足以驾驭不同行业素质要求的,所以人们对于这种串行往往是更多持肯定和赞许态度的,也因此在一个时期里,人们只要一看到某位在某个行当已经取得杰出成就和广泛肯定的明星宣布要尝试另一个不同的行当时,很多人其实是充满期待的。

2 有一种串行是因“工”而串

当然也有的串行并非是因为艺人本身具备了串行的优质潜力,而仅仅是工作需要,只不过有的是因为具体的表演需要,有的就是因为长远事业打算的。前者如影坛天后张曼玉和章子怡都先后上过春晚唱歌,但那就是为了完成一个节目。再如很多话剧演出中,常常就有角色需要现场歌唱,像孟京辉的经典话剧《恋爱的犀牛》中,主演郭涛就得有大段的演唱,这个时候的串行就是一种角色行为,同样的,姜文和张艺谋都曾为电影《红高梁》演唱过《妹妹你大胆地往前走》,这种行为,其实就是另一种方式的角色表演,没有人会在乎他们到底唱的如何,符合角色需要即是成功。

但也有的这种串行并没有只停留在一次性的角色行为上,譬如前面我们就提到,在港台地区,艺人基于职业全面性发展的要求,即便再不会唱,他们也得按照公司的要求出唱片或演电影,譬如刘嘉玲、吴君如、周润发等都是出过专辑的,而且也都有一两首经典作品,林忆莲也是演过电影的,这些都是演艺经纪公司为了拓宽艺人事业发展增加艺人的市场占有率而设计的行为。就拿影视演员出歌这件事来说,很多人这样做就是为了多获得一些演出机会,因为对于演员来说,你只有能拿出一两首自己的歌,才能堂而皇之地去走商演挣钱,毕竟没有哪一场商演能接受一个演员就是出来亮个相而已,总还得表演一个节目吧?演小品需要人配合,跳舞需要专业技术,当然就是唱歌来得更容易,就算不会唱还可以还音(假唱)对口型,然后轻轻松松就把几万几十万的劳务挣到了,人家当然得时不时就出一两张专辑几首新歌;还有的歌手,唱歌就是红不了,那不如串行演戏吧,没准儿换个场地就能火起来呢,这不,吴秀波和柳云龙都是活生生的例子,如此,这能不让其他的人眼馋着就赶紧也各自串起来么?

演变:“窜”行

1 明星出书

上面所说的这些串行,无论是歌手串到影视行,还是影视演员串到歌手行,好歹都还是在表演领域内串,毕竟表演是相通的,而且很多科班出身的演员,无论是歌手还是演员,基础的声乐和形体训练都还是会有的。但后来有些串行,就慢慢有些偏离轨道了。

还记得宋丹丹和赵本山演的那个著名小品《昨天·今天·明天》中白云的一段话不?“人倪萍不是都出了一本书,叫做《日子》,我寻思着那我也出本书,就叫《月子》”;赵本山演的黑土接着说:“那我也出一本,就叫《伺候月子》!”这段戏讲的就是一直盛行到现在的一种串行:明星出书。

没有具体资料可以考证明星出书热是始于哪一年哪个明星的哪本书,倪萍1997年出版的纪实散文集《日子》只是其中比较著名的一本,有报道曾提过1998年和2003年是各类演艺明星出书的高潮年,如今看来,还没有出过书的演艺明星通常只有两种原因:一种是正在准备出,另一种就是实在没有名气没得可出。名人出书与以往我们所理解的名人传记不一样,名人传记很多时候是请人撰写的明星生平经历和感悟,而明星出书虽然当中很多也都是请人捉刀的,只是署着名人自己的名字,而且书的种类也远远突破了个人传记这一领域,从散文、诗歌、摄影、美食、化妆、美容、旅行甚至是特殊专业领域一应俱全,而其中相当一部分明星出的书,其实就是明星写真集配上几行简短的文字。明星出的书当中,当然不乏真的文笔出众或才思妙趣的,譬如伊能静、高晓松、倪萍、宋丹丹出的几本书,可读性都还是挺强的,而柴静去年出的一本《看见》还登上了亚马逊2014年度图书榜的第9名,另外一位MTV台的主持人杨杨出版的《你是最好的自己》则排在第28名,白岩松的《行走在爱与恨之间》、乐嘉的《本色:写的是我,说的是你》以及高晓松的《鱼羊野史第1卷》都进入了年度TOP100的名单。但更多明星所出的书,其实就是一种粉丝消费品,别说什么文采才情了,不是流水账单,就是莫名其妙的外星文字,除了粉丝,是没有人会愿意浪费时间多看一眼的。

2 明星当导演

还有一种串行也成为了近几年的大热门,那就是明星串行做导演。这里我们强调的是明星串行做导演而不是演员串行做导演,这当中还是有区别的。演员“演而优则导”的例子,我们前面已经提到过,不少杰出的演员积累了一定的经验后,加上本身就是学习电影行业的,是具备一定的条件做一个优秀导演的。但明星不一样,好的演员可以成为明星,但好的明星却未必都是好的演员。内地第一个明星导演,大概应该从徐静蕾算起吧, 2004年徐静蕾自编、自导、自演的电影《我和爸爸》获得第四届华语电影大奖最佳编剧、最佳新导演提名、内地最受欢迎女演员奖、金鸡奖最佳处女作奖。同年9月由徐静蕾自编、自导、自演的电影《一个陌生女人的来信》获得第52届西班牙圣塞巴斯蒂安电影节最佳导演奖。放眼整个电影圈,即便是一些名震全球的著名导演,1年之内导两部电影都不是很常见的事情,何况人家一名初出茅庐的小女子,同时还兼任编剧和主演,这是何等的创举!所以2005年6月,美国《时代周刊》在其名为《中国新革命》一文中,将徐静蕾作为中国唯一导演及演员入选,并称其为“中国电影界有革命性的代表人物”。

徐静蕾对中国电影界的影响确实是革命性的。2010年,徐静蕾导演的第四部影片《杜拉拉升职记》在中国大陆票房突破1亿,成为内地首个破亿女导演,这与徐静蕾本身的女明星效应是不可分割的,其商业的成功让很多人看到了明星做导演的商机。而同时圈内还一直流传着一种说法,说徐静蕾所谓的导演成功,不过是成功地在镜头和大众面前扮演了一个导演的角色,有一个曾经请过徐静蕾担任电视剧导演的制作人透露说,等徐静蕾进了组之后才发现,她连导演的分镜头剧本都根本不会写,还得要王朔帮她写,只好赶紧与这位明星导演说byebye。

但不管会不会写分镜头剧本,徐静蕾以一个女明星的身份串行导演所取得的无论是声名上的还是商业上的成功,无疑是对其他明星有着无与伦比的刺激性和感召力的。在她之后,另一位四小花旦的成员赵薇也踏上了导演之路,同样取得了商业上的巨大成功,但是电影的口碑和质量如何呢?赵薇的《致青春》略好一点,豆瓣网平均得分是6.7(满分为10分),其中给出两星(满分是五星)及以下评价的观众比例占21.9%,而徐静蕾今年的新片《有一个地方只有我们知道》的豆瓣网平均得分是5.0,给出两星及以下评价的观众比例占51.7%。今年,又一位明星加入导演行列,就是苏有朋,他导演的青春片《左耳》豆瓣平均得分5.5分,但亦是今年五一小长假的票房赢家之一。

除了电影明星外,歌手转行做导演的在这些年也有很多,像周杰伦、王力宏、陶喆这几位天王现在都在尝试当电影导演,歌手戴佩妮也串行为其他歌手当过MV导演,甚至得到了金曲奖最佳导演奖的提名,但真正凭歌手身份转行导演且获得一致好评的,目前也就歌手阿牛导演的电影《初恋红豆冰》、歌手卢庚戌导演的《怒放之青春再见》等少数几人而已(但是票房都不是太好哦)。摇滚教父崔健也曾先后导演过《成都我爱你》和《蓝色骨头》等电影,但反响嘛,前者没有获得公映的机会,后者,很多人看过了也就只能“呵呵”而已。

五 恶化:串的莫名其妙,烂到匪夷所思

这都不可怕,可怕的是那些曾经被明星们呛了行的作家们也开始往电影界报复性地反扑了,前有郭敬明后有韩寒,这对一直在文坛相爱相杀的作家伙伴在本行里没杀够,又前赴后继地转入电影圈继续相爱相杀,郭敬明导演了《小时代》系列,韩寒导演了《后会无期》,都成了轰动整个影坛乃至整个娱乐圈的大事件,无论是话题还是票房的成功都令人咋舌,但口碑呢?只能说,一个是华丽丽的烂,一个是乱糟糟的烂,一个是用一堆明星来扮演奢靡,一个是用一堆明星来扮演颓迷。有人曾用“丧尽天良”来形容郭敬明导演的《小时代》系列,也有人用“PPT电影”或“幻灯片电影”来形容他们的“电影作品”,意即这些电影里,只有一帧一帧的精美画面,却无非都是在卖弄导演本人的恶趣味罢了,跟故事,跟表演,跟电影,其实没有半毛钱关系。后来人们发现,郭敬明其实还算是有良心的,这当然是要跟后面出现的《何以笙箫默》的导演相比的,因为《小时代》虽烂,好歹还有些精美的布景和衣妆,《何以笙箫默》里甚至连这个都没有!连韩寒自己都说,看了最近一些导演拍出的片子,他更有信心做导演了!但偏偏这样的电影票房还都出奇地好,反倒是那些口碑出众的电影却个个票房惨败,有的甚至连放映的机会都被剥夺了。

歌坛的恶化甚至比电影界开始的还早。先是演员串进歌坛唱歌出专辑,但毕竟演员当中还是有很多的确唱得不错的,后来就直接演变成各行各业各种年龄的人,不管你会不会唱歌,只要你想唱又敢唱,去参加个选秀,马上就可以一夜成名成为最当红的歌星,而真正会唱歌的歌手却几乎没有了出头机会,直到近几年才找到了翻身的机会。

很多业内人士和真正爱好演艺、追求艺术水准的人也在反思,为什么演艺行业会乱成这样?有人指出,其中关键的原因在于,过去的演艺行业已经完全变成了当下的娱乐行业,演艺的规则逐步被娱乐的需要所彻底取代,一切为了娱乐,而娱乐的核心价值是消遣和消费,其主要实现手段是刺激,对眼球或对身心的刺激。所有的演艺作品在这个娱乐时代里,其娱乐消费品的属性就必然被放到了第一位。而娱乐消费品大多是流行快销产品,其商品的属性决定了它的成功更多是来自于营销而并非完全出版产品本身,因此那些具有娱乐营销爆点的产品自然就成了易销好卖的产品,而什么东西能够有效地产生营销爆点呢?几个有影响力的明星,一连串爆炸性的话题、一堆有刺激性的画面和一些让人意料不到的结果,就譬如说,一个导演导一部片子和一个经纪人导一部片子哪个更让你意外更令你好奇?当然是后者!娱乐消费时代,很多人往往就是因为好奇和意外而决定消费的。而娱乐消费时代又是与当下互联网时代相重合的,互联网时代的显著特征是什么?就是满足大众的吐槽欲,把一个原本高高在上的人或物拉进网络里,吐他个满头满脸的口水,这是网友们最喜闻乐见也是最愿意积极参与的事情。于是人们发现,越是烂的东西越有人愿意看,因为只有看过了他才有对象和资本对其进行吐槽,从而获得一种心理战胜了对方的优越感和满足感,更何况获得这种对象和资本的成本往往很低――一场电影最贵票价也不过120元,看电视和听音乐完全就是免费的,所以人们越来越热衷于发现烂、然后投入烂、最后怒骂烂的这种狂欢娱乐中,聪明的营销者正是抓住了大众这种畸形的消费心理,投其所好对症下猛药。譬如《何以笙箫默》的导演黄斌在回应为什么这部片子会遭到大众如此吐槽时就坦言:“很多槽点就是我们事先故意预埋的。”而且他也知道大众当下这种嗜烂如狂的消费心理,因此他也敢说:“你只有看了我们的影片才有资格骂我们烂,而那些看都没有看就说我们烂的人就是流氓。”

串行数据传输 篇3

整个数据传输系统如图1所示。由于数据传输是双向的, 信号处理板和PCI板都有并/串转换发送模块和串/并转换接收模块 (均在FPGA内实现) , 两块板卡通过平衡电缆连接。此外, 在信号处理板上, DSP处理机通过外部总线向FPGA发送缓存区内写入数据, FPGA通过DSP的主机口完成与DSP存储空间的数据交换。在PCI板上, FPGA通过PCI控制器和主机进行数据交换。系统工作原理可表述如下:DSP处理机将处理结果通过外部总线输出到FPGA缓冲存储器内, 在FPGA内完成数据的并/串转换, 并通过LVDS串行接口发送出去。数据通过平衡电缆传输至上位机接收卡。在上位机接收卡内, 数据经串/并转换后, 送至PCI接口控制电路。上位机输出数据到DSP处理板的过程则相反。由于系统要求数据传输上行数据率小于下行数据率, 设计中上行数据传输通道数为1, 下行数据通道数是4。在传输距离大于8m的情况下, 实际单通道数据传输速率达到264Mbps。

LVDS并/串转换实现

由于FPGA是通过DSP处理机的外部总线获得数据的, 其数据形式是并行的, 所以发送前应将其转换为串行比特流。FPGA内实现并/串转换和串行发送功能的模块HSTX的原理框图如图2所示

由图2可以看出, 该模块有3个输入信号。分别为时钟输入CLK、帧同步信号TFR和并行数据TCH1[7:0]。其中, CLK频率为33MHz, 经过数字时钟管理器 (DCM) 锁相倍频后得到串行模块内部时钟CLK1X (33MHz) 、CLK4XR (33×4=132MHz) 和CLK4XF (33×4=132MHz) , 其中CLK4XR与CLK4XF反相, 与CLK1X同相。输出为三组差分信号, 分别为串行数据TCH1[P:N]、串行时钟TCLK[P:N]和串行帧同步信号TFR[P:N]。输入时钟CLK信号上升沿有效, 时钟上升沿时, 若帧同步信号为高电平, 则锁存输入数据TCH1[7:O], 延时一个时钟周期开始发送。输出的发送时钟TCLK[P:N]为132MHz, 双沿有效。输出串行数据采用小终端模式, 数据低位LSB在前, 帧同步信号TFR[P:N]输出比特序列11110000, 用于供接收端同步。

串行发送模块主要由LOAD_GEN、OUT_DATA、OUT_FR、OUT_CLK4个模块组成。LOAD_GEN模块用来产生并/串转换时加载数据的选通脉冲。OUT_DATA模块采用移位寄存器实现数据并/串转换。而OUT_FR和OUT_CLK模块分别用来产生串行帧同步信号和串行时钟信号。这些模块均使用硬件描述语言VHDL设计完成。

LVDS传输电路设计

由于LVDS总线的传输速率达到264Mbps, 对PCB布线等方面要求特别高。本文利用高速电路仿真分析工具———Mentor Graphics公司的HyperLynx, 对LVDS传输电路进行了仿真设计, 包含传输线阻抗设计、端接匹配、差分信号布线。同时考虑了接插件和传输电缆的选择对数据传输的影响。

LVDS信号的电压摆幅只有350mV, 为电流驱动的差分信号工作方式, 最长的传输距离可以达到10m以上。为了确保信号在传输线中传播时, 不受反射信号的影响, LVDS信号要求传输线阻抗受控, 差分阻抗为100。本系统应用中, 利用高速电路仿真分析工具, 通过合理的设置层叠厚度和介质参数, 调整走线的线宽和线间距, 计算出单线和差分阻抗结果, 来达到阻抗控制的目的。

差分信号的布线是整个传输电路设计的难点。一般来说, 按照阻抗设计规则进行差分信号布线, 就可以确保LVDS信号质量。在实际布线当中, LVDS差分信号布线应遵循以下原则:

1差分对应该尽可能地短、走直线、减少布线中的过孔数, 差分对内的信号线间距必须保持一致, 避免差分对布线太长, 出现太多的拐弯。

2差分对与差分对之间应该保证10倍以上的差分对间距, 减少线间串扰。必要时, 在差分对之间放置隔离用的接地过孔。

3 LVDS差分信号不可以跨平面分割。尽管两根差分信号互为回流路径, 跨分割不会割断信号的回流, 但因为缺少参考平面而导致阻抗的不连续。

4尽量避免使用层间差分信号。在PCB板的实际加工过程中, 由于层叠之间的层压对准精度大大低于同层蚀刻精度, 以及层压过程中的介质流失, 层间差分信号不能保证差分线之间间距等于介质厚度, 因此会造成层间差分对的差分阻抗变化。因此建议尽量使用同层内的差分。

5在设计阻抗时, 尽量设计成紧耦合方式, 即差分对线间距小于或等于线宽。

此外, 在LVDS传输电路设计当中应当选用适合差分信号的高速接插件, 一方面, 接插件的特征参数能够与LVDS信号阻抗匹配, 通过接插件的信号畸变很小;另一方面, 能够提供足够的布线空间, 设计PCB走线宽度和间距。例如AMP公司的Z-PACK HS3系列接插件, 在电气性能方面, 比较适合高速LVDS信号互连。

本系统采用平衡电缆实现长距离传输, 然而, 由于LVDS特殊的阻抗匹配要求和极低的时序偏置要求, 传统的电缆不能用于LVDS数据传输。试验证实双绞线电缆性能最优。短距离 (大约0.5m) 应用时CAT3平衡双绞线电缆效果最佳。而高于0.5m以及数据率大于500MHz时, CAT5平衡电缆效果最好。

结语

本文实现的高速数据传输系统, 已成功应用于某处理机和上位机之间的数据传输, 传输距离大于8m, 单个通道数据传输速率达到264Mbps, 5个数据通道传输速率总共达1.32GbpS, 传输过程稳定。

摘要:本文提出了一种采用LVDS高速串行总线技术的传输方案。该方案既满足了长距离和高数据传输速率的要求, 又降低了互连总线的复杂度和系统成本。完成了基于FPGA的LVDS高速串行传输电路设计。

无线串行通信技术总结 篇4

与传统的有线串行(RS232)通信不同,无线串行通信具有设备移动方便(特别在通信设备空间相互隔离不便连线的情况下)、通信距离远(可达几十km)等特点。

无线串行通信应用领域非常广,常用的有:无线抄表;工业遥控、遥测;无线数据传输;银行POS系统;无线数据采集;楼宇自动化、无线监控、门禁系统;智能家居、工业控制;汽车检测设备;无线LED显示屏系统。

目前,比较常用的无线串行通信技术有红外、蓝牙、ZigBee和无线数传等四种。四种方式都有不少公司推出了标准模块,价廉物美,特别适用于嵌入式系统及PC机之间的串行通信。

1、红外串行通信,符合IrDA1.x标准,利用950 nm近红外波段的红外线作为传递信息的载体,通过红外光在空中的传播来传递信息,由红外发射器和接收器实现。其最大优点是:不易被人发现和截获,保密性强;几乎不会受到电气、天电、人为干扰,抗干扰性强。此外,红外线通信机体积小、重量轻、结构简单、价格低廉。不足之处在于它必须在视距内通信,且收发端必须是直线对射。

红外转RS232模块有武汉波士电子的IR232、北京水木行的SMH-IR220等,波特率可达115.2Kbps,通信距离在1m以上。

2、蓝牙串行通信,符合蓝牙协议(BlueTooth)V1.x,使用2.4GHz的ISM(工业、科学、医学)频段。频道共用23个或79个,频道间隔均为 1MHz,采用时分双工方式,调制方式为BT= 0.5的GFSK。蓝牙的数据传输率可达1Mbs,与红外一样,蓝牙的传输距离也较短。

生产蓝牙转RS232模块的公司也有不少,例如:南京国春电气设备有限公司的GC-232-1,深圳蓝色飞舞科技的BF10等。

3、ZigBee串行通信,Zigbee是IEEE 802.15.4协议的代名词,这个协议规定的技术是一种短距离、低功耗的无线通信技术。其特点是近距离、低功耗、低成本。主要适合用于无线测控、无线抄表、智能家电、安防报警等领域,可以嵌入各种设备。其最高波特率可达384K,传输距离在1000m以内。

ZigBee转RS232典型产品有:赫立讯科技(北京)公司的IP-Link 2220H,深圳市鼎泰克电子有限公司的DTK系列等。

串行通信与重叠I/O 篇5

关键词:串行通信;RS232;重叠;I/O;Win API

中图分类号:TN914文献标识码:A文章编号:1007-9599 (2010) 06-0000-02

Serial Communication and Overlapping I/O

Yu Lu,Li Qing

(PLA 91550 Troop,Dalian116023,China)

Abstract:The serial communication to facilitate easy,widely used in both military and civilian.In combination with the hardware described in detail in the Windows environment,use the Win API for asynchronous serial communication method.

Keywords:Serial communication;RS232;Overlap;I/O;Win API

一、前言

串行通讯在通讯领域被广泛应用,标准的RS232接口已成为计算机、计算机外设、交换机和许多通讯设备的标准接口。微机与微机、微机与外设、微机与程控交换机等都可以通过RS232接口进行方便的连接,以实现控制外设和传输数据等目的。

在Windows应用程序的开发中,我们常常需要面临与外围数据源设备通信的问题。笔者在实际工作中积累了一些经验,现结合硬件、软件,及需要注意的要点作一番探讨。希望对各位需要编写串口通信程序的朋友有一些帮助。

二、RS232串口标准

EIA-RS-232是美国电子工业协会正式公布的串行总线标准,也是目前最常用的串行接口标准。该标准规定:直接连接的最大物理距离为15m,通讯速率低于20kbps。

由于RS232并未定义连接器的物理特性,因此,出现了DB-25、DB-15和DB-9各种类型的连接器,其引脚的定义也各不相同。表1介绍了其中两种连接器(DB-25,DB-9)。

RS232标准接口有25条线,4条数据线、11条控制线、3条定时线、7条备用和未定义线,但常用的只有9根。

目前较为常用9针串口和25针串口,当通信距离较近时,可以用电缆线直接连接,若距离较远,须附加Modem。最为简单且常用的是三线制接法,即地、接收数据和发送数据三脚相连。表2列举了RS232串口通信接线方法。

EIA-RS-232对电气特性、逻辑电平和各种信号线功能都作了规定。

在TxD和RxD上:

逻辑1(MARK)=-3V~-15V。

逻辑0(SPACE)=+3V~+15V。

在RTS、CTS、DSR、DTR和DCD等控制线上:

信号有效:(接通,ON状态,正电压)=+3V~+15V。

信号无效:(断开,OFF状态,负电压)=-3V~-15V。

三、Win32串口应用程序

(一)打开串口

Win32系统把文件的概念进行了扩展。无论是文件、通信设备、命名管道、邮件槽、磁盘、还是控制台,都是用API函数CreateFile来打开或创建的。该函数的声明为:HANDLE CreateFile(LPCTSTR lpFileName,//文件名DWORD dwDesiredAccess,//访问模式DWORD dwShareMode,//共享模式LPSECURITY_ATTRIBUTES lpSecurityAttributes,//通常为NULL

DWORD dwCreationDistribution,//创建方式

DWORD dwFlagsAndAttributes,//文件属性和标志

HANDLE hTemplateFile // 临时文件的句柄,通常为NULL

);

如果调用成功,那么该函数返回文件的句柄,如果调用失败,则函数返回INVALID_HANDLE_VALUE。

(二)串口配置和串口属性

在打开通信设备句柄后,常常需要对串口进行一些初始化工作。这需要通过一个DCB结构来进行。DCB结构包含了诸如波特率、每个字符的数据位数、奇偶校验和停止位数等信息。在查询或配置串口的属性时,都要用DCB结构来作为缓冲区。

调用GetCommState函数可以获得串口的配置,该函数把当前配置填充到一个DCB结构中。一般在用CreateFile打开串口后,可以调用GetCommState函数来获取串口的初始配置。要修改串口的配置,应该先修改DCB结构,然后再调用SetCommState函数用指定的DCB结构来设置串口。

除了在DCB中的设置外,程序一般还需要设置I/O缓冲区的大小和超时。Windows用I/O缓冲区来暂存串口输入和输出的数据,如果通信的速率较高,则应该设置较大的缓冲区。调用SetupComm函数可以设置串口的输入和输出缓冲区的大小。

(三)串口读写

在用ReadFile和WriteFile读写串口时,既可以同步执行,也可以重叠(异步)执行。在同步执行时,函数直到操作完成后才返回。这意味着在同步执行时线程会被阻塞,从而导致效率下降。在重叠执行时,即使操作还未完成,调用的函数也会立即返回。费时的I/O操作在后台进行,这样线程就可以干别的事情。例如,线程可以在不同的句柄上同时执行I/O操作,甚至可以在同一句柄上同时进行读写操作。“重叠”一词的含义就在于此。

ReadFile函数只要在串口输入缓冲区中读入指定数量的字符,就算完成操作。而WriteFile函数不但要把指定数量的字符拷入到输出缓冲中,而且要等这些字符从串口送出去后才算完成操作。

ReadFile和WriteFile函数是否为执行重叠操作是由CreateFile函数决定的。如果在调用CreateFile创建句柄时指定了FILE_FLAG_OVERLAPPED标志,那么调用ReadFile和WriteFile对该句柄进行的读写操作就是重叠的,如果未指定重叠标志,则读写操作是同步的。

函数ReadFile和WriteFile的参数和返回值很相似。这里仅列出ReadFile函数的声明:

BOOL ReadFile(

HANDLE hFile,//文件句柄

LPVOID lpBuffer,//读缓冲区

DWORD nNumberOfBytesToRead,//要求读入的字节数

LPDWORD lpNumberOfBytesRead,//实际读入的字节数

LPOVERLAPPED lpOverlapped//指向一个OVERLAPPED结构

);//若返回TRUE则表明操作成功

需要注意的是如果该函数因为超时而返回,那么返回值是TRUE。参数lpOverlapped在重叠操作时应该指向一个OVERLAPPED结构,如果该参数为NULL,那么函数将进行同步操作,而不管句柄是否是由FILE_FLAG_OVERLAPPED标志建立的。

当ReadFile和WriteFile返回FALSE时,不一定就是操作失败,线程应该调用GetLastError函数分析返回的结果。例如,在重叠操作时如果操作还未完成函数就返回,那么函数就返回FALSE,而且GetLastError函数返回ERROR_IO_PENDING。

在使用重叠I/O时,线程需要创建OVERLAPPED结构以供读写函数使用。OVERLAPPED结构最重要的成员是hEvent,hEvent是一个事件对象句柄,线程应该用CreateEvent函数为hEvent成员创建一个手工重置事件,hEvent成员将作为线程的同步对象使用。如果读写函数未完成操作就返回,就那么把hEvent成员设置成无信号的。操作完成后(包括超时),hEvent会变成有信号的。

如果GetLastError函数返回ERROR_IO_PENDING,则说明重叠操作还为完成,线程可以等待操作完成。有两种等待办法:一种办法是用象WaitForSingleObject这样的等待函数来等待OVERLAPPED结构的hEvent成员,可以规定等待的时间,在等待函数返回后,调用GetOverlappedResult。另一种办法是调用GetOverlappedResult函数等待,如果指定该函数的bWait参数为TRUE,那么该函数将等待OVERLAPPED结构的hEvent事件。GetOverlappedResult可以返回一个OVERLAPPED结构来报告包括实际传输字节在内的重叠操作结果。

如果规定了读/写操作的超时,那么当超过规定时间后,hEvent成员会变成有信号的。因此,在超时发生后,WaitForSingleObject和GetOverlappedResult都会结束等待。WaitForSingleObject的dwMilliseconds参数会规定一个等待超时,该函数实际等待的时间是两个超时的最小值。注意GetOverlappedResult不能设置等待的时限,因此如果hEvent成员无信号,则该函数将一直等待下去。

在调用ReadFile和WriteFile之前,线程应该调用ClearCommError函数清除错误标志。该函数负责报告指定的错误和设备的当前状态。

调用PurgeComm函数可以终止正在进行的读写操作,该函数还会清除输入或输出缓冲区中的内容。

(四)超时设置

在用ReadFile和WriteFile读写串口时,需要考虑超时问题。如果在指定的时间内没有读出或写入指定数量的字符,那么ReadFile或WriteFile的操作就会结束。要查询当前的超时设置应调用GetCommTimeouts函数,该函数会填充一个COMMTIMEOUTS结构。调用SetCommTimeouts可以用某一个COMMTIMEOUTS结构的内容来设置超时。

有两种超时:间隔超时和总超时。间隔超时是指在接收时两个字符之间的最大时延,总超时是指读写操作总共花费的最大时间。写操作只支持总超时,而读操作两种超时均支持。用COMMTIMEOUTS结构可以规定读/写操作的超时,该结构的定义为:

typedef struct_COMMTIMEOUTS {

DWORD ReadIntervalTimeout;//读间隔超时

DWORD ReadTotalTimeoutMultiplier;//读时间系数

DWORD ReadTotalTimeoutConstant;//读时间常量

DWORD WriteTotalTimeoutMultiplier;//写时间系数

DWORD WriteTotalTimeoutConstant;//写时间常量

} COMMTIMEOUTS,*LPCOMMTIMEOUTS;

COMMTIMEOUTS结构的成员都以毫秒为单位。总超时的计算公式是:总超时=时间系数×要求读/写的字符数+时间常量

例如,如果要读入10个字符,那么读操作的总超时的计算公式为:读总超时=ReadTotalTimeoutMultiplier×10+ReadTotalTimeoutConstant

可以看出,间隔超时和总超时的设置是不相关的,这可以方便通信程序灵活地设置各种超时。

如果所有写超时参数均为0,那么就不使用写超时。如果ReadIntervalTimeout为0,那么就不使用读间隔超时,如果ReadTotalTimeoutMultiplier和ReadTotalTimeoutConstant都为0,则不使用读总超时。如果读间隔超时被设置成MAXDWORD并且两个读总超时为0,那么在读一次输入缓冲区中的内容后读操作就立即完成,而不管是否读入了要求的字符。

在用重叠方式读写串口时,虽然ReadFile和WriteFile在完成操作以前就可能返回,但超时仍然是起作用的。在这种情况下,超时规定的是操作的完成时间,而不是ReadFile和WriteFile的返回时间。

四、结束语

以上给出了用Win32 API设计串行通信的基本思路,这个重叠(异步)I/O操作的串行通信程序,曾多次应用于大型任务,表现出良好的性能。在实际应用中,可以以此为模型稍加改造,设计出满足需要的各种串行通信程序。

参考文献:

[1]李现勇.Visual C++串口通信技术与工程实践[M].人民邮电出版社,2004,7

串行数据传输 篇6

串行数据设计的测试流程正随着数据速率的提高而演变。几乎所有串行标准(如PCI Express或串行ATA)的标准机构都出版了一套推荐的测试规范。随着数据速率超过1 Gb/sec,标准开始重视接收机极限测试,把它作为高速串行设计成功进行互通的一个关键检查点。随着位判定容限变得越来越精确(使用皮秒和微伏度量),设计环境在遇到噪声、抖动、串扰、分布式电抗、电源变化和其它问题时,可能会给接收的信号带来巨大的代价。

为有效测试高速串行接收机极限,必需以于真实情况一致的方式“重建”上述信号,确定接收机能否以预测的精度水平管理位判定。为什么要使用模拟波形表示数字数据呢?这是因为数字信号下面是模拟事件。教科书上数字信号的零上升时间和完美的平顶都是虚构的,实际环境中的数字“方波”很少类似于理论值。模拟波形信号源的优点是能够统一仿真这些不理想的模拟特性。

为进行接收机极限测试生成重建信号的技术称为直接数字合成技术。该技术是1971年出版的一篇IEEE论文中阐述的工程设计方法1,允许工程师创建信号,体现通过传输线传播时的效应。上升时间、脉冲形状、延迟和畸变都是可以控制的,这正是严格的串行总线测试所要完成的工作。

直接合成技术是一种基于采样的技术。示波器从模拟波形中采集样点,直接合成信号源或任意波形发生器(AWG)则从样点中创建模拟波形。其输出与串行数据总线一样,表示为一个数字数据集合。AWG存储器中的样点基本上可以定义任何波形,包括数字脉冲。当然,物理学和带宽的限制仍然适用,但在规定范围内,AWG可以象440 Hz乐谱一样生成5 Gb/s串行数据包。新一代AWG(参见图1)正在出现,其能够以当前串行总线中常见的高数据速率传送信号。

新型仪器提供了高达20 GS/s的采样率,拥有多个输出及充足的存储器,可以支持长码型序列。这种新技术可望变革串行测量,特别是在接收机一侧。

例如,可以采用直接合成方法,在串行码流中插入抖动,确定其对接收机行为的影响。抖动是一种信号完整性现象,其一般会“弄脏”边沿位置,使眼图张开程度变窄。工程师一直使用传统码型发生器测试接收机极限,传统上抖动插入一直通过数据发生器(DG)平台进行管理,其也称为定时/码型发生器,长期来一直是串行测量的支柱,包括接收机抖动容限测试。下面将比较DG和码型发生器方法与采用直接合成技术的新兴方案。图2是在接收机上进行抖动测量的典型测试设置。它说明了提供同时包含随机抖动和确定性抖动的数据码型所需的设备。

这种方法要求在测试套件中调节抖动和噪声成分,在DUT中引入特定数量的总抖动,直到其开始传送错帧或误码。它测量抖动幅度,确定器件是否满足规范。设备配置的目标是代替实际环境中的系统组件,生成最终用户应用中预计会遇到的任何类型的抖动。

接收机的基础结构进一步提高了这一测试设置的复杂性。针对串行ATA2等标准进行的接收机极限测试要求DUT进行带有特定帧信息结构(FIS)的内置自检(BIST)。串行收发机(包括发射机、接收机和SERDES单元)设计成在收到特定BIST-L(环回)帧序列时进入专用环回模式。在器件处于这种模式时,发射机会回复已经收到的信号。

从历史上,BIST指令一直由运行为该目的设计的应用软件的外部PC提供。遗憾的动到DUT,而不要求断开连接。电源组合器是一种可行的解决方案,但有自己的缺点。很明显,它提高了复杂性,给连接错误、不良电气接触和其它机械问题带来了又一个可能性。它还需要校准所有输入源,保证正确引入抖动成分。最重要的是,电源组合器使数据信号电压衰减达50%。通过提高数据发生器的输出幅度,通常可以解决这个问题,但仪器性能总是有限的。此外,提高幅度不可避免地会提高噪声,进而可能会提高失真。

串行数据传输 篇7

CCD(Charge Coupled Device)相机拍摄的图像具有分辨率高,数据量大的特点,因此,如何实时采集与传输成为研究的难点。传统的方法是采用多台PC机并行,将采集的CCD相机数据存储到存储介质(如硬盘),事后再读取采集到的数据进行分析,然而这种方式具有非实时性的特点,不能实时对数据进行分析,并且这种方式空间体积大,不适合在空间受限的场合下使用。另一种方式是采用嵌入式系统,如通过EMIF(External Memory Interface)进行传输,虽然这种方式占用体积小,但占用的资源却很多,如64位EMIF接口需要占用104个管脚,这对于资源有限的嵌入式系统处理器是不利的,并且,设备不易升级。本文采用了一种基于SRIO(Serial Rapid IO)接口的传输方式,只占用了6个FPGA管脚,通过SRIO接口,将采集的CCD相机数据实时传输并显示。本文采用Xilinx公司的Virtex2Pro系统FPGA,利用其内嵌的高速串行通信接口Rocket IO,实现了SRIO协议。原始的CCD相机数据先采集到FPGA内的FIFO中,当FIFO中的数据量达到一定值后,将FIFO中的数据通过SRIO以数据包的形式传递给DSP,通过DSP的网络接口将数据发送到PC机进行显示。本文先对SRIO协议作简单介绍,再对SRIO接口设计进行详细的分析。

1 SRIO简介

SRIO是Serial Rapid IO的简称。Rapid IO是一种高速,串行的通信方式,满足了嵌入式基础设施在应用方面的广泛需要。常见的应用包括多处理器互连,存储器,网络设备中的存储器映射、存储子系统和通用计算平台。这一互连技术主要作为系统内部互连,支持芯片到芯片和板到板通信,可以实现从1 Gb/s到60 Gb/s的性能水平。

Rapid IO采用三层体系结构。逻辑层位于最高层,定义全部协议和包的格式,它们为端点器件发起和完成事务提供必要的信息。传输层规范在中间层,定义Rapid IO地址空间和在端点器件间传输包所需要的路由信息。物理层规范和整个分级结构的底部,包括器件级接口的细节,如包传输机制、流量机制、电气特性和低级错误管理等。

Rapid IO数据传输是基于请求和响应事务的。包是系统中端点器件间的基本通信单元。发起器件或主控器件产生一个请求,该事务被发送到目标器件。目标器件产生一个响应事务返回到发起器件以完成该次操作,Rapid IO通信如图1所示。

在Virtex-II Pro FPGA系列FPGA内有最多可达20个的高速串行通信接口Rocket IO,它可以被认作是Rapid IO的物理层,我们可以通过在Rocket IO实现Rapid IO协议,将数据以数据包的形式进行传输即可。Rocket IO可以支持从600 Mb/s到3.125 Gb/s的传输速度,Rocket IO除了支持Rapid IO协议外,还支持其它协议,如表1所示。通过设定表2中SERDES_10B的属性,就可以在Rocket IO上实现不同的协议。

Rapid IO在DSP TMS320C6455中被称作SRIO(Serial Rapid IO),图2显示了DSP中SRIO模块的结构,SRIO是DSP的一个外设,并可以使用其内部的DMA操作。因此,减少了对DSP处理器的干扰,外设可以根据需要将数据传入到DSP,而不用产生中断通知CPU,这样就减少了CPU必须响应的中断个数,相应的也减少了延时。

SRIO协议可支持的最大数据包为256字节,如果有多个数据进行传输,可以通过设定一次传输多个包的机制完成。SRIO一次最多可传输16个数据包,也就是4 096字节,而且只有当这16个数据包全部传输完成之后,才会向CPU产生一个中断,报告数据传输完成。

SRIO支持的数据包的类型有读(NREAD),写(NWRITE),有响应写(NWRITE_R),流写SWRITE),门铃(Doorbell),消息(Message)等,在本文设计的传输平台中,用到了有响应(NWRITE_R)写这种数据包的类型。

2 SRIO接口设计

图3是本文设计的基于SRIO接口的图像传输系统,CCD图像数据首先被采集到FPGA内实现的FIFO中,通过FIFO中的数据量控制SRIO接口是否发起传输,从而实现了FPGA与DSP之间的数据通信,当一帧图像数据由FPGA传输到DSP时,DSP将接到的数据通过EMAC网络接口传输给PC机进行显示。难点在于如何在FPGA内实现SRIO协议,并保持FPGA与DSP之间的SRIO通信的同步。

首先要在FPGA内的高速串行通信接口Rocket IO上实现SRIO接口协议。我们使用Xilinx公司提供的Core_generator工具来产生SRIO模块。设置SRIO属性时要将FPGA设为主设备,以发起读或写操作,DSP作为SRIO的一个从设备,只需要对主设备的请求作出响应。在生成SRIO模块后,需要根据SRIO协议对SRIO模块的一些参数进行调整,如调整差分电压的峰-峰值最小为175 m V,根据SRIO时钟调整PLL的乘数因子,是否使能传输损耗的自适应补偿等。然后才考虑建立与DSP之间的SRIO连接,并实时检测连接状态,保持同步。

在FPGA内生成的SRIO模块中有一个port_initialized端口信号,如果此信号为高,则表明FPGA与DSP之间的SRIO连接已建立,此时,就可通过SRIO接口传输数据。在FPGA端,通过NWRITE_R命令向地址0x00900000到0x00910000周期性的写入数据,而0x00900000到0x00910000是映射到DSP的L2存储区域的,即建立连接后,DSP的存储区域对FPGA是透明的,只需要在FPGA内写入到0x00900000到0x00910000地址区间,就可以将数据传递到DSP。SRIO传输是以数据包的形式进行的,因此要考虑如何将多个包传递给DSP。这样可以提高SRIO带宽的利用率。如前所述,在生成FIFO后,利用FIFO的rd_data_count端口来发起SRIO传输。rd_data_count记录的是FIFO中可读的数据量,当rd_data_count达到一定值后时,将传输有效信号置高,这样,FIFO中的数据包就会通过SRIO接口传递给DSP。由于SRIO传输是3.125 Gb/s,保持数据同步变得尤为重要,所以必须保证lnk_rrdy_n和lnk_trdy_n有效,这二个信号表示了SRIO的正常通信状态。另一个同步问题是图像帧的同步,由于采集的原始数据是以数据包的形式传递的,而原始数据中并没有图像帧的帧头帧尾等信息,可通过消息(Message)这种数据进行传输。设所使用的CCD相机分辨率为1 600×1 200,图像深度为10位,则一帧的图像数据为2 880 000字节,每个SRIO数据包的大小为256字节,则DSP每接收2 880 000/2 560=11 250次,才能接收完一帧图像。

在PC机端,通过MFC编程,利用Socket网络通信,接收从DSP传输进来的数据,并将接收到的数据进行显示。

3 实验结果

在第三节中讲了SRIO通信中遇到的问题及解决方法,本节将给出实验结果。

实验环境:CPU:Pentium(R)Dual-Core E5200@2.50Hz;内存:2 GB;操作系统:Windows XP Professional Service Pack 3;ISE版本:10.1.03;CCS版本:3.3.38.2;示波器:Agilent Oscilloscope DSO5034A。

图4是从示波器上采集的波形。从图4可以看出,最上面的波形是NWRITE_R数据包的个数,可以清楚的看到是10个数据包,10个数据包所占用的时间约为8.8µs,计算出SRIO的传输速度约为290 MB/s。由于SRIO的工作时钟是156.25 MHz,即它的线速度为3.125 Gb/s。因此可以算出SRIO带宽的利用率约为74%。中间的信号线为数据包完成信号,每10个数据包传输完成后都有此信号。表3给出了实验测得的SRIO的传输速度。

4 结论

根据SRIO协议,二个SRIO设备可以进行1×或4×的连续模式。如果按照1×的模式进行连续,则最高可达到3.125 Gb/s的传输速度,若按图5所示的4×模式连接,则可以达到12.5 Gb/s的传输速度。在TMS320C6455系列DSP中,有4个SRIO接口,而在Virtex2 Pro FPGA系列FPGA中,最高可达到20个高速串行接口Rocket IO,所以可以通过SRIO接口将FPGA和DSP进行互连,以组成更高速,处理能力更强的嵌入式计算或通迅系统。

参考文献

[1]Texas Instruments.TMS320C6455fixed-point digital signal processor[K].USA:Texas,2007:1-51.

[2]Texas Instruments.TMS320C645*DSP Enhanced DMA(EDMA3)Controller User’s Guide[K].USA:Texas,2007:10-20.

[3]Texas Instruments.TMS320C645*DSP General-Purpose Input/Output(GPIO)User’s Guide[K].USA:Texas,2005:15-24.

[4]Texas Instruments.TMS320C645*Serial Rapid IO(SRIO)User’s Guide[K].USA:Texas,2006:150-248.

[5]Texas Instruments.TMS320C645*DSP EMAC/MDIO User’s Guide[K].USA:Texas,2006:142-172.

[6]Dalsa.Pantera SA2M30Camera User’s Manual[K].Canada:Dalsa company,2005:2-30.

[7]Xilinx.Virtex-2Pro platform FPGA handbook[K].USA:Xilinx,2002:5-20.

[8]Xilinx.Memory Interface Generator(MIG)User Guide[K].USA:Xilinx,2008:104-163.

[9]Xilinx.PowerPc Processor Reference Guide[K].USA:Xilinx,2003:98-125.

[10]ZHANG Feng,WU Qin-zhang,REN Guo-qiang.A Fast Algorithm for Fuzzy Clustering Problem[C]//2009Second International Conference on Intelligent Computing and Technology and Automation,Zhangjiajie,China,October10-11,2009:633-636.

串行数据传输 篇8

关键词:Rapid IO,FPGA,高速互连,信息传输

Rapid IO是面向嵌入式系统开发提出的高可靠、高性能、基于包交换的新一代高速互联技术, 可以实现最低引脚数量, 采用DMA传输, 支持复杂的可扩展拓扑, 多点传输;可选的1.25Gbps、2.5Gbps、3.125Gbps三种速度能满足不同应用的需求, 是未来十几年中嵌入式系统互联的最佳选择之一。

1 Rapid IO协议的信息传输模块硬件结构及工作原理

1.1 系统结构及特点

目前很多CPU都没有Rapid IO接口, 所以我们将CPU的总线与FPGA的Rapid IOIP核总线相连接, 实现CPU与Rapid IO网络的连接。

CPU模块由32位CPU、时钟看门狗电路、存储器电路、RS232电路、以太网电路等组成。FPGA模块主要用来实现SRIO通讯、CPU的信号控制、复位信号及FLASH的信号控制。

系统的原理框图见图1:

1.2 系统的工作原理

FPGA内的Rapid IO接口有成熟的IP核, 将CPU的总线与FPGA的Avalon总线桥接。上电时, 由FPGA内的驱动程序对SRIO通讯模块的逻辑层、传输层和物理层进行初始化, 设置SRIO通讯模式。初始化完成后, CPU可直接将需要发送的数据写入FPGA内部的FIFO, FPGA再调用内部IP核根据SRIO总线协议将并行数据转换为串行数据, 利用GXB模块进行数据发送。

接收数据时, FPGA的IP核部分将GXB模块接收到的数据根据协议转换为并行数据, 并将该数据放入FPGA内部的FIFO当中。由FPGA向CPU发出中断信号, CPU接收到中断信号后, 从FIFO中读取接收到的数据。

2 SRIO模块驱动部分FPGA程序设计实现

FPGA程序包含五部分:主程序、SRIO模块调用、SRIO模块驱动、时钟倍频、FIFO调用。核心部分为SRIO模块的驱动程序的设计, 该部分用来初始化总线基本参数, 配置寄存器的值, 并实现总线的读写操作。

2.1 基本参数设置

根据存储器地址映射表, 进行地址分配:

2.2 系统维护操作

维护写端口是一种写操作, 它不保证递送, 也没有相关的响应。数据载荷通常放在目标端点的队列中并向本地处理器产生一个中断。向已满或忙于另一个请求提供服务的队列发送的写端口请求可能会被丢弃。维护请求包及其相关字段见图2:

Avalon_MM Slave接口的维护写操作时序图见图3:

2.3 Burst传输

Burst传输方式并不是单个传输某个字节, 而是作为一个多传输器的整体。当同一时间发送多字节时, 例如DDR, Burst可以增加从端口的吞吐量, 从而获得更高的效率。如果从设备同时可以读和写并支持Burst操作, 则必须可以支持Burst读和写。

如果可以支持Burst操作, Avalon_MM Slave必定会包含一个Burstcount输入信号。在Burst开始, Burstcount定义了一个Burst中串行数据的个数, 最大的Burst的合法长度为2n-1, 最小的合法长度为1。

当一个写Burst开始的Burstcount大于1时, 从设备开始Burst写操作。

如果一个Burst开始的Burstcount等于n, 那么从设备必须接收writedata接下来的n个字节来完成这个Burst。主从之间的仲裁关系直到Burst结束后才解除锁定, 避免主设备对Burst进行初始化。

只有当write信号置1时, 从设备才开始接收数据。在一个Burst过程中, 可以将write信号置低, 来表示当前数据不合法, 该操作不会终止这个Burst操作, 只会延迟。从设备可以设置waitrequest来延迟传输。

Burst写操作的时序图见图4:

从设备的Burst读操作具有完全不同的地址和数据阶段, 从端口利用resddatavalid信号来确定数据的有效性。当Burstcount等于n时, 从设备必须在readdata中返回n字节来完成Burst操作。从设备当前字节必须提供数据并将resddatavalid信号置1。resddatavalid信号置低并不会结束该Burst, 只会延迟它。Burst读操作的时序图见图5:

3 结语

在此详细介绍了一种由FPGA实现Rapid IO接口的方法, 通过FPGA与CPU的总线连接, 解决了目前大多数CPU都不具备Rapid IO接口的问题。该方法结构简单、可靠性好, 具有广泛的应用前景。

参考文献

[1]林玲, 蒋俊, 倪明, 柴小.Rapid IO在多处理器互联中的应用[J].工程应用技术实现, 2006 (02) :244-246.

[2]王勇, 林粤伟, 吴冰冰等.Rapid IO嵌入式系统互联[M].北京:电子工业出版社, 2006.

[3]朱含, 岑凡, 邢涛, 等.基于FPGA实现DSP与Rapid IO网络互联[J].PLD CPLD FPGA应用, 2009 (09) :129-135.

[4]高毅, 刘永强, 梁小虎.基于串行Rapid IO协议的包交换模块的设计与实现[J].航空计算技术, 2010 (03) :123-126.

串行数据传输 篇9

传统的并行总线互联技术因为需要占用大量的芯片管脚与印制板空间, 随着更高的速度要求, 多条信号线之间几乎无法实现完全同步, 为抵消串扰和干扰需要在多条信号线中间插入隔离地线从而使总线数目突增, 造成板级布线难度和系统设计以及复杂度急剧增加, 也无法满足电子系统便携和小型化要求。而采用包含源时钟的差分同步串行传输方式, 如LVDS, 因为采用低压差、小摆幅, 避免晶体管进入‘饱和’与‘截止’区从而具有快速恢复时间, 因此可以做到很高的传输速率, 但由于时钟与数据要分别发送, 传输过程中各信号瞬时偏差和相位抖动会破坏数据与时钟之间苛刻的定时关系, 所以传输速率很难超过1Gb/s每信道。最终, 高速、低功耗、极低IO引脚数量、低布线难度、采用自同步 (即CDR, 时钟数据恢复) 方式的串行互联技术, 通过编码与时钟恢复功能, 将时钟‘内嵌’于数据中, 在接收端从数据中提取出所需要的时钟信息, 高速传输情况下不存在时钟与数据的同步问题, 因而极大提高了传输速率并降低了开发难度和成本, 成为新一代信息交换与传输方式的主流。

Xilinx公司的Virtex-5系列FPGA中集成了基于RocketIO的多个GTP或GTX硬核, 能够分别提供高达3.75Gb/s和6.5Gb/s的单路传输速率, 在FPGA中可使用厂商提供的多种高速串行通信协议IP核, 也可以自定义和开发简单高效、低延迟和开销的通信协议, 从而可以帮助设计人员方便和灵活高效而可靠的实现高速串行通信。

本文利用Virtex-5 SX95T FPGA中集成的GTP收发器设计和实现了一个高速串行传输系统, 实测表明, 该系统能在某信号处理系统两个板卡之间稳定地以1.6 Gb/s的速度进行数据传输, 误码率优于10e-12, 传输距离大于1米。

1. Vritex-5 RocketIO简介

1.1 GTP_DUAL的组成

RocketIO是Xilinx公司FPGA集成的高速串行收发器, 在Vritex-5平台下的LXT和SXT系列FPGA中, RocketIO称为GTP, 传输速率为100Mb/s~3.75Gb/s, 速率在100~500 Mb/s范围内时具有可选5倍过采用功能, 单个GTP功耗小于100mW;在FXT和TXT系列FPGA中, RocketIO称为GTX, 传输速率为750Mb/s~6.5Gb/s, 速率在150Mb/s~750Mb/s范围内时具有可选5倍过采用功能, 单个GTX功耗小于200mW;而在以往的Virtex-II平台下平均每8个RocketIO收发器功耗为2.2W, 在Vritex-4平台下高达3.6W。Vritex-5平台下的每2个相邻的GTP或GTX组成一个基本的GTP_DUAL, 图1给出了一个GTP_DUAL结构框图。

从图中可以看到, 一个GTP_DUAL由2个GTP收发器和一个共享资源块 (包括时钟/复位/电源控制/动态重配DRP) 组成, 每个GTP收发器分别由发送与接收物理编码子层PCS和物理媒体接口子层构成, 结构紧凑并且参数可根据需要灵活配置, 使得GTP_DUAL具有低资源占用和低功耗的特点。

1.2 GTP_DUAL时钟驱动方式

G T P具有3种时钟输入方式:专用时钟引脚输入、共享临近GTP_DUAL时钟输入、使用FPGA内部时钟输入。对于使用专用引脚输入方式, 当时钟源满足器件手册上的指标要求时设计具有最佳性能。使用共享临近的GTP_DUAL时钟输入时:在同一列上, 时钟布线跨度从源端到目的端, 中间相隔的数量不超过3, 反之亦然, 且禁止GTP_DUAL之间时钟交叉走线;从外部差分对时钟脚引入的单个时钟, 所驱动的GTP_DUAL总数量不超过7, 性能次之。使用FPGA内部时钟 (GREFCLK) 输入方式, 虽然用法灵活多样, 但性能最差, 因为它引入了较大的时钟抖动, 所以只适用于低传输速率、低误码率要求的场合。

1.3 GTP_DUAL电源设计要求

由GTP收发器构成的高速串行传输系统, 其传输链路性能极大地决定于链路两端电源与时钟源及布线设计的好坏, 除禁止使用开关电源直接为GTP_DUAL供电外, 手册建议以POL方式做电源分配方案, 即使用二次降压, 先用开关电源进行一次电源变换, 再用满足手册要求的低纹波线性稳压电源LDO为它供电, 且要对每一个使用的电源引脚做滤波处理。

2. 系统硬件平台设计

2.1 GTP_DUAL参考时钟设计

GTP收发器能否可靠的工作, 高精度、高质量的参考时钟源至关重要, 手册给出的参考时钟最大频率误差容限为±350 ppm, 并建议选用差分时钟, 本设计采用了低抖动、高性能的差分时钟晶振, 采用专用时钟引脚驱动方式, 硬件连接如图2所示。时钟晶振为SILICON LABS公司的530FB80M0000DG, 工作电压2.5V, 差分LVDS信号输出, 工作频率为80M, 最大频率误差±31.5ppm, 相位抖动典型值0.26ps。为了获得最好性能, 印制板设计时, 晶振四周用地包围, 下方禁止电源或其他信号过孔和穿越, 其差分输出到GTP_DUAL专用时钟引脚的走线上串接了电容构成AC耦合方式, 这样既隔断了直流漂移又有效消除了时钟抖动与偏移;布线时差分对时钟线严格按照差分等长和信号完整性处理, 禁止信号线弯折和过孔穿越。

2.2 GTP_DUAL电源设计

在一个使用GTP收发器的FPGA设计中, 传输链路的整体性能除与参考时钟源至关重要外, 还高度依赖于供电电源的质量, 手册要求采用专用电源, 禁止与其他数字和模拟电路混用相同的电源, 但单片或多片FPGA的GTP_DUAL之间可共享同一组电源。本设计采用二次降压变换POL方式为GTP_DUAL供电, 低纹波线性稳压器选用TI公司的TPS74401, 该芯片具有1%精度0.8V到3.6 V可调输出, 满载电流为3A时有115mV的超低压降以及优越的瞬态响应和过流、过热保护, 供电纹波抑制比PSRR在1KHz时优于70 dB、超低输出噪声、软启动时间可编程等优点。通过调整反馈端分压电阻阻值, 可为GTP方便的提供1.0 V和1.2 V电压, 同时为了抑制各种高频噪声, 在GTP_DUAL的每一个电源输入端连接了LC滤波网络进行滤波。

3. 设计实现与测试

在某信号处理系统中, 信号处理分机通过高速以太网接口收到控制分机命令后控制收发开关接口使系统处于接收与校正状态, 通过高速AD将采集到的天线信号经RocketIO接口送给校正分机, 根据接收数据的处理结果调整和控制天线参数, 达到系统指标要求后使天线进入正常工作状态。系统组成框图如图3所示。

首先系统上电后, 各分机做自身初始化与配置, 建立所需各种通信连接, 对RocketIO通信接口部分, 本设计采用16比特数据位宽、使能8B/10B编码、并行端口数据速率80M、使能预/去加重和均衡、传输速率1.6Gb/s的设置。由于RocketIO接口只是提供了物理层的传输, 对多通道、多链路、控制和反馈信息丰富的复杂通信模型, 需要复杂和完善的通信协议来实现高可靠的数据传输, 如PCI-E、千兆以太网、SATA、Aurora、RapidIO协议等;对简单的数据传输场合, 用户可基于自定义协议、无反馈的实现数据的高效传输。本系统采用自定义协议方式, 在每1KB数据中插入一个控制字符, 做为同步和控制用途, 传输信道具有低冗余和低开销的特点。测试过程中分别采用通过高速背板和射频电缆两种方式发送数据, 在对多种预/去加重比尝试情况下, 得到了很好的眼图和误码率。

由于并行数据位宽为16比特, 测试中发现对于采用异步时钟 (数据中嵌入时钟) 方式时, 数据的高/低字节易发生错位错误并且错位方式无明显规律, 这是由于通信双方接收数据的起始边界不固定引起的, 通过多次搜索同步控制字符找到正确边界, 或发送训练字符串可解决此问题;另外, 收发双方采用同源参考时钟, 能更好、更快的解决此问题。通过Xilinx提供的专用误码率测试软件IBERT实测表明, 采用长度为1.2米的等长、SMA接头的差分稳相射频电缆连接方式时, 本设计系统在1.6Gb/s传输速率下误码率性能优于10e-12, 采用高速背板连接时, 达到了同样的误码率指标。

4. 结束语

针对现代电子系统中数据传输速率不断增高的现状, 设计了以Vritex-5 FPGA平台下的RocketIO GTP收发器为物理层的高速数据传输系统。它是基于嵌入式时钟同步方式, 保证了吉比特数据传输速率可靠性, 同时降低了系统互联的复杂度和功耗。基于标准协议的模型可保证数据的无丢失传输, 而基于自定义协议方式的模型则有利于最小延时传输, 其可靠性已经得到验证。

参考文献

[1]Virtex-5 FPGA RocketIO GTX Transceiver User Guide[M].//Xilinx UG196 (v2.1) , USA:Xilinx Inc, 2009.

[2]Virtex-5 FPGA Data Sheet:DC and Switching Characteristics[M].//Xilinx DS202 (v5.2) , USA:Xilinx Inc, 2009.

[3]邓豹, 赵小冬.基于串行RapidIO的嵌入式互连研究[J].航空计算技术, 2008.

[4]武荣伟, 苏涛, 梁中英.RocketIO在高速数据通信中的应用[J].通信技术, 2010.

串行数据传输 篇10

AFDX端系统负责航空电子机载设备接入AFDX,并实现数据通信,互联系统框图如图1所示。

本文基于测控系统AFDX端系统,实现了一种高速串行数据转换接口,并利用AFDX测试设备对设计进行仿真和测试验证,结果表明本文的高速串行数据转换接口能够很好地支持AFDX与测控系统串行同步接口数据转换和通信。

1 高速串行数据转换接口设计分析

测控系统AFDX端系统负责实现连接任务载荷管理计算机中AFDX交换机和测控系统管理计算机主处理器模块,实现两者互联和数据转换,测控系统采用串行同步接口,AFDX数据格式和同步接口数据发送时序如图2所示。

根据用户的使用要求,测控系统AFDX端系统需要实现接口:余度网络接口、高速串行同步接口,高速串行同步接口与测控系统连接,将余度网络中接收到的数据通过高速接口传给测控系统。余度网络接口分别连接到两个高速数据通信网络交换机,接收任务载荷管理计算机发送出来的数据帧,收发数据格式满足图2中的数据帧格式。AFDX与测控系统串行同步接口数据转换使用FPGA逻辑实现。

测控系统AFDX端系统功能框图见图3。

2 接口电路设计

LVDS信号电平主要用于低压差分信号点到点的传输,在本设计中需要2路LVDS信号传输并行数据。接口电路设计的主要工作为电平匹配设计、阻抗配置和信号等长[1]。

LVDS传输的信号摆幅小,功耗低,一般差分线上电流不超过4m A,负载阻抗为100。LVDS信号都需要在接收端进行端接匹配。匹配值一般等于差分阻抗,为100ohms。LVDS的匹配电阻主要起到吸收负载反射信号的作用,因此要求放置的距离接收器端尽量靠近。本设计选用电平转换器件MAX9122和MAX9123实现LVTTL和LVDS电平的相互转换。另外,电平转换器件在输入差分接收器两端跨接100Ω差分终端,可显著改善信号完整性。

LVDS链路匹配设计如图4所示。

为了保证多路LVDS的信号同步,需要对同一组信号线进行等长设计[2]。同时由于LVDS信号设计速率大于500Mbps,出于信号完整性的考虑,印制板布线时,需要对信号线进行严格的阻抗控制,使信号线差分阻抗保证在100ohm±10%,阻抗计算公式如下所示。

3 收发单元设计

3.1 发送单元设计

高速串行转换接口逻辑单元按照用户的通信协议,将接收到的帧数据发送出去。

高速串行转换接口逻辑根据缓冲区中已有数据的多少,向测控系统报是否准备好。当测控系统准备好时发起一次传输, 高速串行转换接口逻辑按照测控系统输出的时钟从缓冲区取出数据并发送出去。高速串行转换接口逻辑采用状态机实现, 工作过程如图5所示。

复位后状态机处于IDLE状态,此时,判断缓冲区中已有数据是否不小于235字节,如果是则置发送数据准备好NDSR为1,否则置为0。如果NDSR为1,且测控系统准备好NDTR也为1则发起一次测控帧传输,开始从缓冲区取数据,状态机进入S1状态。

在S1状态下,将数据字节的D7位发送出去,状态机进入S2状态。

在S2状态下,将数据字节的D6位发送出去,状态机进入S3状态。

在S3状态下,将数据字节的D5位发送出去,状态机进入S4状态。

在S4状态下,将数据字节的D4位发送出去,状态机进入S5状态。

在S5状态下,将数据字节的D3位发送出去,状态机进入S6状态。

在S6状态下,将数据字节的D2位发送出去,状态机进入S7状态。

在S7状态下,将数据字节的D1位发送出去,状态机进入S8状态。

在S8状态下,将数据字节的D0位发送出去。判断当前发送出去字节数目,如果未完成一次测控帧发送则继续从缓冲区取数据,状态机进入S1状态,如果已经完成一次测控帧发送, 则进入IDLE状态,等待下次发送。

3.2 接收单元设计

接收单元从余度网络控制单元获取接收到的帧数据,并提取出UDP payload,写入数据缓冲区。

接收单元查询余度网络控制单元标记FIFO的状态,一旦发现不为空,表明已经接收到任务载荷管理计算机发出的帧。然后读FIFO数据,并从中计算帧在接收缓冲DPRAM中保存的起始位置和帧长度。再计算出帧的UDP payload保存的起始位置和长度,然后从接收缓冲DPRAM中取出UDP payload并按照字节的方式写入数据缓冲区。接收单元采用状态机实现。

接收单元采用状态机实现,如图6所示。

接收单元复位后处于IDLE状态。

在IDLE状态下,判断标记FIFO是否为空,如果不为空则进入S1状态;

在S1状态下 ,取标记FIFO数据 ,解析帧在 接收缓冲DPRAM中保存的起始位置和帧长度,并计算UDP payload长度;

在S2状态下,计算帧UDP payload在接收缓冲DPRAM中保存的起始位置。判断UDP payload长度是否大于缓冲区剩余空间。如果大于则进入IDLE状态,否则进入S3状态;

在S3状态下,给出标记FIFO读信号(FIFO采用预取模式, 先取数据再给出读信号)。进入S4状态;

在S4状态下,从接收缓冲DPRAM中取UDP payload,并将取出的数据写入缓冲区单元,直到UDP payload完全写入缓冲区单元。进入IDLE状态。

由于接收缓冲DPRAM宽度为32位,因此需要按照8位的方式分4次写入数据缓冲区。

数据缓冲区使用片内RAM资源实现一个8位宽度的FIFO,深度32768,大小32KB,即256Kb。

数据缓冲区使用非同步的双时钟设计,写时钟为余度网络控制的时钟,读时钟为高速接口逻辑的时钟。

数据缓冲区提供已使用单元计数功能,标记当前FIFO已使用的FIFO单元数目。

接收操作根据已使用单元计数值判断缓冲区是否可以放入MAC接收缓冲区中保存的下一个帧的payload。当数据缓冲区可以放入时,接收单元从接收缓冲DPRAM中取出这个帧的payload并写入数据缓冲区。当数据缓冲区不足以放入时,接收单元会认为数据缓冲区将满,不会再取数据,直到数据缓冲区再有足够空间。数据缓冲区将满时,如果接收缓冲DPRAM也满则新收到的帧被丢弃。

高速接口逻辑根据已使用单元计数值判断数据缓冲区中是否有足够的数据准备好发送给测控系统。当已使用单元计数值不小于235字节时,表明数据缓冲区中的数据可以发起一次传输。

4 仿真与验证

高速串行数据转换接口设计完成后,采用Modelsim6.5d进行仿真验证,仿真结果如下图7所示。

由上图可看出,帧传输过程中NDSR和NDTR持续有效,帧传输结束后再根据缓冲字节数目报NDSR有效或无效。AFDX端系统发出NDSR有效后,在发送第1位数据的时钟上升沿信号由“0”变成“1”;在最后一位数据的下一个时钟上升沿,信号由“1”变成“0”。AFDX端系统输出数据高位先出,以字节为单位。仿真结果表明设计满足发送时序要求。

完成仿真后,将接口逻辑加入完整FPGA逻辑进行系统测试,实际测试结果表明:基于AFDX的高速串行数据转换接口设计功能正确,传输速率达到了设计要求。

5 结束语

上一篇:传统物资运输企业下一篇:住院疾病