Xilinx大學(xué)計劃指定教材:零存整取NetFPGA開發(fā)指南
定 價:32 元
- 作者:陸佳華 ,等 著
- 出版時間:2010/6/1
- ISBN:9787512401075
- 出 版 社:北京航空航天大學(xué)出版社
- 中圖法分類:TP331.2
- 頁碼:248
- 紙張:膠版紙
- 版次:1
- 開本:16開
本書以通俗易懂的語言,由淺入深地向讀者闡述了NetFPGA的安裝、開發(fā),剖析了NetFPGA的參考路由器的邏輯、驅(qū)動以及上層軟件設(shè)計,分析了已有的各種典型應(yīng)用,同時結(jié)合作者的開發(fā)實例介紹了如何在此平臺上開發(fā)用戶設(shè)計以及注意事項。本書在闡述NetFPGA開發(fā)的同時,更側(cè)重于介紹在FPGA上進行以太網(wǎng)相關(guān)邏輯開發(fā)的方法與設(shè)計思路;同時也闡述了板卡如何與主機系統(tǒng)交互、如何開發(fā)驅(qū)動等整個設(shè)計流程。因此本書雖然是基于NetFPGA平臺,但是其中的源代碼與設(shè)計思路同樣適用于Xilinx其他FPGA平臺。
本書可作為NetFPGA初學(xué)者、FPGA上網(wǎng)絡(luò)相關(guān)硬件開發(fā)人員的參考書,亦可作為大專院校從事FPGA網(wǎng)絡(luò)硬件加速研究方向的相關(guān)教師和研究生的參考書。
NetFPGA,拆分開就是Net,work與FPGA,這兩個名詞對于電子工程師來說都是耳熟能詳?shù)模弊g可簡單稱為網(wǎng)絡(luò)FPGA。通常普通的FPGA用戶也知道FPGA上能實現(xiàn)哪些網(wǎng)絡(luò)的應(yīng)用,但這兩個名詞混合到一起又表示什么,又有哪些高明之處呢?
NetFPGA起源于斯坦福大學(xué)由NickMcKeown教授領(lǐng)導(dǎo)的研究小組,作為一個軟硬件皆可編程的開放平臺,應(yīng)用在網(wǎng)絡(luò)設(shè)計課程中。學(xué)生只需要大約十周的時間,就可以開發(fā)出實際的網(wǎng)絡(luò)設(shè)備,如網(wǎng)卡、交換機、路由器、防火墻等。NetFPGA小組剛卸任的負責(zé)人之一JohnLockwood教授也是一直從事著網(wǎng)絡(luò)應(yīng)用硬件化加速的工作,其最主要的開發(fā)、驗證平臺就是XilinxFPGA。
記得2003年在讀碩士時就了解到Lockwood教授在開展利用FPGA進行網(wǎng)絡(luò)加速的研究,而作者當(dāng)時所在的課題組也在嘗試做一些網(wǎng)絡(luò)應(yīng)用的硬件加速,然而那時對于FPGA和網(wǎng)絡(luò)都是一知半解,一切都得從頭開始、白手起家。為了搭建一個PCI接口的FPGA加速平臺,從原理圖、PCB、硬件調(diào)試、驅(qū)動開發(fā)、邏輯開發(fā)到上層應(yīng)用整整花了一年半的時間,花費了很多精力,卻也沒有得到特別好的效果。等平臺搭建好,也就離畢業(yè)不遠了,因此反而沒有太多時間研究硬件加速應(yīng)用本身。
畢業(yè)后有幸來到Xilinx公司工作,在一次與大學(xué)計劃經(jīng)理謝凱年博士的聊天中得知Lockwood已經(jīng)加入Nick的小組,而斯坦福大學(xué)正在和我們公司合作開展NetFPGA的項目,頓覺我的師弟們前途一片光明,也明白這對他們的課題來講意味著什么。‘NetFPGA不僅提供硬件平臺,還提供驅(qū)動、邏輯源代碼。這些源代碼能夠讓讀者更快地熟悉網(wǎng)絡(luò)相關(guān)的邏輯設(shè)計,更好地利用搭建好的底層邏輯;同時易用的驅(qū)動程序和上位機程序也幫助硬件開發(fā)人員極大地減少了與上位機交互的工作量,這就能讓開發(fā)人員更專注于應(yīng)用和加速本身,而不用考慮硬件平臺,降低了做網(wǎng)絡(luò)加速應(yīng)用開發(fā)與研究的門檻,這也和Xilinx近期推出的“目標設(shè)計平臺”的概念不謀而合,NetFPGA也算是以網(wǎng)絡(luò)加速應(yīng)用為目標的設(shè)計平臺。
第1篇 初識NetFPGA
第1章 網(wǎng)絡(luò)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 官方網(wǎng)站推薦主機清單
2.1.2 Xilinx大學(xué)計劃使用的主機清單
2.1.3 預(yù)裝機購買
2.1.4 機器選購的一些建議
2.2 操作系統(tǒng)介紹及其安裝
2.2.1 NetFPGA兼容的操作系統(tǒng)介紹
2.2.2 Bios設(shè)置
2.2.3 CentOS4.4 安裝指南
2.3 Net,F(xiàn)PGA系統(tǒng)快速安裝法
2.3.1 Java環(huán)境安裝
2.3.2 rpmforge安裝
2.3.3 Net:FPGA基礎(chǔ)開發(fā)包安裝
2.3.4 其他設(shè)置
2.4 NetlFPGA系統(tǒng)詳細安裝法
2.4.1 設(shè)置Grub參數(shù)
2.4.2 下載NetFPGA基礎(chǔ)開發(fā)包
2.4.3 設(shè)置環(huán)境變量
2.4.4 檢查是否安裝了對應(yīng)版本的Linux內(nèi)核源代碼
2.4.5 安裝perl支持包
2.4.6 安裝.Java
2.4.7 安裝.NetFPGA驅(qū)動
2.4.8 驗證是否安裝成功
2.4.9 執(zhí)行CPCI
2.5 安裝.NetFPGA開發(fā)工具——綜合工具,
2.5.1 ISE版本規(guī)定
2.5.2 Linux如何安裝ISE9.1.03
2.5.3 如何設(shè)置環(huán)境變量
2.6 安裝NetFPGA開發(fā)工具——仿真工具及其相關(guān)設(shè)置
2.6.1 ModelSire的安裝
2.6.2 安裝內(nèi)存仿真模塊
2.7 安裝NetFPGA開發(fā)工具——調(diào)試工具
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 硬件設(shè)計結(jié)構(gòu)的思考
3.3.1 關(guān)鍵技術(shù)之Packet和RegisterBus
3.3.2 關(guān)鍵技術(shù)之5級pipelining
3.3.3 關(guān)鍵技術(shù)之統(tǒng)一Packet格式
3.3.4 我們需要關(guān)注什么
3.4 鏈路層
3.4.1 認識MAC核
3.4.2 Router11的MAC核
3.4.3 鏈路層的輔助設(shè)計
3.4.4 如何使用TEMAC核
3.5 核心層面的網(wǎng)絡(luò)層
3.5.1 簡單的隊列調(diào)度
3.5.2 出色的轉(zhuǎn)發(fā)引擎
3.5.3 管理好輸出緩沖
3.5.4 SRAM接口設(shè)計
3.5.5 留給讀者的電路
3.6 數(shù)據(jù)交互的PCI接口
3.7 HDL源碼探究
第4章 深入淺出Router軟件
4.1 驅(qū)動程序的結(jié)構(gòu)
4.1 1驅(qū)動概述
4.1.2 NetFPGA驅(qū)動簡介
4.1.3 PCI驅(qū)動介紹
4.1.4 nf2設(shè)備探測和初始化
4.1.5 nf2設(shè)備卸載
4.2 設(shè)備驅(qū)動的操作
4.2.1 打開與關(guān)閉
4.2.2 數(shù)據(jù)包是如何接收的
4.2.3 驅(qū)動如何發(fā)送數(shù)據(jù)包
4.2.4 這樣來配置硬件板卡——ioctl
4.2.5 換一種方式來實現(xiàn)驅(qū)動程序
4.3 用戶界面分析
4.3.1 為什么要有用戶界面
4.3.2 用戶界面如何操控硬件
第3篇 再會NetFPGA
第5章 經(jīng)典應(yīng)用剖析
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章 開發(fā)實踐
6.1 選擇流量檢測
6.2 硬件設(shè)計方法
6.2.1 開始前的準備
6.2.2 設(shè)計正確的module
6.2.3 提交放心的module
6.2.4 添加新的module
6.3 驅(qū)動設(shè)計方法
6.3.1 驅(qū)動設(shè)計準備
6.3.2 提升數(shù)據(jù)傳輸速率的兩種方法
6.3.3 怎樣更加輕松地使用驅(qū)動程序
6.4 應(yīng)用程序設(shè)計方法
6.4.1 功能驗證利器C語言程序
6.4.2 Java編寫GUI讓你的演示更nice
6.4.3 MakefiIe淺談
6.5 系統(tǒng)調(diào)試
第7章 皆可NetFPGA
7.1 高性能的NetFPGA
7.1.1 目標平臺
7.1.2 硬件移植
7.1.3 PCIe驅(qū)動開發(fā)
7.2 輕量級的NetFPGA
7.3 NetFPGA資源共享
附錄NFP2.0的改進
參考文獻
5.3.1 了解openFlowSwitch
最初的想法很簡單:我們都知道絕大多數(shù)Switch和Router。上都有一個:flowtable(典型的就是TCAM),用來實現(xiàn)防火墻、NAT、QoS及網(wǎng)絡(luò)數(shù)據(jù)統(tǒng)計。而不同供應(yīng)商設(shè)備上的flowtable總是不同,我們需要定義一個適用于大多數(shù)Switch和Router的通用功能集,OpenF、low時該功能集進行了擴展,同時提供了一個開放的協(xié)議用來配置不同Switch和Router上的flowtable。利用OpenFlow網(wǎng)絡(luò)管理者可以很好地區(qū)分實驗流和工作流,研究人員通過選擇Packet路由線路和處理接收的Packet來控制自己的實驗流,因此,可以嘗試新的路由協(xié)議、安全模型、地址調(diào)度和選擇IP。當(dāng)然,工作流量也可以獨立而正常的工作。