基于FPGA的DDR3/4多通道读写防冲突设计

Xilinx DDR4/DDR3多通道读写防冲突设计,可实现最高8个通道同时读写DDR且不冲突问题,通道数可根据使用来决定。每个通道读写接口简单,操作独立,可同时实现最高8个通道的读写请求。此工程经过2个月的实际上板疲劳测试,功能稳定,时序健壮,性能优异,有需要用到DDR4/DDR3的多通道/单通道的地方,此工程代码可直接移植。

http://【闲鱼】https://m.tb.cn/h.5ebYBO9?tk=J34fdC5k16r CZ3457 「我在闲鱼发布了【Xilinx DDR4/DDR3 多通道读写防冲突设计,可实】」 点击链接直接打开

如有疑问,可加qq:1023350982 

1、设计架构说明

  工程一共分为三部分,DDR4_TOP为项目顶层,包含ddr4_test、DDR4_logic_v1、ddr4_mig_core三块,其中ddr4_test为测试逻辑,产生DDR测试读写请求;DDR4_logic_v1为整个工程的核心,包含读写命令解析存储、命令解析、读写时序生成、多通道仲裁逻辑、DDR4 IP核控制,读数据返回、跨时钟域处理等。代码详细说明在工程中已写注释。

2、原理图

3、ddr4_test模块说明

这个模块的功能是产生测试逻辑,其中包含错误检测功能,下面这些信号统计各个通道的写请求次数与数据有效返回次数,并统计8个通道的总次数。便于错误定位于查找。

下面这些信号的值是可以改变的,从而控制测试模式:vio_ddr_1chl_cycle_NUM是每次读写DDR的地址次数,默认150次;vio_ddrcycle_test表示是否进行循环测试,循环测试为不间断连续进行读写测试;vio_ddr_test_start表示是否开始测试,1表示启动测试。

下面这些信号为错误检测信号,当程序出现错误时,对应通道的err_flag信号会拉高,表明当前通道的DDR出现的读写错误。

4、DDR4_logic_v1模块说明

DDR4 8通道读写逻辑控制,各个通道将请求存储在独立的异步FIFO,状态机轮询,存储rd_tag和通道号,待读数据返回时,读取rd_tag和通道号返回到各自通道。

设计思路是首先会将读写请求进行解析分类,写请求存入wr_cmd_fifo中,读请求存入rd_cmd_fifo中,见下图。

接下来需要进行读写命令解析,通过仲裁判断当前要处理哪个通道,产生当前通道号、命令、读写数据地址、写数据。

接下来生成DDR IP核读写时序。

最后,需要进行读返回数据存储,进行跨时钟域处理,完成读写请求域与DDR 时钟域之间的数据传输。

同时记录读请求通道号和存储读返回有效数据

最后将返回的读数据分发到对应通道的读请求中,完成DDR的读访问。写操作的情况下不需要数据返回,因此直接写入DDR即可。

5、ddr4_mig_core模块说明

此部分主要是DDR IP核配置

配置DDR速率与时钟

配置DDR时序参数

其他信号默认即可。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值