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

【CXD720】-为何要将将寄存器放入IOB中?

FPGA设计过程中,对输入输出信号一般遵循下列原则:

1)输入信号先经时钟寄存器后送入内部处理(也称打一拍)

2)输出信号,经时钟触发(寄存器)后再送出

3)输入信号的第一级寄存器一般采用IOB内的寄存器

4)输出信号的最后一级寄存器一般使用IOB内的寄存器

使用IOB中的寄存器的方法有多种,比如在约束文件中设置约束条件,在布线工具中设置参数,以及在代码中添加Verilog 属性注释语句。

对于CXD720_demo工程文件而言,文件采用了12位AD及2路14位的DA端口,不加任何约束时,IOB中的触器没有使用,工程实现后的布局如下图。

图中最右侧橙色不IOB管脚端口,左侧为IOB内的寄存器,由未寄存器未高亮显示,因此没有使用。

添加寄存器注释语句后的代码如下:

(*IOB = "FORCE"*) output reg [13:0] da2_out

//将采集到的信号送DA1输出
reg [11:0] ad_data=0;
(*IOB = "FORCE"*)reg [11:0] ad_data=0;
always @(posedge clk50m)
begin
ad_data <= ad_din;
da1_out <= {ad_data,2'd0}+8192;

重新布局布线后,查看布局图如下。

可以从图中看出,DA最末一级寄存器使用的是IOB中的寄存器(图中最右侧为IOB端口,左侧橙色方块为IOB中的触寄存器)。

关于IOB内寄存器的作用如下所示:

IOB 内寄存器(IDDR/ODDR)放置输入首拍、输出末拍触发器的核心意义

一、基础概念

FPGA 每个 IOB(输入输出块)内部自带硬件原生寄存器

  • 输入侧:IDDR(双沿输入寄存器)/ 单沿输入寄存器
  • 输出侧:ODDR(双沿输出寄存器)/ 单沿输出寄存器默认逻辑寄存器放在 CLB 逻辑块内;把输入第一级、输出最后一级寄存器放到 IOB,称为寄存器打包到 IOB(Pack I/O Registers into IOB)

二、输入信号首拍触发器放入 IOB(IDDR/IO 输入寄存器)的作用

1. 极致缩短输入路径时序,大幅提升 Setup 裕量

普通方案:外部管脚 → IBUF → 片内长线走线 → CLB 寄存器

长线互连延时大,高速输入极易出现建立时间负裕量。

IOB 寄存方案:外部管脚 → IBUF →IOB 内部寄存器(无片内长线)

  • 数据在管脚缓冲后立刻锁存,消除 IBUF 到 CLB 之间巨大的布线延迟
  • set_input_delay带来的外部延时压力全部由 IO 寄存器承担,内部逻辑路径时序压力清零;
  • 对应你工程 50MHz 时钟、带输入延时约束的场景,能直接改善输入路径 Setup Slack。

2. 抑制输入亚稳态(跨异步外部信号)

IOB 寄存器紧贴输入缓冲,从管脚到寄存器的走线极短,寄生 RC 延迟极小;外部异步信号进入 FPGA 后,最快完成同步锁存,减少亚稳态传播到内部逻辑的概率,是高速 ADC、外部异步采样的标准方案。

3. 降低时钟偏移(Skew)

IOB 寄存器时钟直接由 BUFG 全局时钟直达 IOB,不需要穿过 CLB 阵列;同一组输入总线的所有 IO 寄存器时钟到达延迟高度一致,总线内时钟偏移极小,并行总线同步性更好。

4. 适配动态相位 PS、ISERDES 串并转换

MMCM 动态移相、高速串行采样 ISERDES 必须使用 IOB 内部寄存器;寄存器在 IOB 内才能让 STA(静态时序分析)精准匹配 MMCM 相位偏移,否则时序计算偏差巨大。


三、输出信号末拍触发器放入 IOB(ODDR/IO 输出寄存器)的作用

1. 消除输出路径长线延迟,优化 Hold 建立裕量

普通方案:CLB 寄存器 → 片内长线 → OBUF → 外部管脚

寄存器到 OBUF 的走线延时大,输出时序(set_output_delay)容易报 Setup 违例。

IOB 寄存方案:CLB 逻辑 → 短线 →IOB 输出寄存器→ OBUF → 管脚

  • 输出寄存器紧贴输出缓冲 OBUF,寄存器到引脚的传输延迟固定且极小
  • STA 计算set_output_delay时序时,片内输出路径延迟几乎可以忽略,大幅提升输出时序裕量;
  • 解决高速并行输出、DDR、DAC 高速输出的时序临界问题。

2. 减小输出时钟到数据偏移(Tco 波动)

IOB 寄存器与 OBUF 物理相邻,器件传输延迟 Tco 一致性极高;多 bit 并行输出总线每一路数据的 Tco 差异极小,外部芯片更容易满足采样建立保持要求。

3. 抑制组合逻辑毛刺(消除输出尖峰干扰)

如果输出逻辑存在多级组合逻辑,CLB 寄存器输出会产生大量毛刺;寄存器放在 IOB,毛刺仅存在于 FPGA 内部极短走线,不会传导到 PCB 引脚,降低 EMI 电磁干扰,避免外部芯片误采样。

4. 支持双沿数据输出(ODDR 双倍速率)

DDR 类接口必须使用 IOB 内 ODDR 寄存器,CLB 普通寄存器无法实现双边沿同步输出。

http://www.jsqmd.com/news/1076625/

相关文章:

  • 基于eQTL数据库研究基因和疾病因果关系流程
  • 2026生成式引擎优化(GEO)行业科普市场乱象、企业落地逻辑与合规长效运营指南
  • 【计算机毕业设计案例】基于 Python 的畅联智购购物车交易系统设计与实现 基于 Python 的畅联智购电商数据管理系统设计与实现(程序+文档+讲解+定制)
  • 从零到一:基于YOLOv8的AI自瞄助手如何彻底改变你的FPS游戏体验
  • Roblox帧率解锁器:打破60FPS限制,释放游戏流畅体验
  • 如何利用智能图像去重技术高效管理海量图片资源
  • FriendlyWrt VS Debian / Ubuntu 无桌面服务器版(一)
  • TurtleBot3 LDS激光雷达硬件接入与稳定通信实战指南
  • SQL注入攻防实战:从原理剖析到自动化工具利用
  • 【毕业设计】基于 SpringBoot 的图书商品信息运维管理系统设计与实现 校园线上图书购买商城系统设计与实现(源码+文档+远程调试,全bao定制等)
  • 大脑的「偏好」:节能、新奇怪异、即时反馈、认可、规律、预测成功、确定
  • MuleSoft AI编排:企业级LLM集成的治理与可审计实践
  • Visual Paradigm实战指南:序列图绘制与消息流优化
  • 万兴科技携万兴剧厂亮相上海电视节,AI剧本创作全链路能力成关注焦点
  • 5步精通DLSS版本管理:DLSS Swapper让游戏性能优化变得如此简单
  • 什么是PSRAM?PSRAM芯片选型指南
  • 建筑工地收料管理痛点怎么破?建享云智能收料系统技术方案深度解析
  • 3分钟掌握FlicFlac:Windows免费音频转换的完整指南
  • 数据库建表语句
  • AI时代下还剩下什么?我用 Three.js + Three-Geospatial 实现一个真实环境的3D地球世界
  • PinWin窗口置顶工具:多任务处理的终极方案
  • AI对话系统技术解析:原理、演进与本地化实践路径
  • Toda晶格非线性波动分析:独立和近似与矩阵泛函估计实践
  • 2026年AI大模型接口中转网站全网亲测:五大主流服务商全维度硬核实测数据对比选型指南
  • 线性表——柜子的存查问题
  • Agent基础设施层的价格归零:从Session事件流到Runtime标准化
  • 2026年,银川哪家推拉门信誉好?
  • 告别物理束缚:Parsec VDD虚拟显示驱动实战指南
  • 实战指南:53种配置与23种方法深度解析Viewer.js图像查看器
  • 客户为什么总喜欢问:这个模具能做多少模次?