ImageVerifierCode 换一换
格式:DOC , 页数:19 ,大小:167.50KB ,
资源ID:137166      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-137166.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(fpga+dsp异构视频处理系统中基于srio的数据高效传输方法.doc)为本站会员(无敌)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

fpga+dsp异构视频处理系统中基于srio的数据高效传输方法.doc

1、FPGA+DSP 异构视频处理系统中基于SRIO 的数据高效传输方法 姜宏旭 刘亭杉 李辉勇 张萍 段洣毅 北京航空航天大学计算机学院数字媒体北京市重点实验室 摘 要: 数据传输一直是影响嵌入式视频系统实时处理能力的关键环节.随着视频应用的多路化和高清化, 混合多处理器结构已成为嵌入式视频处理系统的主要发展趋势, 异构处理器之间数据的高效传输对系统性能的影响变得比以前更加突出.文中针对 FPGA+DSP 异构视频处理系统中的数据传输问题, 在分析处理器结构和视频数据格式特征的基础上, 提出了一种基于高速串行接口 SRIO (Serial Rapid I/O) 的数据高效传输方法.该方法分别以

2、FPGA、DSP 作为系统的传输、处理核心, 在 FPGA 处理器上采用视频三分量数据重组方法并使用包头信息较小的SRIO 流写事务 SWRITE (Streaming Write) , 简化视频传输格式的同时提高了SRIO 视频数据包的传输效率;在 DSP 处理器上通过预定义接收端数据存储单元和采用简洁的 SRIO 门铃事务 (DOORBELL) 应答机制, 节约了 DSP 在传输过程中的时间开销.实验结果表明, 文中设计的 SRIO 高效传输方法在占用较少的 FPGA资源的条件下传输速度达理论值的 81%以上.关键词: FPGA+DSP; 视频数据; SRIO; 高效传输; 作者简介:姜宏

3、旭, 男, 1976 年生, 博士, 副教授, 主要研究方向为数字媒体处理及嵌入式系统设计.E-mail:.作者简介:刘亭杉, 女, 1986 年生, 博士研究生, 主要研究方向为数字媒体处理及嵌入式系统设计.作者简介:李辉勇, 男, 1983 年生, 博士研究生, 主要研究方向为数字媒体处理及嵌入式系统设计.作者简介:张萍, 女, 1987 年生, 硕士研究生, 主要研究方向为数字媒体处理及嵌入式系统设计.作者简介:段洣毅, 男, 1953 年生, 博士, 教授, 主要研究领域为数字视频/图像压缩处理技术、信息融合技术等.收稿日期:2014-07-18基金:国家自然科学基金 (6127234

4、7) A High-efficiency Data Transmission Method Based on SRIO in FPGA+DSP Heterogeneous Video Processing SystemJIANG Hong-Xu LIU Ting-Shan Li Hui-Yong ZHANG Ping DUAN Mi-Yi Beijing Key Laboratory of Digital Media, School of Computer Science and Engineering, Beihang University; Abstract: Data transmiss

5、ion is a critical part of an embedded video system for its real-time processing ability.With the development of digital video processing applications, in order to alleviate the requirement of large amounts of data transmission (take multi-channel, high-definition video for example) , multi-processor

6、 technique will become more popular in the future.In this paper, we proposed a novel high-efficiency data transmission method based on Serial Rapid I/O (SRIO) for FPGA+DSP video processing system.Considering the heterogeneous processor structure and video data format, we made FPGA as a core unit of

7、transmission and DSP as for processing.Specially, we reorganized the video transmission sequence after separating the three components of video data and applied a lightweight SRIO streaming write transaction (SWRITE) which has minimal header overhead to increase data throughput.To reduce the DSP tra

8、nsmission time, the video data was directly stored in the predefined DSP storage unit and a simple DOORBELL transaction was used as a notification message.The experimental results show that our method can save lots of FPGA resources, and at the same time the transmission rate can achieve 81% of the

