多慣組脈沖輸出同步計(jì)數(shù)系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:為滿足某慣導(dǎo)設(shè)備生產(chǎn)廠家對(duì)多個(gè)慣組產(chǎn)品進(jìn)行同時(shí)測試的需求,設(shè)計(jì)了一種對(duì)于多路脈沖信號(hào)同步計(jì)數(shù)的測試系統(tǒng)。(方法)測試系統(tǒng)以FPGA芯片和USB芯片CY68013為核心,對(duì)4個(gè)慣導(dǎo)組件輸出的48路脈沖信號(hào),每路進(jìn)行無縫計(jì)數(shù),每4ms為一個(gè)計(jì)數(shù)單元。并利用USB總線將每一個(gè)計(jì)數(shù)單元的計(jì)數(shù)值上傳到測控計(jì)算機(jī),上位機(jī)程序進(jìn)行實(shí)時(shí)的處理、保存和顯示。(方法)測試系統(tǒng)滿足了對(duì)多個(gè)慣組產(chǎn)品同時(shí)測試的要求,提高了測試效率。
關(guān)鍵字:慣導(dǎo)組件;USB;CY68013;FPGA
慣組產(chǎn)品是現(xiàn)代慣導(dǎo)系統(tǒng)最核心的信息源,由陀螺儀和加速度計(jì)組合而成。慣組產(chǎn)品工作時(shí)直接輸出脈沖信號(hào)。測試過程采用專用測試平臺(tái),將產(chǎn)品固定在帶溫箱的三軸轉(zhuǎn)臺(tái)上,通過在不同的溫度下改變轉(zhuǎn)臺(tái)的位置和速率,由測試系統(tǒng)對(duì)其輸出的脈沖信號(hào)進(jìn)行計(jì)數(shù),再對(duì)計(jì)數(shù)值根據(jù)數(shù)學(xué)模型進(jìn)行處理,從而得到慣組產(chǎn)品的性能參數(shù)。由于溫度是影響慣導(dǎo)組件的主要因素之一,所以需要在多個(gè)溫度點(diǎn)下,對(duì)其進(jìn)行多次測試。而每個(gè)溫度點(diǎn)需要4個(gè)小時(shí)的保溫。因而完成一個(gè)產(chǎn)品的標(biāo)定,一般需要三天左右的時(shí)間才能完成。針對(duì)這種情況,本文提出了一種多慣組同時(shí)測量的方案,利用FPGA對(duì)脈沖信號(hào)進(jìn)行采集,再通過USB總線把采的數(shù)據(jù)發(fā)送到PC機(jī)上進(jìn)行數(shù)據(jù)歸算。與傳統(tǒng)的測量系統(tǒng)相比,本系統(tǒng)可以對(duì)4個(gè)慣導(dǎo)組件的48路脈沖數(shù)據(jù)進(jìn)行同步計(jì)數(shù)并輸出,進(jìn)而有效地縮短測試周期,提高測試效率。
1 測試系統(tǒng)組成
多慣組脈沖測試系統(tǒng)是由下位機(jī)和上位機(jī)兩個(gè)部分構(gòu)成。下位機(jī)由FPGA和USB接口電路組成,實(shí)現(xiàn)對(duì)脈沖信號(hào)的計(jì)數(shù)和數(shù)據(jù)的接收。上位機(jī)是MFC程序設(shè)計(jì)的界面,對(duì)接收到的數(shù)據(jù)進(jìn)行實(shí)時(shí)的處理、顯示和保存。由于本系統(tǒng)是同時(shí)接收4套慣組48路脈沖信號(hào),所包含的計(jì)數(shù)器個(gè)數(shù)多,計(jì)數(shù)頻率高,并且分別對(duì)48路信號(hào)獨(dú)立測量,要求較高的可靠性,所以系統(tǒng)采用FPGA來實(shí)現(xiàn)控制邏輯及計(jì)數(shù)模塊的功能。系統(tǒng)選用Altera公司的Cyclone IIEP2C89208C8N型號(hào)的FPGA芯片。在數(shù)據(jù)傳輸方面,選用Cypress公司的FX2LP CY68013芯片作為USB傳輸模塊。采集系統(tǒng)框圖如圖1所示。
在圖1中,通過Verilog語言對(duì)48路同步計(jì)數(shù)模塊進(jìn)行設(shè)計(jì),實(shí)現(xiàn)對(duì)48路脈沖信號(hào)的同步計(jì)數(shù),將接收到的數(shù)據(jù)通過USB芯片CY68013發(fā)送到PC機(jī),由PC機(jī)對(duì)接收到的數(shù)據(jù)進(jìn)行處理,脈沖信號(hào)的計(jì)數(shù)是由無縫計(jì)數(shù)器,每隔4ms向48路計(jì)數(shù)模塊發(fā)送相應(yīng)的地址,獲得48路脈沖計(jì)數(shù)模塊的計(jì)數(shù)值,再通過USB總線把數(shù)據(jù)發(fā)送到PC機(jī)上。
FX2LP CY68013芯片有PORTS、Slave FIFOs和GPIF三種接口方式:PORTS模式以CY68013自帶的8051核來進(jìn)行端口FIFO的讀寫,其優(yōu)點(diǎn)是開發(fā)簡單,缺點(diǎn)是傳輸速度有限;Slave FIFOs模式是使用外部芯片的邏輯來直接操作端口FIFO,其優(yōu)點(diǎn)是端口FIFO操作靈活,缺點(diǎn)是傳輸速度依賴于外部控制邏輯的速度;GPIF模式是使用波形編輯工具生成的波形信號(hào)來進(jìn)行端口FIFO的讀寫,其優(yōu)點(diǎn)是傳輸速度最高,缺點(diǎn)是讀寫邏輯單一,不容易靈活控制。因?yàn)槭菍?duì)48路脈沖信號(hào)進(jìn)行實(shí)時(shí)采樣計(jì)數(shù),且每一路脈沖信號(hào)采用一個(gè)16位計(jì)數(shù)器,采樣周期為4毫秒,即每秒要采集250次。但在實(shí)際使用中發(fā)現(xiàn),在PORTS模式下,由于8051內(nèi)核執(zhí)行速度有限,在極短的中斷時(shí)間內(nèi)有時(shí)會(huì)不能完成其數(shù)據(jù)處理和傳輸?shù)娜蝿?wù),此種狀態(tài)下USB端就會(huì)出現(xiàn)死循環(huán)狀態(tài)。但在Slave FIFO或CPIF模式下,傳輸和接收的端口將不經(jīng)過8051內(nèi)核干涉即可同片外高速互傳數(shù)據(jù),從而提高接收發(fā)送串行信號(hào)的效率與可靠性。由于GPIF模式下的編輯波形只能進(jìn)行讀寫操作,而在Slave FIFOs的模式下狀態(tài)機(jī)可以對(duì)數(shù)據(jù)進(jìn)行簡單的處理。因此,本系統(tǒng)使用Slave FIFOs的傳輸模式。
2 系統(tǒng)的FPGA設(shè)計(jì)
2.1 48路脈沖計(jì)數(shù)模塊設(shè)計(jì)
系統(tǒng)的48路脈沖計(jì)數(shù)模塊設(shè)計(jì)是通過使用Verilog語言編寫的16位計(jì)數(shù)器,可以對(duì)慣導(dǎo)組件輸出的信號(hào)分別進(jìn)行不間斷計(jì)數(shù),計(jì)數(shù)值讀取過程不影響計(jì)數(shù)器的正常計(jì)數(shù),該模塊data_in[47…0]是48路慣導(dǎo)組件的脈沖輸入,add_in [6…0]是每個(gè)脈沖輸入通道的地址,data_out[15…0]是計(jì)數(shù)單元的計(jì)數(shù)值輸出。
2.2 時(shí)鐘分頻模塊設(shè)計(jì)
本系統(tǒng)采用50 MHz有源晶振,EP2C8Q208C8N內(nèi)部擁有兩個(gè)鎖相環(huán),通過倍頻使頻率達(dá)到400MHz,然后連接一個(gè)分頻模塊為狀態(tài)機(jī)提供周期為4ms的計(jì)數(shù)值鎖存信號(hào)(clk_lock)和一個(gè)狀態(tài)機(jī)跳轉(zhuǎn)觸發(fā)信號(hào)(clk_state)。
2.3 狀態(tài)機(jī)模塊設(shè)計(jì)
狀態(tài)機(jī)模塊主要包括兩個(gè)部分:數(shù)據(jù)處理部分和FIFO控制邏輯部分。
2.3.1 狀態(tài)機(jī)的數(shù)據(jù)處理部分
狀態(tài)機(jī)在計(jì)數(shù)值鎖存信號(hào)(clk_lock)上升沿到來時(shí)會(huì)鎖存計(jì)數(shù)器此刻的計(jì)數(shù)值,并在狀態(tài)機(jī)的下一個(gè)狀態(tài)將計(jì)數(shù)值存儲(chǔ)到data-new的寄存器型變量中并進(jìn)行求差運(yùn)算,接著將被減數(shù)與減數(shù)在下一個(gè)狀態(tài)進(jìn)行更新,最后將求出來的差值交給FIFO控制邏輯進(jìn)行發(fā)送。每個(gè)計(jì)數(shù)單元計(jì)數(shù)值求差的狀態(tài)機(jī)原理圖如圖3所示。
2.3.2 狀態(tài)機(jī)的FIFO控制邏輯部分
FPGA控制邏輯的主要作用足通過其內(nèi)部的狀態(tài)機(jī)直接操作CY68013的FIFO來進(jìn)行讀寫控制。SLOE、SLRD和SLWR作為芯片的讀寫信號(hào)與使能控制信號(hào)。INPKTEND是FPGA主動(dòng)命令USB芯片向上位PC發(fā)送數(shù)據(jù)的控制端(當(dāng)FIFO上的數(shù)據(jù)小于規(guī)定大小而又要強(qiáng)制上傳給PC時(shí)使用)。FD為雙向的數(shù)據(jù)傳輸接口。FLAGA、FLAGB、FLAGC、FLAGD四個(gè)標(biāo)志位能夠指示FIFO的空滿程度,為數(shù)據(jù)的連續(xù)存取提供了可靠的保證。FPGA_ADR0和FPGA ADR1用于選擇內(nèi)部4個(gè)緩沖端點(diǎn)之一。IFCLK提供時(shí)鐘信號(hào)(僅用于同步Slave FIFOs模式)。FPGA的引腳控制這些端口,達(dá)到對(duì)USB端的存儲(chǔ)FIFO進(jìn)行操作的目的。由于異步Slave FIFOs模式的讀寫狀態(tài)簡單,穩(wěn)定性好。本系統(tǒng)選擇異步方式來讀取FIFO。
實(shí)現(xiàn)異步Slave FIFO的寫操作的狀態(tài)機(jī)如圖7所示。其狀態(tài)轉(zhuǎn)移進(jìn)程如下:
IDLE:此狀態(tài)為空閑狀態(tài),什么也不做;當(dāng)寫事件發(fā)牛時(shí)(即CLK_LOCK的上升沿到來時(shí)),進(jìn)狀態(tài)1;
狀態(tài)1:使FIFOADR[1:0]指向IN FIFO(即就是選擇CY68013的四個(gè)大數(shù)據(jù)量FIFO中的一個(gè),固件程序已將此FIFO配置為寫模式),進(jìn)狀態(tài)2;
狀態(tài)2:如果FIFO滿標(biāo)志為假(即FLAGC引腳為高電平時(shí)),則進(jìn)狀態(tài)3;否則在本狀態(tài)等待;
狀態(tài)3:驅(qū)動(dòng)數(shù)據(jù)到數(shù)據(jù)線上,使SLWR有效(低電平),一個(gè)CLK_STATE后再無效(高電平),以使FIFO寫指針遞增,進(jìn)狀態(tài)4;
狀態(tài)4:如需傳輸更多的數(shù),返回狀態(tài)2,否則進(jìn)狀態(tài)IDLE。
狀態(tài)跳轉(zhuǎn)示意圖如圖4所示:
使用QuartusII對(duì)FIFO的控制邏輯進(jìn)行時(shí)序仿真如圖5所示。
2.4 FPGA整體模塊設(shè)計(jì)
FPGA整體模塊邏輯電路圖如圖6所示。
3 系統(tǒng)軟件設(shè)計(jì)
3.1 CY68013的固件程序設(shè)計(jì)
擔(dān)任著一個(gè)系統(tǒng)最基礎(chǔ)工作的程序才可稱之為固件程序,比如計(jì)算機(jī)主板上的BIOS。固件程序的作用就是輔助硬件完成預(yù)期的設(shè)備功能。如下圖7所示,同件程序在CY68013上電之后,首先通過調(diào)用TD_Init()函數(shù)來完成對(duì)多個(gè)狀態(tài)寄存器的配置。接著,固件程序會(huì)不停檢查FIFO中寫入的數(shù)據(jù)大小,當(dāng)足夠一包的數(shù)據(jù)時(shí)自動(dòng)發(fā)送數(shù)據(jù)包。當(dāng)發(fā)生最后一包的數(shù)據(jù)不足一包的大小時(shí),INPKTEND引腳在接收到信號(hào)后會(huì)強(qiáng)制打包上傳FIFO中的數(shù)據(jù)。
3.2 應(yīng)用程序設(shè)計(jì)
應(yīng)用程序的開發(fā)采用MFC框架來設(shè)計(jì)應(yīng)用程序,實(shí)現(xiàn)從USB芯片的FIFO中讀取一定大小的數(shù)據(jù)包并進(jìn)行實(shí)時(shí)的處理,以及在用戶界面上實(shí)時(shí)地顯示數(shù)據(jù)。由于文巾的數(shù)據(jù)包為每4ms的實(shí)時(shí)數(shù)據(jù),數(shù)據(jù)包讀取頻率很高,因此.應(yīng)用程序采用多個(gè)函數(shù)連續(xù)讀取多個(gè)數(shù)據(jù)包以后再去啟動(dòng)數(shù)據(jù)處理和顯示的線程,通過實(shí)驗(yàn)發(fā)現(xiàn)這樣可以有效地降低數(shù)據(jù)處理線程的啟動(dòng)頻率,保證MFC應(yīng)用程序的穩(wěn)定運(yùn)行。首先,對(duì)所有的函數(shù)類進(jìn)行初始化,并調(diào)用Win32函數(shù)CreateFile來得到設(shè)備句柄,根據(jù)設(shè)備句柄來連接USB設(shè)備。通過接收USB總線的數(shù)據(jù)包,來獲得實(shí)時(shí)的數(shù)據(jù)。然后,再對(duì)實(shí)時(shí)的4ms的數(shù)據(jù)進(jìn)行處理,求出每秒的脈沖數(shù)并進(jìn)行實(shí)時(shí)的顯示和保存為txt文檔。應(yīng)用程序數(shù)據(jù)采集流程圖如圖8所示。
4 實(shí)驗(yàn)結(jié)果
本系統(tǒng)的測試實(shí)驗(yàn)是使用SP1641D信號(hào)發(fā)生器作為脈沖信號(hào)源,將此單路脈沖信號(hào)使用多路開關(guān)板擴(kuò)展為48路同源的脈沖信號(hào),當(dāng)信號(hào)源輸出信號(hào)為771Hz方波信號(hào)時(shí),測量結(jié)果以及應(yīng)用程序界面如圖9所示。圖中T (S)為測試進(jìn)行中的實(shí)時(shí)時(shí)間,其它各列為對(duì)應(yīng)的4個(gè)慣導(dǎo)組件的48路的脈沖計(jì)數(shù)值。通過實(shí)驗(yàn)驗(yàn)證,本系統(tǒng)能夠滿足對(duì)4個(gè)慣導(dǎo)組件的48路脈沖信號(hào)進(jìn)行多路同步計(jì)數(shù)的要求。
5 結(jié)束語
文中改進(jìn)后的測試系統(tǒng),具有操作簡單,穩(wěn)定性及實(shí)時(shí)性好等特點(diǎn),該系統(tǒng)設(shè)計(jì)可作為慣導(dǎo)組件的新型測量設(shè)備,提高慣導(dǎo)組件測試系統(tǒng)的效率,并且能自動(dòng)輸出數(shù)據(jù)文檔,方便操作和管理。SlaveFIFOs模式可以有效使用USB2.0的帶寬,很好地滿足了在數(shù)據(jù)傳輸速度上的要求。VC與Matlab的混編充分利用了兩個(gè)編程語言各自的優(yōu)勢。