微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 菜鸟求救:如何使用ISE中IP核生成的FIFO和RAM读写图像数据?

菜鸟求救:如何使用ISE中IP核生成的FIFO和RAM读写图像数据?

时间:10-02 整理:3721RD 点击:

FIFO生成的例化代码:

FIFOS Import (
  .clk(clock), // input clk
  .rst(reset), // input rst
  .din(din), // input [7 : 0] din
  .wr_en(wr_en), // input wr_en
  .rd_en(rd_en), // input rd_en
  .dout(dout), // output [7 : 0] dout
  .full(full), // output full
  .empty(empty), // output empty
  .data_count(data_count) // output [7 : 0] data_count
);

RAM生成的例化代码:

RAM your_instance_name (
  .a(a), // input [5 : 0] a
  .d(d), // input [7 : 0] d
  .clk(clk), // input clk
  .we(we), // input we
  .spo(spo) // output [7 : 0] spo
);



1. FIFO, first input  first output,顾名思义:先进先出,适合用于不同峰值速率的转换时;
把它当成一个系统、有输入、有输出,虽然它可以处理不同峰值速率之间的传递、但是 输入输出的平均速率必须相等、最大偏移不能大于FIFO的长度。 这跟数据传输有关系,跟图像没关系。比较对你项目实际的说明:它可以作为你图像数据通信的一个桥梁;
2. 片内RAM,图像显示建议使用双口RAM。 一进一出。
  显示方式很简单,T时间进出RAM调换,比如:
在时间0-T之间、显示器显示的是RAM_1的内容;数据传输写到RAM_2的内容,更新RAM_2;
到时间T-2T之间,显示器显示的是RAM_2的内容;数据传输写到RAM_1的内容,更新RAM_1;
以此类推....
(RAM_1和RAM_2可以用一个RAM管理,地址一个比特作为选择即可)
如此一来,同一个RAM地址没有同时读写的情况.
这就需要你合理的规划这个跳转时间间隙了.
以上为设计思路,实际电路还得自己看吧。在生成IPcore的向导中,可以调出文档来看各个模块的时序.

FIFO的写入和读出是相互独立的,所以我可以先wr_en拉高,然后就按照wr_clk的时钟进行写入,判断wr_almost_full信号为高的时候,在读一次就拉低wr_en,然后再相应的拉高rd_en,开始读信号,当rd_almost_empty为高的时候,再读一个数据就可以拉低rd_en,是这个过程吧?

你说的是它的使用方法,可以参考官方手册,不同设置,不能的性能

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

网站地图

Top