摘要:在分析了IRIG-B(DC)碼碼型特點的基礎(chǔ)上,提出了一種IRIG-B(DC)時間碼解碼的設(shè)計方法。該方法由少量外圍電路與一片現(xiàn)場可編程門陣列(FPGA)芯片組成,來實現(xiàn)對IRG-B(DC)碼的解碼、1 PPS信號輸出、實時時間顯示以及串行異步通信。與傳統(tǒng)的方法相比,該設(shè)計方案具有體積小、成本低、工作穩(wěn)定等優(yōu)點,完全能夠替代傳統(tǒng)的B碼機箱的功能。
關(guān)鍵詞:IRIG-B(DC);FPGA;硬件描述語言;串行通信
隨著電力自動化水平的提高,電力對時間的同步要求越來越迫切、時間同步的精度要求越來越高。采用GPS全球衛(wèi)星定位系統(tǒng)的時間同步功能,是提高電力生產(chǎn)和管理自動化水平、確保運行質(zhì)量的一條最佳途徑。國家電力公司、各大電網(wǎng)和省電力公司,高度重視電力系統(tǒng)的時間同步系統(tǒng)的建設(shè),明確要求電力的生產(chǎn)運行系統(tǒng)裝置采用衛(wèi)星時鐘進行校時。由于目前GPS接收機采用IRIG-B(DC)時間碼的格式輸出標準時間信息,所以本文提出了一種基于FPGA來實現(xiàn)的IRIG-B(DC)時間碼解碼設(shè)計方案。
1 IRIG-B碼簡介
IRIG-B(DC)時間碼(簡稱B碼)是由IRIG所屬的TCG(Telecommunication Group)制訂的一種串行時間碼。B碼是一種串行時間碼,幀長為1 s,共包含100個碼元。它采用脈寬調(diào)制方式編碼,共有三種寬度的碼元,分別表示“0”,“1”.“P”,其中“P”為標志位,如圖1所示,碼元的總寬度為10 ms,“0”的脈寬為2 ms;“1”的脈寬為5 ms;“P”的脈寬為8 ms。
B碼的1幀從連續(xù)兩個“P”開始,其中第一個標志位為P0,第二個標志位為PR,PR的上升沿是1 s的準秒時刻,即當前幀表示的秒時刻的起點。如果規(guī)定PR所在位置為第0個碼元,那么每幀分別有編號為0,1,2,…,99的碼元。標志位P1,P2,P3,…,P0的位置分別在9,19,29,…,99。B碼包含了當前時刻的秒,分,時,天信息和每天按秒計時的秒數(shù)(TIME OF DAY,TOD),如圖2所示。
秒信息從00~59,分為“秒”和“十秒”兩部分,分別使用BCD碼表示。“秒”使用1,2,3,4碼元,“十秒”使用6,7,8碼元。分信息也是從00~59,分為“分”和“十分”,“分”使用10,11,12,13碼元,“十分”使用15,16,17碼元。小時信息從00~23,分為“時”和“十時”,“時”使用20,21,22,23碼元,“十時”使用25,26碼元。天表示的是從1月1日到當前日期的總天數(shù),如1月1日,天數(shù)為1。天數(shù)從1~365(閏年為366),分為“天”,“十天”和“百天”三部分,“天”使用30,31,32,33碼元,“十天”使用35,36,37,38碼元,“百天”使用40,41碼元,TOD時間使用80,81,82,83,84,85,86,87,88,90,91,92,93,94,95,96,97共17個碼元,采用直接二進制表示從每天的第一秒到當前時刻的總秒數(shù)。23點59分59秒對應(yīng)的TOD時間為86 399 s的IRIG-B(DC)碼如圖2所示。注意,秒、分、時、天、TOD表示都是低位在前,高位在后;第5、14、24、34碼元為索引標志碼元。另外,標志位P5到P8之間的碼元為控制碼元,可以根據(jù)實際使用時的協(xié)議來制訂使用方法。
2 FPGA解碼方案
FPGA是現(xiàn)場可編程門陣列(Field ProgrammableGate Array)的簡稱。FPGA器件及其開發(fā)系統(tǒng)是開發(fā)大規(guī)模數(shù)字集成電路的新技術(shù)。在電子產(chǎn)品設(shè)計中有較廣泛的應(yīng)用。在本設(shè)計中采用的是Xilinx公司Spartan3系列中的XC3S1500芯片。它具有29952個邏輯單元,150萬個門。XC 3S1500具有333個管腳,采用FG456封裝,支持在線可編程。
Xilinx公司提供了支持FPGA開發(fā)的軟件ISE,通過它可以進行原理圖編輯,VHDL文本語言編輯,并支持這兩種編輯方式的混合設(shè)計。在本設(shè)計中采用的是ISE 10.1軟件。完成了設(shè)計輸入并成功地進行了編譯,只能說明設(shè)計符合一定的語法規(guī)范,并不能保證設(shè)計可以獲得所期望的功能,這時就需要通過仿真對設(shè)計進行驗證。ModelSim是業(yè)界十分優(yōu)秀的語言仿真器,它提供十分友好的調(diào)試環(huán)境,仿真速度快,精度高。在本設(shè)計中采用的是ModelSim SE 6.6e。
在本工程設(shè)計中采用了VHDL語言,自頂向下的設(shè)計方法,實現(xiàn)了工程的層次化管理。為了使得產(chǎn)品穩(wěn)定、可靠,采用全同步設(shè)計,使整個工程都在一個時鐘上升沿時刻改變狀態(tài)。這樣可以避免冒險和其他不定態(tài)的出現(xiàn)。其軟件設(shè)計模塊基本框圖如圖3所示。
2.1 全局控制模塊
全局控制模塊產(chǎn)生全局控制信號count,對其他模塊進行時序管理。首先,將輸入的10 MHz頻率倍頻到50 MHz,使得整個工程以50 MHz的頻率運行。其次,判斷輸入的B(DC)碼碼元的上升沿,在碼元的上升沿時刻對全局控制信號count復(fù)位,接下來在50 MHz頻率的控制下全局控制信號count開始計數(shù)。count的低17比特是2.2 ms的計數(shù)器,count的第17,18比特是對B(DC)碼碼元采樣點的標記,范圍是0~3。count的第19~25比特是對B(DC)碼碼元的統(tǒng)計,范圍是0~99。最后,搜索幀頭的功能。對B碼采樣模塊輸出的數(shù)據(jù)進行判斷,當搜索到連續(xù)兩個標志位P0,PR時,則認為搜索到幀頭,開始BCH譯碼,否則認為沒有搜索到幀頭,控制信號count復(fù)位,重新搜索。
2.2 B碼采樣模塊
B碼采樣模塊在B(DC)碼碼元上升沿時刻開始以2.2 ms間隔對其采樣,由于B碼的碼元寬度為10 ms所以每個B(DC)碼碼元采樣到四個值。‘P’碼元采樣到的數(shù)據(jù)是“1110”,如圖4所示。同理,‘0’碼元采樣到的數(shù)據(jù)是“0000”,‘1’碼元采樣到的數(shù)據(jù)是“1100”。將采樣到的值反饋給全局控制模塊以便進行幀頭搜索并傳遞給BCH譯碼模塊。
為了防止干擾造成的抖動對輸入信號造成誤判,采取的修正方法是在全局控制信號count的控制下,在B(DC)碼碼元的每個采樣點處間隔兩個主鐘連續(xù)采樣三次.然后將這三次的采樣值兩兩按位與,再將相與的結(jié)果相或便得到該采樣點處的真實值,有效地防止了干擾造成的信號誤判。
2.3 BCH譯碼模塊
BCH譯碼模塊在控制信號count的控制下對B(DC)碼采樣模塊輸出的數(shù)據(jù)進行判斷,當為“1110”時,對應(yīng)的碼元信息為‘P’;當為“0000”時,對應(yīng)的碼元信啟、為‘0’;當為“1100”時,對應(yīng)的碼元信息為‘1’,并按照秒、分、時、天、TOD在B(DC)碼中所對應(yīng)的碼元位置進行相應(yīng)的組合。
2.4 天、時、分、秒、TOD提取模塊
天、時、分、秒、TOD提取模塊是將BCH譯碼模塊中輸出的數(shù)據(jù)存入天、時、分、秒、TOD寄存器中。圖5是在ModelSim SE 6.6下的仿真,TOD為86 399,365天23時59分59秒分別存入了TOD、天、時、分、秒寄存器。從圖5觀察TOD、天、時、分、秒輸出正確。
2.5 1 PPS提取模塊
1 PPS提取模塊是產(chǎn)生1 PPS信號。上電復(fù)位后能夠產(chǎn)生高電平寬度為5 ms,周期為1 s的游離1 PPS信號,當全局控制模塊搜索到幀頭位置后,通過全局控制信號count來修正1 PPS信號上升沿的位置。圖6是在M0delSim SE 6.6下的仿真1 PPS信號輸出。觀察圖6可知1 PPS信號輸出正確。
2.6 串口模塊
串口模塊是將天、時、分、秒、TOD串行輸出到B(DC)碼解碼上位機軟件。在串口模塊中按照規(guī)定的組幀協(xié)議將天、時、分、秒、TOD的BCD碼組幀輸出。利用本廠設(shè)計生產(chǎn)的B(DC)碼發(fā)生器輸出固定時間的B(DC)碼,然后用本設(shè)計方案設(shè)計試制的B(DC)碼解碼器解碼,最后通過串口連接到PC機上進行測試。圖7是B(DC)碼解碼上位機軟件的測試結(jié)果,顯示正確。
3 結(jié)語
傳統(tǒng)的IRIG-B碼解碼器采用微處理器設(shè)計,器件較多,結(jié)構(gòu)較復(fù)雜,尤其是在受到外界干擾的情況下,會出現(xiàn)死機等故障。而采用FPGA設(shè)計的解碼器集成度高、設(shè)計靈活方便,在很大程度上解決了上述問題。
隨著我國電力自動化水平的不斷發(fā)展,電力生產(chǎn)設(shè)備的可靠性和小型化是必然的趨勢。FPGA在這方面能發(fā)揮較好的作用,其應(yīng)用可使電力生產(chǎn)設(shè)備結(jié)構(gòu)更加簡單緊湊,性能更加可靠、穩(wěn)定。