陳 驥,朱偉芳,趙曉明,劉 磊
(重慶大學生物工程學院,重慶400044)
當視網膜受到光的照射或圖像刺激時,首先在視感受器內發生光化和光電反應,然后產生感受器電位,感受器電位經雙極細胞等的傳遞使神經節細胞產生脈沖信號[1],此信號經視神經視路傳至大腦最后在枕葉的視皮質區形成電位。視覺電生理檢查是對青光眼、眼底病、弱視、色覺障礙等眼科疾病的早期診斷、視功能情況以及療效評估的重要檢測手段[2]。傳統的視覺電生理圖像信號發生器主要有兩種:(1)基于單片機的圖像刺激信號發生器,其刺激信號是通過單片機來實現,圖像刺激裝置一般使用黑白電視機,由計算機控制單片機輸出圖像信號到電視機,并控制其圖像翻轉。這種在計算機外另設單片機控制電路,對硬件要求較高,并且電視機分辨率低、易閃爍。(2)基于雙顯卡的圖像刺激信號發生器[3-4],目前大部分使用的是這種方式,在視覺電生理系統中采用雙顯示器,一個顯示器用作計算機的主顯示器,另一個用作圖像刺激器。在計算機內采用軟件方式實現圖像刺激器的輸出。這種基于雙顯卡的技術,上位機同時發出刺激圖像產生命令與信號采集命令,但是在采用多任務處理調度的Windows系統機制下,經雙顯卡控制顯示器實現的刺激圖像與信號采集命令有一定延時,而延時多少具有隨機性及不確定性,這是Windows機制無法避免的。因此在延時無法確定的情況下,不能保證刺激圖像輸出與視覺電生理信號采集的同步性與實時性。同時隨著視覺電生理研究在虛擬視覺、色覺等領域的越來越廣泛應用,特別是進行視覺誘發電位檢測時[5],要求圖像刺激和視覺誘發電位信號采集的同步性與實時性[6],而傳統的視覺電生理檢測系統是無法滿足的。
現代電子技術的飛速發展,可編程邏輯芯片FPGA以其功能強大、集成度高、開發過程投資小、周期短、可反復編程修改、開發工具智能化等特點被應用于很多領域,如圖像檢測[7]、數據采集[8]等方面,近年來又逐漸應用于生物醫學工程。
本設計通過FPGA來生成刺激圖像,FPGA控制刺激圖像的生成與信號采集命令,通過FPGA生成相應的圖像的同時,向采集卡發出信號采集命令,采集完視覺電生理信息再由上位機處理,即FPGA同時發出刺激圖像生成命令和視覺電生理信號的采集命令,保證了刺激圖像的輸出與信號采集的同步性與實時性。
視覺電生理的刺激圖形參數如下:圖形方式有4種:方格、豎條柵、橫條柵、圓環型。顏色:黑、白、紅、綠、蘭、黃??臻g視野有12種:全、上下、左右、左半、右半、上半、下半、1/4角、中心。視角(空間頻率)有7 種:2×2、3×4、6×8、12×16、24×32、48×64、96×128。中心固視點顏色:可調,紅、綠、蘭。中心固視點大小:大小可調,2 mm ~15 mm(直徑)[9-10]。
本系統的設計利用硬件描述語言VHDL并結合FPGA的硬件特點,生成滿足上述參數的各種刺激圖像,并通過串口與上位機通信。硬件組成如圖1所示。本設計采用的FPGA芯片是Altera公司的EP2C80208C8N,FPGA控制模塊是整個系統的核心,主要包括VGA(Video Graphics Array)時序模塊、圖像刺激生成模塊和串口模塊。采集卡采用阿爾泰公司的基于USB數據總線的數據采集卡USB5935,具有12位A/D轉換精度,采樣速率達500 kHz。
視覺電生理圖像刺激信號發生器選擇了最高波特率為115 200 bit/s的串口通信的方式與上位機進行數據傳輸,上位機只向FPGA發送一些簡單的數字控制命令控制圖像輸出,命令簡單,串口通信足以滿足這樣的要求。