9、SRIO theoretical value, which overcomes most of existing methods.Keyword: FPGA+DSP; video data; SRIO; high-efficiency transmission; Received: 2014-07-181 引言视频应用领域的快速增长和传感器技术的迅速发展推动了视频时空分辨率的提高, 同时也使多路化、高清化成为视频应用发展的一种趋势.视频数据量的激增不仅给处理平台的计算能力带来了严峻挑战, 同时也给视频处理系统中处理器间数据的高速传输造成了极大困难.例如, 当使用 YCbCr 420 采样格式采

10、集视频数据时, 一路分辨率为 720576, 帧率为 25 帧/秒的 D1 数字视频原始数据率约为 119Mbps, 一路 1080P30 高清数字视频的原始数据率高达 712Mbps.因此, 在视频处理系统设计中除了要关注处理器的性能和计算能力之外, 研究和解决处理器间视频数据的高效传输问题同样重要.目前, 嵌入式视频处理系统中常用的互连和传输接口 EMIF (External Memory Interface) 等已难以满足多路或高清视频的大数据量传输需求1-3.高速串行接口 SRIO 作为 RapidIO 的一个重要分支, 是面向嵌入式系统开发提出的高可靠、高性能、基于包交换的新一代高速

11、互联技术, SRIO 技术的发展为异构处理器间的高速互联提供了另一种可能.特别是近年来推出的数字信号处理器 (Digital Signal Processor, DSP) 和现场可编程门阵列 (Field Programmable Gate Array, FPGA) 等嵌入式处理器普遍集成高速差分串行收发器, 很大程度上促进了 SRIO 的发展应用4-7.尽管 SRIO 具有可选的1.25Gbps、2.5Gbps、3.125Gbps 等多种传输速率, 然而这只是理论值, 低效的传输机制设计或是繁琐的实现过程都会导致其传输速度的大幅降低.例如:文献8基于多核 DSP 设计实现了声纳基阵处理系统,

12、 此系统使用 SRIO 的普通读事务 NREAD (Normal Read) 、普通写事务 NWRITE (Normal Write) 、门铃事务DOORBELL 以及对 RapidIO 内部寄存器进行操作的 MAINTENCE 事务, 传输方法上未加优化, 测试 1.25Gbps 工作模式下传输速率约为 257Mbps, 仅达到 SRIO 理论值的 25%;文献9通过在 FPGA 端采用乒乓存储结构, 并使用带响应的写事务NWRITE_R (Normal Write with Response) 与 DOORBELL 等 SRIO 事务设计传输机制, 数据率比未加优化的方法有了明显提升, 达

13、到 SRIO 理论带宽的 74%.由于现有方法在设计 SRIO 传输机制时缺乏针对视频数据和异构处理器结构特点的考虑, 直接采用已有技术难以满足异构视频处理系统中视频的高效传输和处理需求.此外, 现有视频处理系统大多偏重于功能的实现, 硬件资源的开销较大.例如, 文献10提出的方法需要为 FPGA 外挂两片同步动态存储器 SDRAM (Synchronous Dynamic Random Access Memory) , 增加资源占用的同时, 加大了系统软硬件设计的复杂度.文献11采用基于 DSP 主动发送数据的传输方案, 该方案需要 FPGA 向 DSP 发送中断信号以请求数据, 每中断一次

14、 DSP 可以发送1/4 帧的视频数据, 因此显示一帧视频需要 4 次中断.由于 DSP 在进行视频处理工作的同时还要负责数据传输, 无疑加大了 DSP 时间与资源的开销.本文在分析视频数据和异构处理器结构特点的基础上提出了一种基于 SRIO 总线的数据高效传输方法.该方法通过在 FPGA 处理器上采用视频三分量数据重组方法并使用包头信息较短的 SWRITE 事务, 简化视频传输格式的同时提高了 SRIO上视频数据包的传输效率;在 DSP 处理器上通过预定义接收端数据存储单元和采用简洁的 DOORBELL 应答机制, 节约了 DSP 在传输过程中的时间开销.本文方法由于仅采用 SWRITE、N

