



摘 要: 為了保證嵌入式設備運行的穩定性和可靠性,都會應用雙余度的CPU來共同管理硬件資源,協調任務調度和處理CPU的高速外設接口數據,因此,該文介紹一種在具有高效數字時鐘管理器的FPGA上產生高精度、高穩定度時鐘同步信號,用來保證CPU間的精確同步通信,達到高效的公共資源管理、合理的任務調度以及相互比對的數據計算。
關鍵詞: FPGA; 同步通信; 處理器; 時鐘信號
中圖分類號: TN710?34 文獻標識碼: A 文章編號: 1004?373X(2016)10?0092?04
FPGA?based communication mechanism with high?precision clock synchronization between processors
JIANG Xin 1, TANG Chao2, BAI Chen1
(1. Xi’an Aeronautic Computing Technique Research Institue, AVIC, Xi’an 710068, China;
2. Military Representative Office at Xi’an Aeronautic Computing Technique Research Institue, Xi’an 710068, China)
Abstract: In order to ensure the stability of embedded devices running and high reliability, are applied dual redundant CPU to co?management of hardware resources, task scheduling and coordination process CPU speed peripheral interface data, therefore, in this paper, a highly efficient digital generating clock management FPGA?precision, high?stability clock synchronization signal is used to ensure accurate synchronous communication between the CPU, in order to achieve efficient management of public resources, reasonable task scheduling and the mutual alignment of data calculation.
Keywords: FPGA; synchronous communication; CPU; clock signal
隨著現代半導體技術的不斷發展,具有高性能、低功耗和接口資源豐富處理器的數據處理模塊越來越多地應用到了嵌入式領域內。本文著重介紹了一種高精度、高穩定的脈沖同步通信機制,其應用到高性能數據處理模塊的雙處理器之間,保證雙處理器的任務調度平衡和處理數據保證一致性,進而提高系統工作頻率和穩定性。
1 同步通信機制的應用條件
1.1 數據處理模塊工作原理
雙處理器數據處理模塊應用于嵌入式數據信息交換平臺的高速數據總線(FC總線、1394B總線和千兆以太網)和低速數據總線(1553B,1394B,LVDS,RS 485)的數據解析、處理和組包,同時完成各種指令的傳輸控制和任務調度,雙處理器數據處理模塊的體系結構如圖1所示。
雙處理器數據處理模塊主要功能包括:
具備兩個PowerPC系列處理器P2010作為數據處理模塊的主備核心控制單元;通過FC總線和1553B總線完成與嵌入式數據信息交換平臺的外部設備通信;通過1394B總線完成與嵌入式數據信息交換平臺其他模塊的通信;完成嵌入式數據信息交換平臺的控制命令等數據的處理及下發;完成嵌入式數據信息交換平臺的參數和狀態等信息的處理及上傳;主控單元和備控單元能夠實現對自身工作狀態的監測,異常情況下能切斷與外部接口的連接;備控單元實現對主控單元的狀態監測,在主控單元故障情況下,備控單元接管主控單元實現系統控制管理功能。
雙處理器數據處理模塊主要由主控單元、備控單元和共用單元組成。主控單元包括電源、高性能嵌入式處理系統、1394B總線接口和FC總線接口等電路,備控單元硬件與主控單元硬件設計基本相同,共用單元包括1553B總線接口電路組成,共用單元與主控單元、備控單元分別通過獨立接口進行通信。
1.2 應用背景
為了保證雙處理器數據處理模塊的主、備處理器間任務調度、切換和主、備單元各總線交換數據的一致性,需要在主、備處理器之間建立一種相互監聽的同步通信機制。根據雙處理器數據處理模塊在嵌入式數據信息交換平臺作為的核心控制角色,需要在高速的數據處理和ms級任務調度的情況下,完成主備處理器間的同步通信,需要一個ns級的同步通信通道。需要論證一套同步脈沖(周期1 ms,占空比10%)收發系統,實現發射與接收端脈沖信號時間抖動均方根值小于200 ns,并且保證發射端和接收端的脈沖上升沿相位差固定[1],其抖動也小于200 ns。
2 同步通信機制設計
2.1 硬件電路設計
2.1.1 FPGA選擇
由于PowerPC處理器對時鐘信號的上升和下降沿,以及時鐘上升沿的爬升速度要求極高,減少整個雙處理器數據處理模塊的時鐘源數量(減少電磁干擾);因此需要精確的時序控制和可定制的系統配合能力才能滿足處理器間的同步通信;因此具有數字時鐘管理器(Digital Clock Manager,DCM)的FPGA具備精準的倍頻、分頻、相位移動和時鐘去偏斜等功能滿足處理器間同步通信的功能需要[2]。
利用高穩定度和高精度的外部時鐘源為FPGA提供參考時鐘和為處理器提供系統時鐘,FPGA內部的DCM模塊去除時鐘偏移時,能消除時鐘分配的延遲,完成時鐘的閉環控制,提供同步通信脈沖的基準時間。因此,設計選用國微公司的新一代軍品級全溫度工作范圍(-55~125 ℃)VirtexⅡ系列SMQ2V1000FG456芯片[3],FPGA是基于8層金屬的0.12 μm CMOS 邏輯工藝加工制造。其中密度為100萬等效系統門,300 MHz內部時鐘速度(Advance Data,系統頻率最高可達300 MHz,指的是以FPGA 芯片內部邏輯單元間的最小延遲時間為依據計算出來的邏輯電路可達到的理論最高速度,并不代表外部端口特性或用戶系統能達到此頻率值),622 Mb/s 的I/O(Advance Data),具有10 240個內部帶時鐘使能的寄存器/鎖存器,8個DCM模塊(精確的時鐘去偏斜,可變的頻率綜合,高分辨率的相移),16個全局時鐘多路緩沖器時鐘控制塊,適合用于復雜邏輯以及有存儲、緩沖功能的數據采集系統中。
2.1.2 同步通信電路實現
雙處理器數據處理模塊的主備處理器都配對了一個FPGA,它主要負責對主備處理器的相關資源進行分配和實時接口資源控制,可以利用這個資源管理的FPGA和處理器匹配電路的時鐘源[4],在每個與CPU配對的FPGA中實現一個脈沖發生器和脈沖接收器,通過一個處理器的配對FPGA中的脈沖接收器去監聽另一個處理器配對FPGA中的脈沖發生器是否有脈沖心跳變換,判斷對方處理器的運行是否正常,同步通信電路圖,如圖2所示。
主處理器和備處理器分別通過主備電源同時上電,主處理器和備處理器之間通過數據通信接口達成同步握手協議。主處理和備處理器分別使能各自配對FPGA中的脈沖發生器和脈沖接收器后,進行以下兩步:
(1) 主備處理器通過eLBC總線對脈沖發生器的狀態進行初始化,并進行周期輸入使能命令字,觸發脈沖發生器發出心跳周期脈沖信號;
(2) FPGA內部實現監聽寄存器對脈沖接收器的狀態進行觀察,當脈沖接收器接收到周期性的脈沖心跳信號后,產生周期性的中斷觸發信號給各自對應的處理器,處理器通過中斷感應對方處理器的同步狀態。
2.2 同步控制邏輯設計
2.2.1 同步控制邏輯原理設計
同步通信信號(心跳脈沖)的占空比較小,信號能量較弱,因此在傳輸之前需對該信號進行編碼,以提高信號占空比和能量[5]。利用FPGA內部鎖相環(PLL)先將外部時鐘源輸入的100 MHz的時鐘信號進行倍頻得到200 MHz時鐘信號,作為信號編碼的驅動時鐘。
為了減小最終輸出端的脈沖信號的上升沿抖動,確保200 MHz時鐘信號的第200 000個脈沖的上升沿與1 kHz的上升沿對齊,并且保證編碼后信號的在該時刻的上升沿也跟兩路信號的上升沿對齊。同時,對第200 000個脈沖的前幾個脈沖進行一定的編碼,即在第199 997個脈沖的位置輸出連續“0”,在第199 998個脈沖的位置輸出連續的“1”,以此來作為脈沖信號上升沿的幀頭識別。因此,只要在接收端識別到幀頭,就可以在之后的第一個上升沿作為1 kHz脈沖的上升沿輸出,并且使其輸出100 μs的寬度,便可以正確的解調出1 kHz的脈沖信號。在接收端,接收到編碼后的信號,可以通過高速時鐘采樣接收信號,等識別到該幀頭后把接收信號的第一個上升沿作為1 kHz脈沖的上升沿,并且連續輸出200 000個CLK的高電平來實現100 μs的脈沖,這樣就產生了同步信號[1]。
2.2.2 同步控制邏輯原理實現
主CPU上電之后,首先通過eLBC總線向主FPGA內部的同步脈沖使能寄存器(EN_Plus_Register)寫入“1”,使能脈沖發生器,通過eLBC向脈沖命令寄存器(Cmd_Plus_Register)寫入16 b的啟動命令,第1 ms寫入0x”5A5A”,第2 ms寫入0x”A5A5”,第3 ms寫入0x”5A5A”,第4 ms寫入0x”A5A5”,依次類推[6]。主FPGA中的脈沖發送狀態機,每隔1 ms讀取脈沖命令寄存器的值,若數據值為0x”5A5A”和0x”A5A5”交替出現,則認為主處理器工作正常,發送心跳脈沖信號(周期1 ms,占空比10%)到備FPGA的監測接口寄存器。
備FPGA中的內部監測心跳信號狀態機,監測心跳脈沖信號(周期1 ms,占空比10%)的上升沿數量,當上升沿的數量≥5(每隔5 ms)時,觸發一次備處理器的同步正常中斷(IRQ2中斷,中斷信號持續時間為2 ms),備CPU進入中斷服務程序后,首先關閉備處理器的IRQ2中斷,同時上報主處理器同步通信狀態正常。
若主FPGA的脈沖發生狀態機讀取脈沖命令寄存器(Cmd_Plus_Register)的值,不是X”5A5A”和X”A5A5”交替出現,或者同一命令字重復出現兩次時,則認為主處理器工作異常,主FPGA中的脈沖發生狀態機停止發送脈沖同步信號,同時備FPGA中的脈沖接收器如果持續20 ms,未接收到主FPGA發送的周期性脈沖信號,則備FPGA中的脈沖接收狀態機觸發備處理器的同步異常中斷信號(IRQ1中斷),備FPGA觸發備FPGA中斷信號(一旦使能,就一直保持),備處理器進入中斷服務程序,關閉備處理器的IRQ1中斷,報主處理器的同步信號異常。主處理器監控備處理器的同步通信信號的實現原理一致。如圖3所示。
處理器配對FPGA中的同步通信監控邏輯程序如圖4所示,并將邏輯控制部分的信號說明如表1所示。
3 同步通信機制驗證
為了進一步確保處理器間的時鐘同步通信設計的可實用性,將該時鐘同步通信機制在本文提到了雙處理器數據處理模塊中進行了應用,同時在工程應用中了相應的專項測試數據,如表2所示。
表1 FPGA的同步通信控制邏輯寄存器說明表
表2 時鐘同步通信機制工程應用
通過工程測試,基于FPGA的同步通信機制主要由以下幾個優點:
(1) 以處理器的eLBC總線功能是否正常作為處理器正常工作的判斷標準,提高了雙處理器數據處理模塊的可靠性;
(2) 采用FPGA協助完成故障檢測功能,減輕了處理器的資源消耗,提高了雙處理器數據處理模塊的運行效能。
參考文獻
[1] 李超然,鄭建生,林炳章.基于FPGA 的同步脈沖傳輸系統設計[J].通信技術,2011,44(6):6?8.
[2] 賈亮,馬興,孫偉,等.基于Xilinx FPGA DCM的研究與設計[J].電子測量技術,2014,37(10):85?88.
[3] 佚名.SMQ2V1000FG456產品數據手冊第A版[EB/OL].[2013?01?18]. http://wenku.baidu.com/link?url=GBU0-TZu1VYIhia5bj2rgmLscBIHb6vtJD70Ef1EN1IiYayC0MUnGpUVMWMGyJCCFtKfc7eJoR914EabwGW4sW-MK6IkrPSp37_SbRoJhS.
[4] 張東升,張東來,秦海亮,等.基于FPGA的高速采集系統設計與實現[J].電子技術應用,2006,32(5):76?79.
[5] 李向濤,仵國峰.FPGA同步設計技術[J].無線通信技術,2003,12(3):58?61.
[6] 林長青,孫勝利.基于FPGA的多路高速數據采集系統[J].電測與儀表,2005,42(5):52?54.