一、引言
腦電信號(hào)EEG(Electroencephalogram)是一種微弱的低頻生理信號(hào)。它由腦部神經(jīng)活動(dòng)產(chǎn)生的自發(fā)性電位活動(dòng),含有非常豐富的大腦活動(dòng)信息,是進(jìn)行臨床腦疾病診斷的一種重要方法,因此獲取腦電信號(hào)具有重要的現(xiàn)實(shí)意義。目前的大多數(shù)腦電信號(hào)采集系統(tǒng)均采用單片機(jī)作為控制器,由于腦電信號(hào)是毫伏級(jí)或微伏級(jí)的信號(hào),精度較低。本文根據(jù)腦電信號(hào)的特點(diǎn),將電極采集到的模擬信號(hào)經(jīng)信號(hào)調(diào)理后,采用FPGA芯片EP2C8Q208C8來控制AD574A的轉(zhuǎn)換,給出了硬件連接電路和軟件實(shí)現(xiàn),并且在QuartusII9.0中進(jìn)行仿真驗(yàn)證,從而提高系統(tǒng)的可靠性和通用性,具有實(shí)際應(yīng)用參考價(jià)值。
二、腦電信號(hào)采集系統(tǒng)概述
腦電信號(hào)監(jiān)測(cè)在臨床疾病診斷中具有一定的應(yīng)用價(jià)值。系統(tǒng)首先采用電極獲取大腦皮層的電信號(hào),再通過信號(hào)調(diào)理電路進(jìn)行處理,然后以FPGA為核心控制AD574A進(jìn)行模數(shù)轉(zhuǎn)換與存儲(chǔ),最后對(duì)采集的信號(hào)作進(jìn)一步的算法分析,并實(shí)現(xiàn)與上位機(jī)的通信從而實(shí)現(xiàn)在線監(jiān)測(cè)。系統(tǒng)的結(jié)構(gòu)框圖如圖1所示。
三、系統(tǒng)硬件設(shè)計(jì)
系統(tǒng)的硬件電路包括信號(hào)放大和濾波電路,A/D轉(zhuǎn)換電路,F(xiàn)PGA控制電路,F(xiàn)PGA與PC機(jī)通信電路構(gòu)成。本文主要介紹采用FPGA來控制AD574A的采樣過程。
1、AD574A簡(jiǎn)介
AD574A是一種高速12位逐次比較型模數(shù)轉(zhuǎn)換器,它由美國(guó)AD公司推出,內(nèi)置混合集成轉(zhuǎn)換芯片,具有外接元器件較少、低功耗、高精度等優(yōu)點(diǎn),還具有自動(dòng)校零和極性轉(zhuǎn)換功能。其主要特性表現(xiàn)為:分辨率12位;非線性誤差小于±1/2LBS或±1LBS;轉(zhuǎn)換時(shí)間25μs;模擬輸入電壓有0~10V、1~20V、0~±10V和0~±5V四種;電源電壓為±15V和15V;數(shù)據(jù)輸出12位或8位;可工作在全速工作和單一工作兩種模式下。
AD574A的邏輯控制真值表和工作時(shí)序圖分別如表1和圖2所示。由圖表可知AD574A的工作過程包括:?jiǎn)?dòng)轉(zhuǎn)換和讀出數(shù)據(jù)。
進(jìn)行啟動(dòng)轉(zhuǎn)換時(shí),先令CS/=0、CE=1,根據(jù)所需轉(zhuǎn)換的位數(shù)A0取1或0,然后使R/C=0,轉(zhuǎn)換開始。轉(zhuǎn)換完成時(shí),STS由高電平變?yōu)榈碗娖?。通過讀入STS的狀態(tài),判斷轉(zhuǎn)換是否完成。進(jìn)行數(shù)據(jù)輸出時(shí),先根據(jù)輸出數(shù)據(jù)的方式,來確定是接高電平還是低電平;接著令CE=1、CS/=1、R/C=1,確定A0的取值。如果分兩次輸出12位數(shù)據(jù),A0為0時(shí)輸出高8位,A0為1時(shí)輸出低4位;如果是12位并行輸出,A取值任意。
2、AD574A與FPGA的接口電路
系統(tǒng)采用FPGA來控制AD574A的工作時(shí)序,進(jìn)行A/D轉(zhuǎn)換,然后將轉(zhuǎn)換后的數(shù)據(jù)以十六進(jìn)制的數(shù)據(jù)顯示出來。選擇的FPGA芯片為Altera公司CycloneII系列的EP2C8Q208C8,其與AD574A的硬件連接圖如圖3所示。首先FPGA輸出使CS/、CE有效,處于轉(zhuǎn)換工作狀態(tài),然后使R/C啟動(dòng)轉(zhuǎn)換。轉(zhuǎn)換結(jié)束,F(xiàn)PGA在STS由高電平變?yōu)榈碗娖街安荒茏x取轉(zhuǎn)換數(shù)據(jù)。當(dāng)STS變成低電平之后,F(xiàn)PGA便可將輸出信號(hào)拉高,這樣轉(zhuǎn)換的數(shù)據(jù)就會(huì)呈現(xiàn)在數(shù)據(jù)線上,F(xiàn)PAG讀入該數(shù)據(jù)后,在數(shù)碼管上顯示出來。
四、軟件實(shí)現(xiàn)
根據(jù)AD574A的工作原理,在QuartusII9.0中采用VHDL進(jìn)行程序設(shè)計(jì)。針對(duì)系統(tǒng)的高速和可靠性要求,軟件設(shè)計(jì)采用有限狀態(tài)機(jī)FSM控制,其原理圖如圖4所示。包括主控時(shí)序進(jìn)程(REG),主控組合進(jìn)程(COM)和輔助進(jìn)程(LATCH)。
其中主控組合進(jìn)程的VHDL如下:
COM1: PROCESS(c_st,STS)
?BEGIN CASE c_st IS
?WHEN s0=> n_st <= s1;
?WHEN s1=> n_st <= s2;
?WHEN s2=> IF (STS='1') THEN n_st<= s2;
?ELSE n_st <= s3;
?END IF;
?WHEN s3=> n_st <= s4;
?WHEN s4=> n_st <=s0;
?WHEN OTHERS => n_st <= s0;
?END CASE ;
?END PROCESS COM1 ;
COM2: PROCESS(c_st)
?BEGIN
?CASE c_st IS
?WHEN s0=>CS<='1';A0<='1';RC<='1';LOCK<='0'; --初始化
?WHEN s1=>CS<='0';A0<='0';RC<='0';LOCK<='0'; --啟動(dòng)轉(zhuǎn)換
?WHEN s2=>CS<='0';A0<='0';RC<='0';LOCK<='0'; --等待轉(zhuǎn)換
?WHEN s3=>CS<='0';A0<='0';RC<='1';LOCK<='0';--12 位并行輸出有效
?WHEN s4=>CS<='0';A0<='0';RC<='1';LOCK<='1'; --鎖存數(shù)據(jù)
?WHEN OTHERS =>CS<='1';A0<='1';RC<='1';LOCK<='0'; -- 返回初始態(tài)
?END CASE ;
?END PROCESS COM2 ;主控時(shí)序進(jìn)程的 VHDL 如下:
?REG: PROCESS (CLK)
?BEGIN
?IF (CLK'EVENT AND CLK='1') THEN c_st <= n_st;
?END IF;
?END PROCESS REG ;
采樣后的數(shù)據(jù)可在FPGA中進(jìn)一步處理,并進(jìn)行實(shí)時(shí)控制,也可送至計(jì)算機(jī)進(jìn)行處理。
在QuartusII9.0中選擇Tools菜單中的RTLViewer項(xiàng),可以打開系統(tǒng)的RTL電路圖,如圖5所示。通過雙擊有關(guān)模塊,可以逐層了解各模塊的電路結(jié)構(gòu)。
五、仿真結(jié)果
系統(tǒng)的仿真結(jié)果如圖6所示,首先初始化CS《=‘1’,A0《=‘1’,RC《=‘1’,LOCK《=‘0’;接著啟動(dòng)轉(zhuǎn)換CS《=‘0’,A0《=‘0’,RC《=‘0’;然后保持該狀態(tài)直到RC《=‘1’時(shí),轉(zhuǎn)換好的數(shù)據(jù)輸出,在STS由高電平變?yōu)榈碗娖街笞x取轉(zhuǎn)換數(shù)據(jù)。圖中,轉(zhuǎn)換好的數(shù)據(jù)235送到輸出端Q[11:0]。
六、結(jié)語
腦電信號(hào)采集可以為醫(yī)生提供可靠的診斷信息,有助于病人的準(zhǔn)確治療。而在腦電信號(hào)的獲取中的一個(gè)關(guān)鍵環(huán)節(jié)是采集的高效性?;贔PGA在高速數(shù)據(jù)采集方面的優(yōu)點(diǎn),通過對(duì)AD574A的研究,設(shè)計(jì)了硬件連接電路,并進(jìn)行仿真驗(yàn)證。實(shí)踐證明系統(tǒng)具有較高的可靠性和通用性,具有一定的實(shí)際應(yīng)用價(jià)值。
評(píng)論