15、READ 和 DOORBELL 这 3 种 SRIO 事务, 减化了实现过程的复杂度.此外, 由于视频数据是以行为单位在 FPGA 上存储的, 并且在存储过程中, 采用 FIFO 视频缓冲队列取代资源占用率较高的 RAM, 因此系统对 FPGA 内存资源占用较少, 无需外部存储器, 降低了软硬件设计的难度.实验证明, 本文使用 SRIO 单通道并采用 1.25Gbps 工作速度, 传输速率达 829Mbps 以上, 可满足六路 D1 视频或一路 1080p 高清视频的传输需求.文中以一路 D1 视频传输为例做出说明及验证方法的可行性.本文第 2 节对系统的整体概况进行描述, 包括本文所采用的视

16、频处理系统的结构、视频数据格式的分析、SRIO 事务类型的介绍以及 SRIO 传输过程的介绍等内容;第 3 节详细介绍本文提出的异构处理器间 SRIO 高效传输方法, 主要分为方法处理流程、SRIO 高效传输机制设计与方法的实现 3 个主要部分;第 4 节首先对实验环境进行介绍, 然后分别给出方法的 SRIO 传输速率测试与 FPGA 资源使用情况的相关实验结果.2 系统概述2.1 FPGA+DSP 异构视频处理系统结构由于数据计算能力强、功能定制灵活, DSP 和 FPGA 已成为嵌入式视频处理系统中应用最广泛的两种处理器.其中, DSP 是一种适合进行数字信号处理运算的微处理器12, 主要

17、用来实现各种数字信号处理算法;FPGA 虽然具有体系结构灵活、集成度高以及适用范围广等特点13, 但相对于 DSP 而言, 其算法程序的设计难度大、开发周期较长.现有主流的基于多处理器的视频处理系统主要有基于 DSP+DSP 同构处理器架构和 FPGA+DSP 异构处理器架构两种.相比之下, 同构处理器架构在设计上比异构架构下的视频处理系统简单, 但是处理器大多只能选择带有视频接口的专用 DSP (例如 TI 的 DM64系列和DaVinci 系列) , 这类处理器除了具有专用的视频接口外, 往往还在内部集成了专用协处理器用于完成标准视频处理算法 (如 H.265 编码算法) .但由于此类处理

18、器属于半定制类型, 其灵活性较差并且对视频处理算法的限制大, 因此DSP+DSP 同构处理器架构主要面向标准视频处理应用领域.而 FPGA+DSP 异构处理器架构在视频接口的适应性和算法设计的灵活性方面更具有优势:首先, FPGA作为协处理器可以完成视频接口的扩展、格式转换、预处理和系统的控制工作14-17, 由于 FPGA 具有完全可定制的特点, 因此在接口设计和协处理方面比同构处理器结构具有更高的灵活性;其次, DSP 处理器可以从接口和控制任务中脱离出来, 只作为主处理器专注于完成大量视频数据的计算和处理.此外, FPGA+DSP 异构处理器架构下的 DSP 在芯片选择上可以不局限于专用

19、 DSP, 因此能够选用更高性能的通用 DSP 处理器, 大大提高了系统的处理能力和算法设计的灵活性.本文设计了 FPGA+DSP 异构视频处理系统.在该系统中, 根据 FPGA 与 DSP 处理器的各自特点, 并综合考虑视频处理系统的常用任务的特点及处理器间负载均衡的要求, 对处理任务进行了划分.其中, FPGA 主要用于视频数据的采集、格式转换、预处理、数据传输和逻辑控制等任务;DSP 主要用于视频的处理、分析和编码等核心工作.在存储方面, FPGA 处理器采用以视频行为单位完成数据采集和预处理的方法, 其片上存储资源可以满足需求, 避免了增加片外存储器;而DSP 在计算过程中需要存取大量

