浅谈FPGA的乒乓操作

乒乓操作在FPGA设计中用于提升数据处理效率,通过无缝缓冲和处理数据,节省空间并适应速度差异。该文介绍了乒乓操作原理,包括数据读写控制、缓冲模块(如FIFO、BRAM)的使用,并提供了具体设计实例,如计数器控制和时序图,最后分享了完整的Verilog设计代码及工程下载链接。
摘要由CSDN通过智能技术生成

乒乓操作是FPGA设计中经常用到的设计思想,常用于需要提高数据效率的地方。其主要特点有:

1、 实现数据的无缝缓冲和处理;

2、 可节约缓冲区空间;

3、 可实现低速模块处理高速模块。

典型的乒乓操作原理如下图:

在这里插入图片描述

如图所示:

  1. T1时刻,DATA_T1存入buffer 1;

  2. T2时刻,buffer 1已被写满,DATA_T2存入buffer 2, 同时buffer 1将DATA_T1送至运算模块处理;

  3. T3时刻,DATA_T3存入buffer A1,同时buffer 2将DATA_T2送至运算模块处理;

  4. 然后重复2、3阶段的操作。

从上图也可以看出乒乓操作的核心就是控制缓冲模块的读写,具体可以细化为输入数据控制模块、缓冲模块1、缓冲模块2以及输出数据控制模块,这里的缓冲模块可以是FIFO、BRAM等。下面举例具体说明:

  1. 输入不连续的数据字节,工作时钟要求是50Mhz;

  2. 输出要求每次16字节连续输出,并且有一个信号作为数据有效指示;

  3. 每次输出之间间隔时间可以是随机的,一般是至少不低于一个时钟周期的间隔;

思考:

1、 数据为8位且16个后输出,所以考虑用16*8的BRAM做缓冲模块。

2、 两个缓冲模块写控制考虑用5位计数器,其中最高位控制不同缓冲模块的写,低4位代表写地址

3、 缓冲模块的读控制需要判断缓冲模块是否写满,利用写计数器最高位的上升沿和下降沿判断:上升沿代表buffer 1写满,下降沿代表buffer 2写满。

4、 注意输出数据流单元数据与数据有效指示同步的关系(不同缓冲模块,数据有效指示做不同的同步处理)

基于上述考虑画出时序图,如下:

在这里插入图片描述

其对应的电路图如下:

在这里插入图片描述
对应的verilog描述如下:

`timescale 1ns/10ps
module pingpang_operation (
               rst_n                                 ,
               clk_50m                     ,
               data_in                      ,      // 输入数据
               data_valid           ,    // 输入数据有效信号              
           
  • 22
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值