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