FPGA 片上资源与 IP
资源速查
跳转到“资源速查”| 资源 | 主要用途 | 设计注意 |
|---|---|---|
| LUT | 组合逻辑、小型查找表、分布式 RAM/SRL | 逻辑深度和扇出影响时序 |
| FF | 状态、流水和接口寄存 | 不是所有寄存器都需要复位 |
| BRAM | FIFO、帧缓存、表格、双口存储 | 宽深组合、读延迟和冲突模式要明确 |
| DSP | 乘加、累加、滤波 | 按 DSP 原生流水级组织可获得更高频率 |
| BUFG/MMCM/PLL | 时钟分发、倍频、分频和相位调整 | 普通逻辑不能替代专用时钟网络 |
| I/O 原语 | DDR、延迟、SERDES、差分接口 | 高速 PHY 优先使用专用原语/IP |
推断还是实例化
跳转到“推断还是实例化”- 简单寄存器、算术和常规 RAM:优先写清晰 RTL,让工具推断。
- 异步 FIFO、复杂时钟、SERDES、PCIe、DDR:优先使用厂商 IP/XPM。
- 需要精确原语行为或物理位置时再显式实例化,并把厂商依赖隔离在包装模块中。
valid/ready 数据流
跳转到“valid/ready 数据流”许多 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 节。
FIFO 深度估算
跳转到“FIFO 深度估算”最小缓冲量 >= 峰值输入速率 × 最长服务中断时间 - 同期可排出数据量上式是单个停顿窗口的粗估,速率与容量必须统一为“字/秒与字”或“字节/秒与字节”,结果至少取 0,还要加上窗口开始时已经占用的容量。更一般地,应在所有可能的时间窗口内计算累计写入减累计读出的最大积压,并考虑满/空状态跨域同步导致的可用空间延迟。
例如空 FIFO 面对 2 Mword/s 输入,接收端停顿 50 μs、期间完全不读,至少新增 100 word 积压;若停顿开始前已有 20 word,基础需求就是 120 word,之后再增加时钟偏差、包边界和实现余量。平均吞吐相等并不代表不会溢出;若长期输入速率高于可保证的输出速率,任何有限深度都会最终耗尽。
IP 使用检查
跳转到“IP 使用检查”- 锁定 IP 参数、版本和目标器件,纳入可重复构建。
- 阅读 latency、reset、clock、backpressure 和 data format 章节。
- 用官方示例设计验证板级接口,再接入业务逻辑。
- 在综合报告确认 BRAM/DSP/FIFO 数量和位宽符合预期。
- 不把“IP 已生成”当作系统已验证;包装层和上下游协议仍需自检。