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

Xilinx 7系列FPGA中IDDR的介绍(一)

欢迎各位朋友关注“郝旭帅电子设计团队”公众号,本公众号会定时更新相关技术类资料、软件等等,感兴趣的朋友可以浏览一下本公众号的其他“模块”,希望各位朋友都能在本公众号获得一些自己想要的“东西”。

本篇主要讨论Xilinx 7系列FPGA中IDDR的介绍(一)。

大多数数字电路内部只能处理SDR(单倍的时钟速率)的信号,但是很多的接口要求都是DDR的信号,那么FPGA是如何处理的呢?

在这里插入图片描述

SDR:单倍数据速率(一个周期只传输一个bit/只在一个边沿采样)。
DDR:双倍数据速率(一个周期传输两个bit/上下边沿都采样)。

本篇文章只讨论,当输入接口为DDR时,FPGA内部如何处理。

上述中提到,FPGA内部也只能处理SDR的信号,无法处理DDR信号。为了解决这个问题,FPGA厂商在FPGA的接口处放置了一块能够将DDR信号转换为SDR信号的电路功能模块:IDDR。

IDDR:在7系列设备的ILOGIC block中有专属的registers来实现input double-data-rate(IDDR) registers,将输入的上下边沿 DDR 信号,转换成两位单边沿 SDR 信号。

在这里插入图片描述

在Xilinx 7系列的FPGA开发时,如果想要使用IDDR,可以直接例化IDDR的原语即可。

// IDDR: Input Double Data Rate Input Register with Set, Reset
// and Clock Enable.
// 7 Series
// Xilinx HDL Libraries Guide, version 14.7
IDDR #(
.DDR_CLK_EDGE("OPPOSITE_EDGE"), // "OPPOSITE_EDGE", "SAME_EDGE"
// or "SAME_EDGE_PIPELINED"
.INIT_Q1(1'b0), // Initial value of Q1: 1'b0 or 1'b1
.INIT_Q2(1'b0), // Initial value of Q2: 1'b0 or 1'b1
.SRTYPE("SYNC") // Set/Reset type: "SYNC" or "ASYNC"
) IDDR_inst (
.Q1(Q1), // 1-bit output for positive edge of clock
.Q2(Q2), // 1-bit output for negative edge of clock
.C(C), // 1-bit clock input
.CE(CE), // 1-bit clock enable input
.D(D), // 1-bit DDR data input
.R(R), // 1-bit reset
.S(S) // 1-bit set
);
// End of IDDR_inst instantiation

IDDR共有三种模式:

OPPOSITE_EDGE模式对应的波形如下:

图片

上升沿采样后,立刻输出到Q1;下降沿采样后,立刻输出到Q2;

SAME_EDGE模式对应的波形如下:

图片

上升沿采样后,立刻输出到Q1;下降沿采样后,等到下一个上升沿,输出到Q2.

SAME_EDGE_PIPELINED模式对应的波形如下:

图片

上升沿和下降沿采样的数据都等到下一个上升沿输出。

各位小伙伴可以按照自己的需求去配置模式。

本篇内容中有部分资源来源于网络,如有侵权,请联系作者。

如果您觉得本公众号还不错的话,可以推给身边的朋友们,感谢并祝好!


http://www.mrgr.cn/news/55451.html

相关文章:

  • Rust小练习,编写井字棋
  • Spring Boot配置文件不识别变量的解决方案
  • 常用DateUtils工具类
  • 黑白帽子问题
  • Springboot 事务传播性
  • 1. DLT645协议解析
  • @ConditionalOnExpression条件加载Bean
  • WSL2-轻量级AI训练场景最佳生产环境
  • 前端拦截302重定向
  • Python 代码主要用于处理和分析 OpenFOAM(一种用于计算流体力学的软件)生成的数据,并提供了一些实用的工具函数。
  • HarmonyOS Next应用开发——多种方式实现图片解码
  • 【论文精读】把一切转成mesh!MeshAnything和MeshAnythingV2论文解析
  • 挖掘 M2 Pro 32G UMA 内存潜力:在 Mac 上本地运行清华大模型 ChatGLM2-6B
  • 云服务器遭受攻击后的应急响应与解决策略
  • 【前端Vue学习笔记】组件注册方式 组件传递数据 组件事件 透传 插槽slot 组件生命周期 动态组件 异步组件 依赖注入 Vue应用
  • leetcode动态规划(八)-不同的二叉搜索树
  • 生信学院|10月22日《SOLIDWORKS 自定义属性卡片应用》
  • React第十一章(useReducer)
  • 如何解决企业异地办公网络难题?
  • 持续输出面试题系列之SpringCloud篇
  • 数造科技荣获2024DAMA中国“数据治理创新奖”
  • 4.1粒子系统
  • C++游戏开发入门:用 SDL 实现你的第一个 2D 游戏
  • 汕头市自闭症全托管学校,为孩子打开未来大门
  • consumer 角度讲一下i2c外设
  • 实现了通过摄像头检测手部手势来控制 B 站视频播放的功能。它使用了 OpenCV 进行视频捕获和图像处理,MediaPipe 进行手部检测和关键点识别