第1篇 初识NetFPGA
第1章 网络FPGA
1.1 NetFPGA溯源
1.2 核心部件
1.2.1 FPGA
1.2.2 Memory
1.2.3 PHY
1.2.4 PCI
1.2.5 SATA
第2章 NetFPGA平台搭建指南
2.1 NetFPGA主机清单
2.1.1 官方网站推荐主机清单
2.1.2 Xilinx大学计划使用的主机清单
2.1.3 预装机购买
2.1.4 机器选购的一些建议
2.2 操作系统介绍及其安装
2.2.1 NetFPGA兼容的操作系统介绍
2.2.2 Bios设置
2.2.3 Cent OS 4.4安装指南
2.3 NetFPGA系统快速安装法
2.3.1 Java环境安装
2.3.2 rpmforge安装
2.3.3 NetFPGA基础开发包安装
2.3.4 其他设置
2.4 NetFPGA系统详细安装法
2.4.1 设置Grub参数
2.4.2 下载NetFPGA基础开发包
2.4.3 设置环境变量
2.4.4 检查是否安装了对应版本的Linux内核源代码
2.4.5 安装perl支持包
2.4.6 安装Java
2.4.7 安装NetFPGA驱动
2.4.8 验证是否安装成功
2.4.9 执行CPCI
2.5 安装NetFPGA开发工具——综合工具
2.5.1 ISE扳本规定
2.5.2 Linux如何安装ISE9.1.03
2.5.3 如何设置环境变量
2.6 安装NetFPGA开发工具——仿真工具及其相关设置
2.6.1 ModelSim的安装
2.6.2 安装内存仿真模块
2.7 安装NetFPGA开发工具——调试工具
2.8 NetFPGA的测试
2.8.1 selftest版本1
2.8.2 selftest版本2
2.8.3 regress test
第2篇 近观NetFPGA
第3章 深入浅出Router硬件
3.1 为什么是Router
3.2 纵观Router Architecture
3.3 硬件设计结构的思考
3.3.1 关键技术之Packet和Register Bus
3.3.2 关键技术之5级pipelining
3.3.3 关键技术之统一Packet格式
3.3.4 我们需要关注什么
3.4 链路层
3.4.1 认识MAC核
3.4.2 Router中的MAC核
3.4.3 链路层的辅助设计
3.4.4 如何使用TEMAC核
3.5 核心层面的网络层
3.5.1 简单的队列调度
3.5.2 出色的转发引擎
3.5.3 管理好输出缓冲
3.5.4 SRAM接口设计
3.5.5 留给读者的电路
3.6 数据交互的PCI接口
3.7 HDL源码探究
第4章 深入浅出Router软件
4.1 驱动程序的结构
4.1.1 驱动概述
4.1.2 NetFPGA驱动简介
4.1.3 PCI驱动介绍
4.1.4 nf2设备探测和初始化
4.1.5 nf2设备卸载
4.2 设备驱动的操作
4.2.1 打开与关闭
4.2.2 数据包是如何接收的
4.2.3 驱动如何发送数据包
4.2.4 这样来配置硬件板卡——ioctl
4.2.5 换一种方式来实现驱动程序
4.3 用户界面分析
4.3.1 为什么要有用户界面
4.3.2 用户界面如何操控硬件
第3篇 再会NetFPGA
第5章 经典应用剖析
5.1 视频流demo
5.2 通用的Packet Generator
5.2.1 硬件
5.2.2 软件
5.3 新颖的OpenFlow
5.3.1 了解OpenFlow Switch
5.3.2 如何在NetFPGA上搭建OpenFlow
5.4 丰富的Project
5.4.1 值得分析的Project
5.4.2 更多的Project
5.5 贡献你的Project
第6章 开发实践
6.1 选择流量检测
6.2 硬件设计方法
6.2.1 开始前的准备
6.2.2 设计正确的module
6.2.3 提交放心的module
6.2.4 添加新的module
6.3 驱动设计方法
6.3.1 驱动设计准备
6.3.2 提升数据传输速率的两种方法
6.3.3 怎样更加轻松地使用驱动程序
6.4 应用程序设计方法
6.4.1 功能验证利器C语言程序
6.4.2 Java编写GUI让你的演示更nice
6.4.3 Makefile浅谈
6.5 系统调试
第7章 皆可NetFPGA
7.1 高性能的NetFPGA
7.1.1 目标平台
7.1.2 硬件移植
7.1.3 PCIe驱动开发
7.2 轻量级的NetFPGA
7.3 Nett、PGA资源共享
附录 NFP2.0的改进
参考文献