徐 菲,羅明璋,王軍民
(長(zhǎng)江大學(xué)電子信息學(xué)院,湖北 荊州434023)
傳統(tǒng)的測(cè)控系統(tǒng)采用前端采集后經(jīng)由串口傳輸給PC機(jī)的采集模式,因采集傳輸速率有限,無(wú)法滿足測(cè)控系統(tǒng)的實(shí)時(shí)性要求。另外,PC機(jī)功耗高、體積大,難以適應(yīng)野外施工需求[1-2]。為此,筆者基于ARM平臺(tái)進(jìn)行了FIFO接口設(shè)計(jì)。
對(duì)于傳輸通道來(lái)說(shuō),采集卡發(fā)送數(shù)據(jù),處理器接收數(shù)據(jù),其數(shù)據(jù)總線寬度應(yīng)保持一致。C8051F060使用的是8位數(shù)據(jù)總線,IDT7208使用的數(shù)據(jù)總線是9位FIFO,S3C6410使用32位數(shù)據(jù)總線,因此系統(tǒng)的傳輸通道每次傳輸8位數(shù)據(jù)[2]。作為FIFO數(shù)據(jù)輸入端,C8051F060的外部數(shù)據(jù)總線接入到IDT7208的數(shù)據(jù)輸入總線,而FIFO輸出數(shù)據(jù)給ARM,則IDT7208的數(shù)據(jù)輸出總線接S3C6410的數(shù)據(jù)總線的低8位LDATA0~LDATA7[3]。
由FIFO的異步時(shí)鐘先入先出結(jié)構(gòu)及IDT7208的讀寫(xiě)時(shí)序圖(見(jiàn)圖1(a))可知,系統(tǒng)中ARM和單片機(jī)都不需要使用地址線選擇數(shù)據(jù),只需對(duì)FIFO的讀控制(/W)和寫(xiě)控制(/R)分別給予讀時(shí)鐘和寫(xiě)時(shí)鐘即可。鑒于ARM內(nèi)部片地址選址機(jī)制,可將ARM的外部存儲(chǔ)器片選信號(hào)(/n CS1)與外部數(shù)據(jù)讀控制信號(hào)(/Ln OE)進(jìn)行邏輯或后作為FIFO的讀控制(/R),這樣ARM只要訪問(wèn)0X08000000~0x10000000之間的任意地址都能訪問(wèn)到FIFO[4]。
圖1 IDT7208讀寫(xiě)時(shí)序圖及復(fù)位時(shí)序圖
C8051F060如果要將采樣所得數(shù)據(jù)實(shí)時(shí)地送入FIFO,必須使用DMA(Direct Memor y Access,直接內(nèi)存存取)方式。將C8051F060中可DMA訪問(wèn)的外部數(shù)據(jù)總線(P7)接IDT7208數(shù)據(jù)輸入總線(D0~D7),然后讓單片機(jī)的P0.5輸出與外部寫(xiě)控制線(/WE-P4.7)進(jìn)行邏輯或后將其連接至FIFO的寫(xiě)控制(/W)。
根據(jù)IDT7208芯片手冊(cè)描述,IDT7208在重新上電及出現(xiàn)后需要進(jìn)行復(fù)位,因此將C8051F060的P0.6與IDT7208的/RS相連用以復(fù)位FIFO(見(jiàn)圖1(b))。
IDT7208提供了3個(gè)狀態(tài)信號(hào),即空信號(hào)(/EF)、半滿信號(hào)(/HF)和滿信號(hào)(/FF),將這3個(gè)狀態(tài)信號(hào)分別與單片機(jī)和ARM相連,用以觸發(fā)外部中斷及狀態(tài)監(jiān)測(cè)。
在C8051F060開(kāi)始采集前,通過(guò)程序?qū)⑵鋬?nèi)部ADC輸出配置成DMA模式。采樣時(shí),使單片機(jī)的P0.5引腳輸出為低電平,此時(shí)ADC完成采集后DMA會(huì)將轉(zhuǎn)換后的數(shù)據(jù)放入FIFO的D0~D7,與此同時(shí)將從/WE腳輸出下降沿。因單片機(jī)的P0.5腳與/WE腳通過(guò)一個(gè)或門(mén)連接到FIFO的寫(xiě)信號(hào)(/W),這樣此時(shí)FIFO的寫(xiě)信號(hào)(/W)也為下降沿,D0~D7上的數(shù)據(jù)將寫(xiě)入FIFO。這樣ADC每完成一次采集點(diǎn)的采樣,DMA都會(huì)把當(dāng)次采集到的數(shù)據(jù)分成高、低字節(jié)按順序分2次存入FIFO。
在進(jìn)行數(shù)據(jù)采集前,C8051F060需要將IDT7208先復(fù)位,這樣可以更充分地保證FIFO的讀、寫(xiě)指針的穩(wěn)定。根據(jù)IDT7208的復(fù)位時(shí)序圖,首先將C8051F060的P0.6腳配置成通用輸出口,然后給IDT7208的/RS引腳輸入一個(gè)不小于25ns的低脈沖,即在C8051F060的P0.6腳輸出一個(gè)低脈沖,并在復(fù)位完成后延時(shí)10ns再開(kāi)始進(jìn)行采集。C8051F060的軟件流程如圖2所示。
ARM外部存儲(chǔ)器片選信號(hào)(n CS1)和外部數(shù)據(jù)讀控制信號(hào)(/Ln OE)進(jìn)行邏輯或后與FIFO的讀信號(hào)(/R)連接在一起,這樣ARM每執(zhí)行一次外部存儲(chǔ)器I/O讀操作,F(xiàn)IFO的/R腳便會(huì)接收到一個(gè)負(fù)脈沖,此時(shí)ARM讀取到FIFO的一個(gè)數(shù)據(jù)。
IDT7208的數(shù)據(jù)最大存儲(chǔ)容量為64 Kb,在C8051F060完成16K次采集轉(zhuǎn)換后,IDT7208已經(jīng)存入一半的數(shù)據(jù),此時(shí)FIFO存儲(chǔ)器半滿信號(hào)標(biāo)志(/HF)輸出低電平(在不到半滿時(shí)輸出高電平)。S3C6410的外部中斷EINT4已經(jīng)連接到了FIFO存儲(chǔ)器的/HF信號(hào),利用其由高到低的變化產(chǎn)生的中斷可以說(shuō)明數(shù)據(jù)傳輸狀態(tài)。當(dāng)ARM接收到/HF發(fā)出的中斷后,ARM開(kāi)始連續(xù)執(zhí)行32 K次I/O讀操作,數(shù)據(jù)便依次從IDT7208送入S3C6410中了。S3C6410的軟件流程如圖3所示。
圖2 C8051F060的軟件流程圖
圖3 S3C6410的軟件流程圖
將上述設(shè)計(jì)應(yīng)用于基于聲頻應(yīng)力波無(wú)損檢測(cè)法的錨桿錨固無(wú)損檢測(cè)系統(tǒng)中。在該系統(tǒng)中,聲波探頭的接收頻率一般為20 Hz~20 KHz,根據(jù)采樣定理,采樣率最好大于探頭接收頻率的5~8倍,因此測(cè)量時(shí)設(shè)置 C8051F060采樣率為500 KHz[5]。
圖4 儀器工作界面
當(dāng)被測(cè)錨桿長(zhǎng)度為10 m,檢測(cè)信號(hào)長(zhǎng)度取前8個(gè)周期的情況下,每次采集需要采樣16 K個(gè)點(diǎn),因此每次采樣有256 Kb數(shù)據(jù)量,并在32 ms內(nèi)完成采樣及傳輸,此時(shí)傳輸率達(dá)到8 Mb/s。
根據(jù)文獻(xiàn)[6](JGJ/T182-2009)要求,每根錨桿測(cè)量必須超過(guò)3次,試驗(yàn)中采用每根錨桿測(cè)量5次,并將每次采集到的波形按不同顏色疊加顯示在同一屏幕上,這樣可以更直觀地顯示測(cè)量的質(zhì)量。
圖4所示為一次野外測(cè)量的儀器工作界面,實(shí)際錨桿長(zhǎng)度為3.5 m,5次測(cè)量結(jié)果都為3.56096 m,誤差為1.7%,在文獻(xiàn)[6]所要求的5%誤差標(biāo)準(zhǔn)以內(nèi)。儀器每次進(jìn)行采集時(shí)反應(yīng)迅速(即測(cè)即顯示),極大地提高了工作效率。
[1]羅明璋,徐菲,王軍民,等 .錨桿錨固質(zhì)量檢測(cè)儀應(yīng)用軟件在Ar m-Linux下的實(shí)現(xiàn)[J].長(zhǎng)江大學(xué)學(xué)報(bào)(自科版),2008,5(3):199-201.
[2]朱曉鵬.ARM+FPGA的實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì),2009,30(13):3088-3090.
[3]金明 .FIFO芯片在高速系統(tǒng)中的應(yīng)用[J].電子技術(shù)應(yīng)用,1998,28(3):61-62.
[4]羅明璋,王軍民,徐菲,等 .聲頻應(yīng)力波實(shí)時(shí)檢測(cè)分析儀[J].振動(dòng)、測(cè)試與診斷,2012,32(2):292-295.
[5]王軍民,陳義群,陳華 .高速公路錨桿錨固質(zhì)量無(wú)損檢測(cè)技術(shù)研究[J].地球物理學(xué)進(jìn)展,2004,19(4):782-785.
[6]JGJ/T2009,錨桿錨固質(zhì)量無(wú)損檢測(cè)技術(shù)規(guī)程[S].