首页->【亚军:Vivado入门与提高】

2073 7

高老师,您好!我现在需要利用fifo控制一定量的数据缓存,就是先写入一定量的数据,写过程完成之后,然后再把这些数据读出来,请问这里面的状态怎么控制?谢谢!

楼主可见

  1. zhy08150324 7#

    FIFO的容量就是深度*宽度。FPGA所能提供的Memory容量是根据具体型号而定的。具体数值可查看Xilinx Product Selection Guide.

  2. gxiaob 6#
    回复:laurengao

    FIFO的容量就是深度*宽度。FPGA所能提供的Memory容量是根据具体型号而定的。具体数值可查看Xilinx Product Selection Guide.

    谢谢! 

  3. laurengao 5#

    FIFO的容量就是深度*宽度。FPGA所能提供的Memory容量是根据具体型号而定的。具体数值可查看Xilinx Product Selection Guide.

  4. gxiaob 4#
    回复:laurengao

    10行数据的个数你应该是知道的,一种方法是自己设计额外逻辑计数,判断写入了多少数据;另一种是可以利用这个信号WR_DATA_COUNT,具体使用方法可参看ug175。至于是边写边读还是写完再读,只要保证“读不空写不满”即可。 

    fifo的容量应该是write_depth*write_width吧?当我在选择这两个参数的时候,如果写宽度为128,写深度最大可以选择4194304,但是这样的话容量算得的很大,FPGA能提供这么大的容量?如果不能,请问最大的范围是多少?

    谢谢您!

  5. laurengao 3#

    10行数据的个数你应该是知道的,一种方法是自己设计额外逻辑计数,判断写入了多少数据;另一种是可以利用这个信号WR_DATA_COUNT,具体使用方法可参看ug175。至于是边写边读还是写完再读,只要保证“读不空写不满”即可。 

  6. gxiaob 2#
    回复:laurengao

    FIFO在使用时需要注意空满标记,必须保证FIFO”不能写满,不能读空“。通常调用IP Core使用,empty和full两个信号以及almost_full,almost_empty这个是状态信号。当然也有一些设计上的措施:比如读写时钟同频不同相,这样FIFO不好出现满或者空的状况(只要先写进去几个数之后再开始读);比如读写带宽一致(Fr * Dr = Fw * Dw,Fr读速率,Fw写速率,Dr读数据位宽,Dw写数据位宽)。另外,可以看看ug175和ds317,这是Xilinx的FIFO IP Core的使用方法说明文档。

     我现在需要利用异步fifo作为缓存,fifo的读写时钟频率和位宽均不一样,我希望fifo先存入一帧图像的10行数据,然后在将10行数据读出来,读出的数据送到内存,即内存中我希望存10行数据。这里的fifo非满非空,请问这里如何判断fifo缓存了10行数据?并且fifo的工作状态是边写编读还是,先写完10数据再读出10行数据?

     谢谢!                                                                          

  7. laurengao 1#

    FIFO在使用时需要注意空满标记,必须保证FIFO”不能写满,不能读空“。通常调用IP Core使用,empty和full两个信号以及almost_full,almost_empty这个是状态信号。当然也有一些设计上的措施:比如读写时钟同频不同相,这样FIFO不好出现满或者空的状况(只要先写进去几个数之后再开始读);比如读写带宽一致(Fr * Dr = Fw * Dw,Fr读速率,Fw写速率,Dr读数据位宽,Dw写数据位宽)。另外,可以看看ug175和ds317,这是Xilinx的FIFO IP Core的使用方法说明文档。