FPGA结构分析——IDDR,网口储备点1

2023-11-11

先抛出几个问题:

1.什么是 IDDR? IDDR的作用是什么?使用场景?
2. IDDR结构是什么样?都有哪些端口?端口属性都是什么?
3. IDDR原语结构,参数属性说明?
4. IDDR时序是什么样 ?

1.什么是 IDDR, IDDR的作用是什么,使用场景

IDDR全称 input double date rate,可以将双沿(时钟的上升沿、下降沿)数据信号转换为单沿数据信号,通常使用在串转并数据设计中,如网口的RGMII信号转换为GMII信号

2. IDDR结构是什么样,都有哪些端口,端口属性都是什么

在这里插入图片描述
端口说明:
C:同步时钟输入端口
CE:时钟使能端口,高电平有效
D:双沿数据输入端口
S/R:置位复位管脚
Q1:C端口上升沿数据
Q2:C端口下降沿数据

3.IDDR原语结构,参数属性说明

原语结构:


   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
   );

参数属性说明:
DDR_CLK_EDGE:设置IDDR相对于时钟端口的边沿工作模式,共三种模式,在第4小节会具体说明;
INIT_Q1/ INIT_Q2设置Q1、Q2端口初始值;
SRTYPE:设置置/复位异步或者同步,默认异步

4.IDDR时序是什么样

IDDR有三种采集模式,在原语中由DDR_CLK_EDGE参数进行设置,分别为“OPPOSITE_EDGE”、“SAME_EDGE”和“SAME_EDGE_PIPELINED”模式。

OPPOSITE_EDGE模式的时序图如下图所示,Q1端在时钟的上升沿更新,Q2端在时钟的下降沿更新,更准确地来说在时钟的上升沿Q1端数据稳定,在在时钟的下降沿Q2端数据稳定。
在这里插入图片描述

SAME_EDGE模式的时序图如下图所示,Q1端、Q2端都在时钟的上升沿更新,但D0和D1出现相差一个时钟。
在这里插入图片描述

SAME_EDGE_PIPELINED模式的时序图如下图所示,Q1端、Q2端都在时钟的上升沿更新,但D0和D1出现在同一个时钟。

在这里插入图片描述

一般情况使用第三种SAME_EDGE_PIPELINED模式,不需要考虑多余的时钟延迟就能直接使用串转并后的数据。

5.几点思考:

1.在FPGA中,经常出现的问题就是时钟和数据的对齐,这个问题的原因有很多,比如器件差异、PCB走线等等,那么在使用IDDR时如何校正这一块就是一个难题,通常可以采用修改时钟相位偏移来解决,比如使用FPGA 内侧的时钟资源进行相位偏移,或者IOLOGIC侧IODELAY原语进行延迟等,本质上都是为了使得时钟与数据的对齐;
在这里插入图片描述
2.有IDDR就会有ODDR,比如网口中通过ODDR将GMII转化为RGMII,在下一篇继续阐述;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FPGA结构分析——IDDR,网口储备点1 的相关文章

  • cuihua 2022.4.11-17BUU刷题记录

    25 MRCTF2020 摇滚DJ 1 题目概述 2 解题过程 听了一下 真难听 audacity打开 波形是平的 和前面那道题有点像 kali的qsstv工具 安装qsstv apt install qsstv 安装成功后 在终端下输入q
  • pytorch: 网络权重初始化

    构建完网络后 往往需要初始化权重 其实也可以不需手动初始化 在声明网络时 pytorch有默认的初始化方式 如 import torch x torch Tensor 2 2 print x 输出为 tensor 2 0363e 09 4
  • SQL之sqli-labs注入Less-2~4

    一 Less 2 与Less 1相同 我们同样使用 id 1 看是否可以注入 发现不可以 并且提示错误 我们可以知道 这里不需要引号 这就是与Less 1不同的地方 除此之外 以下步骤与Less 1相同 2 接下来我们使用 order by
  • PHP数据接收和使用

    接受来自js发送的数据 有几种接收方式 1 GET u GET user 2 POST P POS 3 REQUEST 两种传输方式的数据都可以接收 q REQUEST 创建虚拟服务器完成后操作 数据表格的方法 链接数据库 link new

