DDR3 MIG IP核解决方案

 

信号

方向

描述

app_addr [ADDR_WIDTH - 10]

输入

该输入指示当前请求的地址。

app_cmd [20]

输入

该输入选择当前请求的命令。

app_en

输入

这是app_addr []app_cmd [20]app_szapp_hi_pri输入的高有效选通。

app_rdy

输出

此输出表明UI已准备好接受命令。如果在启用app_en时取消断言信号,则必须重试当前的app_cmdapp_addr,直到app_rdy被声明为止。

app_hi_pri

输入

该高电平有效输入提升当前请求的优先级。

app_rd_data

[APP_DATA_WIDTH - 10]

输出

这提供了读命令的输出数据。

app_rd_data_end

输出

该高电平有效输出表明当前时钟周期是app_rd_data []上输出数据的最后一个周期。

app_rd_data_valid

输出

active-High输出表明app_rd_data []是有效的。

app_sz

输入

该输入被保留并且应该被绑定到

app_wdf_data

[APP_DATA_WIDTH - 10]

输入

这提供了写入命令的数据。

app_wdf_end

输入

这个高电平有效输入表明当前时钟周期是app_wdf_data []上输入数据的最后一个周期。

app_wdf_mask

[APP_MASK_WIDTH - 10]

输入

这提供了app_wdf_data []的掩码。

app_wdf_rdy

输出

该输出表明写入数据FIFO已准备好接收数据。写入数据在app_wdf_rdy = 1'b1 app_wdf_wren = 1'b1 时被接受。

app_wdf_wren

输入

这是app_wdf_data []的主动高频闪。

app_correct_en_i

输入

置位时,该高电平有效信号纠正单位数据错误。只有在GUI中启用ECC时,此输入才有效。

在示例设计中,该信号总是与1相关联。

app_sr_req

输入

该输入被保留并且应该被绑定到0

app_sr_active

输出

该输出保留。

app_ref_req

输入

该高电平有效输入请求向DRAM发出刷新命令。

app_ref_ack

输出

该高电平有效输出表示存储器控制器已将请求的刷新命令发送到PHY接口。

app_zq_req

输入

该高电平有效输入请求向DRAM发出ZQ校准命令。

app_zq_ack

输出

此高电平有效输出表示存储器控制器已将请求的ZQ校准命令发送到PHY接口。

ui_clk

输出

这个UI时钟必须是DRAM时钟的一半或四分之一。

init_calib_complete

输出

校准完成后,PHY断言init_calib_complete

app_ecc_multiple_err [70] 1

输出

该信号适用于启用了ECC并且与app_rd_data_valid一起有效的情况。如果来自外部存储器的读取数据在读取脉冲串的每个脉冲中具有两个比特错误,则app_ecc_multiple_err [30]信号非零。SECDED算法不会校正相应的读取数据,并在此信号上放置一个非零值,以通知用户界面上已损坏的读取数据。

ui_clk_sync_rst

输出

这是主动高UI重置。

 

 

input [27:0]       app_addr,

 input [2:0]       app_cmd,

 input             app_en,

 input [511:0]        app_wdf_data,

 input             app_wdf_end,

 input             app_wdf_wren,

 

   1-2         example_design/ rtl / traffic_gen目录中的文件

名称1

描述

memc_traffic_gen.v

这是流量发生器的顶层。

cmd_gen.v

这是命令生成器。该模块提供独立的控制来生成命令类型,地址和突发长度。

cmd_prbs_gen.v

这是一个伪随机二进制序列(PRBS)发生器,用于产生PRBS命令,地址和突发长度。

memc_flow_vcontrol.v

该模块在内存控制器内核和cmd_gen read_data_path write_data_path 模块之间生成流控制逻辑。

read_data_path.v

这是读取数据路径的顶层。

read_posted_fifo.v

该模块存储发送到存储控制器的读命令,其FIFO输出用于生成读数据比较的期望数据。

rd_data_gen.v

该模块为memc_flow_vcontrol.v 生成读取和就绪信号的时序控制。

write_data_path.v

这是写入数据路径的顶层。

wr_data_g.v

该模块为memc_flow_vcontrol.v 生成写入和准备信号的时序控制。

s7ven_data_gen.v

该模块生成不同的数据模式。

a_fifo.v

这是一个使用LUT RAM的同步FIFO

data_prbs_gen.v

这是一个用于生成PRBS数据码型的32位线性反馈移位寄存器(LFSR)。

init_mem_pattern_ctr.v

