神電測控:LabVIEW FPGA番外篇:實驗65-FPGA產(chǎn)生和解析IRIG-B串行時間碼-回環(huán)實驗

????????現(xiàn)在很多基于時間同步的授時系統(tǒng)(例如GPS)里面常常會涉及到串行時間碼,例如IRIG-B協(xié)議,實際上就是將時間戳轉(zhuǎn)換成一個單總線脈沖序列,通過一個數(shù)字脈沖序列來表征不同的時間信息。好處在于只需要一個DIO就可以實現(xiàn)時間信號的傳遞和同步了,一般會配合PPS秒脈沖信號一起使用,方便校準和同步。
????????為了方便用戶理解IRIG-B協(xié)議的本質(zhì),我們在一塊FPGA開發(fā)板上(比如,黑金的Spartan6、ARTIX7、KINTEX7開發(fā)板均可)使用構(gòu)建了一個IRIG-B串行時間碼的回環(huán)實驗,由于FPGA是真正意義上的并行器件,所以我們可以在FPGA里面利用LabVIEW編寫兩個獨立的程序:一個負責(zé)模擬將時間信號(時間戳明文)按照IRIG-B協(xié)議轉(zhuǎn)換為脈沖序列,通過一個FPGA DIO引腳發(fā)送出去;另外一個線程負責(zé)接收IRIG-B脈沖序列,然后將具體的時間信息解析出來。
????????圖1顯示的是IRIG-B串行時間碼的產(chǎn)生發(fā)送和接收回環(huán)項目瀏覽器截圖。雙擊打開里面的FPGA主VI,可以看到前面板上有非常生動的IRIG-B傳輸演示過程,左邊是將已知的時間信號轉(zhuǎn)成IRIG-B脈沖序列發(fā)送出去,右邊則是將接收到的脈沖序列按照IRIG-B協(xié)議解析出來,如圖2所示。


????????切換到程序框圖,可以看到后面板有兩個完全并行獨立的FPGA代碼,上面的FPGA while循環(huán)負責(zé)將前面板上的時間戳信號轉(zhuǎn)成IRIG-B脈沖序列發(fā)送出去,下面的while循環(huán)負責(zé)將接收回來的脈沖序列按照IRIG-B協(xié)議解析出正確的時間戳信息,如圖3所示。

????????對IRIG-B協(xié)議感興趣的用戶可以百度一下,然后對照著本節(jié)實驗下位機FPGA主VI里面的兩個狀態(tài)機程序,就會一目了然。實際上,很多協(xié)議用LabVIEW狀態(tài)機編寫還是非常容易的,大家不用害怕,只要會一點LabVIEW,再復(fù)雜的FPGA程序都能用LabVIEW寫出來!
????????這個IRIG-B回環(huán)實驗的價值在于:如果今后用戶需要模擬IRIG-B硬件在環(huán)HIL半實物仿真,可以將這個FPGA里面的IRIG-B發(fā)送程序拷貝過去;如果用戶想要解析市面上的時間同步授時系統(tǒng)或者GPS發(fā)出來的IRIG-B脈沖信號,可以將這個實驗里面的IRIG-B接收解碼程序拷貝到自己的FPGA里面。
????????本節(jié)實驗真正做到了LabVIEW FPGA代碼即插即用,實際上,很多FPGA應(yīng)用程序無需從底層寫起,用戶可以直接參考我們《LabVIEW FPGA開發(fā)寶典》里面提供的FPGA案例程序,成熟穩(wěn)定可靠!