本書根據(jù)作者長期教學科研實踐,圍繞路由器的典型結構,重點介紹基于Trie的IP路由查找電路、SDN流表電路、空分交換單元、共享存儲交換單元和復雜隊列管理器等5類典型電路,涵蓋了計算機網(wǎng)絡中常用的典型電路。所有電路均給出典型應用場景、算法原理、電路框圖、接口定義和工作流程,以及經(jīng)過實際驗證的RTL級設計代碼并進行詳細的注釋,可采用FPGA或專用集成電路加以實現(xiàn)。主要電路都給出仿真代碼和典型仿真結果,便于讀者對電路進行理解和分析。
目前,Verilog HDL類書籍普遍偏重基本語法教學和基本電路設計,或者講授FPGA設計流程,本書則重在幫助具有初步語法基礎的讀者通過對各類典型工程案例的學習,成體系地熟悉計算機網(wǎng)絡領域典型電路的設計與實現(xiàn),有效積累大規(guī)模數(shù)字系統(tǒng)設計知識和實際的工程技術經(jīng)驗,為進一步進行本領域的創(chuàng)新實踐打下堅實基礎。
本書具有以下主要特點: ①所選擇的案例均具有一定代表性,并且在現(xiàn)有書籍中涉及較少; ②每個案例均給出電路的應用場景、算法原理、電路設計代碼和仿真驗證代碼,完備性較高,易于學習; ③所有代碼都經(jīng)過工程實踐驗證,可以直接應用于計算機網(wǎng)絡類數(shù)字系統(tǒng)的設計,可以采用FPGA或者專用集成電路實現(xiàn); ④注重將數(shù)字系統(tǒng)設計方法學知識融入不同類型的設計案例中,有助于增加讀者對復雜數(shù)字系統(tǒng)設計工程學知識的了解,可對其他電路設計起到指導作用。
本書包括6章。
第1章為概述。簡單介紹計算機網(wǎng)絡的分層模型及路由器在計算機網(wǎng)絡中的基本功能。在此基礎上介紹路由器的典型結構、關鍵電路和部分基礎知識,為后面章節(jié)的閱讀與學習提供支撐。
第2章重點介紹全硬件最長前綴匹配電路的算法原理與電路實現(xiàn)。本章對應用于路由器等網(wǎng)絡設備中的IP地址最長前綴匹配技術進行較為全面的介紹,對基本二進制Trie的構造、匹配、刪除等操作的算法原理進行分析; 給出采用全硬件構造基本二進制Trie時的電路結構、電路工作原理、詳細設計代碼并進行仿真分析。針對基本二進制Trie在查找速度和存儲空間利用率上的不足,分析路徑壓縮二進制Trie查找電路的結構、算法原理、典型代碼和仿真分析結果。
第3章對基于哈希的查找技術進行較為系統(tǒng)的分析與設計實現(xiàn);诠5牟檎壹夹g可被應用于以太網(wǎng)交換機和軟件定義網(wǎng)絡(Software Defined Network,SDN)中多級流表的實現(xiàn)。SDN是近年來高速發(fā)展并被逐漸接受的網(wǎng)絡技術,流表是其實現(xiàn)路由查找的關鍵技術。本章重點分析多桶哈希查找電路的算法原理與電路實現(xiàn),同時,以此為基礎,設計典型多級流表電路并進行仿真分析。
第4章給出支持虛擬輸出隊列的多端口空分交換單元的完整設計。Crossbar是典型的空分交換單元,可廣泛應用于各種網(wǎng)絡設備中,包括以太網(wǎng)交換機和路由器等,也可作為IP核用于各種分布式處理系統(tǒng)中,進行不同處理單元之間的信息交互。本章給出包括虛擬輸入隊列、輸入仲裁器、輸出仲裁器在內的典型Crossbar電路,對設計代碼進行仿真分析。
第5章給出典型共享存儲交換結構的工作機制和電路實現(xiàn)。共享存儲交換結構由自由指針隊列管理器、基于鏈表的8優(yōu)先級隊列控制器以及頂層電路構成。本章對其電路結構、內部接口關系和工作流程進行說明,對其涉及的算法原理進行詳細分析,給出完整的設計代碼并進行仿真分析。
第6章重點設計支持資源預留的多用戶隊列管理器和基于DDR的多用戶隊列管理器。隊列管理器是路由器和各類協(xié)議處理器等網(wǎng)絡設備中的典型電路,可以根據(jù)需要同時建立和維護大量的邏輯隊列。本章設計的支持資源預留的隊列管理器可以為不同的邏輯隊列分配私有緩沖區(qū),保證緩沖區(qū)使用的公平性,同時,這些邏輯隊列還可以按需使用共享緩沖區(qū),提高緩沖區(qū)利用率,從而形成靈活的緩沖區(qū)分配與使用機制。支持資源預留的隊列管理器可以為不同的邏輯隊列,基于預先配置的信用值分配輸出帶寬,實現(xiàn)靈活的帶寬分配和多隊列輸出調度機制;贒DR的多用戶隊列管理器采用數(shù)據(jù)塊與數(shù)據(jù)分段相結合的緩沖區(qū)劃分與使用機制,可以兼顧緩沖資源按需動態(tài)分配和較低的硬件資源消耗,同時支持數(shù)據(jù)重傳,滿足特定的數(shù)據(jù)轉發(fā)與協(xié)議處理需求。
需要說明的是,路由器歷經(jīng)多代發(fā)展,可根據(jù)應用場景、轉發(fā)能力、設備結構、部署位置、鏈路類別等進行分類,形成復雜的設備型譜,涉及龐大的知識體系,無論哪本書都很難全面詳盡地加以介紹。本書圍繞路由器的基本功能,較為全面地介紹計算機網(wǎng)絡中常用的基本電路,給出典型設計代碼,旨在幫助學習者快速理解和掌握復雜數(shù)字系統(tǒng)設計技術,提升設計能力。
閱讀本書時,需要注意以下幾點:
(1) 本書的設計代碼均采用可綜合風格的Verilog HDL實現(xiàn),仿真驗證代碼主要基于task高效實現(xiàn)。
(2) 在代碼中主要使用FIFO和RAM兩類IP核。本書的IP核主要基于Xilinx的ISE或Vivado集成開發(fā)環(huán)境生成,如果使用其他開發(fā)環(huán)境,只需略作調整即可。本書的所有代碼都可以直接在Xilinx的ISE或Vivado集成開發(fā)環(huán)境下進行實際驗證和仿真分析,也可方便地移植到其他開發(fā)環(huán)境下。
(3) 本書中所有狀態(tài)機均采用混合類型而非傳統(tǒng)的米里型和摩爾型,更適合設計復雜狀態(tài)機,使代碼可讀性更強。
(4) 為了更好地分析仿真結果,模擬真實電路中的門延遲,在代碼的賦值語句中加入了延遲,有利于分析信號跳變與時鐘上升沿之間的關系。
本書由陸軍工程大學喬廬峰教授、陳慶華副教授、晉軍副教授和續(xù)欣副教授編著。魯銘洋、張棟、李榮健、王金旭等碩士研究生參與了部分代碼調試、仿真驗證和內容編寫工作,在此表示感謝。
喬廬峰2025年3月
喬廬峰,陸軍工程大學教授。長期從事通信、網(wǎng)絡類數(shù)字系統(tǒng)架構設計、關鍵算法研究和電路設計工作,多項設計以FPGA和專用集成電路形式實現(xiàn)并得到實際應用,積累了豐富的理論和工程實踐經(jīng)驗。發(fā)表各類論文50余篇,被SCI、EI檢索20余篇,獲省部級科技進步獎勵多項,公開出版教材8部。
陳慶華,陸軍工程大學副教授。長期從事計算機網(wǎng)絡技術、軟件算法研究和設計工作,負責和參與軍地科研項目十余項。獲省部級科技進步一等獎、二等獎和三等獎多項。發(fā)表各類論文30余篇,被SCI、EI檢索20余篇,公開出版教材兩部。
晉軍,陸軍工程大學副教授。長期從事通信技術、陣列天線技術、抗干擾技術、微波毫米波電路等算法研究和電路設計工作。多次獲得省部級科技獎勵,公開出版教材3部。
續(xù)欣,陸軍工程大學副教授。長期從事通信網(wǎng)絡、路由與交換技術、空間信息網(wǎng)絡、資源管理等方面的研究工作。發(fā)表學術論文三十余篇,獲國家發(fā)明專利授權十余項,公開出版教材4部。多次獲得省部級科技獎勵。
第1章計算機網(wǎng)絡典型電路概述
1.1計算機網(wǎng)絡簡介
1.2路由器的基本功能與
工作原理
1.3路由器的基本構成與
技術簡介
1.3.1路由器的基本
構成
1.3.2路由器的IP路由
查找技術
1.3.3路由器的交換
結構
1.3.4路由器的緩存
排隊機制
1.3.5路由器的常用隊列
調度機制
第2章基于Trie的路由查找算法
及電路實現(xiàn)
2.1基于Trie的IP路由
查找算法
2.1.1二叉樹查找原理
2.1.2路徑壓縮Trie
查找算法
2.1.3多分支Trie
查找算法
2.1.4層級壓縮Trie
查找算法
2.2基本二進制Trie的硬件電路
實現(xiàn)與仿真分析
2.2.1基本二進制Trie的電路
結構和算法原理
2.2.2基本二進制Trie電路
設計與仿真分析
2.3路徑壓縮二叉樹算法與
電路實現(xiàn)
2.3.1路徑壓縮二叉樹的
生成
2.3.2CTrie查找電路的
設計與仿真分析
第3章SDN流表電路算法與
電路實現(xiàn)
3.1哈希查找算法原理
3.2多桶哈希查找電路設計
與分析
3.3多級流表電路設計與分析
第4章典型空分交換單元的原理
與設計
4.1單級Crossbar的功能
4.2Crossbar的電路實現(xiàn)
4.2.1in_queue電路的設計
與實現(xiàn)
4.2.2in_arbiter_4_stream電路
的設計與實現(xiàn)
4.2.3out_arbiter_4_stream電路
的設計與實現(xiàn)
4.2.4sequencer電路的
設計
4.2.5crossbar_top_stream
電路的設計與仿真
分析
第5章共享存儲交換單元
5.1共享存儲交換單元的
工作原理
5.2共享緩存交換結構及
工作流程
5.2.1switch_core中的自由
指針隊列管理
電路
5.2.2隊列控制器電路
5.2.3switch_core電路
第6章常用多用戶隊列管理器與
調度器電路
6.1支持資源預留的多用戶隊列
管理器
6.1.1支持資源預留的
多用戶隊列管理器
電路結構
6.1.2支持資源預留的
多用戶隊列管理器
設計與仿真分析
6.2多用戶隊列調度器
6.2.1基于漏桶算法的
多用戶隊列調度器
電路結構
6.2.2多用戶隊列調度器
電路的設計與
仿真分析
6.3基于DDR的多用戶隊列
管理器
6.3.1基于DDR的多用戶隊列
管理器工作機制
6.3.2基于DDR的多用戶
隊列管理器設計與
仿真代碼
參考文獻