圖1 系統原理框圖
FPGA控制模塊是整個系統的核心,通過硬件描述語言VHDL編程可實現輸出VGA接口的HS、VS行、場掃描同步信號和R、G、B三基色信號和串口的時序信號,產生和輸出刺激圖像以及視覺電生理的采集信號。當FPGA接受上位機輸出的控制命令后,內部的數據選擇器模塊根據控制信號選通相應的刺激圖像生成模塊,輸出刺激圖像的RGB三基色信號和行、場掃描時序HS、VS信號,通過15針D型接口電路送入VGA顯示器。
本文采用模塊化的設計方法,利用VHDL語言生成各子模塊,再將這些子模塊進行頂層的連接。主要模塊是VGA時序模塊、刺激圖像生成模塊和串口模塊,其中刺激圖像生成模塊是整個模塊的核心,包括橫條柵模塊、豎條柵模塊、棋盤格模塊和圓環刺激圖像模塊,棋盤格由于空間頻率、空間視野和顏色的不同又分為252個刺激圖像模塊,系統的程序結構如圖2所示。圖中棋盤格的參數有顏色、空間視野、空間分辨率3個參數,3個參數中每個取一項進行組合,共有252種棋盤格刺激圖像。圖中串口模塊負責上位機與FPGA的通信,VGA時序模塊主要是產生VGA的行同步信號HS和場同步信號VS。當FPGA接受上位機輸出的控制命令C后,內部的數據選擇器模塊根據控制信號選通相應的刺激圖像生成模塊,例如當上位機發出命令C=1時,顯示器就顯示豎條柵刺激圖像,C=2時顯示橫條柵刺激圖像,C=3時顯示顏色為黑白,空間視野為全、空間刺激頻率為2×2方格刺激圖像,C=4時顯示顏色為黑白,空間視野為全,空間刺激頻率為3×4方格刺激圖像,以此類推當C=5、6、…、255時類似。

圖2 系統的程序結構
由VGA控制模塊產生的水平同步信號和垂直同步信號控制陰極射線槍產生的電子束,打在涂有熒光粉的熒光屏上,產生 R、G、B,即紅、綠、黃三基色,合成1個彩色像素[11]。每個基色用一個兩位的二進制數表示,每個像素是6位二進制,共有26=64種色彩。掃描從屏幕的左上方開始,由左至右,由上到下,逐行進行掃描,在回掃期間,CRT對電子束進行消隱,每行結束是用行同步信號HS進行行同步;掃描完所有行,再由場同步信號VS進行場同步,并使掃描回到屏幕的左上方,同時進行場消隱,準備下一場的掃描[12]。行同步信號HS和場同步信號VS是兩個重要的信號。顯示過程中,HS和VS的極性可正可負,顯示器內可自動轉換為正極性邏輯。
根據“VGA工業標準”,VGA顯示器的分辨率有640×480,800×600 等,本系統采用800×600 的分辨率,像素頻率是 50 MHz,場頻 72 Hz[11]。水平有效像素點800,垂直有效像素點600。VGA時序產生模塊包括行點數計數器Hcnt、是1040進制計數器,其中800為有效像素點,前沿時間為56時鐘周期,行消隱時間為120時鐘周期,后沿時間是64時鐘周期.場行數計數器Vcnt,場行數計數器是800進制計數器,有效的場顯示時間為600個行周期,前沿時間是39個行周期,場消隱時間是6個行周期,后沿時間是24個行周期。程序如下,clk是輸入的時鐘信號,HS、VS是產生的行、場信號。

行同步信號HS和場同步信號VS的時序圖如圖3[12]所示,T1為行同步消隱(120個時鐘周期);T2為行顯示時間(800個時鐘周期),T3為場同步消隱(6個行周期);T4為場顯示時間(600個行周期)。

