测试点1:aximaster对controller的写地址FIFO写满、写数据FIFO写满;

当awfifo写满后awready不会拉高,当wfifo写满后wready也不会拉高;

测试点2:axi 对arfifo写满,写满后无法写入;
这里可以ARFIFO的虚满信号对outstanding的个数进行配置

测试点3:在axi的写地址队列,或者写数据队列中插入axi的读地址队列;在axi的读地址队列中插入写地址队列。

测试点4:这里是采用轮询机制对AWFIFO和ARFIFO进行取数据到bank队列中。AWFIFO、WFIFO和ARFIFO中取数据写入到相应的bank队列中,同时WFIFO写入到相应的space空间中,space空间写满则不能够在将AWFIFO中的指令写到相应的bank队列中,但是可以将ARFIFO中的命令写到bank队列中去;

测试点5:bank里面的队列排序,对于才进入队列的指令需要对其排序,使得DDR的效率更大,对于同bank新进入的队列指令,采用比较是否在相同行,如果在时相同行指令则可以直接将指令放在其相同行的后一行和不同行的前一行之间;如果新进的指令与队列的指令都不相同,则直接放在最后一行;同时为了防止饿死,即新进的指令永远能够插队,即在最后指令之前,那么最后的那条指令得不到执行。所以设置4个指令单位进行防饿死,在连续四个指令都和第一个指令有相同行时,第五个指令将插在队列最后;
讲一讲防饿死代码:从队列的最后开始进行判断,不能从最开始进行判断,这样可以防止间隔插入的情况发生(即连续四次都在第一和第二和排序队列中插入,第五次插入到末尾(第一和最后相同的情况),如果从最开始判断,假如是和第一相同行又得在第一和第二之间插入,显然这是不合理的,没有起到饿死机制;从最后遍历走,假如第一和最后相同那么直接在最后插入就可以,显然能够起到防止饿死的作用)。

测试点6:测试队列的排序功能,只进行了简单的测试。测试CASE如下:
排序思路如下同测试点5讲解

modelsim:仿真如图所示;

***测试点7:***当awfifo或者arfifo预输出的地址在对应的bank为满时需要停止请求信号以及停止进行优先级的判定;
先看看测试代码:箭头对应的3’b000代表bank0。先对bank0写4个指令,然后在对bank0写一个指令看能否写入、能否有优先级判定。


这里axi输入的地址我给的格式是:高四位保留,你也可以用作他用。这个得根据你的sdram的配置文件来看。BA代表BANK;4’b1110代表ARID或者AWID,写就是AWID,读就是ARID;

看波形哈:将就看,太难得解释了



测试点8:从awfifo读取数据时,需要我们也从相应的wfifo中读取未来要写到DDR的数据并将其写入到SPACE这个同步FIFO里面,同时需要对从WFIFO中取出的数据赋予相应的BUFFERID标志,以便于从BANK的写数据指令能找到对应的SPACE空间。

space[0]:
axi对wfifo写入的burst的第一个数据和最后一个数据:

写入的最后一个数据:

space空间0写入的数据:
写入的第一个数据:

写入的最后一个数据:

可以看出能够将wfifo的一个BURST数据完整的取出来放在某一个SPACE空间里面;
同时能够正确将buffer_id给到bank队列里面;


后面同理。

测试点8:当space0-space7 空间写满之后,也不能从awfifo中拿出数据到bank队列中进行存储,但是如果只要arfifo预存取的数据对应的bank队列没有满(此时不管space0-sapce7空间是否满没有)就可以存入bank队列里面。


