陳 驥,朱偉芳,趙曉明,劉 磊
(重慶大學(xué)生物工程學(xué)院,重慶400044)
當(dāng)視網(wǎng)膜受到光的照射或圖像刺激時(shí),首先在視感受器內(nèi)發(fā)生光化和光電反應(yīng),然后產(chǎn)生感受器電位,感受器電位經(jīng)雙極細(xì)胞等的傳遞使神經(jīng)節(jié)細(xì)胞產(chǎn)生脈沖信號(hào)[1],此信號(hào)經(jīng)視神經(jīng)視路傳至大腦最后在枕葉的視皮質(zhì)區(qū)形成電位。視覺(jué)電生理檢查是對(duì)青光眼、眼底病、弱視、色覺(jué)障礙等眼科疾病的早期診斷、視功能情況以及療效評(píng)估的重要檢測(cè)手段[2]。傳統(tǒng)的視覺(jué)電生理圖像信號(hào)發(fā)生器主要有兩種:(1)基于單片機(jī)的圖像刺激信號(hào)發(fā)生器,其刺激信號(hào)是通過(guò)單片機(jī)來(lái)實(shí)現(xiàn),圖像刺激裝置一般使用黑白電視機(jī),由計(jì)算機(jī)控制單片機(jī)輸出圖像信號(hào)到電視機(jī),并控制其圖像翻轉(zhuǎn)。這種在計(jì)算機(jī)外另設(shè)單片機(jī)控制電路,對(duì)硬件要求較高,并且電視機(jī)分辨率低、易閃爍。(2)基于雙顯卡的圖像刺激信號(hào)發(fā)生器[3-4],目前大部分使用的是這種方式,在視覺(jué)電生理系統(tǒng)中采用雙顯示器,一個(gè)顯示器用作計(jì)算機(jī)的主顯示器,另一個(gè)用作圖像刺激器。在計(jì)算機(jī)內(nèi)采用軟件方式實(shí)現(xiàn)圖像刺激器的輸出。這種基于雙顯卡的技術(shù),上位機(jī)同時(shí)發(fā)出刺激圖像產(chǎn)生命令與信號(hào)采集命令,但是在采用多任務(wù)處理調(diào)度的Windows系統(tǒng)機(jī)制下,經(jīng)雙顯卡控制顯示器實(shí)現(xiàn)的刺激圖像與信號(hào)采集命令有一定延時(shí),而延時(shí)多少具有隨機(jī)性及不確定性,這是Windows機(jī)制無(wú)法避免的。因此在延時(shí)無(wú)法確定的情況下,不能保證刺激圖像輸出與視覺(jué)電生理信號(hào)采集的同步性與實(shí)時(shí)性。同時(shí)隨著視覺(jué)電生理研究在虛擬視覺(jué)、色覺(jué)等領(lǐng)域的越來(lái)越廣泛應(yīng)用,特別是進(jìn)行視覺(jué)誘發(fā)電位檢測(cè)時(shí)[5],要求圖像刺激和視覺(jué)誘發(fā)電位信號(hào)采集的同步性與實(shí)時(shí)性[6],而傳統(tǒng)的視覺(jué)電生理檢測(cè)系統(tǒng)是無(wú)法滿足的。
現(xiàn)代電子技術(shù)的飛速發(fā)展,可編程邏輯芯片F(xiàn)PGA以其功能強(qiáng)大、集成度高、開(kāi)發(fā)過(guò)程投資小、周期短、可反復(fù)編程修改、開(kāi)發(fā)工具智能化等特點(diǎn)被應(yīng)用于很多領(lǐng)域,如圖像檢測(cè)[7]、數(shù)據(jù)采集[8]等方面,近年來(lái)又逐漸應(yīng)用于生物醫(yī)學(xué)工程。
本設(shè)計(jì)通過(guò)FPGA來(lái)生成刺激圖像,F(xiàn)PGA控制刺激圖像的生成與信號(hào)采集命令,通過(guò)FPGA生成相應(yīng)的圖像的同時(shí),向采集卡發(fā)出信號(hào)采集命令,采集完視覺(jué)電生理信息再由上位機(jī)處理,即FPGA同時(shí)發(fā)出刺激圖像生成命令和視覺(jué)電生理信號(hào)的采集命令,保證了刺激圖像的輸出與信號(hào)采集的同步性與實(shí)時(shí)性。
視覺(jué)電生理的刺激圖形參數(shù)如下:圖形方式有4種:方格、豎條柵、橫條柵、圓環(huán)型。顏色:黑、白、紅、綠、蘭、黃??臻g視野有12種:全、上下、左右、左半、右半、上半、下半、1/4角、中心。視角(空間頻率)有7 種:2×2、3×4、6×8、12×16、24×32、48×64、96×128。中心固視點(diǎn)顏色:可調(diào),紅、綠、蘭。中心固視點(diǎn)大小:大小可調(diào),2 mm ~15 mm(直徑)[9-10]。
本系統(tǒng)的設(shè)計(jì)利用硬件描述語(yǔ)言VHDL并結(jié)合FPGA的硬件特點(diǎn),生成滿足上述參數(shù)的各種刺激圖像,并通過(guò)串口與上位機(jī)通信。硬件組成如圖1所示。本設(shè)計(jì)采用的FPGA芯片是Altera公司的EP2C80208C8N,F(xiàn)PGA控制模塊是整個(gè)系統(tǒng)的核心,主要包括VGA(Video Graphics Array)時(shí)序模塊、圖像刺激生成模塊和串口模塊。采集卡采用阿爾泰公司的基于USB數(shù)據(jù)總線的數(shù)據(jù)采集卡USB5935,具有12位A/D轉(zhuǎn)換精度,采樣速率達(dá)500 kHz。
視覺(jué)電生理圖像刺激信號(hào)發(fā)生器選擇了最高波特率為115 200 bit/s的串口通信的方式與上位機(jī)進(jìn)行數(shù)據(jù)傳輸,上位機(jī)只向FPGA發(fā)送一些簡(jiǎn)單的數(shù)字控制命令控制圖像輸出,命令簡(jiǎn)單,串口通信足以滿足這樣的要求。
圖1 系統(tǒng)原理框圖
FPGA控制模塊是整個(gè)系統(tǒng)的核心,通過(guò)硬件描述語(yǔ)言VHDL編程可實(shí)現(xiàn)輸出VGA接口的HS、VS行、場(chǎng)掃描同步信號(hào)和R、G、B三基色信號(hào)和串口的時(shí)序信號(hào),產(chǎn)生和輸出刺激圖像以及視覺(jué)電生理的采集信號(hào)。當(dāng)FPGA接受上位機(jī)輸出的控制命令后,內(nèi)部的數(shù)據(jù)選擇器模塊根據(jù)控制信號(hào)選通相應(yīng)的刺激圖像生成模塊,輸出刺激圖像的RGB三基色信號(hào)和行、場(chǎng)掃描時(shí)序HS、VS信號(hào),通過(guò)15針D型接口電路送入VGA顯示器。
本文采用模塊化的設(shè)計(jì)方法,利用VHDL語(yǔ)言生成各子模塊,再將這些子模塊進(jìn)行頂層的連接。主要模塊是VGA時(shí)序模塊、刺激圖像生成模塊和串口模塊,其中刺激圖像生成模塊是整個(gè)模塊的核心,包括橫條柵模塊、豎條柵模塊、棋盤(pán)格模塊和圓環(huán)刺激圖像模塊,棋盤(pán)格由于空間頻率、空間視野和顏色的不同又分為252個(gè)刺激圖像模塊,系統(tǒng)的程序結(jié)構(gòu)如圖2所示。圖中棋盤(pán)格的參數(shù)有顏色、空間視野、空間分辨率3個(gè)參數(shù),3個(gè)參數(shù)中每個(gè)取一項(xiàng)進(jìn)行組合,共有252種棋盤(pán)格刺激圖像。圖中串口模塊負(fù)責(zé)上位機(jī)與FPGA的通信,VGA時(shí)序模塊主要是產(chǎn)生VGA的行同步信號(hào)HS和場(chǎng)同步信號(hào)VS。當(dāng)FPGA接受上位機(jī)輸出的控制命令C后,內(nèi)部的數(shù)據(jù)選擇器模塊根據(jù)控制信號(hào)選通相應(yīng)的刺激圖像生成模塊,例如當(dāng)上位機(jī)發(fā)出命令C=1時(shí),顯示器就顯示豎條柵刺激圖像,C=2時(shí)顯示橫條柵刺激圖像,C=3時(shí)顯示顏色為黑白,空間視野為全、空間刺激頻率為2×2方格刺激圖像,C=4時(shí)顯示顏色為黑白,空間視野為全,空間刺激頻率為3×4方格刺激圖像,以此類(lèi)推當(dāng)C=5、6、…、255時(shí)類(lèi)似。
圖2 系統(tǒng)的程序結(jié)構(gòu)
由VGA控制模塊產(chǎn)生的水平同步信號(hào)和垂直同步信號(hào)控制陰極射線槍產(chǎn)生的電子束,打在涂有熒光粉的熒光屏上,產(chǎn)生 R、G、B,即紅、綠、黃三基色,合成1個(gè)彩色像素[11]。每個(gè)基色用一個(gè)兩位的二進(jìn)制數(shù)表示,每個(gè)像素是6位二進(jìn)制,共有26=64種色彩。掃描從屏幕的左上方開(kāi)始,由左至右,由上到下,逐行進(jìn)行掃描,在回掃期間,CRT對(duì)電子束進(jìn)行消隱,每行結(jié)束是用行同步信號(hào)HS進(jìn)行行同步;掃描完所有行,再由場(chǎng)同步信號(hào)VS進(jìn)行場(chǎng)同步,并使掃描回到屏幕的左上方,同時(shí)進(jìn)行場(chǎng)消隱,準(zhǔn)備下一場(chǎng)的掃描[12]。行同步信號(hào)HS和場(chǎng)同步信號(hào)VS是兩個(gè)重要的信號(hào)。顯示過(guò)程中,HS和VS的極性可正可負(fù),顯示器內(nèi)可自動(dòng)轉(zhuǎn)換為正極性邏輯。
根據(jù)“VGA工業(yè)標(biāo)準(zhǔn)”,VGA顯示器的分辨率有640×480,800×600 等,本系統(tǒng)采用800×600 的分辨率,像素頻率是 50 MHz,場(chǎng)頻 72 Hz[11]。水平有效像素點(diǎn)800,垂直有效像素點(diǎn)600。VGA時(shí)序產(chǎn)生模塊包括行點(diǎn)數(shù)計(jì)數(shù)器Hcnt、是1040進(jìn)制計(jì)數(shù)器,其中800為有效像素點(diǎn),前沿時(shí)間為56時(shí)鐘周期,行消隱時(shí)間為120時(shí)鐘周期,后沿時(shí)間是64時(shí)鐘周期.場(chǎng)行數(shù)計(jì)數(shù)器Vcnt,場(chǎng)行數(shù)計(jì)數(shù)器是800進(jìn)制計(jì)數(shù)器,有效的場(chǎng)顯示時(shí)間為600個(gè)行周期,前沿時(shí)間是39個(gè)行周期,場(chǎng)消隱時(shí)間是6個(gè)行周期,后沿時(shí)間是24個(gè)行周期。程序如下,clk是輸入的時(shí)鐘信號(hào),HS、VS是產(chǎn)生的行、場(chǎng)信號(hào)。
行同步信號(hào)HS和場(chǎng)同步信號(hào)VS的時(shí)序圖如圖3[12]所示,T1為行同步消隱(120個(gè)時(shí)鐘周期);T2為行顯示時(shí)間(800個(gè)時(shí)鐘周期),T3為場(chǎng)同步消隱(6個(gè)行周期);T4為場(chǎng)顯示時(shí)間(600個(gè)行周期)。
圖3 VGA行掃描、場(chǎng)掃描時(shí)序示意圖
刺激圖像生成模塊是通過(guò)對(duì)行點(diǎn)計(jì)數(shù)器Hcnt的計(jì)數(shù)值和場(chǎng)行數(shù)計(jì)數(shù)器Vcnt的判斷和運(yùn)算來(lái)產(chǎn)生的,可以把顯示器看作一個(gè)直角坐標(biāo)系,其中原點(diǎn)在左上角,Hcnt是橫坐標(biāo),從左上角的0向右增加到1 039;Vcnt是縱坐標(biāo),從左上角的0向下增加到799,這樣顯示器上的每一點(diǎn)都有自己的坐標(biāo),通過(guò)對(duì)不同的點(diǎn)賦予不同值,可以顯示不同的豎條柵、橫條柵、棋盤(pán)格和圓形刺激圖像。這樣通過(guò)判斷和運(yùn)算直接生成刺激圖像,節(jié)省了外部存儲(chǔ)空間。
2.2.1 豎條柵和橫條柵刺激圖像生成模塊
在豎條柵和橫條柵的刺激圖像生成模塊中,豎條柵和橫條柵分別是通過(guò)對(duì)行點(diǎn)計(jì)數(shù)器Hcnt和場(chǎng)計(jì)數(shù)器Vcnt進(jìn)行控制,不同的區(qū)域顯示不同的顏色[11]。豎條柵的生成流程圖如圖4所示,圖中n是要顯示的豎條柵的條數(shù),CY0、CY1…CYn-1是被賦給的6 位二進(jìn)制數(shù),如果要產(chǎn)生紅、藍(lán)、綠、白4條等寬豎條柵,圖4中,Hcnt<200,CY0=110000;Hcnt<200×2,CY1=001100;Hcnt<200×3,CY2=000011;Hcnt<200×4,CY2=111111時(shí),其中200是800除以4,即800÷4=200。橫條柵發(fā)生模塊與豎條柵發(fā)生模塊原理相似,是對(duì)場(chǎng)行計(jì)數(shù)器Vcnt進(jìn)行判斷。
圖4 豎條柵產(chǎn)生的流程圖
2.2.2 方格刺激圖像生成模塊
在上述生成豎條柵和橫條柵的基礎(chǔ)上,賦予RGBX和RGBY不同6位二進(jìn)制值,通過(guò)RGBX和RGBY的異或運(yùn)算產(chǎn)生方格刺激圖像,即RGB=RGBX XOR RGBY。這種方法在顯示空間頻率較小的情況下可以用簡(jiǎn)單的VHDL語(yǔ)句實(shí)現(xiàn),但視覺(jué)電生理的圖像刺激器所要求的棋盤(pán)格空間頻率最高96×128,有“Hcnt<800÷128”的判斷語(yǔ)句 96 條和“Vcnt<600÷96”的判斷語(yǔ)句128條,浪費(fèi)FPGA的硬件資源。這里提出一種較簡(jiǎn)單的方法:以空間頻率6×8的棋盤(pán)格圖像為基礎(chǔ),通過(guò)平移產(chǎn)生 12×16、24×32、48×64、96×128等高空間頻率的棋盤(pán)格刺激圖像。如,要生成12×16的棋盤(pán)格刺激圖像,在6×8棋盤(pán)格刺激圖像的基礎(chǔ)上,Hcnt和Vcnt分別除以2,使全屏6×8棋盤(pán)格圖像縮小在屏幕的左上1/4角,然后再平移得到12×16的棋盤(pán)格圖像,如圖5所示。這樣僅需要“Hcnt<800÷8”的8條和“Vcnt<600÷6”的6 條判斷語(yǔ)句,14條語(yǔ)句,和12+16=28條語(yǔ)句相比簡(jiǎn)化了程序,節(jié)約了FPGA的硬件資源。同樣方法可產(chǎn)生空間頻率24×32、48×64 和96×128 的棋盤(pán)格刺激圖像。
圖5 經(jīng)縮小6×8的棋盤(pán)格平移后的12×16的方格
2.2.3 圓環(huán)型刺激圖像產(chǎn)生模塊
圓環(huán)刺激圖像的產(chǎn)生的原理是通過(guò)對(duì)表達(dá)式x2+y2=r2的判斷(x、y是坐標(biāo),r是圓半徑),由于Hcnt,Vcnt所在的坐標(biāo)的原點(diǎn)是在屏幕的左上角,要通過(guò)平移使坐標(biāo)原點(diǎn)在屏幕的中心位置,屏幕的中心位置的坐標(biāo)是(800÷2,600÷2),800 和 600 分別是行有效像素和場(chǎng)有效像素,即平移后坐標(biāo)原點(diǎn)為(400,300),其它像素平移后的坐標(biāo)就是(Hcnt-400)和(Vcnt-300)。通過(guò)對(duì)公式(1)
的判斷(r是平移后到原點(diǎn)的距離,r的取值不同顯示的不同的圓環(huán)),可以從0~300,在一個(gè)有n個(gè)圓環(huán)的刺激圖像中,應(yīng)取r1,r2…rn,每一個(gè)r的取值對(duì)應(yīng)的RGB被賦予一個(gè)6位的二進(jìn)制數(shù)值,可以生成n個(gè)環(huán)的圓環(huán)。式(1)中由于運(yùn)算的數(shù)據(jù)比較大(Hcnt、Vcnt都是10位的二進(jìn)制),如果直接采用VHDL中的行為級(jí)乘法運(yùn)算,由于FPGA的器件特點(diǎn)和結(jié)構(gòu)特點(diǎn),計(jì)算速度慢于顯示器的行、場(chǎng)掃描信號(hào),而使顯示的同心圓環(huán)圖像中有多余的豎條,影響圖像的質(zhì)量。FPGA器件中集成了IP核,IP核是根據(jù)Altera的FPGA器件特點(diǎn)和結(jié)構(gòu)而設(shè)計(jì)的,直接使用Altera的FPGA底層硬件語(yǔ)言設(shè)計(jì)。使用IP核能減少設(shè)計(jì)和調(diào)試時(shí)間,提高開(kāi)發(fā)效率。本系統(tǒng)直接調(diào)用乘法器IP核使得計(jì)算速度加快,但快于顯示器的行、場(chǎng)掃描信號(hào)時(shí),同樣會(huì)使顯示圖像出現(xiàn)上述的豎條,可以設(shè)置乘法器IP核的延時(shí)單元,對(duì)計(jì)算結(jié)果進(jìn)行鎖存,使得計(jì)算速度和顯示器的行、場(chǎng)掃描信號(hào)匹配。試驗(yàn)證明,通過(guò)延時(shí)5個(gè)時(shí)鐘單元,可以避免上述顯示的同心圓環(huán)圖像中多余的豎條,使圓環(huán)顯示清晰,圖像質(zhì)量好,而延時(shí)的多少與硬件的選取有關(guān)。
串口模塊包含發(fā)送器、接收器和波特率發(fā)生器三個(gè)模塊,由于本系統(tǒng)只接受上位機(jī)發(fā)送的控制命令,發(fā)送器模塊不用,不作介紹。波特率發(fā)生器模塊對(duì)系統(tǒng)時(shí)鐘分頻,得到串口的傳輸時(shí)鐘。為提高采樣的分辨能力和抗干擾能力,接收器的采樣頻率為16倍頻的波特率,本系統(tǒng)時(shí)鐘是50 MHz,傳送的波特率是115.2 kbit/s,系統(tǒng)經(jīng)過(guò)27分頻后得到串口的傳送波特率。
本文設(shè)計(jì)的UART協(xié)議的數(shù)據(jù)為8位,無(wú)奇偶校驗(yàn)位,1位起始位,1位停止位。接收模塊的設(shè)計(jì)采用狀態(tài)機(jī)來(lái)完成。接收模塊的狀態(tài)分別r_start、r_center、r_wait、r_sample、r_stop 5 個(gè)狀態(tài)。接收器每隔16個(gè)CLK接收1位,遵循次序1位起始位、8位數(shù)據(jù)位、1位停止位。初始狀態(tài)為r_start,數(shù)據(jù)的接收是由rxd信號(hào)控制,當(dāng)rxd由高電平跳變到低電平時(shí)進(jìn)入r_center狀態(tài),在此狀態(tài)通過(guò)檢測(cè)8個(gè)rxd連續(xù)的低電平,來(lái)確定是否為起始位,如不是,則判定為干擾信號(hào),刪除,如是,則判定為起始位,狀態(tài)機(jī)進(jìn)入r_wait狀態(tài),等待記滿16個(gè)clk在第16個(gè)clk進(jìn)入r_sample狀態(tài)進(jìn)行數(shù)據(jù)位的采樣檢測(cè),同時(shí)也判斷數(shù)據(jù)位的長(zhǎng)度是否已達(dá)到8位,如果到來(lái)說(shuō)明已經(jīng)接收完數(shù)據(jù)位,進(jìn)入r_stop狀態(tài),輸出幀接收完畢信號(hào),數(shù)據(jù)接收完成后狀態(tài)機(jī)無(wú)條件進(jìn)入r_start狀態(tài)等待下一幀起始位的開(kāi)始,如此循環(huán)。圖6為接收器狀態(tài)轉(zhuǎn)換圖。
圖6 接收器模塊狀態(tài)轉(zhuǎn)換圖
本系統(tǒng)采用的FPGA芯片是Altera公司CycloneII系列的 EP2C80208C8N,EP2C80208C8N共有8 256個(gè)邏輯單元(LE)、嵌入式18 bit×18 bit的乘法器、與外部存儲(chǔ)器接口電路、4 kbit嵌入式存儲(chǔ)器塊、鎖相環(huán)等豐富的資源。
本文利用模塊化的設(shè)計(jì)方法,分別設(shè)計(jì)各個(gè)模塊的VHDL模型,最后在頂層模塊中將各個(gè)模塊組裝起來(lái)。并對(duì)其進(jìn)行仿真、綜合后通過(guò)JTAG下載口下載至EP2C80208C8N進(jìn)行驗(yàn)證。
圖7和圖8是生成的視覺(jué)電生理的刺激圖像,圖8是48×64棋盤(pán)格圖像,圖像中的紅點(diǎn)(由于版面的原因,在此顯示為灰色)是中央固視點(diǎn),中央固視點(diǎn)的生成和圓環(huán)的生成是同一個(gè)原理,其大小和顏色可以通過(guò)串口命令控制。圖8為7個(gè)圓環(huán),由于篇幅關(guān)系,不能列舉所有的刺激圖像。
圖7 48×64棋盤(pán)格
圖8 圓環(huán)型
隨著電子技術(shù)的發(fā)展,視覺(jué)電生理儀也日臻完善,視覺(jué)電生理的檢測(cè)也越來(lái)越準(zhǔn)確,為眼科疾病的診斷提供了客觀的診斷依據(jù)。本文利用FPGA,成功的生成了視覺(jué)電生理所需要的各種參數(shù)的刺激圖像,與傳統(tǒng)在Windows系統(tǒng)下通過(guò)軟件實(shí)現(xiàn)的圖像刺激器相比,同步性和實(shí)時(shí)性較好。
[1] Fitz Gerald M J T,F(xiàn)olan-Curran.Clinical Neuroanatomy and Related Neuroscience,W.B.Saunders,Edinburgh,2002.
[2] Yin Zhengqin.Progress of Ophthalmic Electrophysiology in China in Past 5 Years[J].Chinese Journal of Ophthalmology,2010,10,46(10):930-933.
[3] Bela Torok.Microcomputer-Based Recording System for Clinincal E-lectrophysiology[J].Documenta Ophthalmologica,1990,75:189-197.
[4] Michael S Bradnam,Aled L Evans,Donald M I Montgomery,et al.A Personal Computer-Based Visual Evoked Potential Stimulus and Recording System[J].Documenta Ophthalmologica,1994,86:81-93.
[5] Vernon J,Odom J V,Michael Bach M,et al.Visual Evoked Potentials Standard[J].Doc Ophthalmol 2010,120:111-119.
[6] Mukartihall G B,Radhakrishnanl S,et al.Design and Development of Visual Evoked Potentials Recording System for Diagnosis of Optic Nerve Diseases[J].J.Instrum.Soc.India,36(4)227-234.
[7] 陸洲,王寶光.基于FPGA的嵌入式彩色圖像檢測(cè)系統(tǒng)[J].傳感技術(shù)學(xué)報(bào),2007,20(3):615-622.
[8] 張凌烽,王化祥.基于FPGA和DSP的電阻層析成像數(shù)據(jù)采集系統(tǒng)[J].傳感技術(shù)學(xué)報(bào),2011,24(7):1011-1016.
[9] 李海生,潘家普.視覺(jué)電生理的原理與實(shí)踐[M].上海:上海科學(xué)普及出版社,2002.
[10] Vernon Odom J,Michael Bach,Mitchell Brigell,et al.ISCEV standard for clinical visual evoked potentials[J].Doc Ophthalmol,2010,120:111-119.
[11]曹允.基于FPGA的vga時(shí)序彩條信號(hào)實(shí)現(xiàn)方法及其應(yīng)用[J].電子工程師,2002,28(7):41-44.
[12]蔣艷紅.基于FPGA的vga圖像信號(hào)發(fā)生器設(shè)計(jì)[J].電子測(cè)量技術(shù),2008,31(3):78-81.