20、视频数据和中间处理结果, 片内存储远无法满足要求, 因此为其设计了专门的 DDR3 片外存储器.图 1 所示的 FPGA+DSP 混合处理器的硬件结构具有广泛的通用性, 可以作为多种视频处理系统的核心硬件单元, 例如视频分析、处理和编码系统等.图 1 FPGA+DSP 异构视频处理系统硬件结构 下载原图2.2 视频数据格式视频数据除有一般大数据的规模性和高速性特点外, 在结构上还具有独特的规则性和统一性.例如, 当前普遍采用的 PAL 制式 ITU-R BT.656 数字视频在行和帧结构上就具有严格的规则性.图 2 和图 3 分别给出了该类数字视频在 YCbCr 422 通用采样格式下的行结构

21、和帧结构.图 2 BT.656 行视频数据结构 下载原图图 3 BT.656 帧数据结构 下载原图每个视频行包含了行控制信号和视频数据信号两部分.其中, 行控制信号为每个视频行起始的 288 字节, 包括前四字节的有效视频结束信号 EAV (End of Active Video) , 280 字节的固定填充数据, 以及最后 4 字节的有效视频帧开始信号 SAV (Start of Active Video) ;视频数据信号由 Y、Cb、Cr 3 种视频分量构成, 每行视频含有 720 字节 Y, 360 字节 Cb 和 Cr, 共 1440 字节.其排列顺序为 Cb, Y, Cr, Y, C

22、b, Y, Cr, , 其中, 前 3 个 Cb, Y, Cr 采样的是一个数据点的亮度信号和两个色差信号, 而接下来的 Y 采样是下一个点的亮度信号, 以此类推.完整的一帧 BT.656 视频数据是由源视频经过行扫描形成的奇场和偶场组成, 如图 3 所示.PAL 制式中第 1312 行表示偶场, 第 313625 行表示奇场, 其中有效场为第 23310 行和第 336623 行, 可使用 SAV 和 EAV 中的标志信号来表示有效场和无效场.视频数据除了在采集端具有严格的规则性外, 在处理过程中对数据也有统一性的要求.例如, YCbCr 420 是目前视频处理系统中采用最为广泛的视频格式1

23、8, 3 种视频分量一般是按帧被依次独立处理.因此, 在本文视频采集过程中, FPGA 处理器首先要将按点依次采集的 YCbCr 422 视频数据转换为按行和帧排列的 YCbCr 420 格式.在 YCbCr 422 格式中, 隔点分别采集 Cb 和 Cr分量, 在 YCbCr 420 格式中奇数行隔点采样 Cb 分量, 偶数行隔点采样 Cr分量, 如图 4 所示, 图中每个方格代表一个像素点, 每个圆形代表一种分量, 两种格式中采集所有点的 Y 分量.图 4 隔行扫描视频两种 YCbCr 采样格式 下载原图针对视频数据在结构上的规范性特点以及处理上的统一性要求, 本文为 FPGA与 DSP

24、处理器上的收发缓冲区各自分配 3 个视频缓冲队列, 以实现视频数据三分量的快速分离, 并为两处理器上帧数据的高效整合提供了条件.首先, 在分离过程中同时完成视频格式转换工作 (YCbCr 422 转为 YCbCr 420) , 即采集到的视频数据按照奇场和偶场及视频分量顺序依次输入, 舍弃奇场中 Cr 数据和偶场中 Cb 数据, 剩余视频数据按照分量不同存入对应视频缓冲队列.其次, 在预定义好 DSP 接收端数据存储地址后, 对分离后的视频三分量进行打包传输, 使得每种视频分量存到 DSP 指定地址中形成整帧数据结构, 从而减少 DSP 计算数据存储地址上的时间开销.2.3 SRIO 事务操作

25、为了适应多种类型数据的高速传输, SRIO 从 IO 逻辑 (Input Output Logical) 与消息传递 (Message Passing) 两个层面提供了如表 1 所示的 8 种事务功能, 这些事务涵盖了从原子到数据包的广泛应用方式.其中, IO 逻辑包括Atomic、NREAD、NWRITE、NWRITE_R、SWRITE 与 MAINTENANCE 几种;消息传递包括 DOORBELL 与 MESSAGE 两种.表 1 SRIO 事务列表 下载原表 Atomic 为原子操作;NREAD 事务为普通读操作, 可以直接从对端内存取数, 一包最大为 256Bytes;普通写操作有

