倪震明
摘 要:文中設(shè)計(jì)了以FPGA為控制核心,以Flash K9WBG08U1M為存儲介質(zhì)的存儲系統(tǒng)。系統(tǒng)上電工作后開始接收PCM碼流,并在起飛信號喚醒后接收3路隔離模擬量,數(shù)據(jù)存儲完成后,通過RS 422將存儲數(shù)據(jù)回讀進(jìn)行分析。文中介紹了系統(tǒng)整體組成、各模塊功能設(shè)計(jì)和系統(tǒng)邏輯設(shè)計(jì)。測試結(jié)果表明,該存儲系統(tǒng)存儲數(shù)據(jù)可靠穩(wěn)定,滿足任務(wù)要求。
關(guān)鍵詞:FPGA;信號存儲;Flash;RS 422
中圖分類號:TN431.2;TP39 文獻(xiàn)標(biāo)識碼:A 文章編號:2095-1302(2017)05-00-03
0 引 言
在航天測控系統(tǒng)中,遙測參數(shù)的測試對于驗(yàn)證飛行器的設(shè)計(jì)參數(shù)、判斷試驗(yàn)中的故障等具有重要意義[1]。本文研制的采集存儲系統(tǒng)作為遙測系統(tǒng)的組成部分,用于實(shí)時(shí)存儲飛行器在飛行中的動(dòng)態(tài)參數(shù)。存儲系統(tǒng)以FPGA作為控制核心,以Flash作為數(shù)據(jù)的存儲介質(zhì),以接收到起飛信號作為啟動(dòng)模擬量數(shù)據(jù)采集的起點(diǎn),實(shí)現(xiàn)1路5 Mb/s的PCM碼流和3路模擬量的接收。試驗(yàn)完成后,將存儲數(shù)據(jù)回讀,對其進(jìn)行分析和回放,以驗(yàn)證接收的數(shù)據(jù)是否正確、完整。
1 存儲系統(tǒng)組成
存儲系統(tǒng)組成框圖如圖1所示。主控單元FPGA上電進(jìn)行初始化后,等待并解析RS 422接收器接收的命令,當(dāng)接收到啟動(dòng)記錄命令時(shí),開始接收PCM碼流,直到存儲系統(tǒng)被斷電。當(dāng)判斷接收的起飛信號有效時(shí),采集并存儲3.2 s模擬量。其中,3路模擬量之間要求互相隔離,模擬量與PCM碼流也互相隔離。記錄完成后,通過RS 422發(fā)送器將接收的數(shù)據(jù)傳至地面設(shè)備進(jìn)行事后分析。
2 系統(tǒng)各模塊設(shè)計(jì)
2.1 RS 422接口電路
存儲系統(tǒng)的RS 422接口電路包括PCM碼流接收電路、與地面設(shè)備通信時(shí)命令接收和數(shù)據(jù)發(fā)送電路。RS 422接口在傳輸數(shù)據(jù)時(shí)使用雙絞線傳輸。
RS 422命令接收模塊和數(shù)據(jù)發(fā)送模塊采用異步串行方式,包括1位起始位、8位數(shù)據(jù)位、1位校驗(yàn)位和1位停止位。存儲系統(tǒng)在接收命令時(shí),先判斷起始位,當(dāng)起始位有效時(shí)開始接收8位數(shù)據(jù),接收完8位數(shù)據(jù)后進(jìn)行校驗(yàn),校驗(yàn)為有效數(shù)據(jù)時(shí)才對其解析,執(zhí)行相應(yīng)命令。
根據(jù)要求,存儲系統(tǒng)需要接收1路5 Mb/s的PCM數(shù)字量。按照發(fā)送端接口要求,硬件采用DS26C32作為RS 422接口芯片。PCM碼流接口時(shí)序如圖2所示。接收數(shù)據(jù)時(shí)以碼同步信號作為同步信號。為保證數(shù)據(jù)傳輸?shù)目煽啃裕l(fā)送端在碼同步上升沿發(fā)送數(shù)據(jù),存儲系統(tǒng)在碼同步下降沿接收數(shù)據(jù),每個(gè)碼同步時(shí)鐘接收1位數(shù)據(jù),每個(gè)字節(jié)按照先高位后低位的順序依次接收。FPGA對PCM碼流解碼時(shí),先將串行接收的數(shù)據(jù)轉(zhuǎn)為并行數(shù)據(jù),并對接收的并行數(shù)據(jù)進(jìn)行實(shí)時(shí)判斷,當(dāng)判斷到連續(xù)兩個(gè)字節(jié)為主幀幀標(biāo)志EB90或副幀標(biāo)志146F后,開始接收后面完整的字節(jié)。
2.2 起飛信號接收
存儲系統(tǒng)采用高速數(shù)字光耦HCPL-5531接收起飛信號。起飛信號的正確接收能夠確保模擬量正常啟動(dòng)采集。為防止起飛信號誤觸發(fā),F(xiàn)PGA在接收起飛信號時(shí),會(huì)進(jìn)行4 ms的寬度判別[2],當(dāng)起飛信號變成高電平后開始計(jì)時(shí),計(jì)時(shí)4 ms,只有起飛信號保持高電平不變,才會(huì)認(rèn)為起飛信號有效。
2.3 模擬量采集
存儲系統(tǒng)需要采集的模擬量信號最高頻率為6 kHz,在設(shè)計(jì)時(shí),將各通道模擬量采樣率設(shè)置為40 kHz,以保證采樣后的數(shù)字信號可以完整保留原始信號中的信息。0~5 V的輸入模擬量信號通過隔離電路后進(jìn)入由OPA4340搭建的電壓跟隨電路,以避免后續(xù)電路對信號處理時(shí)由于信號的輸出阻抗過高引起損耗[3]。經(jīng)調(diào)理后的模擬量由FPGA控制ADS8365采集,ADS8365是TI公司生產(chǎn)的高速、低功耗、6通道同步采樣的高性能A/D轉(zhuǎn)換器,其最高采樣率為250 kHz[4]。ADS8365采集電路如圖3所示。
由于只需要采集3路模擬量,F(xiàn)PGA控制ADS8365進(jìn)行時(shí),分別給、和一個(gè)低脈沖,ADS8365啟動(dòng)轉(zhuǎn)換,轉(zhuǎn)換完成后,設(shè)置信號為低電平,在信號的上升沿從并行接口以循環(huán)模式將數(shù)據(jù)讀回。對于采集的模擬量,采用編碼方式將循環(huán)一次采集的3路模擬量作為一個(gè)數(shù)據(jù)塊,后面加上2字節(jié)幀計(jì)數(shù)和2字節(jié)幀標(biāo)志(DAAD)進(jìn)行存儲。模擬量幀格式如圖4所示。在后期分離和分析數(shù)據(jù)時(shí),可以很方便地根據(jù)幀結(jié)構(gòu)提取出各通道模擬量數(shù)據(jù)。
2.4 隔離電路設(shè)計(jì)
根據(jù)任務(wù)要求,為避免信號之間的相互干擾,需要將數(shù)字量和模擬量互相隔離,將各模擬量之間彼此隔離。存儲系統(tǒng)在設(shè)計(jì)時(shí),采用信號全隔離的思想進(jìn)行電源隔離和信號隔離。設(shè)計(jì)模擬量電路和數(shù)字量電路時(shí),電源不供地,分別對模擬量和數(shù)字量設(shè)計(jì)供電電源,以避免數(shù)模共地帶來的干擾影響到傳輸質(zhì)量。而對于3路模擬量之間的隔離,選用ISO122P隔離放大器作為模擬信號隔離芯片,模擬量隔離電路如圖5所示。為保證模擬量的徹底隔離,對輸入信號供電與輸出信號供電、輸入信號地與輸出信號地也進(jìn)行隔離,以保證各信號之間互不影響,同時(shí)避免某路信號發(fā)生傳輸故障時(shí),對硬件其他電路造成不良影響。
2.5 Flash存儲模塊
存儲系統(tǒng)存儲1路5 Mb/s的PCM碼流,若其速率為5/8MB/s=0.625 MB/s,記錄時(shí)間為3 900 s,由此計(jì)算出PCM碼流存儲需要的容量為2 437.5 MB。采集3路模擬量,每路采樣率為40 kHz,每次采樣存儲字節(jié)數(shù)為10B,存儲時(shí)間為3.2 s,由此,模擬量存儲所需容量為40kHz×10B×3.2s=1.25MB。固存系統(tǒng)所需總?cè)萘繛? 437.5 MB+1.25 MB=2 438.75 MB。選用三星公司容量為4 GB的NAND型Flash K9WBG08U1M作為存儲介質(zhì)。從以上計(jì)算可以看出,系統(tǒng)數(shù)據(jù)存儲總速率比較慢,F(xiàn)lash采用普通寫入方式即可滿足存儲系統(tǒng)寫入速率要求。
3 系統(tǒng)邏輯設(shè)計(jì)與功能實(shí)現(xiàn)
存儲系統(tǒng)選用Xilinx公司Spartan-2系列的XC2S200 FPGA作為控制單元,用以實(shí)現(xiàn)系統(tǒng)的功能。采用模塊化設(shè)計(jì)原則,不僅可以降低邏輯設(shè)計(jì)難度,還可以方便整體功能的調(diào)試。FPGA設(shè)計(jì)系統(tǒng)框圖如圖6所示。
存儲系統(tǒng)的工作模式分為擦除模式、記錄模式和回讀模式。系統(tǒng)上電完成系統(tǒng)復(fù)位后,F(xiàn)PGA控制接收異步串行命令。當(dāng)判斷到異步串行數(shù)據(jù)起始位為低電平時(shí),接收后面8位數(shù)據(jù),接收完成后對照校驗(yàn)位判斷數(shù)據(jù)是否有效,若數(shù)據(jù)有效,則對數(shù)據(jù)進(jìn)行實(shí)時(shí)解析。
當(dāng)解析當(dāng)前指令為擦除指令時(shí),對Flash進(jìn)行擦除操作。擦除操作按塊進(jìn)行[5],在Flash的數(shù)據(jù)端口先寫入擦除標(biāo)志60 h,再寫入塊地址,最后寫入擦除命令D0h,即可擦除該塊。擦除成功后,塊地址遞增并循環(huán)上述操作,即可完成對整個(gè)Flash的擦除。若擦除失敗,則向塊中寫入無效塊標(biāo)志。所有塊擦除后,返回進(jìn)行指令判斷。
當(dāng)解析當(dāng)前指令為記錄指令時(shí),存儲系統(tǒng)接收數(shù)據(jù)并且由FPGA控制Flash進(jìn)行寫操作。FPGA在時(shí)鐘作用下判斷碼同步下降沿,在每個(gè)下降沿接收1位數(shù)據(jù),連續(xù)接收16位數(shù)據(jù)組成2個(gè)完整的字節(jié),實(shí)時(shí)判斷這2個(gè)字節(jié),當(dāng)這兩個(gè)字節(jié)為主幀標(biāo)志EB90或副幀標(biāo)志146F時(shí),才將后面接收的數(shù)據(jù)存儲。同時(shí),實(shí)時(shí)判斷起飛信號,當(dāng)起飛信號有效時(shí),開始采集模擬量。將外部參考時(shí)鐘分頻得到3 M時(shí)鐘作為ADS8365的參考時(shí)鐘,F(xiàn)PGA控制將、和拉低以啟動(dòng)轉(zhuǎn)換,約5.5 μs后,轉(zhuǎn)換完成,F(xiàn)PGA控制和信號將3路數(shù)據(jù)讀取并進(jìn)行編碼。接收的數(shù)字量和模擬量采用混合編幀方式寫入Flash。對Flash進(jìn)行寫操作時(shí),先判斷當(dāng)前塊是否為有效塊,若當(dāng)前塊為無效塊,則跳過該塊,若當(dāng)前塊為有效塊,則按頁寫入4 K數(shù)據(jù)后進(jìn)行頁編程,循環(huán)寫并編程的過程直到寫完64頁才算完成了一塊數(shù)據(jù)的寫入,循環(huán)上述過程,直至存儲系統(tǒng)被斷電。
當(dāng)解析當(dāng)前指令為回讀指令時(shí),F(xiàn)PGA控制Flash進(jìn)行讀數(shù)操作。讀取數(shù)據(jù)時(shí)先判斷當(dāng)前塊是否為有效塊,若為無效塊則跳過該塊,若為有效塊,則按頁將數(shù)據(jù)讀出,采用異步串行的方法按照1位起始位、8位數(shù)據(jù)位、1位校驗(yàn)位和1位停止位的順序,將讀出的數(shù)據(jù)按字節(jié)發(fā)送至地面設(shè)備進(jìn)行處理。
4 存儲系統(tǒng)測試結(jié)果
在完成存儲系統(tǒng)的硬件功能和軟件功能調(diào)試后,對其進(jìn)行綜合性測試。由外部信號源發(fā)送PCM碼流、直流量和起飛信號,存儲系統(tǒng)接收信號并存儲。完成測試后利用分析軟件對原始數(shù)據(jù)進(jìn)行解包,拆分出模擬量數(shù)據(jù)和數(shù)字量數(shù)據(jù)。
圖7所示為拆分后的模擬量數(shù)據(jù)。前6列中,每兩列代表1路數(shù)據(jù),按照第1路到第3路的順序。第7、8列為幀計(jì)數(shù),從圖中可以看出,幀計(jì)數(shù)連續(xù)遞增,最后兩列DAAD是幀標(biāo)志??梢钥闯?,采集結(jié)果與設(shè)計(jì)值完全一致。圖8所示為模擬量第1路數(shù)據(jù)繪圖,其中信號源第1路模擬量發(fā)送的是1 V直流量,圖7的x軸表示采集的時(shí)間,y軸表示采集的電壓,可見采集的時(shí)間符合設(shè)計(jì)值,采集的電壓值與實(shí)際發(fā)送電壓值相同。
圖9所示為PCM碼流接收片段。最后兩列為數(shù)據(jù)中的主幀標(biāo)志EB90,將數(shù)據(jù)與信號源發(fā)送的PCM碼流對比可知,存儲系統(tǒng)接收的PCM數(shù)字量幀結(jié)構(gòu)正確,通過分析軟件分析,接收PCM數(shù)字量過程中沒有出現(xiàn)丟數(shù)或誤碼的情況。
5 結(jié) 語
根據(jù)全信號隔離數(shù)據(jù)采集的思想要求,設(shè)計(jì)了基于FPGA的數(shù)據(jù)存儲系統(tǒng),可以接收1路PCM數(shù)字量和3路模擬量,數(shù)字量與模擬量之間互相隔離,3路模擬量之間也互相隔離。該存儲系統(tǒng)已成功應(yīng)用于某飛行試驗(yàn),通過各項(xiàng)試驗(yàn)驗(yàn)證,存儲系統(tǒng)性能穩(wěn)定可靠,各項(xiàng)指標(biāo)滿足任務(wù)要求。
參考文獻(xiàn)
[1]鄭永秋.某飛行器遙測數(shù)據(jù)記錄器的優(yōu)化設(shè)計(jì)[D].太原:中北大學(xué),2012.
[2]丁海飛.基于雙平面技術(shù)的固態(tài)存儲器的設(shè)計(jì)與實(shí)現(xiàn)[D].太原:中北大學(xué),2012.
[3]塞爾吉?dú)W.弗朗哥.基于運(yùn)算放大器和模擬集成電路的電路設(shè)計(jì)[M].西安:西安交通大學(xué)出版社,2009.
[4] The Datasheet of ADS8365[Z].
[5] The Datasheet of K9WBG08U1M[Z].
[6]朱海平,任坤.基于FPGA的雙極化信號的采集板設(shè)計(jì)[J].物聯(lián)網(wǎng)技術(shù),2016,6(11):51-53.
[7]唐文龍,田茂,吳志強(qiáng),等.基于SoC FPGA異步通信接口的實(shí)現(xiàn)[J].物聯(lián)網(wǎng)技術(shù),2015,5(12):38-39.
[8]劉欣,翟成瑞,張會(huì)新.多路隔離信號采集存儲系統(tǒng)設(shè)計(jì)[J].自動(dòng)化儀表,2014(8):27-30.