基于FPGA高速实时数据传输系统设计方案

2011-09-27 15:56:10来源: 互联网
    引言

  信息时代的日新月异,催促着各种各样的数据信息快马加鞭,人们在要求信息传输得越来越快的同时,还要求信息要来得更加及时,于是高速实时的数据传输就成为了电子信息领域里一个永远不会过时的主题。但是,可以清楚地看到,当今动辄成百上千兆的数据流一股脑的涌入,任何一个高速数据传输系统的稳定性和安全性等方方面面的问题都面临着极大的挑战,稍有考虑不周之处就会引起各种各样的问题,因此如何能安全高效的对高速数据进行实时接收、存储、处理和发送正是此次设计方案的目的。

  2.设计方案的硬件选定

  鉴于当前高速数据传输系统的设计方案大多是现场可编程门阵列(FPGA)加片外存储介质( SDRAM、SRAM、DDR等)的组合,于是本次设计方案同样采用这种组合方式,具体为一片 FPGA、三片静态存储器( sram)和一片高速数据传输芯片。 FPGA具有管脚多、内部逻辑资源丰富、足够的可用 IP核等优点,用作整个高速数据传输系统的控制模块极为合适,此次方案中选用 Altera公司的高性价比 Cyclone[2]系列 FPGA;静态存储器具有昀大的优点就是数据读取速度快,且控制信号简单易操作,昀适用于高速数据存储介质,方案选用 ISSI公司的 IS61LV51216型号的静态存储器 [3],其处理速度和存储容量满足系统设计的需要;TI公司的 TLK1501[4]是此次设计选用的高速数据传输芯片,其传输能力十分强大,不仅能满足当前设计的传输速度需要,还留有充分的带宽余量,为以后的系统改进提供了条件。上述三种芯片是此次高速数据传输系统所要用到的主要组成部件,其具体连接方式等问题不作讨论。

  3.具体设计方案

  实现整个数据流从接收、存储、转换直到发送的过程由图一可以看出,在接收端经由 DVI[1]解码芯片传输的解码数据包含 24bit并行像素数据和三个同步信号——像素时钟 Pclk、数据使能信号 DE以及场同步信号 Vsy,fpga内部的写缓冲区控制器则会根据以上三个数据同步信号生成写缓冲区的写入地址,控制 24bit的像素数据信号存入写缓冲区中,并会在一段时间后向内存控制器发送读请求( wcache_rreq)以读出写缓冲区内的已写入数据,写缓冲区是由 fpga自带的 M4K块配置生成的双端口 RAM结构[2],采用乒乓操作,这样整个内存读取和缓冲区写入过程是各自独立进行的,保证所写入数据的完整性,内存控制器在接收写缓冲区控制器发送的读请求后,按照相应的写缓冲区地址读取数据,并将其写入片外静态存储器中,以上为像素数据的接收和存储过程;在发送端,帧同步产生及高速数据传输控制器通过 fpga自带的锁相环产生数据时钟 Dclk、帧同步 Fsy等信号,使读缓冲区控制器产生对读缓冲区的读取地址,读缓冲区控制器在产生读地址的同时,还会在一段时间间隔后向内存控制器发送写请求( rcache_wreq)以向被读过的读缓冲区部分写入新数据,同样读缓冲区也是双端口 RAM结构,采用乒乓操作,保证被发送数据的连续完整,被读出的 24bit数据经过一个 24bit/16bit数据转换器转换为 16bit并行数据之后才能输出给高速数据传输芯片,而内存控制器在接收读缓冲区控制器的写请求后在片外静态存储器中读出相应地址的数据写入读缓冲区中,这样整个数据的接收、存储、转换到发送的过程得以实现。

实现整个数据流从接收

  3.1 写缓冲区控制器的设计

  由 DVI[1]解码芯片输入给 fpga的像素时钟信号 Pclk、数据使能信号 DE以及场同步信号 Vsy表示 24bit并行像素数据的同步信息。例如: 1024×512显示分辨率的图像,则在每两个场同步信号 Vsy脉冲之间有 512个“DE=1”的数据有效信号,而在每个“ DE="1"”的数据有效信号中有 1024个 Pclk像素时钟信号,如此可将输送的像素数据同步。

  写缓冲区控制器直接接收输入的 DVI数据同步信号,在每个 Vsy脉冲来时将写缓冲区写入地址清零,然后在“DE=1”时写缓冲区控制器内的地址计数器计数有效,在每个 Pclk上升沿进行计数加 1操作,这样在每个 DE有效时会产生一行的像素数据地址,再到下一个DE有效时地址计数器又会重新计数,如此循环,而写缓冲区会按照对应的地址将输入的 24bit并行像素数据同步写入缓冲区内。写缓冲区控制器会在地址计数器计数到半行数据地址的时候,向内存控制器发送写缓冲区读请求信号( wcache_rreq)和相应缓冲区地址,要求内存控制器对已写入的半行像素数据以 48bit并行数据格式进行读取,由于内存控制器的等效操作时钟远远高于写缓冲区的写入时钟,因此内存控制器会迅速的将已写入的半行数据读出并停止读数,等待下一个 wcache_rreq的到来,如此便形成了对写缓冲区的乒乓操作,保证了输入像素数据的正确和连续接收,避免产生像素数据漏接和不同步的现象。读缓冲区控制器的设计思路同上,不再赘述。

 

  3.2 内存控制器的设计 [5] [6]

  内存控制器里包含主状态机和内存控制模块,如图二所示,主状态机负责对两个缓冲区和片外静态存储器的读写状态控制,共有四个状态——空闲状态、写缓冲区读取状态、读缓冲区写入状态和读写交替状态,用于控制状态机状态转移的信号包括:写缓冲区读请求信号(wcache_rreq)、写缓冲区读取完成信号( r_over)、读缓冲区写请求信号( rcache_wreq)以及读缓冲区写入完成信号 (w_req)。状态机在没有任何操作请求下处于空闲状态,而当其接收到“wcache_rreq”信号时,状态就会随之变为写缓冲区读取状态并进行相应操作,而当读取操作完成后会有“ r_over”信号传入状态机,状态机又会转入空闲状态等待下一信号进入,而当状态机处于写缓冲区读取状态时接收到了“ rcache_wreq”信号,则状态机转入读写交替状态,此时会对写缓冲区和读缓冲区进行交替操作,一旦有一个缓冲区操作完成时会输入相应的操作完成信号,此时状态机即转入对另一缓冲区的单独操作直至操作完成再次进入空闲状态。整个状态转移过程保证了对读写缓冲区操作请求的及时响应,杜绝了由于状态冲突导致的漏操作现象。

