赞
踩
构成,具体 PH1A100 器件结构如图 2-1 所示:
PH1 系列 FPGA,每个 ERAM SLICE 包含两个独立的 ERAM20K 以及一个 FIFO 控制器。具体架构
框图如图 2-2- 1 所示,每个 ERAM SLICE 可以实现:
2 个 ERAM20K
1 个 FIFO20K,1 个 ERAM20K
1 个 FIFO40K(位宽=2~80)
ERAM20K 功能
ERAM20K 每块容量 20Kbits**,可实现:**
单口 RAM/ROM
双口 RAM
简单双口 RAM(也称为伪双口 SDP)
FIFO(ERAM SLICE 内嵌有硬件 FIFO 控制器,支持实时深度指示与 Read Ahead 模式)
ERAM20K 模块支持的功能特色有:
A/B 口时钟独立
可单独配置 A/B 口数据位宽,真双口从 x1 到 x20,支持 x40 简单双口(一写一读)
写操作时带有字节使能(Byte Enable)控制 输出锁存器/锁存器可选择
支持 RAM/ROM 模式下数据初始化(通过初始化文件在配置过程中对 ERAM20K 数据初始化)
支持多种写操作模式。只写(Write Disable Read),先读后写(Read Before Write),写穿通 (Write Before Read)三种模式。
下面分别介绍各种模式下操作;
因为其FIFO和RAM与之前使用的Altera的CyClone系列和Xilinx的Spartan系列的FIFO 和RAM配置及使用方法不一样;所以这里我使用Modelsim对各个模块进行仿真测试一下,记录其使用方法,避免后期忘记;
其中的fifo_wrpointer和fifo_rdpointer分别是写入的数据计数和读出的数据计数;这里和fifo_wrused和fifo_rdused有很大的区别;
fifo_wrpointer:代表写入fifo中有多少个数据,持续计数,计数到最大值后自动溢出后开始从0开始继续计数;
fifo_rdpointer:同上,代表从fifo中读取了多少个数据,持续计数,计数到最大值后自动溢出后开始从0开始继续计数;
fifo_wrused:代表fifo中共计被占用了多少空间;当数据被读出后,此计数值会自动减少;
fifo_rdused:同上;
不管是FIFO还是RAMFIFO都不支持读写不同的时钟,因此在程序中如果是使用两个不同的时钟进行数据转换,不能使用FIFO来进行缓存然后进行数据的时钟转换,只能使用RAM进行读写切换;DRAM也不支持不同的读写时钟;
如果想使用读写不同的时钟,只能采用RAM的方式;
各模块的modelsim的时序仿真图如下所示;
工程代码下载地址:
源码下载
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。