基于Nios平臺(tái)的光信號(hào)采集片上系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
關(guān)鍵詞:片上系統(tǒng) 光纖光柵 光信號(hào)采集 Nios
引言
一項(xiàng)很有發(fā)展前景的新技術(shù)-纖維光學(xué)及光纖光柵(FBG,F(xiàn)iber Bragg Grating)技術(shù),已經(jīng)被應(yīng)用于溫度及形變?cè)诰€測(cè)量中。FBG傳感器的特征就是具有良好的穩(wěn)定性、可靠性。除此之外,它還具有基于光纖傳感器的一些共有優(yōu)點(diǎn),如對(duì)電磁的不敏感性、尺寸小、傳感器和數(shù)據(jù)獲取裝置之間距離可以很遠(yuǎn);因而能克服傳統(tǒng)的溫度和形變傳感器(如熱電偶和形變測(cè)量器)的很多缺點(diǎn),如重量、硬度方面的缺陷以及對(duì)環(huán)境變化干擾的抵抗能力差等。
本文主要介紹對(duì)FBG傳感器信號(hào)的快速獲取方法,重點(diǎn)介紹基于FPGA的Altera公司的Excalibur開發(fā)板,設(shè)計(jì)一個(gè)片上嵌入式測(cè)量系統(tǒng),用它來獲取光信號(hào)。與目前具有同樣功能的其它測(cè)量系統(tǒng)相比,它具有靈活、穩(wěn)定、易維護(hù)、高效率等優(yōu)點(diǎn)。本測(cè)量系統(tǒng)的硬件開發(fā)包括,使用Altera Excalibur開發(fā)板配置生成一個(gè)嵌有Nios處理器的“片上”測(cè)量系統(tǒng),以及使用CCD和高速ADC設(shè)計(jì)光電信號(hào)的轉(zhuǎn)換和采集電路;軟件開發(fā)包括,在Apex EP20K FPGA中時(shí)序信號(hào)的Verilog實(shí)現(xiàn),使用C語言對(duì)光電信號(hào)的獲取。
1 系統(tǒng)結(jié)構(gòu)
測(cè)量系統(tǒng)由以下幾部分組成:光學(xué)系統(tǒng)、放置被測(cè)物體內(nèi)的光纖光柵(FBG)和信號(hào)采集處理部分。其中的光學(xué)系統(tǒng)包括光源和分光儀,使用高亮度的激光發(fā)生器作為光源,用于產(chǎn)生入射被測(cè)物體內(nèi)的光纖的光波。它的功率大于1mW,光頻譜位于808~858nm,入射后其中某一波長(zhǎng)的光波被光柵反射回來,并進(jìn)入分光儀。分光儀是由若干面反射鏡和全息光柵組成,主要作用是對(duì)光波進(jìn)行光學(xué)處理后,使光波能夠準(zhǔn)確投射在CCD上,將光信號(hào)轉(zhuǎn)換成電信號(hào),便于信號(hào)的采集和處理。系統(tǒng)中信號(hào)采集處理部分是由CCD線列傳感器ADC轉(zhuǎn)換器以及Altera ExCalibur開發(fā)板組成。它的作用是將投射在CCD上的光信號(hào)先變?yōu)槟M電信號(hào),而后通過ADC將信號(hào)再轉(zhuǎn)換成數(shù)字量信號(hào),然后通過Altera's Excalibur開發(fā)板上的片上Nios嵌入式系統(tǒng),對(duì)這些數(shù)字量信號(hào)進(jìn)行采集和處理,得到相應(yīng)的溫度值和應(yīng)變值,以便完成整個(gè)測(cè)量過程。系統(tǒng)框架示意圖如圖1所示。
2 光纖光柵(FBG)傳感器工作原理
光纖光柵(FBG)傳感器是光纖傳感器的一種。它不僅可以用于靜態(tài)信號(hào),還可以用于動(dòng)態(tài)信號(hào)的采集,例如溫度、形變和壓力等。
以下結(jié)合圖2介紹光纖光柵(FBG)的工作原理。
光纖光柵(FBG)傳感器的工作原理就是用某一波長(zhǎng)的光信號(hào)來表示我們希望采集的物理量。光纖中的光柵可以被看作是一個(gè)“濾波器”。根據(jù)光柵本身的物理特性,進(jìn)入光纖的光波的某一波長(zhǎng)部分被光柵反射回來,這一波長(zhǎng)的光波就被從入身的光波中“濾除”了。這樣,我們希望采集的物理量就被“調(diào)制”成了這一波長(zhǎng)的光信號(hào)。
圖3 緩沖接口電路
假設(shè)光柵的反射系數(shù)為neff,光柵之間的幾何距離為dB,通過以下公式得出被反射回的光波的波長(zhǎng)λB=2×neff×dB。機(jī)械應(yīng)力將改變光柵之間的幾何距離,而溫度的變化將改變光柵的反射系數(shù)。可以試想,在已知溫度T0和已知壓力ε0條件下,反射波長(zhǎng)為λB0,那么,可以通過檢測(cè)未知溫度T1和未知應(yīng)力ε1所對(duì)應(yīng)反射波長(zhǎng)λ1與λB0之間的波長(zhǎng)偏移,來計(jì)算得到此刻的溫度T1和應(yīng)力ε1,計(jì)算公式如下:
其中光柵的相關(guān)常系數(shù)c1、c2,由光柵的校準(zhǔn)過程所決定。
應(yīng)力ε1=(λ1-λB0)/[(1-Peff)]×λB0
其中光柵常系數(shù)的Peff是光柵光塑常系數(shù)。
3 CCD圖像傳感器的選擇
為了方便系統(tǒng)對(duì)FBG輸出的光信號(hào)進(jìn)行處理,必須將其轉(zhuǎn)換成電信號(hào),我們采用光電信號(hào)轉(zhuǎn)換器未完成這方面的工作。在本系統(tǒng)中,因?yàn)榘l(fā)光源的波譜范圍是808~858nm,所以我們選用了波譜范圍為200~1100nm的2048個(gè)像素的灰度線列CCD圖像傳感器ILX511B。
CCD將光信號(hào)轉(zhuǎn)換成模擬電信號(hào),每個(gè)像素產(chǎn)生一個(gè)模擬電信號(hào),這樣CCD每次進(jìn)行光電轉(zhuǎn)換就產(chǎn)生2048個(gè)模擬電信號(hào);同時(shí),它將這2048個(gè)像素位置串行地“封裝”成一個(gè)有效數(shù)據(jù)字段,可以在外加時(shí)鐘同步信號(hào)(CLK)和芯片使讀端(ROG)作用下,從CCD中讀出數(shù)據(jù)。外加的同步時(shí)鐘信號(hào)由2087個(gè)時(shí)鐘脈沖組成,在每個(gè)時(shí)鐘脈沖作用下,一個(gè)數(shù)據(jù)位被讀出。這2087個(gè)數(shù)據(jù)位由以下幾部分組成:首部偽數(shù)據(jù)字段(33個(gè)數(shù)據(jù)位)、有效數(shù)據(jù)字段(2048個(gè)數(shù)據(jù)位)、尾部偽數(shù)據(jù)字段(6個(gè)數(shù)據(jù)位)。需要注意的是,為了提高電磁兼容性,CCD的工作方式應(yīng)該選擇為采樣一保持方式;同時(shí),CCD在上電后處于內(nèi)部電路初始化階段,為了避免得到錯(cuò)誤的數(shù)據(jù),最初22 500個(gè)時(shí)鐘脈沖用于初始化CCD,不要在此階段讀出數(shù)據(jù)。
4 ADC接口設(shè)計(jì)與Altera Nios平臺(tái)
4.1 ADC接口設(shè)計(jì)
經(jīng)過CCD傳感器轉(zhuǎn)換輸出的模擬量,必須通過ADC轉(zhuǎn)換器轉(zhuǎn)換成數(shù)字信號(hào),這樣系統(tǒng)才可以處理這些信號(hào)。因?yàn)镃CD的動(dòng)態(tài)范圍是48.5dB,根據(jù)公式
ADC精度≥動(dòng)態(tài)范圍(dB)/20×log2
可以計(jì)算得到ADC精度≥8.06,所以選擇ADC的精度必須是9位或9位以上的;同時(shí),根據(jù)以下公式計(jì)算ADC的速度:
fs=1×2MHz(CCD的最大時(shí)鐘頻率)=2MHz(采樣和保持方式)。
通過上述計(jì)算和分析,得到所需ADC的兩個(gè)主要特性指標(biāo),即精度至少要9位,采樣的速率必須至少2Msps。
現(xiàn)在,有很多ADC轉(zhuǎn)換器可以應(yīng)用于CCD圖像處理。在綜合考慮了諸多因素后,我們選擇Linear的串行ADCLTC1402。
在設(shè)計(jì)ADC接口電路時(shí),要注意以下一些問題。首先,由于LTC1402內(nèi)部輸入信號(hào)的“保持-采樣”電路的速率達(dá)到80MHz,所以,外部的噪聲和干擾都可以通過LTC1402的輸入端對(duì)A/D轉(zhuǎn)換產(chǎn)生影響。根據(jù)LTC1402數(shù)據(jù)手冊(cè)的要求,我們解決的方法是,在LTC1402的輸入端加上一階的濾波電路,將輸入信號(hào)的頻率限制在一定的范圍內(nèi)。其次,CCD的輸出對(duì)于外界的阻抗變化比較敏感,如果將ADC的輸入端與CCD的輸出直接相連,則CCD的負(fù)載可能隨ADC輸入端內(nèi)部阻抗的變化而變化?;谝陨蟽牲c(diǎn)考慮,我們?cè)贑CD和ADC之間設(shè)計(jì)了緩沖電路,用于阻抗匹配和濾波。緩沖接口電路如圖3所示。
由圖3可計(jì)算ADC的輸入最高頻率:
fg=1/[(2×π×R5×C3)]=10.3MHz。
4.2 Altera Nios平臺(tái)
在細(xì)致分析系統(tǒng)的特點(diǎn)后,我們決定選擇專門針對(duì)SOPC應(yīng)用的Altera Excalibur開發(fā)套件。開發(fā)套件包括以下部分:
*Nios處理器以及外圍接口;
*Quartus II開發(fā)軟件;
*GNDUro編譯器;
*基于APEX EP20K200E FPGA的開發(fā)板;
*相關(guān)的開發(fā)例程。
圖5 時(shí)鐘和控制信號(hào)發(fā)生器的仿真時(shí)序
我們使用集成在QuartusII中的SOPC Builder工具來配置生成片上系統(tǒng)。SOPC Builder是一個(gè)功能強(qiáng)大的基于圖形界面的片上系統(tǒng)的定義和定制工具,可以在短時(shí)間內(nèi)完成用戶定制的SOPC設(shè)計(jì)。根據(jù)應(yīng)用的需要,從SOPC Builder庫(kù)中選擇IP模塊、存儲(chǔ)器、外圍接口和處理器,并且配置生成一個(gè)高集成度的SOPC系統(tǒng),因而選取以下一些模塊組成片上系統(tǒng):Nios 32bit CPU、Boot Monitor ROM、Communication UART、debugging UART、Timer、Button PIO、User PIO、LCD PIO、LED PIO、DMA、SPI、Seven Segment PIO、External RAM Bus(Avalon TriState Bridge)、External RAM Interface、External Flash Interface。
同時(shí),SOPC Builder自動(dòng)產(chǎn)生一些必需的仲裁邏輯來協(xié)調(diào)系統(tǒng)中以上各個(gè)部件的工作,我們將系統(tǒng)的工作頻率設(shè)為33MHz。定制完片上系統(tǒng)的硬件后,SOPC Builder還為編寫操作這些片上硬件的軟件代碼提供了一個(gè)軟件開發(fā)環(huán)境,這個(gè)軟件環(huán)境包括語言頭文件、外圍接口的驅(qū)動(dòng)以及實(shí)時(shí)操作系統(tǒng)的內(nèi)核,極大地方便了軟件的開發(fā)。
5 系統(tǒng)實(shí)現(xiàn)
以下分兩部分來分析和介紹:①在ApexEP20K FPGA中,使用Verilog編寫時(shí)鐘和控制信號(hào)發(fā)生器用于驅(qū)動(dòng)CCD和ADC,并且協(xié)調(diào)兩者的工作;②使用C語言編寫程序,通過SOPC Builder配置的SPI接口讀取ADC輸出的數(shù)據(jù)。
5.1 時(shí)鐘和控制信號(hào)發(fā)生器
使用Verilog編寫時(shí)鐘和控制信號(hào)發(fā)生器,用于產(chǎn)生驅(qū)動(dòng)CCD和ADC的時(shí)鐘和控制信號(hào)。時(shí)鐘發(fā)生器的工作原理是:使用頻率為33MHz的系統(tǒng)時(shí)鐘,作為時(shí)鐘發(fā)生器的輸入和同步售,用于產(chǎn)生所需的CCD和ADC驅(qū)動(dòng)的時(shí)鐘和控制信號(hào)。根據(jù)系統(tǒng)的要求和CCD以及ADC芯片特性,將產(chǎn)生的CCD時(shí)鐘頻率設(shè)為1MHz;同時(shí)把ADC的時(shí)鐘頻率設(shè)為33MHz。在時(shí)鐘發(fā)生器中,還需對(duì)產(chǎn)生CCD和ADC兩個(gè)高速設(shè)備的時(shí)鐘和控制信號(hào)進(jìn)行匹配,使得兩者能夠正常地工作。
現(xiàn)在詳細(xì)地分析這兩個(gè)高速設(shè)備如何完成時(shí)序的匹配。由于系統(tǒng)中的CCD和ADC都是依靠外加時(shí)鐘同步的高速設(shè)備,因此,這兩個(gè)設(shè)備之間的時(shí)序的匹配對(duì)于能否獲取正確有效的數(shù)據(jù)來說至關(guān)重要。為了使兩個(gè)設(shè)備協(xié)同工作,首先要分析每個(gè)設(shè)備所需的外加時(shí)鐘和控制兩個(gè)外加信號(hào),分別是CCD_ROG和CCD_CLK。CCD_ROG信號(hào)使得CCD的輸出數(shù)據(jù)有效,也就是每次從CCD讀取數(shù)據(jù)時(shí),都要先給CCD_ROG一個(gè)低電平,將CCD置光電轉(zhuǎn)換后的數(shù)據(jù)一位位地輸出。ADC進(jìn)行模數(shù)轉(zhuǎn)換也需要兩個(gè)外加信號(hào),分別是ADC_CONV和ADC_CLK。ADC_CONV信號(hào)使ADC芯片開始進(jìn)行模數(shù)轉(zhuǎn)換,每次進(jìn)行轉(zhuǎn)換前都要給ADC_CONV一個(gè)高電平;同時(shí),轉(zhuǎn)換過程和轉(zhuǎn)換后的結(jié)果輸出在ADC_CLK信號(hào)的同步完成。
由于需要先從CCD光電轉(zhuǎn)換器讀出模擬數(shù)據(jù),所以,要通過CCD_ROG給CCD一個(gè)長(zhǎng)度為t1(t1=4000ns)的低電平。在CCD_ROG重新變?yōu)楦唠娖胶螅珻CD就在CCD_CLK信號(hào)的同步下輸出數(shù)據(jù)了,在每個(gè)CCD_CLK作用下輸出一個(gè)模擬量數(shù)據(jù)。CCD每次輸出的2087個(gè)模擬量分別由33個(gè)首部偽數(shù)據(jù)字段、2048個(gè)有效數(shù)據(jù)和6個(gè)尾部偽數(shù)據(jù)字段組成。其中的2048個(gè)有效數(shù)據(jù)和首部偽數(shù)據(jù)字段的后20個(gè)數(shù)據(jù)就是我們希望得到的,所以從第14個(gè)數(shù)據(jù)到第2081個(gè)數(shù)據(jù)中的每個(gè)模擬量,都通過ADC_CONV(ADC_CONV的高電平寬度為4ns),給出一個(gè)高電平啟動(dòng)ADC;同時(shí),在ADC_CLK的作用下,完成模數(shù)轉(zhuǎn)換過程和數(shù)字量輸出。圖4、圖5是時(shí)鐘和控制信號(hào)發(fā)生器的程序流程和仿真時(shí)序圖。
5.2 SPI接口的編程
ADC將模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)后,Nios通過SPI接口讀入這些信號(hào)并進(jìn)行相應(yīng)的處理。我們通過Quartus II中的SOPC Builder為Nios核配置SPI接口。在我們的系統(tǒng)中,將SPI配置為從設(shè)備。軟件通過訪問存儲(chǔ)器中映射的5個(gè)16位的寄存器來控制和讀寫SPI接口。讀入的數(shù)據(jù)通過MOSI引腳逐位進(jìn)入移位寄存器。通過移位寄存器的移位和緩沖后,一幀數(shù)據(jù)進(jìn)入寄存器rxdata,同時(shí)將狀態(tài)寄存器的rrdy位置1,通過訪問rxdata就得到一幀數(shù)據(jù)。數(shù)據(jù)被讀取后,rrdy位自動(dòng)置回0。如果前一幀數(shù)據(jù)還未從rxdata讀取,后一幀數(shù)據(jù)就會(huì)將原數(shù)據(jù)覆蓋,造成錯(cuò)誤,同時(shí)將狀態(tài)寄存器的ROE(Read Overwrite Error)位置成1。SPI接口共有4個(gè)引腳,分別是MISO(Master Input Slave Output)、MOSI(Master Output Slave Input)、SCLK(同步時(shí)鐘)和SS_n。當(dāng)SS_n為低電平時(shí),從設(shè)備可以在SCLK同步作用下讀入數(shù)據(jù)。系統(tǒng)中的SPI接口是從設(shè)備,所以只使用MOSI、SCLK和SS_n三根引腳。圖6是Nios中SPI與ADC的接口示意圖。
從ADS的芯片特性可知,當(dāng)ADC_CONV在一個(gè)高電平的作用下,ADC開始進(jìn)行模數(shù)轉(zhuǎn)換。ADC_CONV回復(fù)到電平后,因?yàn)镾S_n和ADC_CONV連在一起,所以Nios中的SPI就處于可以讀入數(shù)據(jù)的狀態(tài)了;同時(shí),在ADC_SCK的作用下ADC輸出數(shù)據(jù),而SPI也在相同的時(shí)鐘SCLK的作用下,通過MOSI讀入數(shù)據(jù)。為了能夠準(zhǔn)確得到數(shù)據(jù),還要將SPI寄存器rxdata的位數(shù)設(shè)為13位。軟件中,我們將通過等待SPI寄存器的rrdy位的置位,來讀取rxdata中的數(shù)據(jù),與此同時(shí)寄存器中roe的狀態(tài)決定此幀數(shù)據(jù)的讀取過程中是否存在數(shù)據(jù)溢出現(xiàn)象。以下是相關(guān)的讀取數(shù)據(jù)的軟件代碼。
do{
//讀一行CCD數(shù)據(jù)
for(i=0;i<2069;i++){
//等待,直到準(zhǔn)備好
while(spi->np_spistatus&np_spistatus_rrdy_mask)==0)
;
//從SPI數(shù)據(jù)寄存器讀數(shù)據(jù)
c[i]=spi->np_spirxdata;
}
//讀覆蓋狀態(tài)
b=spi->np_spistatus&np_spistatus_roe_mask;
}while(b==8);
結(jié)論
本系統(tǒng)經(jīng)過仿真測(cè)試,其功能達(dá)到了設(shè)計(jì)要求,并用HP邏輯分析儀驗(yàn)證了系統(tǒng)功能。