摘要: 摘 要:随着信息技术的飞速发展,现场可编程门阵列(FPGA)因其高度的灵活性和可配置性,在通信、视频处理、数据压缩等领域得到了广泛应用。然而,在处理长短包(即数据包长度不固定)问题时,FPGA面临着性能优化和资源利用的挑战。本文旨在探讨FPGA在处理...
  • DOI:

    10.13738/j.cnki.acc.qklw60536

  • 专辑:

    科学Ⅰ辑;信息科技

  • 专题:

    信息、科学;综合科技

  • 分类号:

    G90;N92

摘 要:随着信息技术的飞速发展,现场可编程门阵列(FPGA)因其高度的灵活性和可配置性,在通信、视频处理、数据压缩等领域得到了广泛应用。然而,在处理长短包(即数据包长度不固定)问题时,FPGA面临着性能优化和资源利用的挑战。本文旨在探讨FPGA在处理长短包问题上的现状与挑战,并提出一种改进的方法,以提高FPGA在处理长短包时的效率和资源利用率。

关键词:视频;长短包;改进;资源;效率

A dynamic caching method for FPGA long and short packets

Bai Tian Wei*   Li Miao

(Nanjing Research Institute of Guangzhou Haige Communication Group Co. Ltd., 

Nanjing 210014,China)

Abstract: With the rapid development of information technology, Field Programmable Gate Arrays (FPGAs) have been widely used in fields such as communication,video processing and data compression due to their high flexibility and configurability. However, when dealing with long and short packet problems(the length of the data packet is not fixed), FPGAs face challenges in performance optimization and resource utilization. This article aims to explore the current status and challenges of FPGA in handling long and short packet problems, and propose an improved method to enhance the efficiency and resource utilization of FPGA in handling long and short packets.

Keywords: video; long and short packages; improvement; resources; efficie

1.引言

FPGA[1-2]作为一种半定制电路,结合了ASIC(Application-Specific Integrated Circuit)电路的高性能和全定制电路的灵活性。然而,在处理长短包问题时,FPGA需要平衡处理速度和资源利用率,以确保系统的整体性能。长短包问题指的是在数据传输过程中,数据包长度往往是不固定的,在网络通信中,数据包的长度可能从几十字节到几千字节不等,这可能导致处理延迟和资源浪费。处理长短包问题时,FPGA设计面临以下主要挑战:

(1)数据包长度不确定,数据包长度可能从几个字节到几千字节不等,缓存机制需要灵活适应;(2)数据完整性,必须确保每个数据包的完整性,避免数据丢失或损坏;(3)高吞吐量和低延迟,在实时系统中,数据处理需要满足高吞吐量和低延迟的要求;(4)资源优化,FPGA资源有限,缓存机制需要在性能和资源消耗之间取得平衡。

目前,FPGA在处理长短包问题时,通常采用固定窗口缓存或乒乓双缓存的策略。固定窗口缓存无论数据包的实际长度如何,为每个数据包分配一个固定大小的缓冲区,此方法简单易行,但导致资源浪费或处理延迟;乒乓双缓存使用两个独立的缓冲区交替工作,但实现复杂,需要设计缓存区切换逻辑,同时也会占用较多的资源。

如何在保证处理速度的同时,提高资源利用率,是FPGA处理长短包问题的主要挑战。在某些应用场景中,如实时通信和视频[3]处理,对处理延迟有严格要求,这进一步增加了FPGA设计的难度。

2.改进方法

针对上述问题,本文提出了一种改进的FPGA长短包处理方法:动态窗口缓存,对比传统的固定窗口缓存和乒乓双缓存,该方法旨在提高处理效率和资源利用率,并且逻辑简单,易于实现,下面介绍其实现原理。


图1 动态窗口缓存框图

动态窗口缓存采用FIFO+RAM的双缓存架构,FIFO用于存储控制数据,RAM用于存储有效数据,如图1所示,写入和读取操作同时进行:

FIFO(First In First Out)控制数据缓存区:存储控制数据,即每包数据对应的长度及RAM首地址,先入先出,该缓存区的存储位宽及深度可根据实际需求进行设计,由于控制数据量较小,一般仅需较小的存储空间即可,故此缓存一般选择FIFO。

RAM(Random Access Memory)有效数据缓存区:存储有效数据,按地址循环存储数据。在读取过程中,根据从FIFO中读取的控制数据,即数据长度和首地址,可以动态读取有效数据。该缓存区处理的有效数据量较大,处理此类数据一般选择RAM。

3.仿真验证

