NetFPGA 快速入门指南

1. 目录

1.0 目录树结构

2.0 设计入门

2.1 使用模块

2.2 添加自定义代码

2.3 覆盖库代码

2.4 Coregen 核生成

3.0 环境设置

4.0 仿真

5.0 实现

6.0 运行硬件

6.1 内核驱动

6.2 下载

7.0 联系方式

| 1.0 目录树结构

目录树结构如下:

netfpga

|

+------ bin (包含用于运行仿真和设置环境的脚本)

|

+------ lib (包含仿真/综合/设计所需的稳定模块和公共部件)

| |

| +---- C (包含参考设计所需的公共软件和代码)

| |

| +---- verilog (包含可重复用于设计的模块和文件)

| | |

| | +---- core (NetFPGA 设计过程中开发的参考设计所使用的模块)

| | |

| | +---- contrib (NetFPGA 用户贡献的模块)

| |

| +---- Makefiles (用于仿真和综合的各种 makefile 文件)

| |

| +---- Perl5 (包含与参考设计交互及辅助仿真的公共库)

|

+------ projects (包含用户项目,包括参考设计)

|

+---- reference_nic (参考 NIC 项目)

| |

| +---- src (包含用于综合和仿真的所有 verilog 代码)

| |

| +---- synth (包含用于生成核的用户 .xco 文件,以及用于实现设计的 Makefile)

| |

| +---- sw (包含项目的所有软件部分)

| |

| +---- include (包含定义宏的文件,以及用于仿真和/或综合的其他包含文件)

|

+---- reference_router (参考 4 端口 IPv4 路由器)

|

+---- reference_switch (参考 4 端口自学习以太网交换机)

|

+---- cpci (Spartan 器件的代码)

|

+---- cpci_reprogrammer (用于重新编程 Spartan 的 Virtex 器件代码)

|

+---- selftest (用于测试所有 NetFPGA 子系统的设计)

|

+---- dram_queue_test (验证 DRAM 队列)

|

+---- dram_router (使用 DRAM 队列的 4 端口 IPv4 路由器)

|

+---- scone (NetFPGA 软件组件)

|

+---- gui_scone (NetFPGA 设计的 Java GUI)

|

+---- wireshark_dissectors (用于 NetFPGA 报文类型的 Wireshark 解析器)

目录树的设计旨在实现库和用户项目之间的模块化和公共代码共享。

用于综合和仿真的脚本应足够灵活,允许用户添加自己的代码,而无需更改或理解脚本的工作原理。但这超出了本 README 的范围。

2. 设计入门

学习如何使用该目录树的最佳方法是参考示例。如果你查看 reference_nic 项目,会注意到以下几点:

1- src 目录为空:这是因为该项目仅使用库模块。

2- sw 目录为空:这是因为该交换机的软件也在库中。

3- include 下有一个文件:lib_modules.txt。该文件指定了要使用的库模块。

开始设计的最佳方法是复制 reference_switch 或 reference_router 目录,并在新目录中添加/修改文件。

* 2.1 使用库模块

lib_modules.txt 文件指定了要从库中使用的模块列表。这些模块的路径是相对于 NetFPGA2.1-x.y/lib/verilog 目录的。只需更改 lib_modules.txt 文件中的模块路径,就可以选择使用不同的模块。

* 2.2 添加自定义代码

要添加自己的代码,请编写 verilog 文件并将其放入 src 目录中。你也可以选择将它们分区到 src 下的不同子目录中。请注意,只支持单层目录结构。

你可以选择使用部分、全部,甚至完全不使用原始库模块。你可以将库代码复制到你的项目目录中进行修改。从 lib_modules.txt 文件中移除你不使用的库模块即可。

* 2.3 覆盖库代码

你可能只需要修改某个库模块中的一个文件。你无需复制所有源文件并从 lib_modules.txt 中移除该库模块。只需将你想要修改的文件复制到项目的 src 目录中,然后在其中进行修改即可。

* 2.4 Coregen 核生成

如果你需要使用 Xilinx 的 Coregen 生成的 IP 核,请将生成的 .xco 文件复制到项目的 synth 目录中。你不需要其他任何文件。脚本会自动处理。