该模块为流量生成器生成流量控制逻辑。

traffic_gen_top.v

该模块是流量生成器的顶层,包含memc_traffic_gen init_mem_pattern_ctr 模块。

 

 

 

用户接口模块:
提出了用户设计的用户界面
提供了一个简单而又方便的替代本地接口
读取与写入数据缓冲
重新排序读取返回值,以匹配请求的顺序
提出了平面地址空间,并将其转换成SDRAM所需的地址


内存控制器模块:
接收来自用户设计的请求
重新排序请求,以尽量减少死状态,从而达到最高的SDRAM性能
管理SDRAM的row / rank配置
执行高级的SDRAM管理比如刷新、激活或预充电


物理层(PHY)模块:
通过一个简单的界面连接至内存控制器模块,同时将信号转换成实际的信号发送至SDRAM, 反之亦然
在多时钟域内转换和同步控制信号和数据
初始化SDRAM
执行DDR3写操作
执行时钟与读取数据的居中校准

 

修改示例设计

所提供的example_top设计包含流量生成器模块,并且可以进行修改以调整不同的命令和数据模式。可以在example_top.v vhd 模块中修改几个高级参数。1-11 描述了这些参数。

1-11          流量发生器参数在example_top模块中设置

参数

描述

家庭

指示家庭类型。

该参数的值是“VIRTEX7”

MEMORY_TYPE

指示内存控制器类型。

“DDR2”“DDR3”

nCK_PER_CLK

这是内存控制器时钟与DRAM时钟比率。

42(取决于在GUI中选择的PHY到控制器时钟比率)

NUM_DQ_PINS

这是总内存DQ总线宽度。

此参数支持从8到最大72DQ宽度,以8为增量。可用的最大DQ宽度取决于所选存储设备的频率。

MEM_BURST_LEN

这是内存数据突发长度。

这必须设置为8

MEM_COL_WIDTH

这是存储器列地址位的数量。

该选项基于选定的存储设备。

DATA_WIDTH

这是用户界面数据总线宽度。

对于nCK_PER_CLK = 4

DATA_WIDTH = NUM​​_DQ_PINS×8

ADDR_WIDTH

这是内存地址总线宽度。它等于RANK_WIDTH + BANK_WIDTH + ROW_WIDTH + COL_WIDTH

 

MASK_SIZE

此参数指定用户界面数据总线中的掩码宽度。

 

PORT_MODE

设置端口模式。

该参数的有效设置是:

BI_MODE:生成WRITE数据模式并监控READ数据以进行比较。

BEGIN_ADDRESS

设置内存起始地址边界。

该参数定义端口地址空间的起始边界。该值的最低有效位[30]被忽略。


 

参数

描述

END_ADDRESS

设置内存结束地址边界。

该参数定义端口地址空间的结束边界。该值的最低有效位[30]被忽略。

PRBS_EADDR_MASK_POS

设置32AND MASK位置。

该参数与PRBS地址生成器一起使用,将随机地址向下移入端口地址空间。END_ADDRESS值与该掩码中具有“ 的位位置的PRBS地址进行AND运算。

CMD_PATTERN

该参数设置要生成的命令模式电路。对于较大的设备,可将CMD_PATTERN设置为“CGEN_ALL”。该参数允许生成所有支持的命令模式电路。但是,有时候

由于较小的设备资源有限,因此必须限制特定的命令模式。

该信号的有效设置是:

•    CGEN_FIXED:地址,突发长度和指令直接来自fixed_addr_ifixed_bl_ifixed_instr_i输入。

•    CGEN_SEQUENTIAL:地址按顺序递增,增量由数据端口大小决定。

•    CGEN_PRBS32级线性反馈移位寄存器(LFSR)产生伪随机地址,突发长度和指令序列。种子可以从32cmd_seed输入设置。

•    CGEN_ALL(默认):该选项打开上述所有选项,并允许addr_mode_iinstr_mode_ibl_mode_i在运行时间内选择生成类型。

 

参数

描述

DATA_PATTERN

该参数设置要通过rtl逻辑生成的数据模式电路。对于较大的设备,

DATA_PATTERN可以设置为“DGEN_ALL”,从而可以生成所有支持的数据码型电路。在硬件中,使用vio_data_value_mode选择和/或更改数据模式。该模式只能在更改时才能更改

DATA_PATTERN被设置为DGEN_ALL

此参数的有效设置是:

•    ADDR(默认):地址用作数据模式。

