黃赟 潘雷 丁輝

摘要:針對傳統總線無法同時滿足不同節點間高速通信、實時通信、電氣隔離、與故障隔離的問題,提出了基于M-LVDS總線的高速通信系統設計方案。系統用M-LVDS總線取代了傳統總線,用FPGA來實現M-LVDS總線控制器,可以實現節點的故障隔離。
關鍵詞:FPGA:M-LVDS;高速通信
中圖分類號:TP334.7 文獻標識碼:A 文章編號:1007-9416(2019)06-0019-02
M-LVDS總線能夠實現多個節點之間高速并發通信,總線速率最大可以達到100Mbps,總線上節點之間電氣隔離,而且每一個節點均采取措施進行錯誤檢測,永久故障節點會被關閉,而不會影響其他節點的正常工作。
1 M-LVDS總線簡介
M-LVDS總線是一種支持多節點的差分總線,支持多個節點之間高速傳輸數據。圖1展示了M-LVDS總線的拓撲結構。其中,各節點之間數據的傳輸采用雙網的方式,雙網的物理和功能都保持獨立,各自采用重發機制,以保證數據有效性。
2 FPGA的功能描述
在M-LVDS總線上每個節點都是一個獨立的嵌入式板卡,板卡內部包括處理器、存儲器和總線控制器等, M-LVDS總線控制器用FPGA實現,FPGA包含以下功能:
(1)多主仲裁:FPGA對總線進行監聽,只要總線空閑就可發起仲裁,仲裁通過就開始發送報文;(2)數據安全:FPGA內部采取措施進行錯誤檢測、錯誤標定及錯誤自檢;(3)故障隔離:FPGA能夠把永久故障和短暫擾動區分開來。永久故障的節點會被關閉;(4)報文控制:FPGA將信息均以固定報文格式發送;(5)信息路由:FPGA支持數據幀、維護幀和時鐘幀。
3 FPGA的邏輯設計
通過FPGA來實現M-LVDS總線控制器,FPGA內部包含了以下6個模塊:
(1)mlvds_regs寄存器子模塊:該模塊提供與CPU的接口,維護M-LVDS總線控制器中的可編程寄存器,包括:控制寄存器、狀態寄存器、中斷寄存器。(2)mlvds_tx_queue發送隊列子模塊:該模塊內部有數據FIFO緩存區,當一個完整幀寫入到數據FIFO時,將向mlvds_transmitter請求發送數據。(3)mlvds_transmitter發送子模塊:該模塊負責仲裁M-LVDS總線的使用權,節點在發送數據之前,必須先通過總線仲裁獲得總線使用權。只有獲得總線使用權后,才能將本節點的數據幀發送到總線上。(4)mlvds_sample接收采樣子模塊:該模塊負責用相位依次相差90°的4個時鐘同時對M-LVDS總線上的數據進行采樣,從而確保其中至少有1個時鐘采樣到了正確的數據幀。(5)mlvds_rx_queue接收隊列子模塊:該模塊負責接收MLVDS總線上的數據幀,并且會對接收到的數據幀進行過濾檢查,判斷是否符合本地節點的接收過濾規則,同時會將接收過程中的錯誤狀態信息反饋給CPU。(6)mlvds_link_monitor鏈路狀態監測子模塊:該模塊負載監測鏈路的當前狀態,包括總線是否已經連接上、總線是否處于空閑狀態、本節點是否處于正常狀態。
4 數據發送流程
M-LVDS總線上節點發送數據的流程:
步驟1,當節點有數據幀要發送時,首先CPU將數據寫入FPGA內的發送FIFO中;
步驟2,數據幀進入發送緩沖區,使發送緩沖區不為空;
步驟3,當發送緩沖區不為空時,FPGA會觸發一個數據發送請求;
步驟4,當FPGA內有數據發送請求時,仲裁通過則可以往總線上發送數據幀;
步驟5,根據CRC生成多項式:G(x)=x16+x15+x2+1,計算得到數據幀的CRC校驗值,將該CRC校驗值附在數據幀的后面一起進行并串轉換;
步驟6,將并串轉換后的數據發送到M-LVDS總線上。
5 數據接收流程
M-LVDS總線上節點接收數據的流程:
步驟1,FPGA用4個相位依次相差90°的時鐘同時對總線上的數據進行串行采樣,從而保證至少有一個時鐘能夠采樣到正確的數據;
步驟2,將采樣到的數據進行串并轉換,然后進行幀解析,提取出幀長,幀類型等字段;
步驟3,預先設定的幀長范圍是0~256字節,當收到的數據幀的長度超過這個范圍時則認為數據幀不合法,并丟棄;
步驟4,根據CRC生成多項式:G(x)=x16+x15+x2+1,對收到的數據幀進行CRC校驗,校驗通過則說明數據接收正確,否則說明數據接收錯誤,將數據幀丟棄;
步驟5,判斷節點的FPGA接收FIFO是否還有空間存放接收到的數據幀,如果沒有足夠的空間則會將數據幀丟棄,并產生錯誤報警;
步驟6,將數據幀放入FPGA接收FIFO中,供CPU讀取。
6 結語
文中描述的新技術已經被應用于安全計算機平臺CVC-200的開發,并獲得了現場長時間穩定運行的良好效果。新技術的采用解決了傳統總線無法同時滿足不同節點間高速通信、實時通信、電氣隔離、與故障隔離的問題,為安全系統設計中的數據傳輸提供了有效的方案。
參考文獻
[1] 李大鵬,李雯,王曉華.基于FPGA的高速LVDS接口的實現[J].航空計算技術,2012,42(05):115-118.
[2] 鄢玲玲,文豐,李輝景.一種基于LVDS高速傳輸的接口優化設計[J].電測與儀表,2016,53(20):80-83.
[3] 黃萬偉.Xilinx FPGA高速串行傳輸技術與應用[M].北京:電子工業出版社,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