下面介绍该方法的具体实现逻辑,同时为了验证代码的实现逻辑以及数据传输的准确性,搭建仿真测试框架,如图2所示,其中,CRC校验[4]采用16位,初始值为0xFFFF,生成多项式为X16+X15+X2+1,并将计算结果取反后作为CRC校验值。数据源是位宽为8,值等于0、1、2、3…这样累加的十进制数据。


图2 仿真测试框图

动态窗口缓存模块内部的双缓存深度可根据实际应用场景需求进行设计,本文视频的有效数据长度在64B~1536B之间,故FIFO的深度采用32x8,RAM的深度采用8x8192即可。其中FIFO存储的控制数据位宽是32,分别存储每包数据的长度r_wr_len[15:0]和首地址r_wr_faddr[15:0]。

模块实现逻辑分成写逻辑和读逻辑两部分。写逻辑分别将控制数据和有效数据写入FIFO和RAM,一包有效数据写入完成后,再写入控制数据。读逻辑采用verilog语言[5]常用的状态机机制,具体实现过程如图3所示:一共包括六个状态,其中IDLE为初始空闲态,WAIT1、WAIT2和WAIT3均为等待状态,WAIT1为控制数据FIFO缓存延时的1个时钟,WAIT2和WAIT3为有效数据RAM缓存延时的2个时钟,READ1为提取控制字状态,READ2为输出有效数据状态。

进入IDLE空闲态后,若检测到缓存FIFO非空,即w_empty==0时,跳转至WAIT1状态,同时开始动态读取,将 FIFO的读使能r_rd_en置高电平,读取一个控制数据后,再跳转至READ1状态提取控制字,根据提取的控制数据解析出数据包长度r_rd_len[15:0]和首地址r_rd_ faddr[15:0],同时将RAM的读地址r_addrb[11:0]从首地址r_rd_faddr开始进行累加,计数器r_cnt[15:0]从0开始累加,跳转至S3、S4状态等待,再跳转至S5状态提取有效数据,直到r_cnt==r_rd_len-1时,回到初始空闲态S0,以此循环动态读取下一包数据。


图3 读逻辑状态机跳转图

经过动态缓存后的数据w_dout_buf[7:0]进入CRC校验模块进行校验,经过CRC校验后的值为16’h1d0f,则认为校验通过,检验结果如图4所示。结果仅展示了测试350包数据的结果,校验通过的计数值w_cnt_crc_ok[15:0]为350,校验未通过的计数值w_cnt_crc_ok[15:0]为0。仿真结果表明,动态窗口缓存模块的读写逻辑能够正确传输长短包数据。


图4 CRC校验结果

4、实验验证

为了验证本文提出的改进方法的有效性,我们进行了实验验证,如图5所示。首先,作为长短包数据的视频源在将固定窗口缓存替换成动态窗口缓存后,能够很好的实现数据位宽的转换(8位转32位),其次,动态窗口缓存能够最大限度的利用全部BRAM资源,故与固定窗口缓存相比,在对长短包的处理上,能够节省将近一半的BRAM资源,节省资源的同时大大的提高了资源利用率,如图6所示(左图为固定窗口缓存,右图为动态窗口缓存)。


图5 实验验证框图


图6 资源使用对比图

实验结果表明,与传统的固定窗口处理和乒乓双缓存相比,本文提出的动态窗口缓存在处理长短包问题时,具有更高的资源利用率,通过动态调整缓冲区大小,避免了资源浪费;该方法实现逻辑简单且具有一定的灵活性,可以根据实际应用场景的需求进行灵活配置,以适应不同的长短包处理需求。

4、结论

FPGA在处理长短包问题时,面临着性能优化和资源利用的挑战。本文提出了一种改进的FPGA长短包处理方法,通过FIFO+RAM的双缓存架构动态分配缓冲区,提高了处理效率和资源利用率。实验结果表明,该方法在处理长短包问题时具有显著的优势。未来,我们将进一步优化该方法,并探索其在更多应用场景中的潜力。

[参考文献]

[1] 杨海钢,孙嘉武,王慰. FPGA器件设计技术发展综述[J]. 电子与信息学报,2010(3):714-723.

[2] KENNY J. 40nm FPGA给国防电子带来的优势和挑战[J]. 电子设计应用,2008(8):36-37+40-41.

[3] 向厚振,张志杰,王鹏. 基于FPGA视频和图像处理系统的FIFO缓存技术[J]. 电视技术,2012,36(9).

[4] 韩旭东. SPI接口内嵌CRC校验的设计实现[J]. 无线电电子学,2023,44(03).

[5] 夏宇闻. Verilog数字系统设计[M]. 北京:北京航空航天大学出版社,2003.

ncy;



更多
引文网络
  • 参考文献
  • 引证文献
  • 共引文献
  • 同被引文献
  • 二级参考文献
  • 二级引证文献