•    HAMMER:在DQS的上升沿期间,所有s都在DQ引脚上,在DQS 的下降沿期间,所有s都在DQ引脚上。

•    WALKING1:步行s为对DQ管脚和的起始位置取决于地址值。

•    WALKING0:步进s位于DQ引脚上,起始位置取决于地址值。

•    NEIGHBOR:除一个DQ引脚外,所有DQ引脚均为Hammer模式。地址确定异常引脚位置。

•    PRBS32LFSR生成随机数据并以起始地址播种。

•    DGEN_ALL:该选项打开所有可用选项:

0x1:固定--32fixed_data

0x2ADDRESS - 32位地址作为数据。

0x3HAMMER

0x4SIMPLE8 - 简单8个数据模式,每8个字重复一次。

0x5WALKING1s - 步行1DQ引脚上。

0x6WALKING0s - 步行0位于DQ引脚上。

0x7PRBS - 32LFSR生成随机数据。

0x9:慢速锤 - 这是慢速的锤子数据模式。

0xAPHY_CALIB模式 - 0xFF00AA55,55AA99,66。该模式仅在地址0处生成READ命令。

CMDS_GAP_DELAY

该参数允许每个用户突发命令之间的暂停延迟。

 有效值:032

SEL_VICTIM_LINE

选择状态始终处于逻辑高电平的受害DQ线路。

该参数仅适用于锤子模式。此参数的有效设置是0NUM_DQ_PINS

value = NUM​​_DQ_PINS时,所有DQ引脚都具有相同的Hammer模式。

1.流量发生器可能支持比7系列内存控制器更多的选项。设置必须与内存控制器中支持的值匹配。

命令模式instr_mode_i addr_mode_i bl_mode_i data_mode_i

所述的traffic_gen 模块可以分别独立地设定。所提供的init_mem_pattern_ctr 模块具有接口信号,允许您使用Vivado调试逻辑核心虚拟I / OVIO)实时修改命令模式。

这是变化的命令模式:

1.      vio_modify_enable 设置为

2.      vio_addr_mode_value 设置为:

1Fixed_address 

2PRBS地址。

3:顺序地址。

参数

描述

EYE_TEST

强制流量生成器仅生成写入单个位置,并且不会生成读取事务。

此参数的有效设置为“TRUE”“FALSE”

当设置为“TRUE”时,vio_instr_mode_value中的任何设置都将被覆盖。

3.      vio_bl_mode_value 设置为:

1:固定bl

2PRBS bl。如果bl_mode 值设置为2,则addr_mode值被强制为2以生成PRBS地址。

4.      vio_data_mode_value 设置为:

0:保留。

1:固定数据模式。数据来自fixed_data_i 输入总线。

2DGEN_ADDR (默认)。该地址被用作数据模式。

3DGEN_HAMMER 。在DQS的上升沿期间,所有s都在DQ引脚上,在DQS 的下降沿期间,所有s都在DQ引脚上。

4DGEN_NEIGHBOR 。除了一个引脚,DQS的上升沿期间,所有都位于DQ引脚上。地址确定异常引脚位置。

5DGEN_WALKING1 。步行秒在DQ引脚上。的起始位置取决于地址值。


6DGEN_WALKING0 。步行秒在DQ引脚上。起始位置取决于地址值。

7DGEN_PRBS 。一个32LFSR产生随机数据并以起始地址播种。该数据模式仅适用于PRBS地址模式或顺序地址模式。

修改端口地址空间

SADDR

eaddr

PRBS_SADDR_MASK_POS

PRBS_EADDR_MASK_POS

0x1000

0xFFFF

0x00001000

0xFFFF0000地址

0x2000

0xFFFF

0x00002000

0xFFFF0000地址

0x3000

0xFFFF

0x00003000

0xFFFF0000地址

0x4000

0xFFFF

0x00004000

0xFFFF0000地址

0x5000

0xFFFF

0x00005000

0xFFFF0000地址

0x2000

0x1FFF

0x00002000

0xFFFFE000

0x2000

0x2FFF

0x00002000

0xFFFFD000

0x2000

0x3FFF

0x00002000

0xFFFFC000

0x2000

0x4FFF

0x00002000

0xFFFF8000

0x2000

0x5FFF

0x00002000

0xFFFF8000

0x2000

0x6FFF

0x00002000

0xFFFF8000

0x2000

0x7FFF

0x00002000

0xFFFF8000

0x2000

0x8FFF

0x00002000

0xFFFF0000地址

0x2000

0x9FFF

0x00002000

