购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.2 Logos2系列FPGA的专用RAM模块(DRM)

4.2.1 DRM结构及硬件特性介绍

DRM(Dedicated RAM Module)是Logos2系列FPGA的片上专用存储单元。DRM按列分布,每个DRM有高达36 Kbit的存储单元,并且可被配置为2个独立的18 Kbit的存储块。每个DRM都支持DP(Dual Port,双口)RAM模式,同时也可以被配置为SP(Single Port,单口)RAM模式、SDP(Simple Dual Port,简单双口)RAM模式、ROM模式,以及同步/异步FIFO(First In First Out)模式。

在DP RAM模式下,DRM两个端口(A和B)的最大数据位宽为36 bit,两个端口均可以独立进行读写操作,且支持不同的时钟信号。而SDP RAM模式下,A、B两个端口中一个专用于写数据,另一个专用于读数据,该模式下的最大数据位宽增大至72 bit,读写端口同样均支持不同的时钟信号。在SP RAM模式和ROM模式下,最大数据位宽为72 bit。在同步/异步FIFO模式下,一个端口专用于写数据,另一个端口专用于读数据,读写端口可以采用不同的时钟信号,DRM内置的硬件FIFO控制器可配置为同步/异步FIFO模式。

DRM的端口位宽支持两种类型:一种是数据位宽为2 N (如1 bit、2 bit、4 bit、8 bit、16 bit、32 bit、64 bit);另一种是数据位宽为9×2 N (如9 bit、18 bit、36 bit、72 bit)。DP RAM和SDP RAM模式还支持混合数据位宽功能,即两个端口可以配置成不同的位宽。例如,在SDP RAM模式下,可以将写端口的最大位宽配置成1 bit×16,将读端口的最大位宽配置成32 bit×512,可以为用户节约从1 bit到32 bit的串并转换逻辑。

在SDP RAM或同步/异步FIFO模式下, 72 bit×512的存储器支持单比特纠错、双比特检错的ECC功能,其中有效数据位为64 bit,另外的8 bit为ECC校验位。ECC功能支持ECC_SBITERR(单比特纠错指示标志)、ECC_DBITERR(双比特检错指示标志)、ECC编码、ECC读地址(ECC编码、读地址仅在SDP模式下支持)输出。

另外,DRM提供额外的3 bit地址扩展(CS[2:0]),用于深度扩展的应用,多个DRM可以通过级联扩展的方式组合成更大的DP RAM、SDP RAM、SP RAM、ROM或者同步/异步FIFO。

表4-1列出了Logos2系列FPGA的DRM功能特性。

表4-1 Logos2系列FPGA的DRM功能特性

续表

注:SDP/SP RAM模式下的32 bit及以上数据位宽禁止设置读写模式为TW、RBW,需要将读写模式设置为默认的NW。

4.2.2 DRM的工作模式及调用方法

1.位宽组合

用户可通过配置Logos2系列FPGA支持的GTP来实现不同模式和不同功能的DRM模块。Logos2系列FPGA提供GTP_DRM36K_E1、GTP_DRM18K_E1、GTP_FIFO36K_E1和GTP_FIFO18K_E1等4种GTP供用户调用,DRM的端口位宽由GTP中的参数DATA_ WIDTH_A/DATA_WIDTH_B决定。例如,当参数DATA_WIDTH_A的值为4时,A端口的数据位宽被设置为4 bit。表4-2和表4-3分别为36 Kbit和18 Kbit的DRM在DP RAM模式允许的位宽组合,其余端口和模式允许的位宽组合见《Logos2系列FPGA专用RAM模块(DRM)用户指南》。

表4-2 DP RAM(36 Kbit)模式允许的位宽组合

注:√表示支持的位宽组合。

表4-3 DP RAM(18 Kbit)模式允许的位宽组合

注:√表示支持的位宽组合。

2.写操作模式

在DP RAM模式和SP RAM模式下,DRM的端口写操作支持NW、TW和RBW三种模式,默认的写操作模式为NW模式。DRM的写操作模式由GTP中的参数WRITE_MODE_A和WRITE_MODE_B决定,当参数WRITE_MODE_A的值为“NORMAL_WRITE”时,DRM的A端口的写操作模式被设置为NW模式。

图4-4为DRM写操作模式时序图,在第1个上升沿,WEA为高,从DRM的A端口向地址ADDR0写入数据D0。将DRM配置成不同写操作模式,DOA端口输出的数据是不同的,其中在NW模式下该端口的输出数据不更新,在TW模式下该端口的输出数据为新写入的数据,在RBW模式下该端口的输出数据为写入该地址的旧数据(图中Mem为对应地址存储的旧数据)。

图4-4 DRM写操作模式时序图

图4-5为DRM在SDP RAM模式下的读写时序图,用户从DRM的A端口写入数据,从DRM的B端口的读出数据。在CLKA的第1个上升沿,WE为高、ADDRA为地址ADDR0,向DRM的ADDR0地址写入数据D0;在CLKB的第3个上升沿,WE为低,ADDRB为地址ADDR0,经过一定延迟后读出ADDR0地址存储的数据D0。图中Mem为对应地址存储的旧数据。

图4-5 DRM在SDP RAM模式下的读写时序图

在DP RAM模式和SDP RAM模式下,DRM有两个相对独立的端口,若同时通过这两个端口对同一地址进行读写操作,则会引发冲突。DRM禁止两端口同时向同一地址写入数据、禁止两端口同时对同一地址进行一读一写操作,需要在实际应用中通过用户逻辑加以规避。