圖3 VGA行掃描、場掃描時序示意圖
刺激圖像生成模塊是通過對行點計數器Hcnt的計數值和場行數計數器Vcnt的判斷和運算來產生的,可以把顯示器看作一個直角坐標系,其中原點在左上角,Hcnt是橫坐標,從左上角的0向右增加到1 039;Vcnt是縱坐標,從左上角的0向下增加到799,這樣顯示器上的每一點都有自己的坐標,通過對不同的點賦予不同值,可以顯示不同的豎條柵、橫條柵、棋盤格和圓形刺激圖像。這樣通過判斷和運算直接生成刺激圖像,節省了外部存儲空間。
2.2.1 豎條柵和橫條柵刺激圖像生成模塊
在豎條柵和橫條柵的刺激圖像生成模塊中,豎條柵和橫條柵分別是通過對行點計數器Hcnt和場計數器Vcnt進行控制,不同的區域顯示不同的顏色[11]。豎條柵的生成流程圖如圖4所示,圖中n是要顯示的豎條柵的條數,CY0、CY1…CYn-1是被賦給的6 位二進制數,如果要產生紅、藍、綠、白4條等寬豎條柵,圖4中,Hcnt<200,CY0=110000;Hcnt<200×2,CY1=001100;Hcnt<200×3,CY2=000011;Hcnt<200×4,CY2=111111時,其中200是800除以4,即800÷4=200。橫條柵發生模塊與豎條柵發生模塊原理相似,是對場行計數器Vcnt進行判斷。

圖4 豎條柵產生的流程圖
2.2.2 方格刺激圖像生成模塊
在上述生成豎條柵和橫條柵的基礎上,賦予RGBX和RGBY不同6位二進制值,通過RGBX和RGBY的異或運算產生方格刺激圖像,即RGB=RGBX XOR RGBY。這種方法在顯示空間頻率較小的情況下可以用簡單的VHDL語句實現,但視覺電生理的圖像刺激器所要求的棋盤格空間頻率最高96×128,有“Hcnt<800÷128”的判斷語句 96 條和“Vcnt<600÷96”的判斷語句128條,浪費FPGA的硬件資源。這里提出一種較簡單的方法:以空間頻率6×8的棋盤格圖像為基礎,通過平移產生 12×16、24×32、48×64、96×128等高空間頻率的棋盤格刺激圖像。如,要生成12×16的棋盤格刺激圖像,在6×8棋盤格刺激圖像的基礎上,Hcnt和Vcnt分別除以2,使全屏6×8棋盤格圖像縮小在屏幕的左上1/4角,然后再平移得到12×16的棋盤格圖像,如圖5所示。這樣僅需要“Hcnt<800÷8”的8條和“Vcnt<600÷6”的6 條判斷語句,14條語句,和12+16=28條語句相比簡化了程序,節約了FPGA的硬件資源。同樣方法可產生空間頻率24×32、48×64 和96×128 的棋盤格刺激圖像。

圖5 經縮小6×8的棋盤格平移后的12×16的方格
2.2.3 圓環型刺激圖像產生模塊
圓環刺激圖像的產生的原理是通過對表達式x2+y2=r2的判斷(x、y是坐標,r是圓半徑),由于Hcnt,Vcnt所在的坐標的原點是在屏幕的左上角,要通過平移使坐標原點在屏幕的中心位置,屏幕的中心位置的坐標是(800÷2,600÷2),800 和 600 分別是行有效像素和場有效像素,即平移后坐標原點為(400,300),其它像素平移后的坐標就是(Hcnt-400)和(Vcnt-300)。通過對公式(1)

