侯 歡,施洪生
(北京交通大學 電氣工程學院,北京100044)
在數字電路設計中,現場可編程門陣列(Field Programmable Gate Array,FPGA)技術得到越來越廣泛的應用,特別是在通信領域。 對于FPGA 處理器之間的通信,一般采用傳統的有線連接,例如UART、CAN 等方式。 可當FPGA 處理器之間存在相對運動(即一個FPGA 處理器在旋轉側,而另一個在固定側)時,傳統有線通信方法會帶來不便,而無線通信恰好適用于此情況。 將基于FPGA 的PPM 調制解調無線數據通信技術應用在風機齒輪箱應力測試中,可以規避傳統有線式齒輪箱測量的種種風險[1],并且可以簡化復雜的滑環工裝設計,更加準確地對齒輪箱應力進行測試,同時也可以將此技術應用于其他旋轉器件的信號測試場合,例如,在數控機床技術中對其卡盤在不同轉速下的夾緊力性能進行實時監測;在航空航天技術中對其航空發動機旋翼的應力、扭矩等進行測試。
隨著無線通信技術的不斷發展,無線通信的方式也不斷出現,其中各種方式的誤碼率、抗干擾能力和傳輸速率也不同,為了提高數據傳輸的速率和抗干擾能力,本設計采用光電耦合的無線數據傳輸方式,其具有良好的抗干擾能力,它利用光波作為載波對信號進行傳輸,可以達到很高的傳輸速率,在光無線通信領域中,保證一定的速率下,要求傳輸功率盡可能小。脈沖位置調制(PPM)是一種正交調制方式,相比于傳統的開關鍵控(OOK)調制,它具有更高的光功率利用率和頻帶利用率,并能進一步提高傳輸信道的抗干擾能力[2]。 且基于FPGA 的脈沖位置調制(PPM)可以在高轉速、數據量大的旋轉件中快速、可靠地傳輸測量到的數據,因而本設計采用基于FPGA 的脈沖位置調制(PPM)方式。
本設計由旋轉側數據的采集和發送以及固定側數據的接收和處理兩部分組成,其中發送側包括PPM 調制電路的實現,接收側包括PPM 解調電路的實現。 發送側是將A/D 轉化后的數據通過CRC 生成器加入CRC 校驗碼,再通過PPM 調制模塊轉化為PPM 脈沖信號,最后通過發送電路的紅外發射二極管以光的形式發送出去。接收側是將接收電路中的紅外接收頭接收到的數據通過PPM 解調模塊將數據解碼出來,再將數據進行CRC校驗,最后將數據傳給上位機進行顯示和處理。 系統整體設計流程如圖1 所示,圖2 為發送數據流程圖,圖3為接收數據流程圖。

圖1 系統整體結構

圖2 發送數據流程圖

圖3 接收數據流程圖
PPM 調制的編碼方式是將輸入的n 位二進制數據映射在脈沖位置調制一幀的L(L=2n)個時隙中,即在L個時隙中對應的第l 個時隙發送一個光脈沖信號[2],l 代表的是時隙的位置數。
PPM 調制是將輸入數據轉化為不同時隙位置的脈沖,此過程可以用一個計數器來進行計數,從而在不同時隙輸出脈沖的過程[2]。 以時鐘脈沖作為一個標準的時間間隔,將計時過程轉換成一個計數的過程。 計數模塊在時鐘的上升沿開始計數,當計數數據與二進制調制數據相等時就在相應的時隙輸出高電平,其余時隙輸出低電平,由此得到一個不同周期內不同位置上出現脈沖的波形。
在程序設計中PPM 調制思路如下,將系統時鐘分別進行四分頻和八分頻,其中四分頻時鐘是計數器的時鐘信號,八分頻時鐘是串并轉換的時鐘信號。 串行數據經過串并轉換模塊轉化為并行數據,根據系統所需要的是4PPM,將系統時鐘信號經過四分頻器轉化為周期為4的計數器,把串并轉換輸出的數據和計數器數據輸入到比較器模塊中進行比較,如果兩者相同則輸出高電平,反之輸出低電平。最后經過一個脈沖成形模塊輸出窄脈沖,這樣可以減小鄰近信道對其的干擾。 圖4 是PPM 調制Verilog 流程圖。

圖4 PPM 調制Verilog 流程圖
本設計是對4PPM 調制系統的設計,因此需要將A/D轉化出來的數據進行串并轉換,使這些數據轉換為兩位一組的數據,此部分是實現PPM 調制的關鍵。 串并轉換可以通過移位寄存器來實現,本設計的思路是:先將第一位進入系統的數據緩存到寄存器中,等到第二個數據進來后,在下一個時鐘的上升沿到來時將這兩位數據同時輸出。 其主要代碼如下:

