李正軍, 周志權(quán), 趙占鋒
(哈爾濱工業(yè)大學(xué)(威海)信息與電氣工程學(xué)院,山東 威海 264209)
?
基于FPGA的高速數(shù)據(jù)傳輸系統(tǒng)設(shè)計與實現(xiàn)
李正軍, 周志權(quán), 趙占鋒
(哈爾濱工業(yè)大學(xué)(威海)信息與電氣工程學(xué)院,山東 威海 264209)
為了滿足國家重點專項“量子科學(xué)實驗衛(wèi)星”中“量子存儲板”高速串行數(shù)據(jù)傳輸?shù)臏y試要求,提出了一種以Nios II嵌入式處理器為控制核心,TLK2711、RS422、USB2.0和千兆以太網(wǎng)為傳輸接口的高速數(shù)據(jù)傳輸解決方案;系統(tǒng)采用TLK2711完成高速數(shù)據(jù)的串并轉(zhuǎn)換,采用RS422完成命令和控制信號的傳輸,實現(xiàn)與“量子存儲板”的高速數(shù)據(jù)傳輸;利用Xilinx公司Zynq-7000芯片獨有的ARM+FPGA架構(gòu)實現(xiàn)千兆以太網(wǎng)完成數(shù)據(jù)的高速傳輸,利用EXAR公司XR21V1414 USB轉(zhuǎn)串口芯片實現(xiàn)命令、遙測等數(shù)據(jù)的傳輸;采用Labview編寫上位機控制整個系統(tǒng)的運行,實現(xiàn)命令發(fā)送、指令解析、運行狀態(tài)顯示、數(shù)據(jù)幀產(chǎn)生、高速數(shù)據(jù)傳輸、解析和存儲等功能;實測結(jié)果表明,此系統(tǒng)數(shù)據(jù)傳輸速率高達(dá)600 Mbps,滿足高速串行數(shù)據(jù)傳輸?shù)囊?,且具有穩(wěn)定性高、可靠性好等優(yōu)點。
Nios II;TLK2711;Zynq-7000;ARM+FPGA;千兆以太網(wǎng)
隨著數(shù)字信號處理技術(shù)的蓬勃發(fā)展,在雷達(dá)信號處理、遙感數(shù)據(jù)處理、無人機實時監(jiān)測、衛(wèi)星通信、量子通信、航測等眾多領(lǐng)域,復(fù)雜、龐大的數(shù)據(jù)傳輸和處理面臨著嚴(yán)峻的挑戰(zhàn)[1]。日益劇增的原始數(shù)據(jù)、龐大的實時運算量和高度復(fù)雜的算法都對處理、傳輸速度提出了更高的要求,高速、穩(wěn)定、安全、高效的數(shù)據(jù)傳輸方案成為整個系統(tǒng)不可分割的組成部分和技術(shù)難點。
TLK2711是一種基于串行/解串技術(shù)的高速收發(fā)器件,單路傳輸速度高達(dá)2.5 Gbit/s[2]。TLK2711采用VML差分信號,具有較好的抗干擾能力[3];采用自同步通信方式,利用時鐘和數(shù)據(jù)恢復(fù)技術(shù)實現(xiàn)串行代替并行傳輸,有效解決了傳輸中信號和時鐘的偏移問題。此外,串行技術(shù)充分利用傳輸媒介的信道容量,減少所需要的連接器的引腳數(shù)目,設(shè)備及電纜布線更為簡單,系統(tǒng)的抗干擾能力更強。
千兆以太網(wǎng)是在以太網(wǎng)基礎(chǔ)上發(fā)展起來的,完全兼容大量使用的以太網(wǎng),除了具有高效、高速、高性能等優(yōu)點外,還能實現(xiàn)電氣完全隔離,在數(shù)據(jù)傳輸中有顯著的優(yōu)勢。
Nios II是Altera公司推出的32位基于RISC指令集的處理器軟核。用戶可以根據(jù)自身的需求定制具有特定功能的嵌入式處理器[4]。隨著技術(shù)的發(fā)展,Nios II功能日益完善,處理能力逐漸增強,在FPGA中內(nèi)置軟核的數(shù)據(jù)處理方式已經(jīng)應(yīng)用于各種領(lǐng)域,并逐漸成為一種研究趨勢[5]。
本文根據(jù)國家重點專項“量子科學(xué)實驗衛(wèi)星”中“量子存儲板”的測試要求,以及TLK2711、Nios II和千兆以太網(wǎng)的眾多優(yōu)點,設(shè)計和實現(xiàn)了一種新型高速數(shù)據(jù)傳輸系統(tǒng)。該系統(tǒng)以定制的Nios II嵌入式處理器為控制核心,通過TLK2711和RS422與“量子存儲板”完成數(shù)據(jù)交互,將接收的數(shù)據(jù)通過千兆以太網(wǎng)、串口傳輸給上位機,上位機完成數(shù)據(jù)實時解析、存儲,顯示“量子存儲板”的運行狀態(tài);用戶將數(shù)據(jù)包、指令通過千兆以太網(wǎng)、串口下發(fā)給系統(tǒng),實現(xiàn)對“量子存儲板”的控制。
本系統(tǒng)以Altera公司的Cyclone V系列的EP5CGXFC3B7F23C8N芯片作為控制核心,內(nèi)嵌Nios II嵌入式處理器控制整個系統(tǒng)的運行。通過TLK2711和RS422與“量子存儲板”對接,TLK2711用于高速數(shù)據(jù)傳輸,RS422用于傳輸控制信號和命令。FPGA將TLK2711傳來的數(shù)據(jù)通過千兆以太網(wǎng)傳輸給上位機;上位機將數(shù)據(jù)包通過千兆以太網(wǎng)發(fā)送給FPGA,F(xiàn)PGA將接收的數(shù)據(jù)通過TLK2711和控制信號發(fā)送給“量子存儲板”實現(xiàn)高速數(shù)據(jù)的傳輸。上位機將命令通過串口發(fā)送給FPGA,F(xiàn)PGA完成命令解析和下發(fā),接收“量子存儲板”回傳的遙測數(shù)據(jù),將其發(fā)送給上位機。FPGA控制AD完成對供電接口電壓、電流的實時采樣,上傳結(jié)果,實現(xiàn)對電源的實時監(jiān)測。系統(tǒng)硬件結(jié)構(gòu)圖如圖1所示。
圖1 系統(tǒng)硬件結(jié)構(gòu)
1.1 千兆以太網(wǎng)模塊設(shè)計
千兆以太網(wǎng)模塊采用Xilinx最新的Zynq-7000芯片實現(xiàn),它將雙ARM Cortex-A9 MPCore處理器系統(tǒng)和可編程邏輯緊密集成在一起,實現(xiàn)了ARM和FPGA的無縫連接,設(shè)計者可以靈活選擇,并且其性能完全不亞于傳統(tǒng)的ARM+FPGA組合。本設(shè)計中將TCP/IP協(xié)議棧移植到ARM中實現(xiàn)千兆以太網(wǎng)功能,其FPGA部分用于時序控制和數(shù)據(jù)緩存。
為了降低維護難度,系統(tǒng)采用模塊化設(shè)計,該模塊只完成高速數(shù)據(jù)的傳輸。外部傳來的上行數(shù)據(jù)在FPGA側(cè)先用FIFO緩存,當(dāng)FIFO中的數(shù)據(jù)滿一幀后,將數(shù)據(jù)讀出、打包通過以太網(wǎng)發(fā)送給上位機,上位機按照固定的協(xié)議完成數(shù)據(jù)的解析、顯示、存儲;用戶將需要下發(fā)的數(shù)據(jù)包通過以太網(wǎng)下發(fā),該模塊完成解包并將數(shù)據(jù)寫入下行數(shù)據(jù)緩存FIFO中,外部數(shù)據(jù)接口監(jiān)測FIFO中是否有數(shù)據(jù),一旦有數(shù)據(jù)就將其讀出,控制TLK2711和控制信號將數(shù)據(jù)按照固定的幀格式發(fā)送給“量子存儲板”。數(shù)據(jù)傳輸方案如圖2所示。
圖2 千兆以太網(wǎng)數(shù)據(jù)傳輸方案
1.2 定制Nios II嵌入式處理器
Nios II嵌入式處理器用于控制整個系統(tǒng)的運行,代替?zhèn)鹘y(tǒng)的DSP+FPGA架構(gòu)中的DSP,這樣不僅節(jié)約了成本而且減小了系統(tǒng)的體積。該處理器的結(jié)構(gòu)如圖3所示。系統(tǒng)中Nios II嵌入式處理器主要用于接收上位機通過USB轉(zhuǎn)串口發(fā)送的指令,完成指令解析將結(jié)果用Status輸出,F(xiàn)PGA根據(jù)Status的值是能系統(tǒng);當(dāng)產(chǎn)生AD讀取上升沿中斷時,Nios II讀取AD采樣結(jié)果,按照固定的幀格式將數(shù)據(jù)打包通過串口發(fā)送給上位機,上位機按照協(xié)議完成解析、顯示。
圖3 Nios II嵌入式處理器結(jié)構(gòu)
2.1 FPGA程序概要設(shè)計
系統(tǒng)的FPGA程序采用Verilog HDL語言編寫,在TLK2711和控制信號的配合下完成與“量子存儲板”的高速數(shù)據(jù)傳輸。通信的數(shù)據(jù)幀格式如圖4所示。
圖4 高速數(shù)據(jù)傳輸幀格式
數(shù)據(jù)傳輸流程可分為TLK2711->千兆以太網(wǎng)和千兆以太網(wǎng)->TLK2711。
TLK2711->千兆以太網(wǎng):“量子存儲板”將數(shù)據(jù)通過TLK2711發(fā)送給FPGA,當(dāng)檢測到幀頭時開始將數(shù)據(jù)寫入FIFO,當(dāng)檢測到幀尾時停止寫FIFO完成一幀數(shù)據(jù)的傳輸,程序流程圖如圖5所示。當(dāng)FIFO中的數(shù)據(jù)滿一包時,啟動千兆以太網(wǎng)發(fā)送,將這一包數(shù)據(jù)打包傳給上位機。當(dāng)FIFO的剩余空間不足一幀是,關(guān)閉傳輸使能信號,傳完當(dāng)前幀后停止傳輸;當(dāng)FIFO的剩余空間大于一幀時,使能傳輸使能信號,繼續(xù)數(shù)據(jù)傳輸。
千兆以太網(wǎng)->TLK2711:用戶控制上位機將數(shù)據(jù)包發(fā)送給千兆以太網(wǎng)模塊,完成解包之后,將數(shù)據(jù)寫入TLK2711的發(fā)送緩存FIFO中并啟動發(fā)送。發(fā)送模塊從FIFO中讀取數(shù)據(jù),當(dāng)檢測到幀頭時,開始數(shù)據(jù)傳輸,檢測到幀尾時停止數(shù)據(jù)傳輸,完成數(shù)據(jù)的下發(fā),程序流程圖如圖6所示。
圖5 數(shù)據(jù)接收 圖6數(shù)據(jù)發(fā)送
2.2 Nios II程序設(shè)計
在Quartus II中利用Qsys完成Nios II嵌入式處理器搭建后,還需要在Nios II IDE中完成C語言程序設(shè)計。系統(tǒng)中Nios II軟核用于解析串口發(fā)來的命令、上傳AD采樣結(jié)果。
操作命令如表1所示,數(shù)據(jù)幀格式如圖7所示。
表1 操作命令
圖7 操作命令數(shù)據(jù)幀格式
本設(shè)計中串口的波特率設(shè)置為115200bps,數(shù)據(jù)幀格式如圖8所示。
圖8 串口數(shù)據(jù)幀格式
系統(tǒng)上電后,完成串口配置等初始化,當(dāng)產(chǎn)生串口接收中斷事件時,讀取數(shù)據(jù)、進(jìn)行命令幀判斷、解析,執(zhí)行相應(yīng)的操作。當(dāng)產(chǎn)生AD讀取中斷時,Nios II讀取采樣結(jié)果,按照數(shù)據(jù)幀格式打包,用串口查詢模式發(fā)送給上位機,程序流程圖如圖9所示。
圖9 Nios II 程序流程圖
命令幀判斷在這個程序中扮演著重要角色,只有它運行穩(wěn)定、準(zhǔn)確無誤,系統(tǒng)才能正常運行。命令幀判斷程序流程圖如圖10所示。首先檢測幀頭是否正確,其次檢查命令號是否正確,再次檢查數(shù)據(jù)長度是否正確,最后檢查校驗和是否正確。如果幀頭、命令號、數(shù)據(jù)長度和校驗和都正確,則這條命令正確,執(zhí)行其相應(yīng)操作,返回“命令正確”。如果幀頭、命令號、數(shù)據(jù)長度不正確,則計數(shù)器清零,該條命令丟棄。如果幀頭、命令號、數(shù)據(jù)長度正確,校驗和不正確返回“命令錯誤”。
圖10 命令幀判斷
2.3 上位機軟件設(shè)計
系統(tǒng)上位機軟件采用Labview設(shè)計,軟件由串口部分和千兆以太網(wǎng)部分組成,其結(jié)構(gòu)圖如圖11所示。
圖11 上位機結(jié)構(gòu)圖
串口部分:配置好串口控件后,將指令下發(fā),如收到“命令正確”回傳,則顯示命令發(fā)送正確,反之顯示命令未正確發(fā)送。遙測和AD采樣都有數(shù)據(jù)回傳,按照固定協(xié)議對數(shù)據(jù)完成解析、顯示。
千兆以太網(wǎng)部分:千兆以太網(wǎng)用于接收高速數(shù)據(jù),將網(wǎng)絡(luò)配置好,等待上傳數(shù)據(jù),當(dāng)接收到數(shù)據(jù)包后,根據(jù)協(xié)議完成數(shù)據(jù)解析、存儲;按照協(xié)議產(chǎn)生下發(fā)數(shù)據(jù)包,用戶可以根據(jù)自身的需求將數(shù)據(jù)包下發(fā)。
由于整個過程有嚴(yán)格的操作流程,為了防止用戶的誤操作,上位機采用互斥設(shè)計,嚴(yán)格控制操作流程。
完成系統(tǒng)軟硬件設(shè)計后,對系統(tǒng)功能和穩(wěn)定性進(jìn)行測試。
3.1 串口測試
將一條USB轉(zhuǎn)422線一頭接到系統(tǒng)的RS422接口一頭接到PC上,PC用來模擬“量子存儲板”。操作上位機,將命令下發(fā),觀察串口調(diào)試助手收到的數(shù)據(jù)是否正確;將“量子存儲板”應(yīng)該返回的數(shù)據(jù)通過串口調(diào)試助手發(fā)送,觀察上位機收到的數(shù)據(jù)是否正確,數(shù)據(jù)解析是否正確。經(jīng)測試,系統(tǒng)此部分能正常穩(wěn)定的運行。
3.2 高速數(shù)據(jù)傳輸測試
將TLK2711的收發(fā)通過同軸電纜短接,F(xiàn)PGA中按照幀格式產(chǎn)生數(shù)據(jù)并通過TLK2711發(fā)送出去,TLK2711將數(shù)據(jù)接收上傳,上位機完成數(shù)據(jù)解析、存儲后,觀察存儲數(shù)據(jù)中的幀計數(shù)是否連續(xù),若連續(xù),則系統(tǒng)運行正確,反之系統(tǒng)運行不正確。上位機將數(shù)據(jù)包下發(fā),由于TLK2711外部短接,系統(tǒng)會將下發(fā)的數(shù)據(jù)原封不動的上傳,上位機比較兩個數(shù)據(jù)包是否相同。經(jīng)測試,系統(tǒng)高速數(shù)據(jù)傳輸正常、穩(wěn)定,且傳輸速度高達(dá)600Mbps,現(xiàn)已交付使用。
基于FPGA的高速數(shù)據(jù)傳輸系統(tǒng)運行穩(wěn)定,成功模擬了“量子通信與流程控制板”和“量子實現(xiàn)主控板”,完成對“量子存儲板”的控制和高速數(shù)據(jù)傳輸、解析和存儲。系統(tǒng)設(shè)計中采用NiosII代替?zhèn)鹘y(tǒng)FPGA+DSP架構(gòu)中的DSP,實現(xiàn)全部功能。采用TLK2711作為高速傳輸接口,連接簡單傳輸速率高,有效解決了時鐘和信號偏移問題。采用千兆以太網(wǎng)與計算機互聯(lián),電氣完全隔離且數(shù)據(jù)傳輸速率高達(dá)600Mbps。系統(tǒng)采用模塊化設(shè)計,硬件通用性強,可以應(yīng)用于多種場合為高速數(shù)據(jù)傳輸提高了一個穩(wěn)定、高效的解決方案。
[1] 林 坤. 基于PCIe的高速數(shù)據(jù)采集卡的FPGA設(shè)計與實現(xiàn)[D]. 成都:電子科技大學(xué),2013.
[2]TexasInstrumentsIncorporated.TLK2711-SP: 1.6-Gb-psto2.5-GbpsclassVtransceiver[Z].Texas:TexasInstrumentIncorporated, 2012.
[3] 葉菁華. 高速串行數(shù)據(jù)發(fā)送器的研究[D]. 上海:復(fù)旦大學(xué),2005.
[4]AlteraCorp.NiosIISoftwareDeveloper’sHandbook[Z].Altera, 2005,89-120.
[5] 常蘇晉,楊建軍,劉維亭.基于NiosII軟核的LSINS數(shù)據(jù)采集與預(yù)處理[J]. 科學(xué)技術(shù)與工程,2012,12(25):6549-6553.
Design and Implementation of High-speed Data Transmission Based on FPGA
Li Zhengjun, Zhou Zhiquan, Zhao Zhanfeng
(School of Information and Electrical Engineering, Harbin Institute of Technology,Weihai 264209,China)
To satisfy the test requirements of Quantum Memory Board high-speed serial data transmission in national key project Quantum Science Experiment Satellite, this paper proposes a new solution to high-speed serial data transmission. Taking the high-speed requirement into consideration, the system takes a Nios II embedded processor as the control core. In addition, TLK2711, RS422, USB2.0 and Gigabit Ethernet are worked as the transmission interfaces. To be specific, TLK2711 and RS422 are separately used to complete the high-speed data conversion from serial to parallel and transmission between the system and Quantum Memory Board. Gigabit Ethernet which is constructed by the unique ARM+FPGA architecture contained in the Zynq-7000 chip of Xilinx, is taken to complete high-speed data transmission work. XR21V1414 chip of EXAR, which can convert USB to UART, is designed to realize the transmission of commands and telemetry data. An control system which integrates the following functions commands transmission, instruction analysis, test progress display, data frame producing, high-speed data transmission, analysis and storage is developed in Labview. The measured results show that the system has the advantages of high stability and reliability, besides the data transmission rate is up to 600 Mbps.
Nios II; TLK2711; Zynq-7000; ARM+FPGA; gigabit Ethernet
2016-03-04;
2016-04-25。
李正軍(1991-),男,陜西安康人,碩士研究生,主要從事數(shù)字信號處理方向的研究。
周志權(quán)(1973-),男,遼寧鐵嶺人,教授,博士研究生導(dǎo)師,主要從事數(shù)字信號處理、數(shù)字圖像處理方向的研究。
1671-4598(2016)09-0188-03
10.16526/j.cnki.11-4762/tp.2016.09.053
TP274.2
A