0xFFFF0000地址

0x2000

0xAFFF

0x00002000

0xFFFF0000地址

0x2000

0xBFFF

0x00002000

0xFFFF0000地址

可以通过更改顶级测试平台文件中的BEGIN_ADDRESSEND_ADDRESS参数来修改端口的地址空间。这两个值必须设置为与端口数据宽度对齐。PRBS_SADDR_MASK_POSPRBS_EADDR_MASK_POS这两个附加参数用于默认PRBS地址模式,以确保超出范围的地址不会发送到端口。PRBS_SADDR_MASK_POS创建一个OR掩码,将PRBS生成的地址的值低于BEGIN_ADDRESS的值移入端口的有效地址空间。应将PRBS_SADDR_MASK_POS设置为等于BEGIN_ADDRESS参数的32位值。PRBS_EADDR_MASK_POS创建一个AND掩码,将带有END_ADDRESS以上值的PRBS生成地址向下移动到端口的有效地址空间中。应将PRBS_EADDR_MASK_POS设置为32位值,并且所有剩余的位都被设置为1-12 显示了设置两个掩码参数的一些示例。

                 1-12         地址空间和PRBS掩码的示例设置

                 1-12         地址空间和PRBS掩码的示例设置

SADDR

eaddr

PRBS_SADDR_MASK_POS

PRBS_EADDR_MASK_POS

0x2000

0xCFFF

0x00002000

0xFFFF0000地址

0x2000

0xDFFF

0x00002000

0xFFFF0000地址

0x2000

0xEFFF

0x00002000

0xFFFF0000地址

0x2000

0xFFFF

0x00002000

0xFFFF0000地址

流量发生器信号描述

流量发生器信号如 1-13所示

1-13         流量发生器信号说明

信号

方向

描述

CLK_I

输入

该信号是时钟输入。

memc_init_done

输入

这是来自内存控制器的输入状态信号,表示它已准备好接受流量。

manual_clear_error

输入

输入信号清除错误标志。

memc_cmd_addr_o [310]

产量

当前交易的起始地址。

memc_cmd_en_o

产量

该高电平有效信号是命令FIFO的写使能信号。

memc_cmd_full_i

输入

这连接到内存控制器的app_rdy的反转。当该输入信号有效时,TG继续断言memc_cmd_en_o memc_cmd_addr_o 值和memc_cmd_instr直到memc_cmd_full_i 被取消断言。

memc_cmd_instr [20]

产量

当前指令的命令码。

命令写入:3'b000

命令阅读:3'b001

memc_rd_data_i [DWIDTH - 10]

输入

读取从内存返回的数据值。

memc_rd_empty_i

输入

该高电平有效信号是存储器控制器中读数据FIFO的空标志。它表示FIFO中没有有效的数据。

memc_rd_en_o

产量

该信号仅用于类似MCB的接口。

memc_wr_data_o [DWIDTH -

10]

产量

将数据值写入存储器控制器的写入数据FIFO中。

memc_wr_en_o

产量

该高电平有效信号是写数据FIFO的写使能。它表明memc_wr_data 上的值是有效的。

memc_wr_full_i

输入

该高电平有效信号是来自存储器控制器的写入数据FIFO的完整标志。当该信号为高电平时,TG保持写数据值并保持memc_wr_en的置位状态,直到memc_wr_full_i 变为低电平。

qdr_wr_cmd_o

产量

该信号仅用于向QDR II +用户界面发送写入命令。

vio_modify_enable

输入

允许vio_xxxx_mode_value 改变流量模式。

 

信号

方向

描述

vio_data_mode_value [30]

输入

该信号的有效设置是:

•    0x0:保留。

•    0x1:固定 - 通过fixed_data_i 输入定义的fixed_data32位。

•    0x2ADDRESS - 32位地址作为数据。数据是基于逻辑地址空间生成的。如果设计具有256位用户数据总线,则用户总线中的每个写入节拍在字节边界中将具有256/8的地址增量。如果起始地址是1,300,则数据是1,300,然后是下一个周期中的1,320。为了简化逻辑,用户数据模式是重复地址值位[310]的增量。

•    0x3HAMMER - 在上升沿期间,所有1都在DQ引脚上

DQS,并且所有的0都在DQ引脚的下降沿

DQS,但参数中定义的VICTIM线除外

“SEL_VICTIM_LINE”。该选项仅在参数DA​​TA_PATTERN =“DGEN_HAMMER”“DGEN_ALL”时有效。

