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