黃赟 潘雷 丁輝

摘要:針對傳統(tǒng)總線無法同時(shí)滿足不同節(jié)點(diǎn)間高速通信、實(shí)時(shí)通信、電氣隔離、與故障隔離的問題,提出了基于M-LVDS總線的高速通信系統(tǒng)設(shè)計(jì)方案。系統(tǒng)用M-LVDS總線取代了傳統(tǒng)總線,用FPGA來實(shí)現(xiàn)M-LVDS總線控制器,可以實(shí)現(xiàn)節(jié)點(diǎn)的故障隔離。
關(guān)鍵詞:FPGA:M-LVDS;高速通信
中圖分類號(hào):TP334.7 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2019)06-0019-02
M-LVDS總線能夠?qū)崿F(xiàn)多個(gè)節(jié)點(diǎn)之間高速并發(fā)通信,總線速率最大可以達(dá)到100Mbps,總線上節(jié)點(diǎn)之間電氣隔離,而且每一個(gè)節(jié)點(diǎn)均采取措施進(jìn)行錯(cuò)誤檢測,永久故障節(jié)點(diǎn)會(huì)被關(guān)閉,而不會(huì)影響其他節(jié)點(diǎn)的正常工作。
1 M-LVDS總線簡介
M-LVDS總線是一種支持多節(jié)點(diǎn)的差分總線,支持多個(gè)節(jié)點(diǎn)之間高速傳輸數(shù)據(jù)。圖1展示了M-LVDS總線的拓?fù)浣Y(jié)構(gòu)。其中,各節(jié)點(diǎn)之間數(shù)據(jù)的傳輸采用雙網(wǎng)的方式,雙網(wǎng)的物理和功能都保持獨(dú)立,各自采用重發(fā)機(jī)制,以保證數(shù)據(jù)有效性。
2 FPGA的功能描述
在M-LVDS總線上每個(gè)節(jié)點(diǎn)都是一個(gè)獨(dú)立的嵌入式板卡,板卡內(nèi)部包括處理器、存儲(chǔ)器和總線控制器等, M-LVDS總線控制器用FPGA實(shí)現(xiàn),F(xiàn)PGA包含以下功能:
(1)多主仲裁:FPGA對總線進(jìn)行監(jiān)聽,只要總線空閑就可發(fā)起仲裁,仲裁通過就開始發(fā)送報(bào)文;(2)數(shù)據(jù)安全:FPGA內(nèi)部采取措施進(jìn)行錯(cuò)誤檢測、錯(cuò)誤標(biāo)定及錯(cuò)誤自檢;(3)故障隔離:FPGA能夠把永久故障和短暫擾動(dòng)區(qū)分開來。永久故障的節(jié)點(diǎn)會(huì)被關(guān)閉;(4)報(bào)文控制:FPGA將信息均以固定報(bào)文格式發(fā)送;(5)信息路由:FPGA支持?jǐn)?shù)據(jù)幀、維護(hù)幀和時(shí)鐘幀。
3 FPGA的邏輯設(shè)計(jì)
通過FPGA來實(shí)現(xiàn)M-LVDS總線控制器,F(xiàn)PGA內(nèi)部包含了以下6個(gè)模塊:
(1)mlvds_regs寄存器子模塊:該模塊提供與CPU的接口,維護(hù)M-LVDS總線控制器中的可編程寄存器,包括:控制寄存器、狀態(tài)寄存器、中斷寄存器。(2)mlvds_tx_queue發(fā)送隊(duì)列子模塊:該模塊內(nèi)部有數(shù)據(jù)FIFO緩存區(qū),當(dāng)一個(gè)完整幀寫入到數(shù)據(jù)FIFO時(shí),將向mlvds_transmitter請求發(fā)送數(shù)據(jù)。(3)mlvds_transmitter發(fā)送子模塊:該模塊負(fù)責(zé)仲裁M-LVDS總線的使用權(quán),節(jié)點(diǎn)在發(fā)送數(shù)據(jù)之前,必須先通過總線仲裁獲得總線使用權(quán)。只有獲得總線使用權(quán)后,才能將本節(jié)點(diǎn)的數(shù)據(jù)幀發(fā)送到總線上。(4)mlvds_sample接收采樣子模塊:該模塊負(fù)責(zé)用相位依次相差90°的4個(gè)時(shí)鐘同時(shí)對M-LVDS總線上的數(shù)據(jù)進(jìn)行采樣,從而確保其中至少有1個(gè)時(shí)鐘采樣到了正確的數(shù)據(jù)幀。(5)mlvds_rx_queue接收隊(duì)列子模塊:該模塊負(fù)責(zé)接收MLVDS總線上的數(shù)據(jù)幀,并且會(huì)對接收到的數(shù)據(jù)幀進(jìn)行過濾檢查,判斷是否符合本地節(jié)點(diǎn)的接收過濾規(guī)則,同時(shí)會(huì)將接收過程中的錯(cuò)誤狀態(tài)信息反饋給CPU。(6)mlvds_link_monitor鏈路狀態(tài)監(jiān)測子模塊:該模塊負(fù)載監(jiān)測鏈路的當(dāng)前狀態(tài),包括總線是否已經(jīng)連接上、總線是否處于空閑狀態(tài)、本節(jié)點(diǎn)是否處于正常狀態(tài)。
4 數(shù)據(jù)發(fā)送流程
M-LVDS總線上節(jié)點(diǎn)發(fā)送數(shù)據(jù)的流程:
步驟1,當(dāng)節(jié)點(diǎn)有數(shù)據(jù)幀要發(fā)送時(shí),首先CPU將數(shù)據(jù)寫入FPGA內(nèi)的發(fā)送FIFO中;
步驟2,數(shù)據(jù)幀進(jìn)入發(fā)送緩沖區(qū),使發(fā)送緩沖區(qū)不為空;
步驟3,當(dāng)發(fā)送緩沖區(qū)不為空時(shí),F(xiàn)PGA會(huì)觸發(fā)一個(gè)數(shù)據(jù)發(fā)送請求;
步驟4,當(dāng)FPGA內(nèi)有數(shù)據(jù)發(fā)送請求時(shí),仲裁通過則可以往總線上發(fā)送數(shù)據(jù)幀;
步驟5,根據(jù)CRC生成多項(xiàng)式:G(x)=x16+x15+x2+1,計(jì)算得到數(shù)據(jù)幀的CRC校驗(yàn)值,將該CRC校驗(yàn)值附在數(shù)據(jù)幀的后面一起進(jìn)行并串轉(zhuǎn)換;
步驟6,將并串轉(zhuǎn)換后的數(shù)據(jù)發(fā)送到M-LVDS總線上。
5 數(shù)據(jù)接收流程
M-LVDS總線上節(jié)點(diǎn)接收數(shù)據(jù)的流程:
步驟1,F(xiàn)PGA用4個(gè)相位依次相差90°的時(shí)鐘同時(shí)對總線上的數(shù)據(jù)進(jìn)行串行采樣,從而保證至少有一個(gè)時(shí)鐘能夠采樣到正確的數(shù)據(jù);
步驟2,將采樣到的數(shù)據(jù)進(jìn)行串并轉(zhuǎn)換,然后進(jìn)行幀解析,提取出幀長,幀類型等字段;
步驟3,預(yù)先設(shè)定的幀長范圍是0~256字節(jié),當(dāng)收到的數(shù)據(jù)幀的長度超過這個(gè)范圍時(shí)則認(rèn)為數(shù)據(jù)幀不合法,并丟棄;
步驟4,根據(jù)CRC生成多項(xiàng)式:G(x)=x16+x15+x2+1,對收到的數(shù)據(jù)幀進(jìn)行CRC校驗(yàn),校驗(yàn)通過則說明數(shù)據(jù)接收正確,否則說明數(shù)據(jù)接收錯(cuò)誤,將數(shù)據(jù)幀丟棄;
步驟5,判斷節(jié)點(diǎn)的FPGA接收FIFO是否還有空間存放接收到的數(shù)據(jù)幀,如果沒有足夠的空間則會(huì)將數(shù)據(jù)幀丟棄,并產(chǎn)生錯(cuò)誤報(bào)警;
步驟6,將數(shù)據(jù)幀放入FPGA接收FIFO中,供CPU讀取。
6 結(jié)語
文中描述的新技術(shù)已經(jīng)被應(yīng)用于安全計(jì)算機(jī)平臺(tái)CVC-200的開發(fā),并獲得了現(xiàn)場長時(shí)間穩(wěn)定運(yùn)行的良好效果。新技術(shù)的采用解決了傳統(tǒng)總線無法同時(shí)滿足不同節(jié)點(diǎn)間高速通信、實(shí)時(shí)通信、電氣隔離、與故障隔離的問題,為安全系統(tǒng)設(shè)計(jì)中的數(shù)據(jù)傳輸提供了有效的方案。
參考文獻(xiàn)
[1] 李大鵬,李雯,王曉華.基于FPGA的高速LVDS接口的實(shí)現(xiàn)[J].航空計(jì)算技術(shù),2012,42(05):115-118.
[2] 鄢玲玲,文豐,李輝景.一種基于LVDS高速傳輸?shù)慕涌趦?yōu)化設(shè)計(jì)[J].電測與儀表,2016,53(20):80-83.
[3] 黃萬偉.Xilinx FPGA高速串行傳輸技術(shù)與應(yīng)用[M].北京:電子工業(yè)出版社,2015.
Design of M-LVDS Bus Controller Based on FPGA
HUANG Yun,PAN Lei,DING Hui
(Hardware Technology Center of CASCO Signal Co., Ltd., Shanghai 200071)
Abstract:Aiming at the problem that traditional bus system cannot meet the requirements of real-time communication, high-speed communication, electrical isolation and fault isolation at the same time, a design scheme of high-speed communication system based on M-LVDS is proposed in the paper. The system uses M-LVDS to replace the traditional bus, and uses FPGA to realize the M-LVDS controller. And FPGA is the bridge device between CPU and M-LVDS. The test result shows that the operation of the system is stable, the transmission is accurate, and the expected transmission task is successfully completed. When FPGA detects the fault, FPGA can realize the fault isolation of the faulty node.
Key words:FPGA;M-LVDS;high-speed communication