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