Lattice系列内存时序
前言
1.三种方式
本文主要是ECP5™系列FPGA设备的内存。
设计人员可以通过三种不同的方式来使用内存原语。
方式 | 说明 |
---|---|
Clarity Designer | – Clarity Designer GUI 允许用户指定所需的内存类型和大小。 Clarity Designer 采用此规范并构造一个网表,通过使用一个或多个内存原语来实现所需的内存。 |
PMI | PMI 允许有经验的用户跳过图形界面,并从 Lattice Diamond® 项目导航器中即时使用可配置内存原语。可以设置 Verilog 或VHDL 所需的参数和控制信号。顶层设计将定义参数并声明信号,因此接口可以在运行期间自动生成黑盒合成。 |
Instantiation of Memory Primitives(内存原语的实例化) | 内存原语由顶层模块直接调用并在用户设计中实例化。这是一种高级方法,需要对内存连接和设计接口有透彻的了解。 |
2.利用内存原语的直接实例化
在设计中使用内存的另一种方法是直接实例化ECP5设备的内存原语,用户必须在EBR
块级别上工作。如果需要具有跨多个模块的内存,则用户需要自己创建级联内存。Lattice 在 Lattice Diamond 软件安装文件夹的 cae_library/synthesis
文件夹下的 VHDL/Verilog
文件中提供了所有原语的详细列表。
例如:在软件Lattice Diamond
安装目录下F:\lscc\diamond\3.10_x64\cae_library\simulation\verilog\ecp5u
可以看到ecp5u
系列的一些Verilog原语。
3.内存分类
- 分布式内存块(Distributed Memory Modules)
- 分布式双端口 RAM (Distributed_DPRAM)
- 分布式 ROM (Distributed_ROM)
- 分布式单端口 RAM (Distributed_SPRAM)
- 嵌入式块内存块(Embedded Block RAM或基于 EBR 的模块)
- 双端口 RAM (RAM_DP_TRUE)
- 伪双端口 RAM (RAM_DP)
- 单端口 RAM (RAM_DQ)
- 只读存储器 (ROM)
- FIFO and FIFO_DC(先进先出存储器)
- 基于 RAM 的移位寄存器( RAM Based Shift Register)
一、单端口RAM(RAM_DQ)
(一)概述
1.Clarity Designer 生成的单端口内存模块
2.ECP5 器件的单端口 RAM 源语
3.基于EBR的单端口内存端口定义
(二)正常模式——-Normal (NORMAL) Mode
1.无寄存输出Q
可以看到时钟上升沿存入/读取数据,数据读取延迟了时间Tco.
注
:Tco是寄存器发送据时需要的“最小持续(更新)时间”
2.输出寄存Q
(三)透写模式——Write Through (WRITETHROUGH) Mode
透写:写入的数据一边写到RAM内核,一边输出到端口。
1.无寄存输出Q
可以看到时钟上升沿存入/读取数据,数据读取延迟了时间Tco.数据写入的内存Address的同时,也端口Q输出了数据。
2.寄存输出Q
(四)先读后写模式-—— Read Before Write(READBEFOREWRITE) Mode
注:写操作时,输出端口会将当前写地址的原数据输出。
1.无寄存输出Q
2.寄存输出Q
二、真双端口RAM(RAM_DP_TRUE)—基于EBR
(一)概述
1.Clarity Designer 生成的真双端口内存模块
2.用于 ECP5 器件的真端口 RAM 源语
3.基于EBR的真双端口内存端口定义
(二)正常模式——Normal (NORMAL) Mode
1.无寄存输出
2.寄存输出
(三)透写模式——Write Through (WRITETHROUGH) Mode
1.不带输出寄存
2.带输出寄存器
(四)先读后写模式-—— Read BeforeWrite(READBEFOREWRITE) Mode
1.不带输出寄存
2.带输出寄存
三、伪双端口 RAM (RAM_DP) – 基于 EBR
(一)简介
1.Clarity Designer 生成的伪双端口内存模块
2.ECP5 器件的伪双端口 RAM 源语
3.基于 EBR 的伪双端口内存端口定义
(二)时序
- 无输出寄存器
2.输出寄存
四、只读存储器 (ROM) – 基于 EBR
(一)概述
1.由 Clarity Designer 生成的只读内存模块
2.基于 EBR 的 ROM 端口定义
(二)时序
1.无输出寄存器
IROM:internal rom 内部ROM,指的是集成到SoC内部的ROM
2.有输出寄存
五、单端口FIFO
(一)概述
1。Clarity Designer 生成的 FIFO 模块
2.FIFO端口定义
(二)数据写入时序
1.无寄存器
2.不带寄存器
(三)数据读取时序
1.不带寄存器
2.带寄存器
(四)寄存输出Q和读使能RdEn
六、双端口FIFO(FIFO_DC) – 基于 EBR 或 LUT
(一)概述
1.Clarity Designer 生成的 FIFO_DC 模块
、
2.rFIFO_DC端口信号定义
(二)写时序
1.不带寄存器
2.带寄存器
(三)读时序
1.不带寄存器
2.带寄存器
(四)寄存输出Q和RdEn
七、分布式单端口 RAM (Distributed_SPRAM) – 基于 PFU
(一)概述
1.Clarity Designer 生成的分布式单端口 RAM 模块
2.用于 ECP5 设备的单端口分布式 RAM 源语
3.基于 PFU 的分布式单端口 RAM 端口定义
(二)时序
1.无输出寄存器
2.有输出寄存器
八、分布式双端口 RAM (Distributed_DPRAM) – 基于 PFU
(一)概述
1.Clarity Designer 生成的分布式双端口 RAM 模块
2.用于 ECP5 设备的双端口分布式 RAM 原语
3.基于 PFU 的分布式双端口 RAM 端口定义
(二)时序
1.无输出寄存器
2.带输出寄存器
九、分布式 ROM (Distributed_ROM) – 基于 PFU
(一)概述
1.Clarity Designer 生成的分布式 ROM
2.ECP5 设备的分布式 ROM 源语
3.基于 PFU 的分布式 ROM 端口定义
(二)时序
1.不带寄存器
2.带输出寄存器