PPM 調制的頂層設計就是將調制部分的所有模塊都拼接在一塊,最終來實現調制的功能。 由于本設計是將A/D 轉換后的數據作為PPM 調制模塊的輸入數據,因此編寫Verilog 代碼來產生一個隨機的m 序列來代替A/D 轉換后的數據,最后在頂層設計中將m 序列發生器和PPM 調制模塊連接到一起形成完整的PPM 調制系統。 4PPM 調 制RTL 級 圖 如 圖5 所 示。 4PPM 調 制 仿 真 圖如圖6 所示。
在圖6 的4PPM 調制仿真中,截取其中一段如圖所示,PPM 調制系統輸入的數據為InDat(0x55、0x79、0xd8、0xd8、0x55、0x79),其中0x79(0111_1001)經串并轉換后變為01、11、10、01 四組數據,4 位計數器依次計數00、01、10、11,當串并轉換后的數據與計數器的數值相等時,輸出數據q 就為高電平,得到輸出的q 之后,再將其高電平的寬度縮小為原來的四分之一,這樣可以減小鄰近信道對其的干擾。 由此得到了最終的4PPM 調制波形dataout。在圖7 中,輸入0x79 時間段中,經過了8 個八分頻時鐘,輸入數據依次為01、11、10、01,在與計數器值count 相比較后,分別在4 個時隙的第二個位置、第四個位置、第三個位置、第二個位置輸出了一個脈沖,這剛好與PPM 調制原理一致,從而證明了系統設計的正確性。
PPM 解調可以由PPM 調制的逆向思路來實現,在FPGA 解調過程中首先要提取幀同步信號,本設計中采用在數據的頭和尾分別插入特殊的幀頭和幀尾,以此來判斷數據的起始位和終止位。 進入FPGA 的是有一定規律的脈沖信號,檢測到幀頭后,再確定脈沖在一幀數據中所占據的時隙位置。
4PPM 的編碼格式為:00 對應1000;01 對應0100;10 對應0010;11 對應0001,一幀PPM 數據由幀頭SOF(0111)、n 個字節的數據以及幀尾EOF(1101)組成,一般每幀數據有1 到16 個字節,而且兩幀數據之間的時間間隔是任意的。

表1 PPM 數據幀格式
本設計中,首先每16 個時鐘周期采集1 位PPM 信號(din),所以需要一個16 位的計數器count0;解碼2 bit需要采到4 位din 信號, 因此需要一個3 位的計數器count1;完成一個完整的8 位信號,需要解碼2 bit 數據4次,所以還需要一個3 位的計數器count2。 其次,用移位寄存器將輸入的8 位數據進行暫存以便對其進行讀取,與此同時, 輸出的8 bit 數據是2 bit 數據輸出累加到8 bit,所以也需要移位寄存器對輸出數據進行暫存。設計一個4 位寄存器reg1 對輸入的數據進行移位操作,一個8 位寄存器reg2 對輸出的數據進行暫存,等待8 bit 移滿,就進行數據的輸出;最后需要設計一個狀態機來判斷是否進行解碼,S0 表示沒有收到幀頭,處于未工作狀態;S1表示收到幀頭,開始進行解碼。 圖7 是PPM 解調Verilog流程圖。

圖7 PPM 解調Verilog 流程圖

圖5 4PPM 調制RTL 級圖

圖6 4PPM 調制仿真
在PPM 解調過程中,將最后解調出的數據以8 位數據的形式進行數據的輸出,所以需要一個8 位寄存器對數據進行緩存,等8 位數據移滿后將數據輸出。 其主要代碼如下所示:

在進行PPM 解調系統的仿真之前,首先需要編寫測試文件,然后將各個模塊加入到工程中[3]。 測試文件通過讀取"F:/PPM1.txt"的文件中的數據作為PPM 脈沖數據輸入到解調系統中,其中PPM 脈沖輸入數據如圖8所示,4PPM 解調仿真圖如圖9 所示。

圖8 PPM 脈沖輸入數據
由圖9 可以看出,解調出來的數據為0x55、0x79、0xd8、0xd8、0x55、0x79,與輸入的數據一致,而且輸出的數據都是在輸出數據有效標志位高電平之后輸出下一個字節的數據。 由此驗證了代碼功能的正確性。
在紅外數據傳輸過程中,由于存在較多的干擾源,因此數據傳輸的過程中容易發生錯誤。 采用CRC 校驗進行差錯控制,可以比較正確可靠地實現紅外數據傳輸[4]。首先將A/D 轉換后的數據生成CRC 碼,將CRC 碼加入到A/D 轉換后的數據后面一起進入到調制模塊,將調制出來的PPM 數據經過發射電路發送出去,之后將紅外接收頭接收到的數據進行CRC 碼校驗。 這樣可以保證紅外傳輸部分的數據更加可靠。 本設計將CRC 校驗碼的Verilog 實現方法展現出來。
由于CRC-CCITT 的生成多項式G(X)為x16+x12+x5+1,輸入數據用多項式表示為C(X),將C(X)左移R 位,用C(x)×2R除以生成多項式G(x)得到的余數就是校驗碼[7]。根據CRC 校驗碼的生成原理,采用模二除法在程序設計中得到CRC 碼。 其結構圖如圖10 所示。 在接收側的CRC 校驗是一邊接收數據一邊進行校驗,當把數據都接收完畢后, 最終得出的CRC 校驗碼與固定的CRC 值進行比較,如果兩者相同則接收到了正確的數據,反之則接收到的數據有誤。
在測試文件中輸入數據為10101010 和11110000,最終得到的CRC 碼生成器仿真結果如圖11 所示,為0001010010100000 和1110111100011111, 與 用 理 論 計 算結果一致,因此確定了此電路設計的可行性。
本文通過研究PPM 調制解調的原理,設計了基于FPGA 的PPM 調制解調系統,詳細論述了調制解調系統的程序設計原理以及CRC 校驗碼的實現。 用Verilog HDL 硬件描述語言編寫了PPM 調制代碼、PPM 解調代碼和CRC 校驗代碼,并在Modelsim 中進行了聯合仿真,從仿真結果可以看出PPM 調制解調系統設計的正確性。 加入了CRC 校驗,提高了后續實際應用中數據傳輸的可靠性。

圖9 4PPM 解調仿真圖

圖10 CRC 電路結構圖

圖11 CRC 碼生成器仿真圖
實際應用中與仿真必定會有偏差,在后續實用化中還需要對其進行完善與改進。