本實(shí)用新型涉及數(shù)據(jù)通信技術(shù)領(lǐng)域,具體地說(shuō)是一種基于FPGA的CAM結(jié)構(gòu)。
背景技術(shù):
隨著通信技術(shù)的快速發(fā)展,網(wǎng)絡(luò)中數(shù)據(jù)包的傳輸速度越來(lái)越高,例如在交換機(jī)領(lǐng)域中,如果采用傳統(tǒng)的軟件方式進(jìn)行路由或者M(jìn)AC表查詢(xún),速度比較慢,無(wú)法保證數(shù)據(jù)的及時(shí)傳輸。
CAM芯片具有并行查找的優(yōu)勢(shì),查詢(xún)的時(shí)間與CAM內(nèi)包含的數(shù)據(jù)多少無(wú)關(guān),使得CAM在網(wǎng)絡(luò)中得到廣泛的應(yīng)用。但是在一些中小的項(xiàng)目中,尤其是在FPGA的項(xiàng)目中,如果采用外置的CAM芯片,首先CAM芯片的利用率不會(huì)很高,其次增加了成本。
技術(shù)實(shí)現(xiàn)要素:
本實(shí)用新型的技術(shù)任務(wù)是解決現(xiàn)有技術(shù)的不足,提供一種基于FPGA的CAM結(jié)構(gòu)。
本實(shí)用新型解決其技術(shù)問(wèn)題所采用的技術(shù)方案是:
一種基于FPGA的CAM結(jié)構(gòu),包括
一個(gè)用于存儲(chǔ)比較數(shù)據(jù)信息的寄存器模塊組,所述寄存器模塊組包括至少兩個(gè)寄存器模塊;
一個(gè)用于判斷寄存器模塊組中是否有待比較數(shù)據(jù)的比較器模塊組,比較器模塊組具有輸入端口,比較器模塊組至少兩個(gè)比較器模塊,比較器模塊組中的比較器模塊與寄存器模塊組的寄存器模塊一一對(duì)應(yīng)并相連,待比較數(shù)據(jù)由比較器模塊組的輸入端口進(jìn)行輸入;
還包括
一個(gè)將比較數(shù)據(jù)寫(xiě)入寄存器模塊組的寫(xiě)入模塊;
一個(gè)用于選擇寄存器模塊組查找范圍的選擇模塊,選擇模塊連接于比較器模塊組,通過(guò)配置選擇模塊的輸入并行比較寄存器模塊組中的寄存器模塊,比較器模塊組中的比較器模塊輸出與待比較數(shù)據(jù)相匹配的寄存器模塊信息;
兩個(gè)MUX模塊,寫(xiě)入模塊通過(guò)其中一個(gè)MUX 模塊將比較數(shù)據(jù)的信息寫(xiě)入寄存器模塊中進(jìn)行存儲(chǔ),比較器模塊組中的比較器模塊通過(guò)另一個(gè)MUX 模塊輸出與待比較數(shù)據(jù)相匹配的寄存器模塊在寄存器模塊組的地址信號(hào)。
具體的,寫(xiě)入模塊包括寫(xiě)使能、寫(xiě)地址端口和寫(xiě)數(shù)據(jù)端口。
具體的,寄存器模塊組中包含偶數(shù)個(gè)寄存器模塊,比較器模塊組中也相應(yīng)的包含偶數(shù)個(gè)比較器模塊,通過(guò)配置選擇模塊的輸入,將與比較器模塊一一相連的寄存器模塊均分成至少兩部分,以并行比較同一部分的寄存器模塊。
優(yōu)選,寄存器模塊組包括四個(gè)寄存器模塊,相應(yīng)的,比較器模塊組包括四個(gè)比較器模塊,通過(guò)配置選擇模塊的輸入將與比較器模塊一一相連的寄存器模塊均分成兩部分,每部分包括兩個(gè)寄存器模塊,以并行比較同一部分的兩個(gè)寄存器模塊。
本實(shí)用新型的一種基于FPGA的CAM結(jié)構(gòu)與現(xiàn)有技術(shù)相比所產(chǎn)生的有益效果是:
本實(shí)用新型設(shè)計(jì)合理,結(jié)構(gòu)簡(jiǎn)單,可以并行比較輸入數(shù)據(jù)與寄存器組所有數(shù)據(jù),而與寄存器組的大小無(wú)關(guān),提高了查找效率。
附圖說(shuō)明
附圖1是本實(shí)用新型的結(jié)構(gòu)原理圖。
圖中各標(biāo)號(hào)表示:
10、寄存器模塊組,20、比較器模塊組,30、寫(xiě)入模塊,40、選擇模塊,
50、第一MUX模塊,60、第二MUX模塊。
具體實(shí)施方式
下面結(jié)合附圖1,以一個(gè)4x4的CAM結(jié)構(gòu)圖為例,對(duì)本實(shí)用新型的一種基于FPGA的CAM結(jié)構(gòu)作以下詳細(xì)說(shuō)明。
如附圖1所示,本實(shí)用新型的一種基于FPGA的CAM結(jié)構(gòu),其結(jié)構(gòu)包括
一個(gè)用于存儲(chǔ)比較數(shù)據(jù)信息的寄存器模塊組10,所述寄存器模塊組10包括至少兩個(gè)寄存器模塊;
一個(gè)用于判斷寄存器模塊組10中是否有待比較數(shù)據(jù)的比較器模塊組20,比較器模塊組20具有輸入端口,比較器模塊組20至少兩個(gè)比較器模塊,比較器模塊組20中的比較器模塊與寄存器模塊組10的寄存器模塊一一對(duì)應(yīng)并相連,待比較數(shù)據(jù)由比較器模塊組20的輸入端口進(jìn)行輸入。
所述CAM結(jié)構(gòu)還包括
一個(gè)將比較數(shù)據(jù)寫(xiě)入寄存器模塊組10的寫(xiě)入模塊30;
一個(gè)用于選擇寄存器模塊組10查找范圍的選擇模塊40,所述選擇模塊40連接于比較器模塊組20,通過(guò)配置選擇模塊40的輸入并行比較寄存器模塊組10中的寄存器模塊,比較器模塊組20中的比較器模塊輸出與待比較數(shù)據(jù)相匹配的寄存器模塊信息;
第一MUX模塊50和第二MUX模塊60,寫(xiě)入模塊30通過(guò)第一MUX模塊50將比較數(shù)據(jù)的信息寫(xiě)入寄存器模塊中進(jìn)行存儲(chǔ),比較器模塊組20中的比較器模塊通過(guò)第二MUX 模塊輸出與待比較數(shù)據(jù)相匹配的寄存器模塊在寄存器模塊組10的地址信號(hào)。
寫(xiě)入模塊30包括寫(xiě)使能、寫(xiě)地址端口和寫(xiě)數(shù)據(jù)端口。
寄存器模塊組10包括四個(gè)寄存器模塊,分別稱(chēng)為寄存器模塊1、寄存器模塊2、寄存器模塊3、寄存器模塊4;相應(yīng)的,比較器模塊組20包括四個(gè)比較器模塊,分別比較器模塊1、比較器模塊2、比較器模塊3、比較器模塊4,通過(guò)配置選擇模塊40的輸入,將寄存器模塊組10中的四個(gè)寄存器模塊均分成兩部分,即寄存器模塊1和寄存器模塊2為一部分,寄存器模塊3和寄存器模塊4為一部分,以并行比較寄存器模塊1和寄存器模塊2,或者寄存器模塊3和寄存器模塊4。
本實(shí)用新型工作過(guò)程:
1)向CAM中寫(xiě)比較數(shù)據(jù)。首先通過(guò)寫(xiě)入模塊30的寫(xiě)地址端口和寫(xiě)數(shù)據(jù)端口輸入wr_addr及wr_data,同時(shí),第一MUX模塊50根據(jù)wr_addr向指定的寄存器模塊寫(xiě)入wr_data。此過(guò)程為CAM內(nèi)容寫(xiě)入。
2)指定并行比較的寄存器模塊數(shù)目。當(dāng)選擇模塊40中sel信號(hào)為1時(shí),使能比較器模塊1和比較器模塊2,而比較器模塊3和比較器模塊4不工作,此時(shí)待比較數(shù)據(jù)在寄存器模塊1和寄存器模塊2中并行查找。反之,當(dāng)sel信號(hào)為0時(shí),待比較數(shù)據(jù)在寄存器模塊3和寄存器模塊4中并行查找。在寄存器模塊數(shù)目多時(shí),選擇查找范圍可以降低結(jié)構(gòu)功耗。
3)輸出match信號(hào)。當(dāng)比較器模塊中任意一個(gè)的輸出結(jié)果為1時(shí),match信號(hào)就為1,表示在CAM結(jié)構(gòu)中找到一個(gè)匹配的數(shù)據(jù)。
4)輸出match_addr信號(hào)。第二MUX模塊60根據(jù)每個(gè)比較器模塊的輸出可以判定是哪一個(gè)寄存器模塊的數(shù)值與待比較數(shù)據(jù)相等,從而得到輸出地址。
最后需要說(shuō)明的是,以上內(nèi)容僅用以說(shuō)明本實(shí)用新型的技術(shù)方案,而非對(duì)本實(shí)用新型保護(hù)范圍的限制,盡管該具體實(shí)施方式部分對(duì)本實(shí)用新型作了詳細(xì)地說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可以對(duì)本實(shí)用新型的技術(shù)方案進(jìn)行修改或者等同替換,而不脫離本實(shí)用新型技術(shù)方案的實(shí)質(zhì)和范圍。