26、NWRITE 和 NWRITE_R 两种, 可以直接往对端内存写数, 一包最大为 256Bytes;SWRITE 事务具有包头信息短、传输数据是8Bytes 的整数倍、长度不能超过 256Bytes 等特点;MAIN-TENANCE 用于对RapidIO 内部寄存器的读写操作, 可以配置整个 RapidIO 网络上各个节点的参数;DOORBELL 的包头和携带的信息都很短, 用于提供一个快速的短消息通知;MESSAGE 用于传输大数据包, 每次最多 4KBytes 数据.在分析 SRIO 事务特点基础上, 结合视频处理系统中视频数据的高速传输需求, 本文对 SRIO 的传输机制进行了定制和优化

27、.在 SRIO 事务选择上, 由于系统中需要由 FPGA 读取 DSP 处理后的视频数据, 因此选择了常规的 NREAD 事务.3 种写事务中, 尽管 NWRITE_R 可有效防止数据包的丢失, 提高数据包写入的正确率, 但是由于本文是通过地址偏移的方式向 DSP 写入视频数据的, 该方法不会因为数据包的丢失而造成视频数据的累积错误, 因此无需选用设计较为复杂的NWRITE_R 事务.相比 NWRITE 事务, SWRITE 写事务具有包头信息短、打包率高及实现简单等特点, 因此本文 SRIO 写事务选择 SWRITE 事务.由于本系统中 SRIO仅用于两个异构处理器间点到点的数据传输, 并未

28、使用 SRIO 桥芯片, 因此无需通过 MAINTENCE 事务修改和维护 SRIO 收发地址等内部寄存器.此外, 为简化SRIO 传输过程实现的复杂度, 选用简洁的 DOORBELL 事务用于异构处理器间的传输控制.综上, 本文 SRIO 传输过程中采用 SWRITE、DOOR-BELL 和 NREAD 这 3种事务, 显著降低了设计实现的复杂度.2.4 SRIO 传输过程SRIO 数据传输过程是基于请求和响应机制的.发起端请求 IREQ (Initiator Request) 是一次事务的开始, 用户控制 IREQ 端口组织请求数据包, 数据包经过 SRIO 链路发送到目标请求端口 TRE

29、Q (Target Request) 进行解析, 目标端用户控制目标响应端口 TRESP (Target Response) 组织响应数据包, 数据包经过 SRIO 链路发送回发起端响应端口 IRESP (Initiator Response) 解析.图 5 为一次典型的基于 IP 核的端到端 SRIO 传输过程示意图, 图中用户 A 发送SRIO 请求给用户 B (步骤 (1) (3) ) , 用户 B 响应用户 A 的 SRIO 请求 (步骤 (4) (6) ) , 具体步骤如下:(1) 用户程序 A 控制 IREQ 端口信号, 填充请求数据包信息, 如包类型等;(2) IP 核 A 根据

30、用户填入信息封装为 SRIO 数据包并发送到 SRIO 链路;(3) IP 核 B 收到请求数据包, 解析后通过 TREQ 端口通知用户程序 B;(4) 用户程序 B 根据请求, 控制 TRESP 端口组织响应数据包, 填入响应数据;(5) IP 核 B 封装响应数据为 SRIO 响应数据包并发送到 SRIO 链路;(6) IP 核 A 收到响应数据包, 解析后通过 IRE-SP 端口通知用户程序 A, 用户程序 A 接收并处理响应数据包.图 5 SRIO 典型传输过程示意 下载原图3 异构处理器间 SRIO 高效传输方法3.1 处理流程视频编码器多以 Y、Cb、Cr 3 种视频分量的数据块为