DDR3控制器 1;相关推荐

  1. 【DDR3 控制器设计】系列博客汇总篇(附直达链接)

    写在前面 本篇为 DDR3 控制器设计系列博客的汇总篇,此系列包含 DDR3 的相关实验:认识 MIG.初始化.读写操作.FIFO 接口等,并附上直达链接. 目前只更新了部分文章,持续学习更新中... ...

  2. 紫光同创 FPGA 开发跳坑指南(四)—— DDR3 控制器 IP 的使用

    DDR3 是一种大容量的存储器件,采用了预取技术和双边沿采样技术,以实现高速数据存储与读取,在视频处理中可以用来缓存 1 帧或多帧图像. 目录 一.紫光 DDR3 IP 的安装 二.紫光 DDR3 I ...

  3. vfifo控制mig_基于MIG IP核的DDR3控制器(一)

    最近学习了DDR3控制器的使用,也用着DDR完成了一些简单工作,想着以后一段可能只用封装过后的IP核,可能会忘记DDR3控制器的一些内容,想着把这个DDR控制器的编写过程记录下来,便于我自己以后查看吧 ...

  4. 【DDR3 控制器设计】(1)MIG IP 核的详解与配置

    写在前面 本系列为 DDR3 控制器设计总结,此系列包含 DDR3 控制器相关设计:认识 MIG.初始化.读写操作.FIFO 接口等.通过此系列的学习可以加深对 DDR3 读写时序的理解以及 FIFO ...

  5. 基于Vivado MIG IP核的DDR3控制器(DDR3_CONTROL)

    一.前言 由于DDR3的控制时序相当复杂,为了方便用户开发DDR3的读写应用程序,Xilinx官方就提供了一个MIG(Memory Interface Generator) IP核,它可以为用户生成一 ...

  6. 【DDR3 控制器设计】(5)DDR3 的仲裁读写操作设计

    写在前面 本系列为 DDR3 控制器设计总结,此系列包含 DDR3 控制器相关设计:认识 MIG.初始化.读写操作.FIFO 接口等.通过此系列的学习可以加深对 DDR3 读写时序的理解以及 FIFO ...

  7. 【DDR3 控制器设计】(4)DDR3 的读操作设计

    写在前面 本系列为 DDR3 控制器设计总结,此系列包含 DDR3 控制器相关设计:认识 MIG.初始化.读写操作.FIFO 接口等.通过此系列的学习可以加深对 DDR3 读写时序的理解以及 FIFO ...

  8. 【DDR3 控制器设计】(7)DDR3 的用户端口读写模块设计

    写在前面 本系列为 DDR3 控制器设计总结,此系列包含 DDR3 控制器相关设计:认识 MIG.初始化.读写操作.FIFO 接口等.通过此系列的学习可以加深对 DDR3 读写时序的理解以及 FIFO ...

  9. 【DDR3 控制器设计】(3)DDR3 的写操作设计

    写在前面 本系列为 DDR3 控制器设计总结,此系列包含 DDR3 控制器相关设计:认识 MIG.初始化.读写操作.FIFO 接口等.通过此系列的学习可以加深对 DDR3 读写时序的理解以及 FIFO ...

  10. 【DDR3 控制器设计】(2)DDR3 初始化测试

    写在前面 本系列为 DDR3 控制器设计总结,此系列包含 DDR3 控制器相关设计:认识 MIG.初始化.读写操作.FIFO 接口等.通过此系列的学习可以加深对 DDR3 读写时序的理解以及 FIFO ...

最新文章

  1. 如何使用Coded UI Test对Webpage进行自动化测试
  2. 【随笔】如何快速转载CSDN中的博客
  3. Kinect学习(四):提取深度数据
  4. 话里话外:企业管理软件的方案设计要规避哪些风险
  5. Velocity教程 (zhuan)
  6. Java日志记录最佳实践
  7. pytorch Resnet
  8. 第14题 计算机网络故障排除的第二步是,计算机网络故障诊断与排除第1章网络故障和网络诊断测试工具(习题)(ok)...
  9. 学会python爬虫能发财么_python如何赚钱? python爬虫如何进阶? python就业? 如何快速入门python?...
  10. Oracle密码过期解决办法
  11. c语言 控制电脑程序,c语言程序设计
  12. centos7.2下搭建postfix++dovecot+courier-authlib+extmail邮件收发系统
  13. 12306验证码识别 --- 2017-12
  14. 小型无线摄像头怎么用 小型无线WiFi摄像头任何连手机
  15. A Game of Thrones(40)
  16. 服务器被挖矿入侵,进程 command为ld-linux-x86-64占用cpu很高,解决经历
  17. WoShop跨境电商国际支付Paypal支付商城全开源无加密商城源码
  18. STM32单片机基于HAL库开发HC-SR04 超声波测距模块(终极版)
  19. 蓝牙mesh-拓扑结构
  20. fiddler拦截手机端请求

热门文章

  1. 十六进制颜色转换工具
  2. 大学物理·第8章【电磁感应、电磁场】
  3. Wondershare Filmora for Mac(视频编辑器)
  4. python工具 - 批量文件重命名
  5. Stable Diffusion搭建全过程记录,生成自己的专属艺术照
  6. Unity3D 鼠标双击事件
  7. 四川大学计算机网络期末复习,四川大学计算机基础期末考试试卷07-08
  8. 主流防护元器件ESD管静电防护优势及选型
  9. 网络协议抓包与爬虫入门
  10. 优思学院|西门子精益六西格玛的历程