随机推荐

  • springboot启动报错Error creating bean with name requestMappingHandlerMapping defined in class path resou

    springboot启动报错 Error creating bean with name requestMappingHandlerMapping defined in class path resource org springframe
  • python 批量读取txt文件

    1 python 批量读取txt文件 不读 注释的部分 并将数据保存为dataframe格式 代码 import re import glob import pandas as pd path data txt 指定txt文件所在文件夹路径
  • java如何正常关闭一个线程

    如何关闭一个线程 调用stop方法 该方法存在一个问题 JDK官方不推荐使用 该方法在关闭线程时可能不会释放掉monitor的锁 所以建议不要使用该方法结束线程 正常关闭 2 1 线程正常结束生命周期 线程运行结束 完成自己的使命之后 就会
  • 终于拿下腾讯25K的offer,面试官问我的面试题+回答,他都听懵了...

    前言 自动化测试面试题总结 1 你会封装自动化测试框架吗 这个问得最多 很多公司直接写在招聘要求中 自动化框架主要的核心框架就是分层 PO模式 分别为 基础封装层BasePage PO页面对象层 TestCase测试用例层 然后再加上日志处
  • 人们对刷脸支付便捷安全性的需求提升

    众所周知支付宝的领先依附于阿里系在线上电商领域的绝对优势地位 而微信支付却能凭借微信10亿的月活用户在线下支付披荆斩棘 在过去几年 移动支付的飞速发展带动了支付技术的变革 而人脸识别技术的成熟和人们对支付便捷安全性需求的提升 使得刷脸支付逐
  • 顺序表的冒泡排序算法及二分法查找代码实现

    本文主要实现了比较经典的冒泡排序算法 对已经有序或者基本有序的顺序表复杂度大大降低 和二分法查找 各位看官看代码吧 冒泡排序算法及二分法查找 include stdio h typedef struct int key SSTable El
  • pycharm注释快捷键

    选中需要注释的区域 ctrl 单行和多行皆可 当行则不需要选中 放在需要注释的那一行 点击 ctrl 即可 取消注释也是Ctrl
  • Python tips: 什么是*args和**kwargs?

    Python tips 什么是 args和 kwargs 先来看个例子 def foo args kwargs print args args print kwargs kwargs print if name main foo 1 2 3
  • 信息系统安全(对称加密)-软件设计(三十一)

    计算机网络 计算子网掩码 下 软件设计 三十 https blog csdn net ke1ying article details 129655795 安全属性 保密性 完整性 可用性 不可抵赖性 保密性 最小授权原则 防暴露 信息加密
  • 终于有人把“TCC分布式事务”实现原理讲明白了!

    之前网上看到很多写分布式事务的文章 不过大多都是将分布式事务各种技术方案简单介绍一下 很多朋友看了还是不知道分布式事务到底怎么回事 在项目里到底如何使用 所以这篇文章 就用大白话 手工绘图 并结合一个电商系统的案例实践 来给大家讲清楚到底什
  • 队列系列篇——数组模拟

    基本介绍 数组模拟队列 代码实现 package com wustyq queue import java util Scanner ClassName ArrayQueueDemo br Description br date 2021
  • vue+bootstrap 实现一个简单分页器

    效果如下图 当数据有很多条时 如果我们一次性请求的话 加载会比较慢 这个时候就会用到分页功能了 通过向后台发送请求数据的页码和条数 就可以实现分页功能 由于项目比较简单 要求不是很高 实现简单分页即可 按钮用的是bootstrap 发送aj
  • SQL注入-盲注 Burp盲注方法

    文章目录 判断库名位数 Burp 抓取数据包 设置payload位置 设置payload 1 设置payload 2 点击开始攻击 判断库名下表名的位数 Burp 抓取数据包 点击开始攻击 判断库名下第二张表名 判断表名下的字段名 判断表中
  • -------如何消除打印机的字迹(字迹打印机消除即)--------

    消除打印机的字迹共有以下四种方法 1 可使用刀片 轻轻刮掉即可消除打印机字迹 2 可使用消字灵 即可消除打印机字迹 3 可使用橡皮擦 即可擦掉消除打印机字迹 4 可使用专门的药水 即可消除打印机字迹 如何消除打印机的字迹 消除打印机的字迹共
  • luci自定义之welcome to luci

    终于有空了 又可以偷偷写博了 这一次是写登录页面还有状态页面 首先说一下登录页面 登录页面是最容易改的 因为我们不需要重构页面 只要修改样式就可以了 下面就开始吧 首先要找到登录页面所在的位置 登录页面是放在了 usr lib lua lu
  • 基于SSM的青少年编程学习系统设计与实现

    摘 要 在智能技术飞速发展的今天 各国都努力争取在人工智能时代的发展中占据优势 青 少年编程教育就显得格外重要 不过 相比一些青少年编程教育发展更先进的国家 我国青少 年编程教育仍处在初级阶段 很多青少年对编程学习有很大兴趣 但是学校没有专
  • 使用transform的scale缩放的写法误区

    聊一聊本人发现的使用transform的scale缩放属性的写法误区 在使用对块级元素 非块级元素无transform属性 transform scale 88 时 由于自身宽高都会缩小 原本使用left 0 看上去会显得像 left 20
  • 前端web开发的MVC模式

    MVC概论起初来之桌面应用开发 其实java的structs框架最能体现MVC框架 model模型是理解成服务器端的模块程序 view为发送给客服端的内容 Controller为servlet程序控制跳转和工作流 随着前端Ajax兴起 前端
  • MySQL的知识点(2)

    MySQL的知识点 2 记录MySQL数据库的常用语句集合 1 数据库的操作语句 net start mysql 启动MySQL数据库 mysql uroot proot 在命令行模式下进去MySQL命令窗体 列出数据库 show data
  • FPGA结构分析——IDDR,网口储备点1

    先抛出几个问题 1 什么是 IDDR IDDR的作用是什么 使用场景 2 IDDR结构是什么样 都有哪些端口 端口属性都是什么 3 IDDR原语结构 参数属性说明 4 IDDR时序是什么样 1 什么是 IDDR IDDR的作用是什么 使用场