3.字节写模式

DRM支持字节写模式,通过BWEA信号和BWEB信号(高电平有效)可写入选定的数据,同时屏蔽对同一地址的其他数据的写入。字节写模式主要应用于限定数据总线位宽的情况,只对比较小的数据总线位宽进行操作。例如,可以在18 bit的数据总线位宽上只对9 bit位宽的数据进行操作。字节写模式可以与NW、TW或RBW模式组合使用。

4.输出寄存器

针对数据输出端口,DRM特别提供了可选的输出寄存器(OR),以取得更好的时序性能。输出寄存器是否有效由GTP的参数DOA_REG和DOB_REG决定,当DOA_REG为1时,A端口的输出寄存器有效;当DOA_REG为0时,A端口的输出寄存器被旁路。在读操作中,当输出寄存器被旁路时,DOA端口和DOB端口的输出均为锁存器输出,并在读时钟的同一个时钟上升沿输出。

5.初始化

INIT_xx是DRM的初始化配置参数,这些参数的值决定了内存的初始值。在默认状态下,DRM的初始值全为0。GTP_DRM18K_E1包含了从INIT_00到INIT_3F的64个初始化配置参数,GTP_DRM36K_E1包含了从INIT_00到INIT_7F的128个初始化配置参数,每个配置参数都是288 bit的数据,用于配置DRM对应地址的288 bit内存。当数据位宽为2 N 时,即1 bit、2 bit、4 bit、8 bit、16 bit、32 bit、64 bit时,INIT_xx中的每9位数据只将低8位映射到内存;当数据位宽为9×2 N 时,即9 bit、18 bit、36 bit、72 bit时,INIT_xx中的数据全部映射到内存。

INIT_FILE参数用于配置初始化文件路径、初始化文件格式,当参数INIT_FILE不为“NONE”且指定了某个具体的初始化文件路径时,行为仿真和软件综合会读取对应的初始化文件并覆盖初始化INIT_xx配置的初始值。

6.DRM的使用

读者可通过深圳市紫光同创电子有限公司的PDS软件,以下面的三种途径来使用DRM。

(1)通过PDS软件内嵌的IP Compiler工具生成DRM IP,详见IP Compiler自带的文档《UG041002_DRM_Based_RAM_IP》。

(2)在设计中通过调用GTP来使用DRM,DRM的支持情况及使用说明可参考《Logos2系列产品GTP用户指南》和《Logos2系列FPGA专用RAM模块(DRM)用户指南》;同时,在PDS软件的安装路径“arch/vendor/pango/verilog/simulation”下,有多个GTP模型供用户参考。

(3)通过代码约束来使用DRM,用户可通过代码对RAM进行建模,并通过综合约束把相应的instance映射到DRM上,综合工具可识别的代码建模风格及综合约束命令可参考PDS软件安装路径下的《ADS_Language_Support_Reference_Manual》和《ADS_Synthesis_ User_Guide》等文档。

4.2.3 DRM常见问题解答

(1)当DRM的两个端口同时读写同一个地址时,输出数据如何变化?

答:Logos2系列FPGA的DRM不支持两个端口之间的读写冲突仲裁,若同时通过两个端口对同一地址进行读写操作,则会引起冲突。在写模式下,可配置单个端口的读写优先级,但对于两个端口之间的读写顺序无效。禁止两个端口同时向同一地址写入数据(此时写入的数据是不确定的),也禁止两个端口同时在同一个地址进行一读一写的操作,需要在实际应用中通过用户逻辑加以规避。

(2)SDP RAM模式是否支持读写模式设置?

答:SDP RAM模式不支持读写模式的设置,必须使用默认的NW模式,特别是A端口和B端口拼接场景(18 Kbit的DRM在SDP RAM模式和SP RAM模式的数据位宽为32 bit 和36 bit、36 Kbit的DRM在SDP RAM模式和SP RAM模式下的数据位宽为32 bit、36 bit、64 bit、72 bit),此时SDP RAM模式和SP RAM模式都不支持读写模式的设置,PDS软件会对该场景进行检查并报错。IP不支持设置SDP RAM模式下的读写模式,通过修改代码可支持SP RAM模式下读写模式的配置,但可能会消耗更多资源。

(3)同步/异步FIFO模式是否存在读写保护?

答:同步/异步FIFO模式不存在读写保护,在FIFO写满后不能进行写操作,否则会覆盖FIFO中第一个写入的数据;在读空FIFO后建议不要进行读操作,否则会读取到错误的数据。

(4)混合位宽输出数据的顺序是什么?

答:对于DRM和FIFO而言,先写入的数据存放在低地址位,先读出的数据也是低地址位的数据。以写数据位宽16 bit、读数据位宽4 bit为例,DRM对地址0写入数据16’h1234(16 bit的十六进制数1234),从地址0、1、2、3读出数据分别为4’h4(4 bit的十六进制数4)、4’h3、4’h2、4’h1;FIFO是先写16’h1234,再依次读出4’h4、4’h3、4’h2、4’h1。 t5z4kSZDTWh39hVwQlRlR+xfaZNZcg8NazdlQg5H4Pwxyy0rWBqmwKfuxVbg1gvw

点击中间区域
呼出菜单
上一章
目录
下一章
×