这是一篇我刚开始NetFPGA开发时翻译的NetFPGA文件结构说明(原文在NF2目录下),包括了官方推荐的
NetFPGA学习方法,希望对大家有用。
目录:
1.0 NF2文件结构
2.0 开始设计
2.1 使用模块
2.2 添加你自己的模块
2.3 更改库代码
2.4 使用IP核
3.0 环境搭建
4.0 仿真
5.0 完成设计
6.0 上板测试
6.1 Kernel 驱动
6.2 下载
7.0 联系我们
+-----------------------------------------------------------------------
| 1.0 NF2文件结构
+-----------------------------------------------------------------------
具体树形目录如下:
NetFPGA2.1-x.y
|
+------ bin (包含了运行仿真和设定环境的脚本)
|
+------ lib (包含了稳定的仿真,综合设计的模块 )
| |
| |
| +---- C (包含了软件和指导设计的源码)
| |
| +---- verilog
(包含了重用设计时用到的模块和文件)
| |
| +---- Makefiles (编译仿真和综合的文件)
| |
| +---- Perl5
(包含了与指导设计交互并辅助仿真的通用库文件)
|
+------ projects (包含了用户的工程及指导实验)
|
+---- reference_nic
| |
| +---- src (包含了综合仿真的所有verilog
code )
| |
| +---- synth (包含了用户
.xco文件用于生成核心和完成设计用到的Makefile)
| |
| +---- sw (包含此工程用到的软件)
| |
| +---- include
(包含定义宏文件和仿真综合用到的其他文件)
|
+---- reference_router
(推荐 IPv4 路由器)
|
+---- CPCI2.1
(Spartan用到的源码)
这个树形目录设计目的是方便共享通用源码,修改后的库文件和用户工程
用于综合与仿真的脚本应该有足够的灵活性使得用户可以添加自己的代码而不需要更改
或理解这个脚本是怎么工作的。这不在此README文件中考虑。
+-----------------------------------------------------------------------
| 2.0 开始设计
+-----------------------------------------------------------------------
了解这个树形文件夹最好的方法是用实例。如果你正研究reference_nic,你要注意以下几点:
1- 源代码文件目录是空的:这是因为此工程仅用库文件
2- sw文件夹是空的,也是因为此工程的软件部分在lib中
3- 有一个文件在include目录下: lib_modules.txt. 这个文件详细描述了那些库文件要用到。
开始设计的最好方法是重复the reference_switch 或 the reference_router 这两个实验,并尝试修改他
* 2.1 使用库模块
lib_modules.txt
文件列出了一系列library中的模块,这些模块都在NetFPGA2.1-x.y/lib/verilog中,
你可以改变lib_modules.txt挑选使用不同的模块
2.2 添加你自己的代码
要添加自己的代码,要先写verilog代码并将他们放到src目录下。你也可以将它们分散到这个目录下的各个子目录中。
注意:只能使用一级子目录。
你也可以选择用一些或者干脆全都用库文件中的模块,你可以将库代码修改并拷贝到你的工程目录下,
同时修改lib_modules.txt去掉你不用的模块。
* 2.3 重写库模块
你也许想要修改库模块中的一个或者两个。你不需要将全部源码拷贝出来并将其从lib_modules.txt
中删除。只要拷贝你要用到的文件到你的工程目录下就可以了。
* 2.4 使用IP核
如果你要使用到Xilinx的Coregen生成的IP核,拷贝.xco文件到你工程目录下的synth文件夹。你不需要
使用别的文件,这个脚本会为你搞定它。
+-----------------------------------------------------------------------
| 3.0 环境搭建
+-----------------------------------------------------------------------
下列环境变量需要设置:
NF2_ROOT - 设定树形目录的根目录
NF2_DESIGN_DIR - 设定工程所在的目录
(e.g. $NF2_ROOT/projects/reference_nic)
NF2_WORK_DIR - 设定工作所在目录(somewhere with lots of space)
如果有BASH进程就需要用源代码${NF2_ROOT}/lib/bin/nf2_profile. 否则,如果你用CSH就需要{NF2_ROOT}/lib/bin/nf2_cshrc.
NOTE:请确保此两个文件与你设置的环境变量一致。
+-----------------------------------------------------------------------
| 4.0 仿真
+-----------------------------------------------------------------------
对你的设计进行仿真,有几个库文件可以使用。看一下reference_router/verif/test_router_full
如何使用perl library的各项功能。要建立自己的测试平台,拷贝test_* directories并确定此文件
目录有三个部分:
test_major_minor.修改 make_pkts。
Perl 库文件在lib/Perl5,你可以添加自己的库到你工程目录的verif/src文件夹。
运行仿真用到下命令:
nf21_run_test.pl --major x --minor y
用到gui时添加gui switch. Type nf21_run_test.pl --help看详细说明。
NOTE: coregen 需要图形化界面。
+-----------------------------------------------------------------------
| 5.0 完成设计
+-----------------------------------------------------------------------
完成设计,cd到你综合的目录并使用make命令。如果么有错误就会生成nf2_top_par.bit文件download
到FPGA即可。
如果有错误产生,确认所有的.xco文件在synth目录。确认nf2_top_par.twr以保证你的设计通过了时序验证。
同时符合上面4.0的要求。
+-----------------------------------------------------------------------
| 6.0 搞定硬件
+-----------------------------------------------------------------------
要使硬件工作起来有一下两步:
1- 加载kernel模块
2- 将.bin文件下载到FPGA
* 6.1 KERNEL 驱动
1- 到lib/C/kernel目录make。
2- root用户运行 insmod nf2.ko
你将看到nf2c0, nf2c1, nf2c2, 和nf2c3四个网口。
* 6.2 下载到硬件
1- 到lib/C/download运行make
2- root用户执行nf2_download /path/to/nf2_top_par.bin
全部结束! 此时你的硬件将按照你的逻辑工作,此时可以用到lib/C/switch, lib/C/router,
和lib/C/tools三个目录下的软件与硬件交互。
+-----------------------------------------------------------------------
| 7.0 联系我们
+-----------------------------------------------------------------------
http://netfpga.cs.bit.edu.cn/
fuwenl@bit.edu.cn