蔡侃侃
(第七一五研究所,杭州,310023)
聲吶基陣中的各類非聲學(xué)傳感器信號(如深度傳感器、航向傳感器)能夠?qū)崟r反映基陣位置及所處的水文環(huán)境,對發(fā)射陣所處環(huán)境評估及安全性監(jiān)測有重要意義。然而,不同類型傳感器傳輸信號的數(shù)據(jù)格式和波特率各不相同[1-2],導(dǎo)致接收信號時,不同傳感器的信號傳輸端口不可互換[3]、兼容性較差、可靠性不足[4-5]。本文提出一種傳感器信號自適應(yīng)接收傳輸方案,該方案使得不同類型傳感器傳輸端口可任意互換,方便工程上設(shè)備安裝,快速故障定位;也可運(yùn)用端口冗余增加系統(tǒng)設(shè)計的可靠性,給水下非聲傳感器信號傳輸帶來諸多便利。
在某拖體聲吶基陣中,水下傳感器單元信號傳輸鏈路如圖1所示,該拖體需要向干端傳輸三種傳感器信號,分別是溫深傳感器信號、航向傾角傳感器信號、高度傳感器信號。
圖1 水下傳感器單元信號傳輸鏈路
圖中的三種傳感器都是使用RS422接口,分別通過三路連接器將信號發(fā)送到信號匯聚艙內(nèi)的傳感器信號匯聚板上。匯聚板共有4個信號輸入端口,其中3個端口分別用來接收三路傳感器信號,留下一個輸入端口用作備用信號傳輸。信號匯聚板上的FPGA將接收到的所有信號整理打包并通過RS422接口輸出給接收設(shè)備。所有傳感器使用相同型號的連接器和電平標(biāo)準(zhǔn)(RS422接口電平標(biāo)準(zhǔn)),且連接器的端子定義相同,從而保證了各個傳感器能夠連接任意一個輸入端口。
在本傳感器信號傳輸單元中,航向傾角傳感器輸出信號波特率為 115 200 bps,每個數(shù)據(jù)包 108 Byte,數(shù)據(jù)包發(fā)包頻率10 Hz;溫深傳感器輸出信號波特率為9 600 bps,每個數(shù)據(jù)包30 Byte,數(shù)據(jù)包發(fā)包頻率4 Hz;高度傳感器輸出信號波特率為9 600 bps,每個數(shù)據(jù)包9 Byte,數(shù)據(jù)包發(fā)包頻率8 Hz。由此可見,各個端口需要自適應(yīng)不同波特率、數(shù)據(jù)寬度、發(fā)包頻率。本設(shè)計自適應(yīng)識別、傳輸各類非聲傳感器的方案如圖2所示。
圖2 非聲傳感器信號傳輸方案
在傳感器信號匯聚板上,通過FPGA內(nèi)部DCM模塊倍頻產(chǎn)生一個144 MHz的高頻時鐘,由于高頻時鐘的頻率遠(yuǎn)高于各類傳感器輸出信號波特率,高頻采集可以快速判斷傳感器信號的邊沿變化,從而按照9 600 bps和115 200 bps完整還原出各類傳感器的輸出信號。故可以通過高頻時鐘采集各類傳感器輸出信號來達(dá)到波特率自適應(yīng)目的。
方案串口總線上傳輸每個字節(jié)用 10位表示。依次是1位起始位、8位數(shù)據(jù)位、1位停止位。起始位為“0”(低電平),停止位為“1”(高電平)。當(dāng) 144 MHz的高頻時鐘檢測到串口起始位的下降沿后,分別在起始位時間段內(nèi)按照不同波特率分別均勻采集5次起始位信息(即以一個144 MHz時鐘周期為1節(jié)拍,對于波特率9 600 bps,每隔3 000節(jié)拍采集一次;對于波特率115 200 bps,每隔250節(jié)拍采集一次)。若5次采集中有4次采集電壓均為低電平,則判斷起始位有效。之后按照兩種不同波特率采集串口上每一位信息。當(dāng)采集到字節(jié)終止位時,為防止匯聚板上時鐘與傳感器內(nèi)部時鐘的頻率或相位累加偏差過大,輸出需要進(jìn)行字節(jié)對齊操作,即串口輸出字節(jié)的停止位(高電平)與下一字節(jié)的起始位(低電平)之間必然會有一個下降沿,可以通過跟蹤該下降沿校準(zhǔn)匯聚板上本地時鐘與傳感器內(nèi)部時鐘的頻率或相位偏差。本方案的具體做法是運(yùn)用 144 MHz的高頻時鐘檢測前字節(jié)停止位與后字節(jié)起始位之間的下降沿,在下降沿后即判斷后一字節(jié)已經(jīng)開始。若在當(dāng)前字節(jié)停止位出現(xiàn)后高頻時鐘連續(xù) 3 bit時間范圍內(nèi)均采集不到下一字節(jié)的起始位信號,則判斷當(dāng)前數(shù)據(jù)包結(jié)束。
圖3 串口字節(jié)數(shù)據(jù)幀格式
為防止總線信號抖動產(chǎn)生亂碼,分別按照波特率9 600 bps和115 200 bps存儲3 Byte(共30位數(shù)據(jù))。若接收有效信號,則該信號必然符合串口協(xié)議,即該信號第1、11、21位均為低電平信號、第10、20、30位均為高電平信號。若接收信號不符合串口協(xié)議,則丟棄。
在符合串口協(xié)議的基礎(chǔ)上,檢查傳感器輸出信號與協(xié)議是否一致。三種輸出信號協(xié)議格式見表1。輸出數(shù)據(jù)均含有固定不變的字節(jié)信息,如航向傾角傳感器及溫深傳感器都有固定不變的數(shù)據(jù)幀頭、高度傳感器第3、7、8、9字節(jié)為固定字節(jié)。以9 600 bps及115 200 bps波特率分別獲取傳感器輸出的前9 Byte,包含協(xié)議中固定不變的字節(jié)信息,將它們與傳感器信號傳輸協(xié)議對比,從而識別該數(shù)據(jù)為何種傳感器的發(fā)送數(shù)據(jù)。流程如圖4所示。
圖4 判別傳感器類型流程圖
判別傳感器類型后,為保證傳輸信號的可靠性,需要判斷傳感器輸出信號的字節(jié)數(shù)是否與表 1中的協(xié)議字節(jié)總數(shù)一致,按照圖3示意方案每次捕捉到1 Byte后,F(xiàn)PGA內(nèi)部計數(shù)器加1。當(dāng)數(shù)據(jù)包結(jié)束時,內(nèi)部計數(shù)器可以統(tǒng)計該數(shù)據(jù)包的字節(jié)數(shù)。將該字節(jié)數(shù)與表1協(xié)議中相應(yīng)傳感器的字節(jié)總數(shù)對比,判斷當(dāng)前傳感器輸出數(shù)據(jù)包的字節(jié)總數(shù)是否正確,若其字節(jié)總數(shù)與協(xié)議不一致,則將該數(shù)據(jù)包丟棄。
由以上分析可知,當(dāng)匯聚板完整接收到數(shù)據(jù)包后,即可判斷該數(shù)據(jù)包對應(yīng)的傳感器類型。按照圖1的硬件連接傳感器信號傳輸單元,由于匯聚板上FPGA與每一個端口相連的引腳各不相同,通過FPGA引腳的物理分布即可判斷發(fā)包傳感器連接的端口號。FPGA抓取每個數(shù)據(jù)包中的傳感器信號,并將這些信號按照表2所示的輸出協(xié)議將所有信號打包上傳。分別用單字節(jié)11、22、33、44(十六進(jìn)制數(shù))代表信號匯聚艙的端口1、端口2、端口3、端口 4。通過匯聚板信號輸出協(xié)議,可以在信號接收端了解到各個傳感器信號連接的端口位置。若某種傳感器信號未連接或該傳感器信號發(fā)送數(shù)據(jù)錯誤,匯聚板在當(dāng)前幀中將該傳感器數(shù)據(jù)置零。
表1 傳感器輸出信號協(xié)議
表2 匯聚板信號輸出協(xié)議 Byte
實(shí)現(xiàn)的時序控制邏輯如圖5所示,采用同源高頻時鐘作為時鐘信號,在其上升沿判斷3路傳感器信號的串口協(xié)議、數(shù)據(jù)協(xié)議、字節(jié)總數(shù)是否符合要求。當(dāng)被判定符合要求后,在該時鐘上升沿將數(shù)據(jù)寫入寄存器。同源時鐘經(jīng)過分頻得到周期為0.1 ms的低頻時鐘,在該低頻時鐘上升沿將寄存器中數(shù)據(jù)輸出給串口。
圖5 時序控制邏輯
按照圖1的端口連接方法,在串口調(diào)試助手軟件上測得的數(shù)據(jù)如圖7所示。為了驗證本文提出的非聲傳感器信號自適應(yīng)傳輸方案的可實(shí)現(xiàn)性,按照圖6的端口連接方法,將航向傾角傳感器連接到端口 2,溫深傳感器連接到端口 3,高度傳感器連接到端口1,測得的數(shù)據(jù)如圖8所示。
圖6 水下傳感器單元輸入信號更改后的傳輸鏈路
圖7 第1組實(shí)測數(shù)據(jù)
圖8 第2組實(shí)測數(shù)據(jù)
對比圖7及圖8可知,無論匯聚板輸入端口連接何種傳感器,無論匯聚板輸入端口波特率、數(shù)據(jù)長度、數(shù)據(jù)協(xié)議有何不同,匯聚板均可按表2所示的協(xié)議將接收的所有傳感器數(shù)據(jù)打包上傳,即實(shí)現(xiàn)了非聲傳感器信號的自適應(yīng)傳輸。
本方案通過傳感器信號自適應(yīng)傳輸技術(shù)增加了電路單元的兼容性、易操作性與可維修性。通過串口格式檢測、串口協(xié)議檢測和數(shù)據(jù)包長度檢測增加了單元的可靠性。實(shí)驗室及項目實(shí)際驗證,該方案可實(shí)現(xiàn)傳感器信號的自適應(yīng)傳輸,且工作穩(wěn)定、可靠性高。在硬件接口通用的條件下,本方案可推廣用于輸出信號協(xié)議、波特率、數(shù)據(jù)長度等各異的信號傳輸體系。