FPGA常见的存储器有三种:RAM,ROM,FIFO.
RAM:随机访问内存,通常掉电后丢失数据。可以在任意位置读取/写入数据。
ROM:只读存储器,在系统停止供电时可以保持数据。可以在任意位置读取数据。
FIFO:first in first out,先进先出,只能顺序写入,顺序读取数据,其数据地址由内部读写指针自动加1完成。
RAM:
1.种类:
(1)SRAM(Static Random-Access Memory):静态随机存取存储器。这种存储器只要保持通电,里面储存的数据就可以一直保存。
(2)DRAM(Dynamic Random Access Memory):动态随机存取存储器。每隔一段时间,要刷新充电一次,否则内部数据会消失,所以SRAM具备较高的性能,相对的功耗也较大。
2.在IP核中调用RAM:
单端口RAM:
只有一组数据线和地址线,所以不能同时进行读写操作。即同一时刻要么读要么写。
伪双口RAM:
一个端口只读,另一个端口只写
真双口RAM:
具有两套完全独立的数据线、地址线和读写控制线,并允许两个独立的系统同时对该存储器进行随机性的访问。即读写可同时进行:能同时进行两个端口读,能同时进行两个端口写,能同时一个端口读同时另一个端口写
ROM:
FIFO:
生成FIFO IP核是有两种读模式可选:
1.Standard模式,在读使能信号与哦喜爱哦的下一个周期才能读出第一个有效数据,所以实际的读写深度会比写入的深度少1;
2.FWFT模式,读使能信号有效就能读出有效数据,实际的读写深度比写入的深度多1;
FIFO类型:
同步FIFO的输入和输出在同一个时钟
异步FIFO的输入和输出不在同一时钟(wr_clk 和rd_clk)
添加几乎满,几乎空的引脚,可以防止数据溢出或丢失,可以作为FIFO已经满和空的标志