徐光輝,劉文佳
(上海航天電子技術研究所,上海 201109)
本文采用將所有子系統模塊的總線數據全部集合到基于FPGA實現的總線轉換橋模塊。通過在模塊內部對數據進行控制和管理,解決各個子系統模塊中數據交換問題,避免傳統方法中效率低下的缺點。
各系統間的總線轉換效率直接影響整個雷達系統的性能,本文設計的總線轉換橋IP核的結構如圖1所示,它在外圍實現所需總線接口功能,利用FPGA的可編程的特點及并行運行的特點,所有的外部總線設備都能同時進行數據的發送和接收,所有的數據在交換模塊里面實現數據的交換,隨后分發到對應的總線模塊上。

圖1 總線轉換橋結構
交換模塊是總線交換橋的核心模塊,它的效率直接影響系統的運行。本文所設計轉換橋的交換模塊可以將數據交換到各個目的總線上,交換模塊的結構圖如圖2所示,但是需要用戶遵循固定的數據封裝格式。

圖2 交換模塊的結構圖
圖2是交換模塊的結構圖,其中數據交換單元負責將所有通路上的數據傳送到對應的FIFO存儲上,以便目的設備來讀取相應的數據。中斷控制單元的八路中斷分別連接到六個總線外設上,當任何一個總線設備需要給其他設備發送數據時必須先產生中斷通知目的設備。目的設備根據狀態輸出來識別時哪個設備需要發送數據,然后向該設備申請讀數。數據解析狀態寄存器決定該數據的目的地。
通用異步收發器是一種異步串行通信總線,通信的發送方和接收方各自有獨立的時鐘,傳輸速度由雙方約定。
該串口模塊主要由接收中斷和串口中斷實現數據的收發。接收FIFO和接收控制共同組成接收邏輯,功能主要是從轉換橋模塊接收32位的數據,通過產生接收中斷將分解后8位數據傳送到OS中,隨后OS將數據發送到串口設備上。發送FIFO和發生控制組成發送邏輯單元,OS接收到出口中斷后,讀取串口設備的8位數據,并發送請求給發送邏輯。發送邏輯將數據打包成32位數據傳送到轉換橋模塊。
轉換橋中SPI模塊用來控制CAN總線數據收發。初始化配置和控制,數據管理模塊負責CAN總線上數據的解包打包處理,然后分發到控制模塊或者外圍的CAN節點上。
發送邏輯的功能主要是從總線轉換橋的控制模塊上接收32位的數據,然后存儲到接收FIFO上,由于一個CAN標準幀需要3個32位的數據字組成,因此數據管理連續讀取3次FIFO的數據組成一個標準幀。同樣接收邏輯的功能主要是從CAN總線上接收完整的一個標準幀,然后在數據管理里面對進行解包取出有效數據,將其拆分成32位存儲到接收FIFO里面。
數據管理主要集中在控制邏輯的設計上,本文采用oneshot編碼的有限狀態機作為控制,分別定義了9個工作狀態。
SPI模塊的控制狀態機開始處于Idle狀態,根據不同條件狀態機轉移到其他狀態,狀態機轉換條件有不同優先級,復位具有最高優先級。
(1)當收到復位信號時,狀態機跳轉到Initial狀態,此狀態進行初始化操作。
(2)當收到數據時進入RX_state狀態,此狀態時處理接收到的標準幀數據,并將其發送到數據管理模塊。
(3)當需要發送數據時進入Read_State狀態,此狀態時先讀取三個發送緩沖區的當前狀態,當至少存在一個空閑的發送緩沖區時從數據管理模塊讀取封裝好的標準幀數據,并且將標準幀通過并串轉換模塊發送。
本文將PCI模塊劃分為三個設備,PCI模塊的結構圖如圖3所示。三個設備都有各自的初始化功能和數據處理功能,因此VxWorks會設別到三個中斷源:中斷A、中斷B和中斷C。在本設計模塊中,VxWork分別給三個模塊分配了5、10和12號中斷。

圖3 PCI模塊的結構圖
初始化功能主要是設置子設備的設備號、分類號和設備商信息,向系統申請空間大小等。當以上的信息設置成功之后,操作系統設別到該唯一性設備,并能對其進控制與數據收發。
數據處理功能主要就是處理PCI總線的數據,負責將接收的32位數據發送總線上或者將總線上屬于自己的數據取出并發送到指定外圍設備。
基于雷達系統的實際需求,本文設計了一種總線轉換IP核的結構,它能夠很好的滿足使用不同總線的模塊間交換數據,實際結果表明該設計能高效、可靠的完成該型號雷達系統的模塊間的數據交換,簡化了雷達系統中的分系統的復雜性。另外將其封裝成IP核后,可以直接應用到其它的工程中,加快工程的開發進度。