3. 环境设置

需要设置以下环境变量:

NF_ROOT - 设置为目录树的根目录 (NetFPGA2.1-x.y)

NF_DESIGN_DIR - 设置为项目目录 (例如 $NF_ROOT/projects/reference_nic)

NF_WORK_DIR - 设置为工作目录 (需要有足够大空间的位置)

如果你使用的是 BASH shell,则需要执行 source ${NF_ROOT}/lib/bin/nf_profile 命令。

如果你使用的是 CSH shell,则需要执行 source ${NF_ROOT}/lib/bin/nf_cshrc 命令。

注意:请确保这两个文件中的设置与你自己的环境配置相符。**默认设置是无效的!**

4. 仿真

要对你的设计进行仿真,有几个库可以提供帮助。请查看 reference_router/verif/test_router_full 目录,了解如何使用 perl 库函数。要创建你自己的测试平台,请复制某个 test_* 目录,并确保其名称由三部分组成 test_major_minor。然后,你可以根据自己的需要修改 make_pkts 文件。

使用的 Perl 库位于 lib/Perl5 目录。你可以在项目的 verif/src 目录中添加自己的库。

要运行仿真,请使用以下命令:

nf_run_test.pl --major x --minor y

要启动图形界面运行,请添加 --gui 选项。输入 nf_run_test.pl --help 查看完整详情。

注意:coregen 需要 X Window 系统。如果要构建 IP 核(例如,首次仿真或实现设计时),请确保你是在图形控制台中运行。

5. 实现

要实现你的设计,请切换到 synth 目录并输入 make 命令。如果一切顺利,你最终会得到一个 nf2_top_par.bit 文件,可以用来下载到 FPGA。

如果出现问题,请确保 synth 目录中存在用户生成的 IP 核所需的所有 .xco 文件。务必查看 nf2_top_par.twr 文件,确认你的设计已通过时序检查。同时注意遵守上文第 4.0 节中的说明。

6. 运行硬件

要运行硬件,需要两个步骤:

1- 加载内核模块

2- 下载 .bin 文件

* 6.1 内核驱动

1- 切换到 lib/C/kernel 目录,输入 make 命令。

2- 以 root 身份,输入 insmod nf2.ko 命令。

如果一切顺利,执行 ifconfig -a 命令时,你应该会看到 nf2c0、nf2c1、nf2c2 和 nf2c3 接口。如果没有,请检查板卡是否正确插入,并查看 lspci 命令是否能识别该设备。

* 6.2 下载

1- 切换到 lib/C/download 目录,输入 make 命令。

2- 以 root 身份,输入 nf_download /path/to/nf2_top_par.bin 命令。

大功告成!你的硬件设计已加载到设备上,应该可以工作了。可以浏览 lib/C/switch、lib/C/router 和 lib/C/tools 目录下的工具,这些工具可用于与真实硬件进行交互。

7. 联系方式

公共讨论论坛: http://netfpga.org/forums/

电子邮件: info@netfpga.org

网址: http://netfpga.org/

相关推荐
QBoson4 小时前
量子计算+生物制药产业与技术发展研究报告(上)
量子计算
CoderIsArt5 小时前
FPGA量子计算教学平台设计方案与实现步骤
fpga开发·量子计算
MicroTech20255 小时前
MLGO微算法科技面向复杂非局域模型的量子虚时演化新方案:一种无需局域性假设的量子虚时演化新算法
科技·算法·量子计算
学习永无止境@5 小时前
Vivado FPGA输入时钟约束
开发语言·fpga开发·fpga
信道者1 天前
当量子计算机“看见”了分子:IBM合成首个“半莫比乌斯”分子
量子计算
Eloudy1 天前
Quartus Prime Lite Edition 25.1 安装备忘
fpga
XINVRY-FPGA1 天前
XC7Z020-2CLG400I Xilinx AMDZynq-7000 FPGA
嵌入式硬件·fpga开发·arm·硬件工程·dsp开发·fpga
m0_571186601 天前
第三十六周周报
人工智能·量子计算
Eloudy3 天前
Ubuntu 搭建 Chisel 开发环境备忘
ic·fpga