謝宏,萬兵,楊文璐,夏斌,姚楠
?。ㄉ虾:J麓髮W(xué) 信息工程學(xué)院 上海 201306)
摘要:介紹了一種近紅外信號(hào)采集模塊的設(shè)計(jì)方案,它主要采用ADS1299采樣芯片,利用FPGA的可編程邏輯控制的特點(diǎn),采用狀態(tài)機(jī)編程思想,通過編程設(shè)計(jì)A/D的讀控制時(shí)序和寫控制時(shí)序,將采樣結(jié)果實(shí)時(shí)保存在雙口RAM里,并通過NiosII軟核處理器進(jìn)行控制,從而實(shí)現(xiàn)高精度多通道A/D采樣系統(tǒng)采集模塊的設(shè)計(jì)。通過實(shí)驗(yàn)表明,該設(shè)計(jì)是有效可行的。
關(guān)鍵詞:近紅外信號(hào);FPGA;NIOSII;ADS1299;A/D采集模塊;狀態(tài)機(jī)
0引言
21世紀(jì)是生物科學(xué)與腦科學(xué)的時(shí)代,功能近紅外光譜技術(shù)(Functional NearInfrared Spectroscopy, FNIRS)是一種新興的腦功能檢測技術(shù),它利用近紅外光波段700-900 nm在大腦中傳播的吸收特性,能夠提供基于血紅蛋白濃度變化的血液動(dòng)力學(xué)信息,反映大腦皮質(zhì)的血氧代謝狀況,可用于腦功能活動(dòng)的檢測。相比于傳統(tǒng)腦電信號(hào)(EEG)的檢測方法,它具有高的時(shí)間分辨率、實(shí)時(shí)性、抗干擾性以及高穩(wěn)定性等優(yōu)點(diǎn)[1]。
目前的腦功能信號(hào)采集設(shè)備的體積往往較大,只能用于固定場所,不便于實(shí)時(shí)信號(hào)獲取,不能用于突發(fā)狀況,因此急需一種便捷式腦功能信號(hào)采集設(shè)備。在便捷式腦功能信號(hào)采集方面,國外研究較早,技術(shù)比較成熟,已做出產(chǎn)品,但售價(jià)昂貴。國內(nèi)方面大多處于數(shù)據(jù)處理、特征提取和應(yīng)用研究上,對(duì)相關(guān)儀器的研發(fā)偏少,更沒能開發(fā)出相關(guān)的系統(tǒng)[2],因此研究便捷式腦功能信號(hào)采集的設(shè)備具有重要的意義。
為了完整反映腦部的不同區(qū)域活動(dòng)情況,需要同時(shí)采集多路數(shù)據(jù),因此對(duì)信號(hào)處理的實(shí)時(shí)性、抗干擾性與精度有很高的要求,而ADS1299的8路低噪聲24位同時(shí)采樣的特性能很好地滿足了這一需求。它是一款常用腦電信號(hào)的采集芯片,由于近紅外信號(hào)比腦電信號(hào)穩(wěn)定得多且受到的干擾較小,因此同樣也適合近紅外信號(hào)的采集,在同等條件下,采集的數(shù)據(jù)更加準(zhǔn)確可靠,而且高度集成,其體積小、功耗低等優(yōu)點(diǎn)對(duì)便捷式系統(tǒng)的設(shè)計(jì)十分的有利[3]。在主控芯片的選取中,很多文獻(xiàn)都是采用單片機(jī)、ARM以及DSP作為主控制芯片,如文獻(xiàn)[4]、[5]等,使其在運(yùn)行速度、數(shù)據(jù)處理、接口靈活性以及對(duì)功能的擴(kuò)展方面都有各自的局限性,往往顧此失彼,不能兼得,而FPGA強(qiáng)大的功能不但綜合了它們的優(yōu)點(diǎn),而且克服了這些不足,十分適合作為主控芯片。因此,本文提出了一種基于ADC+FPGA+PC架構(gòu)的方案,設(shè)計(jì)一個(gè)高度集成的便捷式近紅外光信號(hào)采集系統(tǒng)。
1總體設(shè)計(jì)
基于功能近紅外光譜技術(shù)的原理,將近紅外LED的760 nm、850 nm波長的發(fā)射光強(qiáng)分別調(diào)制在0.8 KHz和1.2 KHz的正弦波上,實(shí)現(xiàn)了兩個(gè)波長的頻分復(fù)用,而在不同通道之間,采用時(shí)分復(fù)用進(jìn)行傳輸,從而實(shí)現(xiàn)近紅外信號(hào)的多路傳輸。此后,發(fā)射出的近紅外信號(hào)經(jīng)過大腦反射后通過光電轉(zhuǎn)換芯片轉(zhuǎn)換為電信號(hào),再經(jīng)過預(yù)處理(阻抗匹配和低通濾波)后,進(jìn)入集成模擬前端。根據(jù)采集的信號(hào)頻率和奈奎斯特采樣定理,TI公司的A/D轉(zhuǎn)換芯片ADS1299的250~16 kS/s的采樣速度能夠很好地滿足要求,24位的極高采樣精度也大大降低了對(duì)信號(hào)預(yù)處理的要求,且信號(hào)穩(wěn)定,無需采用差分輸入方式。系統(tǒng)采用Altera公司的FPGA芯片EP2C20F484C7作為主控芯片,利用硬件描述語言(VHDL)將GPIO口配置成通用串行SPI口,用SPI與ADS1299進(jìn)行通信。在FPGA內(nèi)部配置了一個(gè)雙口的RAM,用于實(shí)時(shí)存儲(chǔ)ADS1299的輸出結(jié)果。FPGA內(nèi)部采用Avalon_MM總線進(jìn)行通信,CPU采用NIOSII軟核處理器,處理后的數(shù)據(jù)通過UART總線傳輸至PC。其系統(tǒng)原理框圖如圖1所示。
2FPGA控制ADS1299的實(shí)現(xiàn)
2.1ADC與FPGA接口模塊設(shè)計(jì)
2.1.1SPI接口控制原理
串行外圍設(shè)備接口(Serial Peripheral Interface,SPI)是一種高速、全雙工、同步的通信總線。它僅需四條信號(hào)線,不僅僅節(jié)約了管腳,而且對(duì)PCB的布局十分有利。正是由于這種簡單易用的特性,許多公司的芯片都集成了這種通信協(xié)議。而ADS1299正是采用了這種協(xié)議[6]。
ADS1299的SPI接口由四條信號(hào)線組成,分別定義為CS、SCLK、DIN和DOUT。其中CS是芯片的片選信號(hào),只有CS有效時(shí)(一般為低電平有效),對(duì)芯片的操作才可行有效,根據(jù)CS這一特性,可以在同一總線上連接多個(gè)SPI設(shè)備,而使其數(shù)據(jù)的傳輸不產(chǎn)生沖突。SCLK是SPI同步時(shí)鐘信號(hào),該信號(hào)多由主機(jī)產(chǎn)生,數(shù)據(jù)信號(hào)往往在該時(shí)鐘的上升沿或下降沿逐位進(jìn)行傳輸。DIN和DOUT是主從機(jī)進(jìn)行通信的數(shù)據(jù)信號(hào),DIN即主機(jī)的輸入或者說是從機(jī)的輸出,DOUT即主機(jī)的輸出或者說是從機(jī)的輸入。SPI的工作模式有兩種:主模式和從模式。SPI總線可以配置成單主單從、單主多從和互為主從三種通信方式。在設(shè)計(jì)中,將FPGA作為SPI的主機(jī),ADS1299作為從機(jī),使其處于單主單從的工作模式。其中的信號(hào)CS和SCLK是由FPGA內(nèi)部信號(hào)控制產(chǎn)生的。
圖2是FPGA的SPI組件的內(nèi)部結(jié)構(gòu)。SPI組件通過Avalone總線和中斷請(qǐng)求信號(hào)irq與NIOSII處理器相連。內(nèi)部也有一個(gè)divisor寄存器,也是對(duì)其輸入工作時(shí)鐘進(jìn)行分頻得到最終與外設(shè)接口的時(shí)鐘sclk。rxdata和txdata寄存器用于NIOSII處理器讀寫收發(fā)數(shù)據(jù),與它們直接接口的還有一個(gè)串并轉(zhuǎn)換的移位寄存器shifin和一個(gè)并串轉(zhuǎn)換的移位寄存器shifout。NIOSII可以從status寄存器讀取當(dāng)前SPI組件的狀態(tài),slave select寄存器主要是在擁有多個(gè)從機(jī)時(shí)控制其片選。
2.1.2有限狀態(tài)機(jī)編程思想與時(shí)序程序設(shè)計(jì)
有限狀態(tài)機(jī)是一類很重要的時(shí)序電路,是許多數(shù)字電路的核心部分,且有限狀態(tài)機(jī)的編程設(shè)計(jì)具有高速性、可靠性、穩(wěn)定性的特點(diǎn)。因此,對(duì)于ADC與FPGA接口模塊與雙口RAM讀寫模塊,將采取有限狀態(tài)機(jī)進(jìn)行編程。與傳統(tǒng)的用CPU按照指令逐條運(yùn)行的操作方式相比,采用狀態(tài)機(jī)的形式,可以在每個(gè)狀態(tài)中并行同步完成許多運(yùn)算和控制操作,而且一般用狀態(tài)機(jī)構(gòu)成的硬件系統(tǒng)比對(duì)應(yīng)的用CPU按照指令完成同樣功能的系統(tǒng)的工作速度要高出3~5個(gè)數(shù)量級(jí),是其高速性的具體體現(xiàn)。在可靠性與穩(wěn)定性方面,由于其運(yùn)行不依賴軟件指令逐條執(zhí)行,且是由FPGA中的純硬件電路構(gòu)成,因此不存在CPU運(yùn)行軟件過程中的許多缺陷,具有很高的可靠性與穩(wěn)定性[7]。
圖3是ADS1299串行接口的狀態(tài)轉(zhuǎn)換圖。將其劃為24個(gè)有限狀態(tài),S_Idle 為空閑狀態(tài),S_CS、S_Wreg_1、S_Wreg_2、S_ID、S_config1、S_config2、S_config3、S_Loff、S_CH1_set、S_CH2_set、S_CH3_set、S_CH4_set、S_CH5_set、S_CH6_set、S_CH7_set、S_CH8_set、S_Bias_sensp、S_Bias_sen、S_Loff_sensp、S_Loff_sensn、S_Loff_fli、S_Loff_statp、S_Loff_statn、S_Gpio、S_Misc1、Misc2、S_config4為ADC內(nèi)部寄存器配置的初始狀態(tài)。S_Start_c為指令控制ADC起始的轉(zhuǎn)換狀態(tài)(ADC由指令進(jìn)行控制,此時(shí)芯片上START引腳接低電平)。S_Start為ADC數(shù)據(jù)轉(zhuǎn)換狀態(tài),控制ADC的數(shù)據(jù)轉(zhuǎn)換。S_DRDY是數(shù)據(jù)已經(jīng)轉(zhuǎn)換好,可以輸出的使能狀態(tài),低電平有效,在輸出時(shí)鐘的第一個(gè)上升沿時(shí)拉高。S_CS_Assert為片選狀態(tài)。S_RDATA控制其進(jìn)入單口傳輸模式進(jìn)行數(shù)據(jù)傳輸(ADC內(nèi)部數(shù)據(jù)傳輸有兩種模式:持續(xù)傳輸模式與單口傳輸模式,其中單口傳輸模式更適合腦電信號(hào)的傳輸)。S_STAT、S_CH1、S_CH2、S_CH3、S_CH4、S_CH5、S_CH6,S_CH7、S_CH8為ADC內(nèi)部狀態(tài)寄存器與八通道的數(shù)據(jù)輸出狀態(tài)。S_Stop_c為控制轉(zhuǎn)換的停止?fàn)顟B(tài),此時(shí)ADC停止工作。
2.2雙口RAM的讀寫
所謂的雙口RAM就是在一個(gè)SRAM存儲(chǔ)器上具有兩套完全獨(dú)立的數(shù)據(jù)線、地址線和讀寫控制線,其最大的特點(diǎn)是存儲(chǔ)數(shù)據(jù)共享,并允許兩個(gè)獨(dú)立的CPU或控制器同時(shí)對(duì)該存儲(chǔ)器進(jìn)行隨機(jī)性的讀寫訪問,即可以同時(shí)異步地對(duì)存儲(chǔ)器進(jìn)行讀寫[8]。基于以上特點(diǎn),可以將采樣結(jié)果實(shí)時(shí)儲(chǔ)存在雙口RAM里,處理器可實(shí)時(shí)讀取采樣結(jié)果,這樣能夠不占用處理器資源,大大提高了處理器的工作效率[9]。圖4是簡單的雙口RAM的接口配置電路。
根據(jù)雙口RAM的工作原理和讀寫時(shí)序要求。其時(shí)序波形圖如圖5所示。
2.3結(jié)果分析
整個(gè)設(shè)計(jì)是在Altera公司提供的Quartus II、NIOS II Software Build Tools for Eclipse以及Modelsim等軟件平臺(tái)上完成的,整體采用VHDL硬件語言設(shè)計(jì),F(xiàn)PGA通過Avalon_mm總線與各模塊進(jìn)行通信,外部通過UART與PC之間進(jìn)行數(shù)據(jù)交互。
通過Modelsim仿真測試,測得用狀態(tài)機(jī)編寫ADS1299與FPGA接口的部分仿真時(shí)序如圖6所示。
雙口RAM的讀寫時(shí)序如圖7所示。
3結(jié)論
本文設(shè)計(jì)的基于FPGA 控制、雙口RAM存儲(chǔ)的高速數(shù)據(jù)采集系統(tǒng)具有可靠性高、數(shù)據(jù)不丟失、抗干擾性強(qiáng)、便于數(shù)據(jù)傳輸、存儲(chǔ)、顯示和處理及可擴(kuò)展性好等優(yōu)點(diǎn)。其相比于傳統(tǒng)采集系統(tǒng)設(shè)計(jì),一方面,簡化了硬件電路;另一方面,減少了對(duì)處理器資源的占用,對(duì)提高處理器的效率具有很大意義。實(shí)驗(yàn)表明,系統(tǒng)的各項(xiàng)指標(biāo)均達(dá)到要求,具有很強(qiáng)的工程實(shí)用價(jià)值。
參考文獻(xiàn)
?。?] 張巖.基于近紅外光譜技術(shù)的腦功能活動(dòng)信號(hào)提取方法研究[D].哈爾濱:哈爾濱工業(yè)大學(xué), 2011.
[2] 謝宏,王光明,姚楠,等.可穿戴式的功能近紅外光譜成像系統(tǒng)的前端設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2015,34(10):29 31.
[3] TI.ADS1299EEG FE user’s guide[OL].(2012 01 XX)[2016 03 28]http://focus.ti.com.cn/cn/lit/ds/syml ink/slau443.pdf.
?。?] 孫廣金.基于ADS1299的新型腦電采集系統(tǒng)設(shè)計(jì)[J].機(jī)械與電子,2014(1):73 74.
[5] 宋勐翔,陳蘭嵐.基于ADS1298與STM32F407的心電采集與顯示系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2015(13):141 144.
?。?] 吳厚航.深入淺出玩轉(zhuǎn)FPGA[M].北京:北京航空航天大學(xué)出版社,2010.
?。?] 王小進(jìn), 涂煜. 基于AD7606的繼電保護(hù)數(shù)據(jù)處理設(shè)計(jì)[J].船電技術(shù),2014,34(9):46 49.
?。?] 謝宏,李亞男,夏斌,等.基于ADSl299的可穿戴式腦電信號(hào)采集系統(tǒng)前端設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2014,40(3):86 89.
[9] 唐永輝,徐鳴謙,烏建中.雙口RAM在嵌入式多CPU系統(tǒng)中的應(yīng)用[J].制冷空調(diào)與電力機(jī)械,2005(1):49 52.