•    0x4SIMPLE8 - 简单8数据模式,每8个字重复一次。模式可以由“simple_datax”输入定义。

•    0x5WALKING1s - 步行1位于DQ引脚上。1的起始位置取决于地址值。该选项仅在参数DA​​TA_PATTERN =“DGEN_WALKING”“DGEN_ALL”时有效。

•    0x6WALKING0s - 步进0位于DQ引脚上。起始位置0取决于地址值。该选项仅在参数DA​​TA_PATTERN =“DGEN_WALKING0”“DGEN_ALL”时有效。

•    0x7PRBS - 32LFSR生成随机数据并以起始地址播种。该选项仅在参数DA​​TA_PATTERN =“DGEN_PRBS”“DGEN_ALL”时有效。

•    0x9:慢速锤 - 这是慢速的锤子数据模式。

•    0xAPHY_CALIB模式 - 0xFF00AA55,55AA99,66。该模式仅在地址零处生成READ命令。这是只有在有效的Virtex ® -7系列。

vio_addr_mode_value [20]

输入

该信号的有效设置是:

•    0x1:固定地址模式。该地址来自fixed_addr_i输入总线。在FIXED地址模式下,data_mode被限制在fixed_data_input。没有生成PRBS数据模式。

•    0x2PRBS地址模式(默认)。该地址由内部32LFSR电路产生。种子可以通过cmd_seed输入总线进行更改。

•    0x3SEQUENTIAL地址模式。地址由内部地址计数器生成。增量由用户界面端口宽度决定。


 

信号

方向

描述

vio_instr_mode_value [30]

输入

该信号的有效设置是:

•    0x1:由fixed_instr_i 定义的命令类型(读/写)。

•    0x2:随机读取/写入命令。

•    0xE:只写入地址零。

•    0xF:只读地址零。

vio_bl_mode_value [30]

输入

该信号的有效设置是:

•    0x1fixed_bl_i输入中定义的固定突发长度。

•    0x2:用户突发长度由内部PRBS发生器生成。每个突发值定义了生成的背靠背命令的数量。

vio_fixed_instr_value

输入

有效的设置是:

•    0x0:写入指令

•    0x1:读指令

vio_fixed_bl_value

输入

有效的设置是1256

vio_pause_traffic

输入

即时暂停流量生成。

vio_data_mask_gen

输入

该模式仅在数据模式模式为数据地址时使用。如果启用此功能,则会在内存中填充内存模式后生成一个随机memc_wr_mask。如果相应的memc_write_mask被声明,写数据字节通道会被8'hFF卡住。

cmp_data [DWIDTH - 10]

产量

预期数据与内存中的回读数据进行比较。

cmp_data_valid

产量

比较数据有效信号。

cmp_error

产量

只要cmp_data与内存中的回读数据不相同,该比较错误标志就会置位。

错误

产量

当回读数据不等于期望值时,该信号有效。

ERROR_STATUS [N0]

产量

错误信号有效时,该信号锁存这些值:

•    [310]:读取起始地址

•    [37:32]:读取突发长度

•    [39:38]:保留

•    [40]mcb_cmd_full

•    [41]mcb_wr_full

•    [42]mcb_rd_empty

•    [64 +DWIDTH - 1):64]expected_cmp_data

•    [64 +2×DWIDTH - 1):64 + DWIDTH]read_data

simple_data0 [310]

输入

用户定义的简单数据0用于简单8重复数据模式。

simple_data1 [310]

输入

用户定义的简单数据1用于简单8重复数据模式。

simple_data2 [310]

输入

用户定义的简单数据2用于简单的8个重复数据模式。

simple_data3 [310]

输入

用户定义的简单数据3用于简单的8重复数据模式。

simple_data4 [310]

输入

用户定义的简单数据4用于简单的8个重复数据模式。

信号

方向

描述

simple_data5 [310]

输入

用户定义的简单数据5用于简单的8重复数据模式。

simple_data6 [310]

输入

用户定义的简单数据6用于简单的8重复数据模式。

simple_data7 [310]

输入

用户定义的简单数据7用于简单的8个重复数据模式。

fixed_data_i [310]

输入

用户定义的固定数据模式。

fixed_instr_i [20]

输入

用户定义的固定命令模式。

000 :写入命令

001 :读命令

fixed_bl_i [50]

输入

用户定义的固定突发长度。每个突发值定义生成的背对背命令的数量。

内存初始化和流量测试流程

上电后,初始化存储器控制块指示流量发生器通过存储器初始化过程用选定的数据模式初始化存储器。