31、单位进行编码.为提高编码效率, 避免反复搬运数据造成 DSP 处理时间和资源的浪费, 本文在 DSP 接收数据时, 为其设计了 3 个接收缓冲区用于视频数据三分量的分离, 在 FPGA 端设计3 个发送缓冲队列与之对应.对于采集的视频数据, FPGA 首先根据其原始数据的Y、Cb、Cr 三通道格式组织并按视频序列流打包生成待发送的数据包, 然后采用包头信息较短的 SWRITE 事务实现 FPGA 向 DSP 写数据的操作, 不同通道的视频序列直接写入 DSP 端预定义的 DDR3 缓冲区, 当 SWRITE 事务操作完成后, FPGA 发送 DOORBELL 事务通知 DSP 解析视频数据并进

32、行处理计算, FPGA 向 DSP发送数据过程如图 6 所示.图 6 FPGA 向 DSP 发送数据示意 下载原图当 DSP 处理完一帧视频数据后, 通过 EDMA (Enhanced Direct Memory Access) 将处理后的视频数据搬运到 DSP 端 DDR3 的输出缓冲区, 在 FPGA 端设计 3 个接收缓冲队列与之对应.当 DSP 处理完接收到的视频数据后, 通过向 FPGA 发送DOORBELL 事务通知 FPGA 收取处理好的视频数据, 最后由 FPGA 通过 NREAD 事务请求读回处理后的视频数据, FPGA 从 DSP 接收数据过程如图 7 所示.图 7 FPG

33、A 从 DSP 接收数据示意 下载原图方法以 FPGA 作为传输链路核心, DSP 作为视频数据处理核心, 分别设计 FPGA和 DSP 端 SRIO 程序, 其中, FPGA 端程序包括发起端请求 IREQ 和发起端响应IRESP;DSP 端程序包括目标端请求 TREQ 和目标端响应 TRESP.如图 8 所示, SRIO传输过程中仅采用 SWRITE、DOORBELL 和 NREAD 这 3 种事务, 显著降低了设计实现的复杂度.下面就 SRIO 传输机制和方法实现两方面加以详细介绍.图 8 异构处理器间 SRIO 事务传输 下载原图3.2 SRIO 高效传输机制设计为了实现 SRIO 的

34、高效传输, 本文在 FPGA 端首先对采集到的视频数据进行发送前的重新组织, 如图 9 所示.具体组织过程如下, FPGA 采集打包格式的YCbCr422 视频数据, 为 3 种分量设置各自视频缓冲队列, 用于分离并暂存视频分量.在分离过程的同时完成视频格式转换工作 (YCbCr 422 转为YCbCr420) .采集到的视频数据按照奇场和偶场及视频分量顺序依次输入, 舍弃奇场中 Cr 数据和偶场中 Cb 数据, 剩余视频数据按照分量不同存入对应视频缓冲队列.当一个完整视频行的分量数据都写入各自视频缓冲队列后, 分别读取各视频缓冲队列, 以视频行为单位将 720 字节 Y 分量和 360 字节

35、 Cb (或 Cr) 分量写入 SRIO 发送缓冲队列 (TxFifo) .至此, SRIO 发送缓冲队列 TxFifo 中已经存入以平面格式视频行 L 为单位的 YCbCr 420 视频数据, 等待发送.图 9 视频数据组织示意 下载原图由于 SRIO 链路是以包为单位传输数据的, 因此为了提高数据包的传输效率, 在数据发送过程中采用包头信息较短的 SWRITE 事务, 设置其有效字节为 SRIO 协议所规定的最大字节数 256Bytes, 此时该事务有效数据打包率为 95%, 能达到最快的 SRIO 写速率.在传输过程中, 需要为每个 SWRITE 事务包设置特定地址和数据长度, 视频数据

36、以行为单位进行循环发送.由于 SRIO 数据包最大有效数据载荷为 256Bytes, 在保证数据完整性并满足 SWRITE 传输数据是 8Bytes 整数倍要求的前提下, 为最大程度提高 SRIO 传输效率, 应尽量减少数据包个数.因此, 本文将 720Bytes 的 Y 数据划分为 3 个 SWRITE 包, 每包传输 240Bytes, 包存储地址可以由帧基地址、Y 分量偏移量和行偏移量计算获得, 3 个包存储地址连续增加;360 字节 Cb (或 Cr) 数据采用两个 SWRITE 事务包发送, 并规定两个数据包的有效数据长度分别为 184Bytes 和 176Bytes, 存储地址由帧

