当前位置: 首页 > article >正文

使用DDR4控制器实现多通道数据读写(四)

在创建完DDR4的仿真模型后,我们为了实现异步时钟的读写,板卡中在PL端提供了一组差分时钟,可以用它通过vivado中的Clock Wizard IP核生成多个时钟,在这里生成两个输出时钟,分别作为用户的读写时钟,这样就可以用异步时钟来读写ddr4数据。今天我们来介绍vivado中的Clock Wizard IP核。
Clock Wizard IP核是 Xilinx Vivado Design Suite 中的一个时钟管理 IP核,主要用于FPGA设计中的时钟生成和管理。Clock Wizard 提供了丰富的时钟配置选项。
在基本配置中可以使用时钟输入(clk_in),时钟输出(clk_out),复位(reset),时钟锁(locked)等信号来完成Clock Wizard IP核的基本配置,其中locked用来指示输出的时钟是否稳定,当locked有效后方可使用输出时钟。
Clock Wizard IP核时钟输入的基本配置。
图1
由于输入时钟为管脚输入的差分时钟,我们选择Differential clock capable pin,时钟频率为100MHz差分时钟。
在这里插入图片描述
根据需求可以自己勾选两组输出时钟,修改输出的时钟频率,在这里使用50MHz和100MHz作为两组输出时钟,将来可以分别作为读写DDR4的时钟。勾选上reset和locked,reset可以连接到复位管脚,locked作为输出时钟是否稳定的标志。在这里插入图片描述
点击OK,IP建立完成后,将IP例化到模块顶层中。
在这里插入图片描述
接下来我们通过仿真观察输出的时钟
在这里插入图片描述
可以看到当复位信号拉低后,过段时间会输出两组时钟,一组为100MHz,一组为50MHz,随后locked会拉高,表示输出时钟稳定,可以使用这两组时钟作为读写DDR4的时钟。
后边会使用两个fifo来缓存从ddr4读出的数据和将要写入ddr4的数据:
(1)、写DDR4的缓存fifo(wrfifo)使用100MHz时钟作为wrfifo的写时钟,使用DDR4输出的时钟作为wrfifo的读时钟。
(2)、读DDR4的缓存fifo(rdfifo)使用DDR4输出的时钟作为rdfifo的写时钟,使用50MHz时钟作为rdfifo的读时钟。
这样我们用这两个fifo来连接DDR4:
如果DDR4不满并且wrfifo不空,那么就将wrfifo中的数据写入DDR4中,当DDR4满后,停止向DDR4写数据,此时如果wrfifo没满,还可以将wrfifo写满。
当DDR4不空并且rdfifo不满时,将DDR4中的数据读出放到rdfifo中,当rdfifo满后,停止从DDR4读数据。
由此可见最大容量为DDR4+wrfifo+rdfifo。

学习FPGA、技术交流可以私信或点击主页联系
威三学社出品


http://www.kler.cn/a/593281.html

相关文章:

  • sass介绍
  • 跨境大文件传输如何突破延迟与丢包双重困局
  • Git——分布式版本控制工具使用教程
  • 分享下web3j 常见用法
  • Windows主机、虚拟机Ubuntu、开发板,三者之间文件互传
  • RabbitMQ常见面试题及解析
  • 开源!我整理了50个ChatGPT插件开发案例
  • 【Spring Boot 中 `@Value` 注解的使用】
  • SpringBoot整合LangChain4j操作AI大模型实战详解
  • Search after解决ES深度分页问题
  • Leetcode 3 Longest Substring Without Repeating Characters
  • 拓扑排序——117. 软件构建
  • AUTOSAR_DoIP_Detailed
  • [蓝桥杯 2023 省 B] 飞机降落(不会dfs的看过来)
  • Numpy科学计算库笔记
  • 小红书不绑定手机号会显示ip吗
  • 新能源汽车技术赋能自动化物流仓库的技术普及方案
  • 教材征订管理系统基于Spring Boot-SSM
  • 【pyCharm Git】根据dev分支新建dev_y分支,本地也新建dev_y分支,并将代码提交到Gitlab上的新分支dev_y上。
  • Postman——Body的类型