measureBwide:process(inputHClk)
begin
if rising_edge(inputHClk) then
if pwmMeasureEnable=′1′ then
--上升沿開始計數
regCountH<=regCountH+1;
--計數器++
regOutputReadEnable<=′0′;
--此時數據不可讀
else null;
end if;
if (regBLast=′1′)and( regBCurrent=′0′) then
--降沿判斷脈寬
case (regCountH) is
when 5000 to 14000 =>
regOutputData<="0010";
- regOutputPwm0Or1<=′0′;
when 20000 to 30000=>
regOutputData<="0101";
regOutputPwm0Or1<=′1′;
when 35000 to 48000=>
regOutputData<="1000";
regOutputPwm0Or1<=′0′;
when others=>NULL;
regOutputPwm0Or1<=′0′;
end case;
regCountH<=0;
regOutputReadEnable<=′1′;
--此時數據可讀
else null;
end if;
else NULL;
end if;
end process measureBwide;
IRIG-B解碼的主要任務是找到碼元起始報頭,也就是2個連續的占空比為8 ms:2 ms的脈沖。找到報頭后,根據碼元的分布情況逐一解出相應的數據即可。找到起始報頭后,輸出秒脈沖,同時根據解碼數據輸出串行數據。本文利用12.8 MHz進行1 333次分頻產生9 600 b/s的串行數據波特率,雖然不是整數,但是可滿足串行數據的誤碼率要求。
分脈沖由秒脈沖計數器產生,即計數器計滿1 min時,輸出一個脈沖。
3 同步邏輯信號的實現
分布式同步邏輯的實現為本系統的重要部分,也是分布式錄波系統同步錄波的關鍵。系統中有一個專門用于接收各子單元故障的信號,作為系統錄波的專用引腳,該信號為RS485驅動,因此抗干擾能力比較強。實際應用中,不論哪一個子單元判斷出故障信號,均向本系統發出一個觸發電平,當本系統收到該電平后立即發出啟動信號,啟動錄波后一段時間再發出錄波結束電平,結束本次錄波工作。
由于CPLD的并行處理功能強大與反應速度快的特點,所以子單元發出故障信號的延時可以忽略不計(小于10 ns)。由于不同的用戶需要的錄波文件大小不一致,所以將錄波結束的控制參數交由用戶在線設置。由故障、錄波啟動、錄波結束三組信號再配合IRIG-B時鐘信號即可實現系統的同步錄波功能(此處的源代碼不再贅述)。
4 實驗結果
本系統在理論上最多能夠連接32個子單元(RS485驅動能力的限制),實際應用中,由于受到產品外形結構的限制,最大連接了8個子單元,任意一個子單元發出故障信號時,均能通過本系統產生錄波的同步信號,各項指標均滿足錄波器的相關指標要求。即使多個子單元發出故障信號,本系統亦能準確判斷出故障信號,從而輸出同步信號。
通過實際測試,本文設計方案只占用了63%的系統資源,留有相當大的剩余資源,非常方便實現后期的功能升級,而不用更換硬件。
用戶評論
共 0 條評論