内存控制器里包含主状态机和内存控制模块

  系统选用的片外静态存储器的地址总线为 19 位,数据总线为16 位,经公式(1)计算 可知采用三片内存的总容量正好可以存储两场1024×512 显示分辨率的图像,这样可以对存 储器进行乒乓操作,在存储器内写入一场数据,读取另一场数据,两者交替独立进行。

公式

  内存控制模块负责对片外存储器进行控制,其控制信号是两个低电平有效信号[3]:nWE 和nCS。nCS 为片选信号,当为高电平时存储器处于非工作状态,此时不能对存储器进行任 何操作,低电平时为正常工作状态,可以进行读写操作;nWE 为存储器写入信号,当置为 低电平时可以对存储器执行写入操作,置为高电平时则可以对存储器执行读取操作。内存控 制模块按照主状态机的当前状态来设定两个控制信号的高低电平对片外存储器进行控制。图 三为在QuartusII 硬件开发平台上通过逻辑分析仪实际采样出来的片外静态存储器工作时序 波形图[6],以中图为例,存储器由写入状态转为读取状态,存储器的地址总线信号和数据总 线信号的变化就可看出存储器状态的变化,在写入状态时地址总线按时钟周期发生变化,同 时会有48bit 并行数据写入相应内存地址中,而在存储器进入读取状态后,地址总线则变为 读取地址,存储器则会在延迟地址总线一个时钟周期后将48bit 数据经由数据总线读出。

  3.3 24bit/16bit数据转换器的设计 [5] [6]

  片外高速数据传输芯片为 16位输入数据总线 [4],而由 FPGA内部读缓冲区读出的是 24位并行数据,因此需要将 24bit数据转换成 16bit数据再输出。考虑到传送 12个 16bit数据可以等效为 8个 24bit数据,故将数据输出时钟 Dclk用一个 0~11的计数器进行计数,然后取其中的 8个连续时钟读取 24bit数据,这样就解决了 16bit数据和 24bit数据在传输上时钟不匹配的问题。读取的 24bit数据随后被分成两个 12bit数据依次装入 16个 12bit移位寄存器中,再由 Dclk一位一位打出并拼装成 16bit数据,发送给帧同步产生及高速传输芯片控制器进行码头加载,将自己编写的 16bit数据头校验码以及其他一组信息码插入数据流中输出给高速数据传输芯片,完成整个数据转换和发送过程。

  4.实际测试结果

  用 TLK1501[4]高速数据传输芯片集成的数据接收端口接收其发送端传输的高速串行数据流,在芯片内部自解码之后再恢复成 16bit数据传给 fpga,通过比对发送数据和接收数据的一致性就可以对逻辑设计、时序等方面进行验证,以保证设计正确。在实际测试时,用一组设计好的 24bitDVI数据取代实际传输的像素信号,而其他同步信号则仍为实际 DVI同步信号,这样做的目的就是可以对发送数据进行控制,方便与接收数据进行比对,设计的发送数据为一串依次加“1”的规律 24bit数,因此如果接收回的数据信号仍为依次加 “1”的 24bit数,则说明逻辑设计和时序方面没有问题,设计方案可以用于实际操作中。

  图四上为发送数据波形图,图四下为接收数据波形图。由图中对比可以看出,接收数据同发送数据均为依次加“1”的 24bit数据,实际测试结果证实整个高速实时数据传输系统设计满足设计要求,可以用于实际操作中。

发送数据波形图

  5.结语

  本系统在实际测试中,发送端数据时钟为 40MHz,由于高速数据传输芯片——TLK1501[4]可以传输 20倍频的串行数据流,因此实际在信道中传输的数据速度可以达到 800MHz,如此高的传输速度可以满足一般情况下的工程要求,而且本系统由于所选片外存储器的容量和操作速度上限制,没能将 TLK1501高速传输的特点充分发挥出来,相信在系统改进之后,传输速度达到 1G甚至更高的实时数据应该可以实现!

关键字:FPGA  数据传输

编辑:北极风 引用地址:http://www.eeworld.com.cn/FPGA/2011/0927/article_2574.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
FPGA
数据传输

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 

夏宇闻老师专栏

你问我答FPGA设计

北京航空航天大学教授,国内最早从事复杂数字逻辑和嵌入式系统设计的专家。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved