跳转到内容
新建笔记

FPGA 片上资源与 IP

资源主要用途设计注意
LUT组合逻辑、小型查找表、分布式 RAM/SRL逻辑深度和扇出影响时序
FF状态、流水和接口寄存不是所有寄存器都需要复位
BRAMFIFO、帧缓存、表格、双口存储宽深组合、读延迟和冲突模式要明确
DSP乘加、累加、滤波按 DSP 原生流水级组织可获得更高频率
BUFG/MMCM/PLL时钟分发、倍频、分频和相位调整普通逻辑不能替代专用时钟网络
I/O 原语DDR、延迟、SERDES、差分接口高速 PHY 优先使用专用原语/IP
  • 简单寄存器、算术和常规 RAM:优先写清晰 RTL,让工具推断。
  • 异步 FIFO、复杂时钟、SERDES、PCIe、DDR:优先使用厂商 IP/XPM。
  • 需要精确原语行为或物理位置时再显式实例化,并把厂商依赖隔离在包装模块中。

许多 IP 使用 AXI4-Stream 风格握手:仅当 valid && ready 时发生一次传输。

发送方:有数据时可拉高 valid,不得等待 ready 才首次拉高 valid
等待期:保持 valid=1 及 data/last/user 等当前传输信息稳定,直到握手采样边沿
接收方:可用 ready 施加背压
传输: valid && ready 在采样边沿同时为 1

接收方可以等待 valid 再拉高 ready;如果发送方也等待 ready 才给出 valid,双方可能永久等待。这里的保持要求覆盖真正完成握手的采样边沿,不能在观察到 ready 瞬间就提前换数据。

流水模块必须让数据和 valid/last/user 同步延迟,并在停顿时保持待传输内容。忽略背压会在下游暂停时丢数或重复发送。具体信号和复位规则按所用 IP 的 AXI4-Stream 接口定义执行。

握手规则可查 Arm AMBA AXI-Stream IHI 0051B,第 2.2 节。

最小缓冲量 >= 峰值输入速率 × 最长服务中断时间 - 同期可排出数据量

上式是单个停顿窗口的粗估,速率与容量必须统一为“字/秒与字”或“字节/秒与字节”,结果至少取 0,还要加上窗口开始时已经占用的容量。更一般地,应在所有可能的时间窗口内计算累计写入减累计读出的最大积压,并考虑满/空状态跨域同步导致的可用空间延迟。

例如空 FIFO 面对 2 Mword/s 输入,接收端停顿 50 μs、期间完全不读,至少新增 100 word 积压;若停顿开始前已有 20 word,基础需求就是 120 word,之后再增加时钟偏差、包边界和实现余量。平均吞吐相等并不代表不会溢出;若长期输入速率高于可保证的输出速率,任何有限深度都会最终耗尽。

  • 锁定 IP 参数、版本和目标器件,纳入可重复构建。
  • 阅读 latency、reset、clock、backpressure 和 data format 章节。
  • 用官方示例设计验证板级接口,再接入业务逻辑。
  • 在综合报告确认 BRAM/DSP/FIFO 数量和位宽符合预期。
  • 不把“IP 已生成”当作系统已验证;包装层和上下游协议仍需自检。