3. 系统级设计方法学
当设计规模从“一个模块”上升到“一颗芯片上的完整系统”时,设计方法学本身就成为决定成败的因素。系统级设计方法学要回答四个问题:用什么作为起点(平台)、哪些功能直接复用(IP)、哪些功能交给硬件或软件(协同划分)、各部件之间如何对接(接口标准化)。本节围绕这四个问题展开,并给出可落地的判断依据与示例。
一、基于平台的设计:先定骨架,再填功能
基于平台的设计(Platform-Based Design, PBD)的核心思想是:不把每个项目都当作从零开始,而是先建立一个可复用的“平台”,平台由计算资源、存储资源、互连结构和标准接口组成,项目在其上做功能映射。平台通常分三层:
- 架构平台:定义处理器核(如 Nios II 软核或 ARM 硬核)、总线(Avalon-MM/Avalon-ST/AXI)、存储层次(片上 RAM、DDR 控制器)与时钟复位域。
- 硬件平台:在 FPGA 上固化上述架构,形成可综合的顶层框架与约束文件(.sdc、.qsf)。
- 应用平台:在硬件平台之上提供驱动、HAL、RTOS 与中间件,供应用软件调用。
平台化的收益在于“变与不变分离”:互连、时钟、存储映射属于“不变”部分,一旦验证通过就冻结;算法、协议、控制逻辑属于“变”部分,通过标准接口挂接。判断一个设计是否适合平台化,可看两个指标:一是功能复用率(可复用模块占系统功能的比例),二是接口变更频率(接口越稳定,平台收益越高)。
二、IP 复用:从“能编译”到“可集成”
IP 复用的关键不是拿到源码,而是拿到可集成的交付物。一个可复用 IP 至少应包含:RTL 源码或加密网表、顶层端口定义、寄存器映射文档、时序约束、仿真模型与测试平台、集成示例。在 Quartus 环境中,推荐把 IP 封装为 Platform Designer(原 Qsys)组件,通过 .ipx 或 _hw.tcl 描述其接口与参数,这样在系统集成时可直接连线并自动生成互连逻辑。
复用时的常见风险是“接口语义不一致”:两个模块都叫 valid,但一个表示数据有效、另一个表示握手完成。因此复用前必须核对三件事:时钟域(是否同源)、复位极性(高有效还是低有效)、握手协议(valid/ready 还是 req/ack)。下表给出一个 IP 集成检查示例:
| 检查项 | 示例值 | 判断依据 |
|---|---|---|
| 时钟域 | clk_100m,同源 | 跨域需加同步器或异步 FIFO |
| 复位 | rst_n,低有效,异步置位同步释放 | 与平台复位策略一致 |
| 数据接口 | Avalon-ST,32 bit,valid/ready | 背压由 ready 拉低表示 |
| 寄存器接口 | Avalon-MM,32 bit 地址 | 地址对齐、读写时序符合规范 |
三、软硬件协同划分:把功能放到合适的位置
协同划分的目标是:在满足实时性与吞吐的前提下,把功能分配到硬件或软件。硬件适合并行、低延迟、固定算法的任务;软件适合控制流复杂、需要频繁修改、吞吐要求不高的任务。划分时可参考以下量化依据:
- 吞吐:若数据率超过软件处理能力(例如每周期需处理多个采样点),应放入硬件。
- 延迟:若响应时间要求小于软件中断与调度开销(例如小于 1 μs),应放入硬件。
- 灵活性:若算法参数需在线调整或协议可能变更,优先放入软件。
- 资源:硬件实现消耗逻辑与 DSP 资源,软件实现消耗处理器周期与存储。
以一个“图像采集 + 边缘检测 + 结果显示”的系统为例:图像采集接口(LVDS 接收、去串化)必须用硬件;边缘检测若为固定 Sobel 算子且要求 60 fps,可用硬件流水线实现;而阈值调节、结果显示格式、人机交互适合放在 Nios II 软件中。划分完成后,软硬件之间的边界就是接口,必须明确定义数据格式、地址映射与中断号。
四、接口标准化:让部件可替换、可验证
接口标准化的价值在于:只要接口不变,内部实现可以替换,验证可以独立进行。在 Altera 平台中,常用的标准接口包括 Avalon-MM(存储器映射读写)、Avalon-ST(流数据)、Avalon 中断接口与时钟/复位接口。标准化应做到:
- 端口命名统一,例如时钟统一为
clk、复位统一为reset_n。 - 数据位宽与字节序明确,例如统一小端、32 位对齐。
- 握手语义明确,valid 与 ready 的依赖关系写进文档。
- 地址映射集中管理,避免各模块自行分配导致冲突。
下面这张图给出一个平台化系统的结构关系:左侧是平台提供的固定资源(处理器、互连、存储),右侧是可复用 IP 与软件任务,中间通过标准化接口连接。图中同时标出软硬件划分边界与接口类型,便于对照理解。
五、把方法学落到工程实践
在 Quartus 中落地上述方法学,可按以下顺序推进:先在 Platform Designer 中搭建平台骨架,加入处理器、存储控制器与互连;再把已验证的 IP 以组件形式加入系统,核对接口语义;然后确定软硬件边界,把硬件模块挂到 Avalon-MM 或 Avalon-ST 上,把软件任务映射到处理器;最后统一地址映射与中断分配,生成系统并做集成仿真。判断集成是否成功,可观察三个信号:编译是否通过且时序收敛、Platform Designer 是否报告地址冲突、软件是否能正确读写外设寄存器。