- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
FC-AL系统中FPGA的弹性缓存设计
为了获得尽可能小的数据延时,同时不对数据的正常传输产生影响,在缓存大小满足系统基本要求的情况下,如何更精确地判断弹性缓存空间的占用率就变得很重要了。为了提高缓存管理的精度,本文中所采取的弹性缓存的设计方法如图3所示。在写时钟的上升沿将数据写入到基于写时钟上升沿的写地址产生逻辑的输出,即写指针所指向的弹性缓存空间;在读时钟的上升沿将基于读时钟上升沿的读地址产生逻辑的输出,即读指针所指向的弹性缓存空间的数据读出。此外,还各设置了一个基于时钟下降沿的读和写地址产生逻辑,但它们不对弹性缓存的读写操作产生影响。分别对基于读时钟上升沿的读地址和经过延时后的基于写时钟上升沿的写地址,以及基于读时钟下降沿的读地址和经过延时后的基于写时钟下降沿的写地址进行异步比较。综合两个比较结果,判断因同频但不同源的读写时钟之间可能存在的差异而导致的弹性缓存空间占用率的变化。判断得到的异步信号通过一个同步逻辑被同步到读时钟域,控制基于读时钟上升沿的读地址产生逻辑的输出,从而实现对弹性缓存中填充字的添加或删除,达到预防缓存出现溢出的目的。
3仿真结果分析
用Verilog语言实现图3所示电路的RTL描述,并对其用ModelSim进行仿真,仿真结果如图4和图5所示。两图中,CLK_rcv和CLK_local分别为频率非常相近的缓存的写时钟和读时钟。
图4中,CLK_rcv的时钟频率略低于CLK_local的时钟频率,弹性缓存有被读空的可能。当CLK_local比CLK_rcv多出半个时钟周期左右后,缓存管理就发出添加填充字的请求,以在最近的帧间隙进行添加操作。
图5中,CLK_rcv的时钟频率略高于CLK_local的时钟频率,弹性缓存有被写满的可能。当CLK_local比CLK_rcv少了半个时钟周期左右后就发出较低级别的删除填充字的请求,以在最近的间隙进行删除操作。若低级别的删除操作未被及时执行,致使缓存空间占用率进一步提高,则请求较高级别的删除操作。
从图4和图5中可以看出,添加填充字,即在当前时钟周期不读缓存空间的数据,而是发送一个当前填充字;删除填充字,即在条件满足的情况下跳过当前读地址空间,直接读取下一个地址空间中的数据。
结 语
本文提出的弹性缓存设计方法,充分利用了光纤通道协议的特性,通过提高对弹性缓存的管理精度,减小了数据在弹性缓存中可能的最大延时,有利于提高仲裁环网的整体性能。
作者:何晓蓉,周东 来源:21ic
上一篇:迈入40G超宽带时代
下一篇:基于uC/GUI的数据显示系统的设计