FPGA 插件系统 FPGA模型教程
本章介绍 FPGA 插件系统的使用方法。插件用于把模型的输入输出连接到设备的物理通道,也提供了一些开箱即用的功能模块(如波形发生器、光纤扩展等)。电路模型(InSolver)与数学模型(HDLCoder)两种流程共用同一套插件系统,均在生成比特流的通道映射界面中配置。
配置方法
在生成比特流的通道映射界面中,点击 Plugins 按钮打开插件配置窗口,点击
Add Instance 添加所需的插件并设置参数;返回主界面后,即可把模型端口绑定到该插件提供的通道上。配置完成后点击 Process 即可开始生成比特流。
通道选择类插件(ai_mux / ao_mux / di_mux / do_mux)在比特流编译完成后仍可重新选择通道,无需重新编译。
可用插件
目前提供以下插件:
| 插件 | 用途 |
|---|---|
ai_mux |
模拟输入通道选择:把模型的模拟输入绑定到板卡 ADC 通道,默认 26 通道 |
ao_mux |
模拟输出通道选择:把模型信号输出到板卡 DAC 观察,支持增益 / 偏置调节。28 通道(1~8 为快速通道,9~28 为慢速通道) |
di_mux |
数字输入通道选择:把板卡 GPIO 接到模型的数字输入(如门控信号),默认 50 通道 |
do_mux |
数字输出通道选择:把模型的数字输出接到板卡 GPIO,默认 50 通道 |
dynamic_load |
动态负载波形发生器:自动循环输出梯形波模拟负载变化,峰值、速率与时间均可在线调整 |
lpf_sfp_data |
光纤数据收发(带均值滤波):两台设备经光纤交换模型数据,两端收发路数需一致 |
sfp_io |
光纤 IO 扩展:主端把模拟输出发往远端扩展箱、并接收远端的数字输入;从端装在远端扩展箱上,自动收发,无需配置 |
自定义插件
除内置插件外,也可以自行开发插件。插件统一存放在安装目录的 firmware/fpga/rtl/custom_plugin 下,每个插件对应一个独立的文件夹,文件夹内包含两个文件:实现功能的
SystemVerilog 源文件(.sv),以及描述该插件属性的 .json 文件。软件启动时会自动扫描该目录并注册其中的插件,无需额外配置。
描述文件需要包含以下字段:
| 字段 | 说明 |
|---|---|
plugin_name |
插件名称,需与文件夹名一致 |
description |
插件用途说明,会显示在插件选择列表中 |
ip_files |
插件包含的 SystemVerilog 文件名列表 |
parameters |
用户在插件配置窗口中可设置的参数,例化时填入 |
system_parameters |
无需用户配置、由系统在编译时自动获取的参数(如模型步长) |
system_ports |
连接到已有顶层端口的信号(如 clk、rst_n),无需额外定义 |
binding_ports |
供模型端口绑定的信号,即插件对外提供的通道 |
other_ports |
插件自身的配置寄存器或观测输出,只能是 CPU 接口 |
其中 parameters 中的参数会出现在插件配置窗口中供用户填写;binding_ports 决定了该插件能被模型端口绑定的通道;other_ports 中带
label 的参数会显示在界面上,供运行时在线调整。
以内置的 dynamic_load 为例,其描述文件的结构如下(已省略部分字段):
{
"plugin_name": "dynamic_load",
"description": "动态负载波形发生器:自动循环输出梯形波模拟负载变化。",
"ip_files": ["dynamic_load.sv"],
"parameters": [],
"system_parameters": [],
"system_ports": [
{ "name": "clk", "direction": "input", "data_type": "wire", "interface_type": "none" },
{ "name": "rst_n", "direction": "input", "data_type": "wire", "interface_type": "none" }
],
"binding_ports": [
{ "name": "wave_out", "direction": "output", "data_type": "sfix32_en24", "interface_type": "none" }
],
"other_ports": [
{ "name": "ramp_max", "direction": "input", "data_type": "sfix32_en24",
"interface_type": "cpu", "is_bin_param": true, "value": 100, "label": "Peak value" }
]
}
绑定时需遵守以下规则,否则格式检查会报错:端口的数据类型必须一致;方向必须匹配(模型的输出接插件的输入);插件的输入端口不能同时被多个信号绑定(输出端口可以驱动多个信号);数组型端口需使用
实例名@端口名[序号] 的格式且下标不能越界。
自定义插件涉及 FPGA 开发,建议在瞬迦技术支持的协助下进行;也可以参考内置插件目录中的现有实现。