全新论坛MCU智学网上线,欢迎访问新论坛!稀缺资源、技术干货、参考设计、原厂资料尽在MCU智学网
更新自动建库工具PCB Footprint Expert 2023.13 Pro / Library Expert 破解版

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

[复制链接]
1607 0

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
  摘要:DVI接口标准作为新一代的数字显示技术通讯标准,以全数字化的数据码流在传输信道上传输,本文针对DVI接口标准提出了一种基于FPGA的高速实时的数据传输方案。方案中重点解决了大流量实时数据的接收和存储问题,保证数据的实时性、完整性和准确性,并设计了数据格式转换,以满足发送芯片接口数据格式要求。文章介绍了方案中几个重要组成模块的设计思路和设计方法,最后给出了整个系统的实际测试结果和所测得波形。
    引言
    信息时代的日新月异,催促着各种各样的数据信息快马加鞭,人们在要求信息传输得越来越快的同时,还要求信息要来得更加及时,于是高速实时的数据传输就成为了电子信息领域里一个永远不会过时的主题。但是,可以清楚地看到,当今动辄成百上千兆的数据流一股脑的涌入,任何一个高速数据传输系统的稳定性和安全性等方方面面的问题都面临着极大的挑战,稍有考虑不周之处就会引起各种各样的问题,因此如何能安全高效的对高速数据进行实时接收、存储、处理和发送正是此次设计方案的目的。
    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甚至更高的实时数据应该可以实现!
    本文作者创新点:提出了一种片外 sram地址空间转换模式,将一维的存储空间抽象为二维存储,可以使视频象素点与存储空间一一对应;提出了一种 24bit/16bit转换模块设计方式。

举报

回复
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

打开支付宝扫一扫,最高立得1212元红包
搜索

图文热点

更多

社区学堂

更多

客服中心

QQ:187196467 服务时间:周一至周日 8:30-20:30

关注我们

关于我们
关于我们
友情链接
联系我们
帮助中心
网友中心
购买须知
支付方式
服务支持
资源下载
售后服务
定制流程
关注我们
官方微博
官方空间
官方微信
快速回复 返回顶部 返回列表