内存初始化

1.      data_mode_i 输入被设置为选择的数据模式(例如,data_mode_i [30] = 0010 的地址作为数据图案)。

2.      start_addr_i 输入被设置为限定下边界的地址。

3.      end_addr_i 输入被设置为限定所述上边界的地址。

4.      bl_mode_i 设置为01 以从fixed_bl_i 输入获取突发长度。

5.      fixed_bl_i 输入设置为1632

6.      instr_mode_i 设置为0001 ,以获得从指令fixed_instr_i 输入。

7.      fixed_instr_i 输入被设置到存储器设备中的“WR”指令值。

8.      为顺序地址模式填充内存空间,addr_mode_i 设置为11 

9.      mode_load_i 被断言一个时钟周期。

当内存空间使用所选数据模式初始化时,初始化内存

控制块指示流量生成器开始通过流量测试流程过程运行流量(默认情况下,addr_mode_i instr_mode_i bl_mode_i 输入设置为选择PRBS模式)。

交通测试流程

1.      addr_mode_i 输入被设置为想要的模式(PRBS是默认值)。

2.      cmd_seed_i data_seed_i 输入值用于内部PRBS发生器设置。其他模式不需要此步骤。

3.      instr_mode_i 输入被设置为想要的模式(PRBS是默认值)。

4.      bl_mode_i 输入被设置为想要的模式(PRBS是默认值)。

5.      data_mode_i 输入应具有相同的值作为详述的存储器模式初始化阶段存储器初始化

6.      run_traffic_i 输入被触发,才能启动运行流量。

7.      如果在测试期间发生错误(例如,读取的数据与期望的数据不匹配),错误位将被设置,直到应用复位。

8.      接收到错误时,error_status总线将锁定1-13,页面66定义的值。

通过一些修改,可以更改示例设计,以便在run_traffic_i 取消断言时动态更改addr_mode_i instr_mode_i bl_mode_i 。但是,在更改设置后,需要重复执行存储器初始化步骤,以确保将适当的模式加载到内存空间中。

注意:

°       禁用芯片选择选项时,仿真测试平台始终将存储器模型芯片选择位设置为零以实现正确操作。

°       禁用数据遮罩选项时,模拟测试台始终将存储器模型数据遮罩位置零以便正确操作。

 

7系列FPGA存储器接口解决方案内核如图1-49 所示。

X-Ref目标 - 1-49

6 \ VWHPFORFNV \ VBFONBSDQGV \ VBFONBQV \VBFONBL5HIHUHQFHFORFNFONBUHIBSDQGFONBUHIBQFONBUHIBLDQGV \ VWHPUHVHWV \VBUVWBQSRUW FRQQHFWLRQVDUHQRWVKRZQLQEORFNGLDJUDP

                                                    1-49        7系列FPGA存储器接口解决方案

用户FPGA逻辑

1-49 所示的用户FPGA逻辑模块是任何需要连接到外部DDR2DDR3 SDRAMFPGA设计。用户FPGA逻辑通过用户界面连接到内存控制器。内核提供了一个示例用户FPGA逻辑。

AXI4从接口模块

AXI4从机接口将AXI4事务映射到UI,为存储器控制器提供工业标准总线协议接口。

用户界面块和用户界面

UI块将用户界面呈现给用户FPGA逻辑块。它通过提供一个平坦的地址空间和缓冲读写数据来为本地接口提供一个简单的替代方案。

内存控制器和本地接口

内存控制器(MC)的前端向UI块提供本地接口。本地接口允许用户设计提交内存读取和写入请求,并提供将数据从用户设计移动到外部存储设备的机制,反之亦然。内存控制器的后端连接到物理接口并处理该模块的所有接口要求。内存控制器还提供重新排序选项,对接收到的请求进行重新排序以优化数据吞吐量和延迟。

PHY和物理接口

PHY的前端连接到内存控制器。PHY的后端连接到外部存储设备。PHY处理所有的存储设备信号排序和时序。

IDELAYCTRL

任何使用IDELAY的银行都需要IDELAYCTRLIDELAY与数据组(DQ)相关联。任何使用这些信号的银行/时钟区域都需要IDELAYCTRL

MIG工具实例化一个IDELAYCTRL,然后使用IODELAY_GROUP属性(请参阅iodelay_ctrl.v 模块)。基于此属性,Vivado Design Suite可在设计中根据需要正确复制IDELAYCTRL

IDELAYCTRL参考频率应设为200 MHz。基于

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值