關鍵字:FPGA 1553B總線
MIL-STD-1553 總線是美國20 世紀80 年代制定的第一個軍用數據總線標準, 它是一種串行的數據總線。
該總線標準自制定后廣泛應用于軍用飛機、車輛、船舶中, 并鑒于其高可靠性和靈活性, 逐漸應用在許多其他機動平臺上。
1553B 是一種時分制指令/響應式多路傳輸數據總線, 總線上的所有消息傳輸都由總線控制器發起, 遠程終端對發出的指令應給予回答( 響應) 并執行相關操作。
這種方式非常適合集中控制的分布式處理系統。1553B總線通信系統是由總線控制器、遠程終端、總線監控器三部分組成。一個通信總線上最多可以掛32 個遠程終端, 傳輸介質采用屏蔽雙絞線, 對噪聲等干擾有很好的抑制能力。1553B 總線的數據傳輸率為1 Mb/s ,在一次消息傳輸中最多可以傳送32 個字, 所有單次傳輸的時間較短, 具有很好的實時性。
在MIL-STD-1553 總線通信系統中, 總線接口板是系統的關鍵部分, 其中核心部分的接口電路是總線應用中的主要制約因素。在1553B 總線得到廣泛應用的今天, 國內應用1553B 總線協議的通信模塊的解決方案多采取基于進口1553B 總線協議芯片來開展相關設計, 如UT 公司的UTl553B 協議芯片、DDC 公司的高級協議處理芯片BU-61580 等, 雖然這些芯片能夠完成協議功能, 但價格昂貴、靈活性差, 這些弱點在一定程度上限制了設計能力, 因此提出一種新的基于嵌入式方法實現的1553B 數據總線接口邏輯。
1 系統總體設計方案
本文采用Xilinx 公司的FPGA 芯片作為協議處理核心器件, 選用TI 公司的TMS320C5510 作為主處理器負責接收FPGA 處理過的數據和調度FPGA 的具體操作。
總體方案的系統結構如圖1 所示。
1.1 模擬收發部分電路設計
由于1553B 總線上傳輸的是雙極性的差分信號, 主處理器不能直接接收來自總線上的數據, 所以需要信號調制解調及電平轉換電路。
電平轉換部分一方面將總線上傳輸的電平信號轉換成標準的CMOS 電平供處理器使用, 另一方面將處理器發出的CMOS 信號變成總線標準進行傳輸。模擬收發器部分簡單地說就是將單極性曼徹斯特編碼和雙極性曼徹斯特編碼相互轉換。本文采用HOLT 公司的HI -1567PSI , 它是一款專門為MIL-STD-1553 開發的模擬收發器, 供電電壓為3.3 V, 通過隔離變壓器連接到總線上。HI-1567PSI 是雙通道收發器結構, 因此要有兩個隔離變壓器與其相連接。
1.2 總線接口的數字通信部分
數字通信部分是1553B 總線接口模塊的核心, 完成協議數據的收發處理, 由可編程邏輯器件Virtex 系列芯片和DSP 芯片組成。FPGA 芯片在模塊中起到1553B 通道的作用, 接收總線上送來的數據并根據協議進行處理之后送給處理器。FPGA 模塊中開辟了足夠空間的FIFO存儲處理后的數據, 當達到一定數量后, 主處理器采用中斷的方式讀取FIFO 中的數據。在本文的設計中, 為了便于觀察實驗結果, 將DSP 接收到的數據送到串口上進行顯示。同樣地,DSP 將要發送的數據送到FPGA 開辟的另一個FIFO 中, 當每個數據編碼結束后通過狀態機程序產生FIFO 信號的時鐘讀取下一個數據進行編碼,所以這里的FIFO 采用的是異步的工作方式。
2 核心模塊功能分析
總線接口模塊最主要的部分是FPGA 實現的功能,其總體功能如圖2 所示。
FPGA 中最重要的部分是發送器和接收器, 現將這兩部分的工作過程做簡要分析。
2.1 數字發送器
(1)DSP 將要發送的數據依次送到發送FIFO 中進行存儲, 硬件將根據狀態機運行情況產生FIFO 讀時鐘讀取數據并送到同步頭產生器。
(2)根據要發送的是狀態/命令字或數據字在同步頭產生器中加上相應的同步頭, 若是狀態/命令字則在有效數據前加上3 個二進制位, 先正后負, 正負電平各占1.5 bit , 數據字則相反。
(3) 奇偶校驗器通過將有效數據位的各位進行異或即可實現。
(4 ) 硬件將經過奇偶校驗器的數據送到曼徹斯特編碼器進行編碼, 編碼器的實現相對較簡單。編碼時鐘采用2 MHz , 有效數據位和奇偶校驗位都采用曼徹斯特碼的形式發送, 加上同步頭共40 bit 二進制位, 使用2 MHz的時鐘發送到1553B 數據總線上。
在數字發送部分控制狀態機是保證時序的關鍵所在, 狀態機不僅控制發送FIFO 的時鐘, 同時也有效地輸出編碼的觸發信號。狀態機的狀態轉移如圖3 所示。
2.2 數字接收器
(1)FPGA 將經過模擬電路后的單極性曼徹斯特碼送到同步頭檢測器, 提取同步頭后進行奇偶校驗, 然后再送到解碼器。
(2) 解碼器采用8 MHz 的時鐘進行采樣, 由于曼徹斯特編碼在時鐘的中間時刻有電平的跳變, 所以在采樣到跳變沿的下一個時鐘將采樣到的數據取反就得到二進制碼。同時, 當計數器計數到132 時對一個有效數據字解碼結束產生使能信號停止采樣, 將17 bit 二進制數放到移位寄存器中實現串并轉換。
(3) 解碼器在解碼完一個數據后會產生接收FIFO的時鐘信號, 將數據送到接收FIFO 中, 當FIFO 中達到可編程滿設定的數據后便產生中斷信號, 通知DSP 將數據讀走。
3 功能仿真及試驗結果分析
在研究分析了1553B 總線接口模塊的功能及系統設計后, 在實驗室經過PCB 設計投產了兩塊板卡, 搭建了實驗平臺并進行功能驗證。由于實驗室條件有限,功能驗證的設計流程是將發送模塊DSP 發送的數據經過FPGA 處理, 得到曼徹斯特編碼, 并經過模擬收發器、耦合變壓器后連接到接收模塊的輸入端, 信號經過模擬電路部分送到FPGA 解碼后送給DSP 處理。
在總線接口模塊中, 曼徹斯特編解碼是實現功能的核心部分, 所以編碼數據和解碼數據是進行功能驗證時觀察的重點。為了觀察曼徹斯特編解碼是否正確, 這里采用Xilinx 的Chip Scope 邏輯分析儀觀察數據,serial_data 是發送模塊經過編碼部分處理后的串行數據,rx_dword 是接收模塊中經過解碼部分得到的16 bit 數據, 對比這兩個數據的波形是否滿足曼徹斯特編碼標準即可驗證設計的準確性, 用Chip Scope 捕捉到的波形如圖4 所示。
從上面的波形圖中可以看到, busy 信號在編碼的過程中一直為高電平, 在編碼結束后的一個編碼時鐘周期內為低電平。rx_dval 信號在解碼結束的一個解碼時鐘周期內為高電平, 說明此時解碼結束, 接收到的數據rx_dword 為5 678,對比發送的數據和編碼數據serial_data,說明編解碼均正確。
同時, 為了觀察DSP 發送的數據與接收模塊DSP 接收的數據是否正確, 提高測試數據的直觀性, 在這里加上串口調試助手, 通過RS232 總線傳輸接收數據, 于PC機平臺上運行串口調試助手觀察接收數據。
在分析了1553B 總線接口模塊的功能后介紹了總線接口部分的FPGA 系統設計, 在搭建的平臺上進行了功能驗證, 實驗過程中獲得的數據表明了論文中設計的接口模塊的功能達到了預期目標要求。