37、基地址、Cb/Cr分量偏移量和行偏移量计算获得.为了提高 DSP 的视频处理效率, 在本异构视频处理系统中, 采用由 FPGA 发送NREAD 读请求方式读取 DSP 处理后的视频数据, DSP 仅需对 NREAD 请求进行读响应即可, 该响应过程对 DSP 是透明的, 如此可极大程度减小 DSP 在传输过程中的时间与资源开销, 使得 DSP 可以专注于视频处理工作.其传输过程与 SWRITE事务类似, 即为每个 NREAD 事务包设置特定地址和长度, 视频数据按行循环发送.为最大程度提高 SRIO 写事务效率, 参照 SWRITE 事务的数据包划分方式以及包存储地址的计算方式, 将 720B

38、ytes 的 Y 数据划分为 3 个 NREAD 包, 每包传输240Bytes, 包存储地址可以由帧基地址、Y 分量偏移量和行偏移量计算获得, 3个包存储地址连续增加;360 字节 Cb (或 Cr) 数据采用两个 NREAD 事务包发送, 并规定两个数据包的有效数据长度分别为 184Bytes 和 176Bytes, 存储地址由帧基地址、Cb/Cr 分量偏移量和行偏移量计算获得.此外, 预定义 DSP 端数据存储单元是传输机制设计的另一重要组成, 如图 10 所示.预定义 DSP 端数据存储单元包括 SWRITE 和 NREAD 事务的存储地址计算.由于此两种事务地址计算方法相同, 故下面

39、以 SWRITE 事务为例进行说明.FPGA 发送的每个 SWRITE 事务包中携带的数据将被按顺序写入 DSP 的视频缓冲区中的连续存储空间, 为实现高效 SRIO 传输过程应使用高载荷 SWRITE 事务包.因此, 在综合考虑采集视频过程特点和视频存储计算特点后, 规定:(1) TxFifo 中数据按视频行 L (Line) 排列, 每行按照 720 字节 Y、360 字节Cb (或 Cr) 数据顺序排列;(2) 每个 SWRITE 事务包中数据只能包含一种分量 (即 Y/Cb/Cr 中的一种) , 数据存储地址依次连续递增;(3) 在 DSP 视频缓冲区中数据按视频帧 F (Frame)

40、 存储, 每帧数据中同一分量连续存储, 组成各分量矩阵, 便于 DSP 完成视频处理.图 1 0 SRIO 数据存储单元示意 下载原图3.3 低复杂度 SRIO 传输方法实现本文在传输视频数据过程中仅使用 SWRITE、NREAD 和 DOORBELL 这 3 种 SRIO 事务, 其中 DOORBELL 事务仅用来发送中断信号, 操作相对 MESSAGE 更为简洁.同时, 使用逻辑与控制较 RAM (Random Access Memory) 简单的 FIFO (First In First Out) 存储机制也在一定程度上降低了设计的复杂度, 并且节约了 FPGA的资源占用.具体实现过程如

41、下:(1) 在视频数据由 FPGA 写入 DSP 过程中, FPGA 作为主动发起端, 将模数转换后的数字视频通过 SWRITE 事务写入 DSP 对应的 DDR3 存储区, 为保证内存访问的正确性, 视频在写 DDR3 存储区时, DSP 不得对该存储区进行操作.当 FPGA 写完一帧数据之后, 发送一个 DOORBELL 事务, 通知 DSP 可以对该帧数据进行处理, 保证 FPGA 与 DSP 之间的同步.为了保证 DSP 上处理的连续性, 在 DSP 上设置了8 帧缓冲区, 可以循环对数据帧进行处理.(2) 在视频数据由 DSP 写入 FPGA 的过程中, 每当 DSP 处理完一帧视频之后, 发送 DOORBELL 事务通知 FPGA 可以进行数据读取.FPGA 接收到该同步信号之后, 作为主动发起端, 将 DSP 处理后的视频数据通过 NREAD 事务读入 FPGA 的

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报