的判斷(r是平移后到原點的距離,r的取值不同顯示的不同的圓環),可以從0~300,在一個有n個圓環的刺激圖像中,應取r1,r2…rn,每一個r的取值對應的RGB被賦予一個6位的二進制數值,可以生成n個環的圓環。式(1)中由于運算的數據比較大(Hcnt、Vcnt都是10位的二進制),如果直接采用VHDL中的行為級乘法運算,由于FPGA的器件特點和結構特點,計算速度慢于顯示器的行、場掃描信號,而使顯示的同心圓環圖像中有多余的豎條,影響圖像的質量。FPGA器件中集成了IP核,IP核是根據Altera的FPGA器件特點和結構而設計的,直接使用Altera的FPGA底層硬件語言設計。使用IP核能減少設計和調試時間,提高開發效率。本系統直接調用乘法器IP核使得計算速度加快,但快于顯示器的行、場掃描信號時,同樣會使顯示圖像出現上述的豎條,可以設置乘法器IP核的延時單元,對計算結果進行鎖存,使得計算速度和顯示器的行、場掃描信號匹配。試驗證明,通過延時5個時鐘單元,可以避免上述顯示的同心圓環圖像中多余的豎條,使圓環顯示清晰,圖像質量好,而延時的多少與硬件的選取有關。
串口模塊包含發送器、接收器和波特率發生器三個模塊,由于本系統只接受上位機發送的控制命令,發送器模塊不用,不作介紹。波特率發生器模塊對系統時鐘分頻,得到串口的傳輸時鐘。為提高采樣的分辨能力和抗干擾能力,接收器的采樣頻率為16倍頻的波特率,本系統時鐘是50 MHz,傳送的波特率是115.2 kbit/s,系統經過27分頻后得到串口的傳送波特率。
本文設計的UART協議的數據為8位,無奇偶校驗位,1位起始位,1位停止位。接收模塊的設計采用狀態機來完成。接收模塊的狀態分別r_start、r_center、r_wait、r_sample、r_stop 5 個狀態。接收器每隔16個CLK接收1位,遵循次序1位起始位、8位數據位、1位停止位。初始狀態為r_start,數據的接收是由rxd信號控制,當rxd由高電平跳變到低電平時進入r_center狀態,在此狀態通過檢測8個rxd連續的低電平,來確定是否為起始位,如不是,則判定為干擾信號,刪除,如是,則判定為起始位,狀態機進入r_wait狀態,等待記滿16個clk在第16個clk進入r_sample狀態進行數據位的采樣檢測,同時也判斷數據位的長度是否已達到8位,如果到來說明已經接收完數據位,進入r_stop狀態,輸出幀接收完畢信號,數據接收完成后狀態機無條件進入r_start狀態等待下一幀起始位的開始,如此循環。圖6為接收器狀態轉換圖。

圖6 接收器模塊狀態轉換圖
本系統采用的FPGA芯片是Altera公司CycloneII系列的 EP2C80208C8N,EP2C80208C8N共有8 256個邏輯單元(LE)、嵌入式18 bit×18 bit的乘法器、與外部存儲器接口電路、4 kbit嵌入式存儲器塊、鎖相環等豐富的資源。
本文利用模塊化的設計方法,分別設計各個模塊的VHDL模型,最后在頂層模塊中將各個模塊組裝起來。并對其進行仿真、綜合后通過JTAG下載口下載至EP2C80208C8N進行驗證。
圖7和圖8是生成的視覺電生理的刺激圖像,圖8是48×64棋盤格圖像,圖像中的紅點(由于版面的原因,在此顯示為灰色)是中央固視點,中央固視點的生成和圓環的生成是同一個原理,其大小和顏色可以通過串口命令控制。圖8為7個圓環,由于篇幅關系,不能列舉所有的刺激圖像。

圖7 48×64棋盤格

圖8 圓環型
隨著電子技術的發展,視覺電生理儀也日臻完善,視覺電生理的檢測也越來越準確,為眼科疾病的診斷提供了客觀的診斷依據。本文利用FPGA,成功的生成了視覺電生理所需要的各種參數的刺激圖像,與傳統在Windows系統下通過軟件實現的圖像刺激器相比,同步性和實時性較好。
[1] Fitz Gerald M J T,Folan-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的嵌入式彩色圖像檢測系統[J].傳感技術學報,2007,20(3):615-622.
[8] 張凌烽,王化祥.基于FPGA和DSP的電阻層析成像數據采集系統[J].傳感技術學報,2011,24(7):1011-1016.
[9] 李海生,潘家普.視覺電生理的原理與實踐[M].上海:上??茖W普及出版社,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時序彩條信號實現方法及其應用[J].電子工程師,2002,28(7):41-44.
[12]蔣艷紅.基于FPGA的vga圖像信號發生器設計[J].電子測量技術,2008,31(3):78-81.