何贊園,王 凱,吉立新
(國家數(shù)字交換系統(tǒng)工程技術(shù)研究中心,鄭州 450002)
傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)是基于某種特定場景進(jìn)行語音或圖像數(shù)據(jù)實時采集,采集的容量都僅局限于單路或多路[1-3]。而在電路交換域中,往往面臨著數(shù)以萬計的通道數(shù)據(jù)需要采集,傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)就顯得力不從心。在電路交換領(lǐng)域中,也有使用專用傳輸設(shè)備,直接和傳輸線路對接,數(shù)據(jù)流經(jīng)過串并轉(zhuǎn)換后映射到外部存儲器中,由CPU或者DSP按照訪問內(nèi)存的方式完成數(shù)據(jù)的采集、封裝、輸送至大數(shù)據(jù)庫。采用處理器直接對數(shù)據(jù)進(jìn)行處理,這種數(shù)據(jù)采集模式對于處理器的性能要求較高,處理器的處理能力直接會影響到數(shù)據(jù)采集的實時性,而且隨著傳輸線路端口的增加,投入成本將成線性增加,處理器的處理能力會成為海量數(shù)據(jù)采集的瓶頸。本文介紹一種基于現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)實現(xiàn)的時分復(fù)用模式(Time Division Multiplexing,TDM)線路數(shù)據(jù)采集方法,集成可編程片上系統(tǒng)(System on a Programmable Chip,SOPC)技術(shù),完成信令處理引導(dǎo),硬件電路自動完成媒體數(shù)據(jù)流的實時采集處理,并可以根據(jù)海量數(shù)據(jù)庫的要求,完成數(shù)據(jù)包的任意格式封裝,運行速度快,擴展性強,處理能力高,在電路交換域的海量數(shù)據(jù)實時采集中得到了很好的使用。
電路交換域的數(shù)據(jù)通常在信令引導(dǎo)下,以時分復(fù)用的形式完成交換和傳輸。本文設(shè)計的電路域數(shù)據(jù)采集系統(tǒng)包括線路接口單元、時隙交換單元和控制處理單元以及采集輸出單元。線路接口單元完成線路對接,時隙交換單元實現(xiàn)基于時隙的交換,將信令時隙匯聚由控制模塊處理,根據(jù)信令引導(dǎo),啟動采集單元完成采集、組包和輸出?;贔PGA實現(xiàn)的數(shù)據(jù)采集模塊接收CPU所下發(fā)的規(guī)則信息,對采集數(shù)據(jù)進(jìn)行封裝,最后以用戶數(shù)據(jù)報協(xié)議(User Datagram Protocol,UDP)的格式完成數(shù)據(jù)的輸出,實現(xiàn)基于電路交換域的數(shù)據(jù)實時采集功能。圖1為基于FPGA實現(xiàn)的電路交換域的高速數(shù)據(jù)組包系統(tǒng)模型。
圖1 數(shù)據(jù)采集模型功能框圖Fig.1 Model of data acquisition
如圖1所示,線路接口單元完成線路接入功能,產(chǎn)生多路脈沖編碼調(diào)制(Pulse Code Modulation,PCM)格式的數(shù)據(jù)。串行格式的數(shù)據(jù)流轉(zhuǎn)換為并行數(shù)據(jù),按照不同的交換時隙完成相應(yīng)端口的存儲,以并行數(shù)據(jù)的模式暫存于外部存儲器接口(External Memory Interface,EMIF)中[4],再按照時序關(guān)系要求,經(jīng)由EMIF接口轉(zhuǎn)存到采集FPGA的相應(yīng)空間。EMIF接口是交換網(wǎng)絡(luò)芯片與數(shù)據(jù)采集FPGA的單向數(shù)據(jù)接口。同步時鐘為16.384 MHz。幀同步信號指示每幀的第一個字,每幀長度2 048個字,按順序分別對應(yīng)2 048個端口。每個端口又分為來話和去話兩部分,來話占用數(shù)據(jù)的高字節(jié),去話占用數(shù)據(jù)的低字節(jié),相應(yīng)的時序關(guān)系如圖2所示。
圖2 EMIF接口數(shù)據(jù)時序圖Fig.2 Sequence diagram of EMIF interface data
選擇FPGA實現(xiàn)電路交換域的媒體數(shù)據(jù)自動組包,主要是考慮到FPGA特有的體系結(jié)構(gòu)和邏輯單元靈活、集成度高以及適用范圍寬的特點。在該設(shè)計中,選擇Altera公司的Cyclone IV系列的EP4CE40F23C8芯片為目標(biāo)FPGA[5]。
電路交換域數(shù)據(jù)采集系統(tǒng)的FPGA設(shè)計的功能框圖如圖3所示,主要包括全局功能模塊、基礎(chǔ)網(wǎng)絡(luò)模塊、數(shù)據(jù)采集模塊、數(shù)據(jù)流管理模塊以及以太網(wǎng)接口等5個模塊。
圖3 FPGA設(shè)計功能框圖Fig.3 FPGA design
如圖3所示,數(shù)據(jù)以高速并行時分復(fù)用的接口格式輸入,經(jīng)由FPGA中全局管理模塊以及數(shù)據(jù)流管理模塊完成格式數(shù)據(jù)處理,最后以AVALON總線[6]的格式由以太網(wǎng)接口模塊處理后,依照UDP的格式完成數(shù)據(jù)的輸出。
全局功能模塊為其他模塊提供CPU接口、時鐘網(wǎng)絡(luò)、管理寄存器以及復(fù)位等基礎(chǔ)功能,是該FPGA的基礎(chǔ)模塊。
CPU接口是外部處理器管理本芯片內(nèi)部功能的異步處理器接口,總線寬度16位,地址空間64K。信號邏輯遵循CPU接口標(biāo)準(zhǔn),并且使用了輸入/輸出同步寄存器,保證了芯片外部信號的穩(wěn)定性[7]。
時鐘網(wǎng)絡(luò)為FPGA內(nèi)部以及外圍其他電路提供時鐘。時鐘網(wǎng)絡(luò)使用了FPGA芯片內(nèi)部兩個鎖相環(huán)和全局時鐘網(wǎng)絡(luò)電路,為系統(tǒng)提供了可靠的、低延時和低抖動的時鐘信號質(zhì)量。為保證CPU可以隨時接管數(shù)據(jù)采集模塊和數(shù)據(jù)存儲器,使用了時鐘網(wǎng)絡(luò)中的時鐘選通電路,通過配置管理寄存器可以使這些模塊的同步時鐘在內(nèi)部時鐘與CPU同步時鐘之間互相切換,保證訪問時序同步。鎖相環(huán)之一的PLL2的參考時鐘由外部25 MHz晶振提供,輸出的125 MHz時鐘在片內(nèi)提供給千兆以太網(wǎng)OSI模型數(shù)據(jù)鏈路層(Media Access Control,MAC)的千兆媒體獨立接口(Gigabit Medium Independent Interface,GMII)接口使用。為外部千兆以太網(wǎng)PHY(OSI最低層,物理層)芯片提供25 MHz和125 MHz時鐘激勵。為使以太網(wǎng)接口可以工作在10/100/1 000M自適應(yīng)模式下,百兆以太網(wǎng)MII接口使用的25 MHz時鐘信號與125 MHz時鐘占用了一個時鐘選通電路,可以通過配置寄存器進(jìn)行切換。
管理寄存器是芯片的功能配置寄存器,存儲CPU與芯片內(nèi)部模塊之間的管理信息,其內(nèi)容與芯片的運行狀態(tài)有密切關(guān)系。CPU控制模塊根據(jù)信令引導(dǎo)采集過程,保證采集數(shù)據(jù)的有效性和完整性,并根據(jù)控制流程,配置每個數(shù)據(jù)流的標(biāo)志。
基礎(chǔ)網(wǎng)絡(luò)模塊實現(xiàn)CPU與千兆以太網(wǎng)接口間的互聯(lián),使CPU可以通過千兆以太網(wǎng)發(fā)送接收通信數(shù)據(jù)包。除了支持系統(tǒng)數(shù)據(jù)的UDP采集鏈信令數(shù)據(jù)包外,還需要支持通用網(wǎng)絡(luò)協(xié)議使用的以太網(wǎng)通信數(shù)據(jù)包。
基礎(chǔ)網(wǎng)絡(luò)模塊的基本結(jié)構(gòu)如圖4所示。
圖4 基礎(chǔ)網(wǎng)絡(luò)模塊基本結(jié)構(gòu)圖Fig.4 Basic network module structure
圖4中軟件接口負(fù)責(zé)基礎(chǔ)網(wǎng)絡(luò)模塊內(nèi)部的地址劃分和處理器命令存儲,并向處理器提供中斷源。
接收隊列和發(fā)送隊列實現(xiàn)通信數(shù)據(jù)包緩沖和時鐘域轉(zhuǎn)換。它們由兩個雙時鐘先入先出隊列構(gòu)成,這兩個隊列在與軟件接口的連接側(cè)使用處理器提供的50 MHz時鐘進(jìn)行同步讀寫操作,在與數(shù)據(jù)流管理模塊的連接側(cè)使用全局模塊提供的64 MHz系統(tǒng)時鐘進(jìn)行同步讀寫操作。這樣在系統(tǒng)內(nèi)部所有數(shù)據(jù)操作都是時鐘同步操作,保證系統(tǒng)傳輸可靠性。數(shù)據(jù)流管理模塊通過CH1通道實現(xiàn)接收隊列、發(fā)送隊列與千兆以太網(wǎng)MAC間的數(shù)據(jù)連接。數(shù)據(jù)采集模塊與千兆以太網(wǎng)MAC間的數(shù)據(jù)連接通過CH2通道實現(xiàn)。在系統(tǒng)中CH1比CH2有更高的處理優(yōu)先權(quán)。
數(shù)據(jù)采集模塊負(fù)責(zé)把高速并行EMIF接口的數(shù)據(jù)封裝成UDP格式數(shù)據(jù)包,其功能框圖如圖5所示。
圖5 數(shù)據(jù)采集模塊功能框圖Fig.5 Data acquisition module
EMIF接口是一個時分復(fù)用的數(shù)據(jù)接口,以幀的格式進(jìn)行數(shù)據(jù)封裝,每個數(shù)據(jù)幀分為4 096個時隙,每個時隙內(nèi)傳送一個端口的8位數(shù)據(jù)(1字節(jié)),端口也是4 096個。端口號與時隙號一一對應(yīng)。采集模塊把接收到的EMIF端口數(shù)據(jù)按照端口號排列,緩存在存儲器內(nèi),每個端口緩存512個字節(jié)(即512個數(shù)據(jù)幀)。緩存完成后這512個字節(jié)被封裝進(jìn)一個數(shù)據(jù)包內(nèi)發(fā)送到后臺服務(wù)器。如果要把4 096個端口的數(shù)據(jù)全部發(fā)送到服務(wù)器,則每次采集需要發(fā)送4 096個這樣的數(shù)據(jù)包。發(fā)送到后臺服務(wù)器的數(shù)據(jù)包使用UDP傳輸協(xié)議封裝。一個標(biāo)準(zhǔn)的UDP數(shù)據(jù)包在媒體層必須有以下幾部分:MAC段,以太網(wǎng)媒體層規(guī)定的標(biāo)準(zhǔn)格式,指定數(shù)據(jù)包的物理地址和使用的傳輸協(xié)議;UDP數(shù)據(jù)段,指定數(shù)據(jù)包的IP地址和傳輸端口;數(shù)據(jù)段,用戶數(shù)據(jù);開發(fā)系統(tǒng)(Field Bus Control System,F(xiàn)CS)段,數(shù)據(jù)包的循環(huán)冗余校驗碼(Cyclic Redundancy Interface,CRC)效驗信息。
在數(shù)據(jù)采集模塊組裝數(shù)據(jù)包的流程中,把UDP數(shù)據(jù)包分為兩個部分。
(1)軟件組裝段,這部分?jǐn)?shù)據(jù)是在每次數(shù)據(jù)采集任務(wù)開始后每個UDP數(shù)據(jù)包之間相同的數(shù)據(jù)段,由處理器在任務(wù)初始化的時候裝定;
(2)硬件組裝段,這部分?jǐn)?shù)據(jù)是在每次數(shù)據(jù)采集任務(wù)開始后每個UDP數(shù)據(jù)包之間不相同的數(shù)據(jù)段,由數(shù)據(jù)采集模塊在UDP數(shù)據(jù)包發(fā)送前組裝好。
數(shù)據(jù)采集模塊在工作時會通過數(shù)據(jù)緩沖管理子單元把EMIF接口接收到的數(shù)據(jù)寫入數(shù)據(jù)存儲器(此處假設(shè)是數(shù)據(jù)存儲器#1),每個端口緩沖512字節(jié),總共緩沖4 096個端口。緩沖完成后數(shù)據(jù)緩沖管理子單元會通知數(shù)據(jù)包生成子單元把數(shù)據(jù)取走。與此同時數(shù)據(jù)緩沖管理子單元會開始對另一片數(shù)據(jù)存儲器(數(shù)據(jù)存儲器#2)開始寫入操作。
在數(shù)據(jù)緩沖管理子單元對數(shù)據(jù)進(jìn)行采集的同時,數(shù)據(jù)包生成子單元同時在發(fā)送緩沖完成的數(shù)據(jù)。數(shù)據(jù)包生成子單元內(nèi)的數(shù)據(jù)讀取器在讀取一個端口的數(shù)據(jù)包前會掃描端口命令查找表。端口命令查找表是一個雙端口隨機存儲器,它的寫入端口由CPU處理器通過軟件接口和信令數(shù)據(jù)包分析器共同管理。讀出端口由數(shù)據(jù)讀取器管理。端口命令查找表內(nèi)部分為4 096個數(shù)據(jù)段,每個數(shù)據(jù)段存儲的數(shù)據(jù)都對應(yīng)一個端口。
在端口命令查找表中得到端口信令數(shù)據(jù)后,數(shù)據(jù)讀取器分別把信令數(shù)據(jù)和語音數(shù)據(jù)寫入數(shù)據(jù)包生成緩存。數(shù)據(jù)包生成緩存是一個雙端口隨機存儲器,寫入端口在初始化階段由CPU通過軟件接口管理,寫入UDP數(shù)據(jù)包的軟件實現(xiàn)數(shù)據(jù)段;在數(shù)據(jù)采集工作開始后寫入端口由數(shù)據(jù)讀取器接管,寫入UDP數(shù)據(jù)包的硬件實現(xiàn)數(shù)據(jù)段。
如圖6所示,數(shù)據(jù)流管理模塊負(fù)責(zé)讀出基礎(chǔ)千兆網(wǎng)絡(luò)模塊和數(shù)據(jù)采集模塊在發(fā)送端存儲器中準(zhǔn)備好的以太網(wǎng)數(shù)據(jù)包,轉(zhuǎn)換成AVALON-ST接口格式,傳輸?shù)角д譓AC模塊;從千兆MAC讀出接收到的以太網(wǎng)數(shù)據(jù)包,傳輸?shù)交A(chǔ)千兆網(wǎng)絡(luò)模塊的接收端。
在系統(tǒng)側(cè)數(shù)據(jù)流管理模塊的接口是存儲器接口,在以太網(wǎng)側(cè)是AVALON-ST接口。在該模塊內(nèi)需要進(jìn)行數(shù)據(jù)格式的轉(zhuǎn)換,總線轉(zhuǎn)換模塊會根據(jù)AVALON-ST總線的狀態(tài)實時把存儲器數(shù)據(jù)流轉(zhuǎn)換成符合AVALON總線格式的數(shù)據(jù)流。
如圖7所示,以太網(wǎng)接口模塊實現(xiàn)千兆以太網(wǎng)的MAC層和PHY層功能,其中MAC層由ALTERA公司提供的IP CORE“Triple-Speed Ethernet MegaCore”[8]在FPGA片內(nèi)實現(xiàn);PHY層由VITESSE公司的商用芯片VSC8201[9]實現(xiàn)。
千兆MAC實現(xiàn)的是10/100/1 000M自適應(yīng)以太網(wǎng)媒體層模塊,以太網(wǎng)數(shù)據(jù)由數(shù)據(jù)流管理模塊通過AVALON-ST接口提供。千兆MAC內(nèi)部實現(xiàn)數(shù)據(jù)緩存、CRC效驗、數(shù)據(jù)幀同步、沖突檢測等功能。
圖7 以太網(wǎng)接口模塊功能框圖Fig.7 Functional block diagram of Ethernet interface module
千兆MAC通過其自帶的管理接口掛載在CPU接口上進(jìn)行管理。由于AVALON-MM接口是32位數(shù)據(jù)總線,如果選擇的CPU是16位數(shù)據(jù)總線,則需進(jìn)行總線格式轉(zhuǎn)換,因此該設(shè)計中選擇使用AVALON-ST接口。
以太網(wǎng)MAC層和PHY層的接口采用MII /GMII格式。
在該系統(tǒng)中,系統(tǒng)的軟件接口共涉及到系統(tǒng)全局管理寄存器、接收發(fā)送隊列、數(shù)據(jù)包生成、數(shù)據(jù)存儲器、千兆MAC等五個方面。CPU可以通過訪問這些軟件接口來管理芯片的各項功能。假定本芯片訪問起始地址為BASE_ADDR=0x0000,其他的設(shè)置均為寄存器實際地址計算公式為BASE_ADDR+地址偏移量。
如表1所示,全局管理寄存器提供軟件復(fù)位,處理器初始化標(biāo)志,全局初始化在芯片工作環(huán)境改變后啟動,以保證芯片采集參數(shù)正常。芯片工作環(huán)境改變包括采集服務(wù)器、本板MAC地址、IP地址改變以及系統(tǒng)復(fù)位或重新上電等多種情況,還包括端口地址擴展和狀態(tài)寄存器。
表1 全局管理寄存器列表Table 1 Global management register list
如表2所示,接收和發(fā)送隊列模塊,接收發(fā)送隊列由先入先出隊列構(gòu)成,負(fù)責(zé)緩存處理器與以太網(wǎng)接口間的網(wǎng)絡(luò)數(shù)據(jù)包。
數(shù)據(jù)包生成模塊用于管理芯片的數(shù)據(jù)采集功能,數(shù)據(jù)采集功能需要軟件管理的是數(shù)據(jù)包生成緩存和端口命令查找表。訪問數(shù)據(jù)包生成緩存前,需要使芯片進(jìn)入初始化模式;訪問端口命令查找表前,需要進(jìn)入初始化或處理器管理模式。
CPU可以通過數(shù)據(jù)存儲器軟件接口訪問數(shù)據(jù)存儲,訪問存儲器前,需要使芯片進(jìn)入初始化模式,并且在端口地址擴展寄存器填寫相應(yīng)的端口序號和存儲器選擇位。
表2 接收和發(fā)送隊列模塊寄存器列表Table 2 Sending and receiving queue module register list
CPU通過千兆MAC軟件接口訪問千兆MAC模塊,接口地址偏移量為0x1800。在上電或復(fù)位后須重新初始化千兆MAC模塊,千兆MAC模塊不保留上次初始化的寄存器數(shù)據(jù)。
采用FPGA嵌入的邏輯分析儀對數(shù)據(jù)組包模塊進(jìn)行測試,結(jié)果如圖8所示。
圖8 數(shù)據(jù)組包邏輯分析儀實時數(shù)據(jù)Fig.8 Data from packet data logic analyzer
對照邏輯分析儀測試結(jié)果說明如下:
實驗的模型基于STM-1(Synchronous Transfer Mode,同步傳輸模式,STM-1的速度為155.52 Mb/s)的線路接入,通過程序可以模擬128路的呼叫同時進(jìn)行,呼叫端口覆蓋STM-1的所有端口,經(jīng)過該FPGA實現(xiàn)數(shù)據(jù)組包,最后根據(jù)采集服務(wù)器上的數(shù)據(jù)包來統(tǒng)計整個呼叫時間段的總呼叫數(shù)。
從模擬呼叫端的統(tǒng)計起呼總數(shù)為324 756個,在服務(wù)器接收側(cè)統(tǒng)計達(dá)到完全正確的輸出的數(shù)量為322 754個,可以達(dá)到99.38%,存在接近0.6%的丟包,在應(yīng)用的角度可以達(dá)到系統(tǒng)的設(shè)計要求。FPGA的以太網(wǎng)輸出速率計算出為244 Mb/s,以太網(wǎng)的設(shè)計帶寬能夠滿足系統(tǒng)的實際需求。
該設(shè)計基于FPGA實現(xiàn)電路交換域的數(shù)據(jù)組包,采用的是Altera公司的Cyclone IV系列的EP4CE40F23C8芯片設(shè)計,整個系統(tǒng)使用VHDL語言進(jìn)行描述,圖9為所使用的硬件資源情況。
圖9 FPGA硬件資源使用情況Fig.9 The FPGA hardware resource usage
本文選擇FPGA來完成電路交換域的數(shù)據(jù)組包,實現(xiàn)了1個STM-1的鏈路數(shù)據(jù)的實時組包;采用數(shù)字交換網(wǎng)絡(luò)完成實時STM-1的數(shù)據(jù)的并行處理,根據(jù)系統(tǒng)的時序要求,在FPGA中用標(biāo)準(zhǔn)硬件描述語言(Very High Speed Integrated Circuit Hardware Description Language,VHDL)語言合成數(shù)據(jù)組包設(shè)計,使實現(xiàn)電路交換域數(shù)據(jù)的實時采集開銷盡可能少,給數(shù)據(jù)的進(jìn)一步處理留下充足的時間。經(jīng)過測試,各方面都達(dá)到了很好的效果。考慮到應(yīng)用的可行性,目前該芯片僅能提供1個STM-1的數(shù)據(jù)容量采集,并且尚未達(dá)到100%采集正確率,還有待繼續(xù)優(yōu)化電路。通過該FPGA的設(shè)計,為后續(xù)可能進(jìn)行的IC設(shè)計提供了一個功能驗證平臺。
[1] 伍乾永,陳彬.基于FPGA的實時圖像數(shù)據(jù)采集模塊設(shè)計[J].微電子學(xué),2008,38(3):453-456.
WU Qian-yong,CHEN Bin.Design of Real-Time Image Data Acquisition Module Based on FPGA[J].Microelectronics,2008,38(3):453-456.(in Chinese)
[2] 蔣偉林,胡躍明,陳安.基于FPGA的實時圖像采集系統(tǒng)[J].計算機測量與控制,2011,19(5):1215-1231.
JIANG Wei-lin,HU Yue-ming,CHEN An.Image Acquisition System Based on SOPC[J].Computer Measurement & Control,2011,19(5):1215-1231.(in Chinese)
[3] 王永利.基于FPGA的實時圖像處理平臺的研究與設(shè)計[D].沈陽:東北大學(xué),2011.
WANG Yong-li.The Study and Design of Real-time Image Processing Platform Based on FPGA[D].Shenyang:Northeastern University,2011.(in Chinese)
[4] 朱文斌,劉春平,黃振.基于FPGA的高可靠性SDRAM控制器設(shè)計與實現(xiàn)[J].電訊技術(shù),2011,51(10):113-116.
ZHU Wen-bin,LIU Chun-ping,HUANG Zhen.Design and Implementation of a High Reliability SDRAM Controller Based on FPGA[J].Telecommunication Engineering,2011,51(10):113-116.(in Chinese)
[5] Altera Company.Altera Cyclone IV Device Handbook[M].San Jose,CA:Altera Company,2013.
[6] Altera Company.Altera Avalon Interface User Guide[M].San Jose,CA:Altera Company,2011.
[7] 何贊園,王凱,吉立新,等.基于ATCA架構(gòu)的可重構(gòu)通信處理機設(shè)計[J].電訊技術(shù),2014,54(2):115-120.
HE Zan-yuan,WANG Kai,JI Li-xing,et al.ATCA-based Reconfigurable Communication Processor Design[J].Telecommunication Engineering,2014,54(2):115-120.(in Chinese)
[8] Altera Company.Altera Triple Speed Ethernet MegaCore User Guide[M].San Jose,CA:Altera Company,2012.
[9] VITESSE Company.VSC8201 Datasheet[EB/OL].(2006-10-12)[2014-05-20].http://www.vitesse.com.