Xilinx大学计划指定教材:零存整取NetFPGA开发指南
定 价:32 元
- 作者:陆佳华 ,等 著
- 出版时间:2010/6/1
- ISBN:9787512401075
- 出 版 社:北京航空航天大学出版社
- 中图法分类:TP331.2
- 页码:248
- 纸张:胶版纸
- 版次:1
- 开本:16开
本书以通俗易懂的语言,由浅入深地向读者阐述了NetFPGA的安装、开发,剖析了NetFPGA的参考路由器的逻辑、驱动以及上层软件设计,分析了已有的各种典型应用,同时结合作者的开发实例介绍了如何在此平台上开发用户设计以及注意事项。本书在阐述NetFPGA开发的同时,更侧重于介绍在FPGA上进行以太网相关逻辑开发的方法与设计思路;同时也阐述了板卡如何与主机系统交互、如何开发驱动等整个设计流程。因此本书虽然是基于NetFPGA平台,但是其中的源代码与设计思路同样适用于Xilinx其他FPGA平台。
本书可作为NetFPGA初学者、FPGA上网络相关硬件开发人员的参考书,亦可作为大专院校从事FPGA网络硬件加速研究方向的相关教师和研究生的参考书。
NetFPGA,拆分开就是Net,work与FPGA,这两个名词对于电子工程师来说都是耳熟能详的,直译可简单称为网络FPGA。通常普通的FPGA用户也知道FPGA上能实现哪些网络的应用,但这两个名词混合到一起又表示什么,又有哪些高明之处呢?
NetFPGA起源于斯坦福大学由NickMcKeown教授领导的研究小组,作为一个软硬件皆可编程的开放平台,应用在网络设计课程中。学生只需要大约十周的时间,就可以开发出实际的网络设备,如网卡、交换机、路由器、防火墙等。NetFPGA小组刚卸任的负责人之一JohnLockwood教授也是一直从事着网络应用硬件化加速的工作,其最主要的开发、验证平台就是XilinxFPGA。
记得2003年在读硕士时就了解到Lockwood教授在开展利用FPGA进行网络加速的研究,而作者当时所在的课题组也在尝试做一些网络应用的硬件加速,然而那时对于FPGA和网络都是一知半解,一切都得从头开始、白手起家。为了搭建一个PCI接口的FPGA加速平台,从原理图、PCB、硬件调试、驱动开发、逻辑开发到上层应用整整花了一年半的时间,花费了很多精力,却也没有得到特别好的效果。等平台搭建好,也就离毕业不远了,因此反而没有太多时间研究硬件加速应用本身。
毕业后有幸来到Xilinx公司工作,在一次与大学计划经理谢凯年博士的聊天中得知Lockwood已经加入Nick的小组,而斯坦福大学正在和我们公司合作开展NetFPGA的项目,顿觉我的师弟们前途一片光明,也明白这对他们的课题来讲意味着什么。‘NetFPGA不仅提供硬件平台,还提供驱动、逻辑源代码。这些源代码能够让读者更快地熟悉网络相关的逻辑设计,更好地利用搭建好的底层逻辑;同时易用的驱动程序和上位机程序也帮助硬件开发人员极大地减少了与上位机交互的工作量,这就能让开发人员更专注于应用和加速本身,而不用考虑硬件平台,降低了做网络加速应用开发与研究的门槛,这也和Xilinx近期推出的“目标设计平台”的概念不谋而合,NetFPGA也算是以网络加速应用为目标的设计平台。
第1篇 初识NetFPGA
第1章 网络FPGA
1.1 NetFPGA溯源
1.2 核心部件
1.2.1 FPGA
1.2.2 Memorv
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 CentOS4.4 安装指南
2.3 Net,FPGA系统快速安装法
2.3.1 Java环境安装
2.3.2 rpmforge安装
2.3.3 Net:FPGA基础开发包安装
2.3.4 其他设置
2.4 NetlFPGA系统详细安装法
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 ModelSire的安装
2.6.2 安装内存仿真模块
2.7 安装NetFPGA开发工具——调试工具
2.8 NetFPGA的测试
2.8.1 selftest版本1
2.8.2 selftest版本2
2.8.3 regresstest
第2篇 近观NetFPGA
第3章 深入浅出Router硬件
3.1 为什么是Router
3.2 纵观RouterArchitecture
3.3 硬件设计结构的思考
3.3.1 关键技术之Packet和RegisterBus
3.3.2 关键技术之5级pipelining
3.3.3 关键技术之统一Packet格式
3.3.4 我们需要关注什么
3.4 链路层
3.4.1 认识MAC核
3.4.2 Router11的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 通用的PacketGer
5.2.1 硬件
5.2.2 软件
5.3 新颖的OpenFlow
5.3.1 了解OpenFlowSwitch
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 MakefiIe浅谈
6.5 系统调试
第7章 皆可NetFPGA
7.1 高性能的NetFPGA
7.1.1 目标平台
7.1.2 硬件移植
7.1.3 PCIe驱动开发
7.2 轻量级的NetFPGA
7.3 NetFPGA资源共享
附录NFP2.0的改进
参考文献
5.3.1 了解openFlowSwitch
最初的想法很简单:我们都知道绝大多数Switch和Router。上都有一个:flowtable(典型的就是TCAM),用来实现防火墙、NAT、QoS及网络数据统计。而不同供应商设备上的flowtable总是不同,我们需要定义一个适用于大多数Switch和Router的通用功能集,OpenF、low时该功能集进行了扩展,同时提供了一个开放的协议用来配置不同Switch和Router上的flowtable。利用OpenFlow网络管理者可以很好地区分实验流和工作流,研究人员通过选择Packet路由线路和处理接收的Packet来控制自己的实验流,因此,可以尝试新的路由协议、安全模型、地址调度和选择IP。当然,工作流量也可以独立而正常的工作。