微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于面积的实现和基于速度的实现-两种YUV分离的FPGA的实现方式

基于面积的实现和基于速度的实现-两种YUV分离的FPGA的实现方式

时间:06-05 来源:互联网 点击:

于速度的实现

前面提到了FPGA设计中面积与速度不断变换的原则,基于面积的实现方式只用到了一片双口RAM,在一定程度上达到了面积优化的目标,但是也看到读/写是串行执行的,在系统运行速度上确实有一定的缺陷,无法满足系统对实时性的要求,同时系统需要两个不同频率的时钟,容易引起亚稳态。下面将介绍一种基于速度的实现方式。

3.1 乒乓操作

乒乓操作是一个用于数据流控制的处理技巧,本文利用了两片双口RAM来作为乒乓操作的数据缓冲区,乒乓操作如图4所示。外部视频数据在输入数据选择控制模块和输出数据选择控制模块的控制下,完成缓冲区的选择和视频数据的输入/输出,并将经过缓冲的数据流不停顿地送到下一模块进行运算或处理。它适合于对数据流进行流水线式处理,能高效地完成大量实时视频数据的无缝缓冲和处理。在第一个缓存周期,也称之为双口RAM0的写周期。视频数据在双口RAM控制器控制下选择将视频数据输入到双口RAM0;在下一个周期,输入控制模块将视频数据输入到双口RAM1,同时输出控制模块输出双口RAM0的视频数据到后续模块进行处理;在第三个周期时,在输入控制模块的控制下,将输入视频数据输入到双口RAM0,同时在输出控制模块控制下,将双口RAM1中存储数据输出到后续模块,如此不断循环。


3.2 模块设计与仿真

该模块利用了两片双口RAM在不同的缓冲周期内分别进行读/写。该模块主要由有效数据抽取、双口RAM控制器、两片双口RAM组成,模块结构如图5所示。该模块在控制器控制下视频数据经有效数据抽取模块抽取后进入双口RAM,控制器为双口RAM提供读/写使能,通过写使能控制数据写入是否有效,data_valid是有效数据抽取模块,用来标识有效视频数据的信号,由它为模块提供写使能,等到写操作完成后向SDR AM控制器发送满信号,此时读使能r_en由SDRAM控制器提供。通过控制器提供的读/写使能完成两片双口RAM的读写切换。该模块利用了两片双口RAM之间的乒乓操作,流水地实现了YUV分离的并行处理。

工作流程如下:首先对双口RAM0进行写操作,写操作完成后经过316个CLK,开始对双口RAM1进行写操作。对双口RAM0进行读操作时,因为读操作只用到704个CLK,而写操作需要1 408个CLK,当对双口RAM0读完时,还需继续对双口RAM1进行写操作,等到双口RAM1输出ramfull高电平时进入下一个缓冲周期,此时对双口RAM0进行写操作,对双口RAM1进行读操作,如此循环,则实现了视频处理的流水操作。完成第一行数据的YUV分离输出所需要的1 408+316+704个CLK后,各行数据的输出则只需要1 408+316个CLK。于此同时基于速度的实现方式从提高系统工作时所能达到的最高时钟频率为出发点,利用了流水线的设计,提供了系统的频率,如果系统的工作频率是100 MHz,那么实际输出YUV分离视频数据所需要的时间仅为(1 408+316)×10-8。模块仿真如图6所示。


4 性能分析


4.1 操作时间

前面已经叙述过基于面积实现方式,完成一行视频数据的YUV分离输出需要1 408+704个CLK,而由于需要充分利用行消隐期来完成数据的分离输出,因此FPGA与SDRAM之间的频率必须满足一定的差异,这就使得该方式不能获得较高的系统最高工作频率。假设FPGA的工作频率为48 MHz,SDRAM的工作频率为100 MHz,那么实际完成一行视频数据的分离传输需要的时间为1 408×10-8+704×(1/48 000 000),而基于速度的实现方式,由于采用了两片双口RAM,因此可以在同一缓冲周期分别进行读/写操作,而下一缓冲周期两片双口RAM的操作方式切换,进而完成了数据的无缝缓存与处理,利用流水线的方式使YUV分离数据的输出速度得到了很大的提高,并且使得该模块的系统最高工作频率得到了很大的提高。完成一行视频数据的分离输出需要的CLK个数为1 408+316+704个。假设该模块的工作频率为100 MHz,那么实际完成一行分离数据输出所需的时间为(1 408+316+704)×10-8,通过对比可以发现,基于速度的实现使得系统可以在较高工作频率下运行,利用流水操作,进而实现了速度上的提升。

4.2 硬件资源

由上述可知,基于面积的实现方式只用到了一片双口RAM,而基于速度的实现方式用到了两片双口RAM,且用到了一个二选一多路选择器,同时后者的控制信号明显多于前者,不仅增加了寄存器开销,同时也增加了输入/输出端口的数量。通过对比可以发现,前者在面积上比后者确实有了较大优势。表1为2种实现方式的资源消耗列表。


5 结语


本文提出了YUV分离的两种FPGA实现方法,基于面积的实现利用了一片双口RAM,而基于速度的实现方式利用了两片双口RAM。通过对比发现,前者在消耗资源上获得了较大的改进,对整个系统的集成化有重大作用;而后者采用了两片双端口RAM的乒乓操作流水,实现了视频数据的输出,对提高整个系统的实时性意义重大。无论从面积还是速度为出发点,二种方案对整个系统性能的提高都意义重大。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top