基于Flash構(gòu)架的模數(shù)混合的FPGA在心電監(jiān)控儀上的應(yīng)用設(shè)計(jì)
2.3 彩色顯示驅(qū)動(dòng)模塊
比較成熟的TFT_LCD顯示驅(qū)動(dòng)的開發(fā)大多數(shù)基于ARM[2-3]、DSP[4]的平臺(tái)。然而本系統(tǒng)使用的處理器是Coer8051,所以沒有辦法移植原有的驅(qū)動(dòng)模塊。又因?yàn)閳D像數(shù)據(jù)比較大,對(duì)處理器運(yùn)算能力的要求比較高,所以結(jié)合Core8051和FPGA的特點(diǎn)重新設(shè)計(jì)了一種算法,降低需要處理的數(shù)據(jù)量,從而在Core8051的能力范圍內(nèi)來(lái)完成心電圖像信息的顯示。
為了顯示一幅完整的圖像,按照液晶掃描的時(shí)鐘順序?qū)⑹孪葴?zhǔn)備好的一幀圖像數(shù)據(jù)逐次地輸入到數(shù)據(jù)端口,從而完成一幀圖像的顯示。由于要顯示的圖像只有心電信號(hào)是動(dòng)態(tài)變化的,而其他的都是相對(duì)靜止不動(dòng)的,也就是每一次掃描時(shí)數(shù)據(jù)信息是不變化的,整幅的圖像被分成動(dòng)態(tài)的(心電圖像)和靜態(tài)的(背景、標(biāo)度)兩部分。動(dòng)態(tài)的由Core8051產(chǎn)生,并在特定時(shí)刻輸入到TFT_LCD;靜態(tài)的圖像信息事先存儲(chǔ)到FPGA中的存儲(chǔ)器中,每掃描一次都按照特定的順序輸入到LCD。通過(guò)這種方法,Core805就只需處理心電信號(hào)的信息,從而大大地減少了圖像數(shù)據(jù)的處理量,并完成圖像的顯示。該模塊的設(shè)計(jì)完成了低端處理器很難完成的實(shí)時(shí)彩色界面的驅(qū)動(dòng),即僅使用帶有256 B RAM的Core8051就可以顯示256色界面。
根據(jù)上述設(shè)想,可將液晶屏分成動(dòng)態(tài)部分和靜態(tài)部分,如圖5所示。
圖5中除了“心電信號(hào)動(dòng)態(tài)顯示區(qū)”中顯示出動(dòng)態(tài)的心電圖像,其他部分包括“動(dòng)態(tài)顯示區(qū)”中的背景圖像信息全部事先存儲(chǔ)在FPGA內(nèi)部的Flash存儲(chǔ)器中。
動(dòng)態(tài)顯示區(qū)可以用兩組數(shù)據(jù)來(lái)標(biāo)注,設(shè)為:x0,y0,x1,y1,則這個(gè)動(dòng)態(tài)顯示區(qū)每個(gè)定點(diǎn)的坐標(biāo)就可以表示為(x0,y0)(x0,y1)(x1,y0)(x1,y1)。如圖5所示, 橫坐標(biāo)表示時(shí)間t/s,縱坐標(biāo)表示心電信號(hào)的幅值大小U/v,(x0,y0)處為(0,0)坐標(biāo)點(diǎn)。在Core8051的基礎(chǔ)上設(shè)計(jì)編碼算法,對(duì)采集到的心電信號(hào)進(jìn)行編碼,然后將心電信號(hào)轉(zhuǎn)換成顯示屏的坐標(biāo)信號(hào),然后根據(jù)坐標(biāo)信號(hào)計(jì)算出心電圖像的數(shù)據(jù),并在掃描時(shí)鐘的控制下逐次將數(shù)據(jù)按照順序輸入到LCD中, 這樣即可實(shí)現(xiàn)動(dòng)態(tài)的心電圖像的顯示。 function ImgZoom(Id)//重新設(shè)置圖片大小 防止撐破表格 { var w = $(Id).width; var m = 650; if(w
心電信號(hào)動(dòng)態(tài)顯示區(qū)的設(shè)計(jì)采用了3種方法,分別為:
(1)移位寄存器法。在FPGA內(nèi)部構(gòu)建一個(gè)240位移位寄存器作為心電圖像的緩存,Core8051實(shí)時(shí)地采集數(shù)據(jù)然后發(fā)送到移位寄存器內(nèi)部,同時(shí)CRT驅(qū)動(dòng)模塊按照自己的時(shí)序來(lái)不斷地掃描移位寄存器,從而顯示出心電圖像。這種方法的缺點(diǎn)是動(dòng)態(tài)曲線顯示的連續(xù)性不好。
(2)雙RAM緩存法[5]。利用Core8051外部擴(kuò)展的64 KB
RAM作為心電波形信號(hào)的緩存,同時(shí)在CRT驅(qū)動(dòng)模塊中再設(shè)計(jì)一個(gè)心電波形顯示緩存,這樣Core8051就可以先采集心電信號(hào)存儲(chǔ)在外部擴(kuò)展的64 KB RAM中,達(dá)到某一數(shù)量后,連續(xù)地發(fā)送給CRT驅(qū)動(dòng)模塊中的緩存,從而顯示出動(dòng)態(tài)的心電信號(hào)圖像。該設(shè)計(jì)的一個(gè)最大優(yōu)點(diǎn)是圖像顯示連續(xù)(沒有拋棄任何時(shí)刻的心電數(shù)據(jù)),同時(shí)又可以根據(jù)需要選擇觀察采集到的任何時(shí)刻的心電波形。但由于要采集一定數(shù)量的心電波形數(shù)據(jù),因此心電波形的顯示會(huì)有一定時(shí)間的延時(shí)。
(3)單RAM緩存法。在Core8051沒有擴(kuò)展外部64 KB RAM的前提下設(shè)計(jì)的,利用一個(gè)雙端口的RAM作為動(dòng)態(tài)顯示區(qū)的圖像緩存,Core8051通過(guò)其中的一個(gè)寫端口向圖像緩存中寫入數(shù)據(jù),VGA控制器通過(guò)另外一個(gè)端口從圖像緩存中讀出數(shù)據(jù),兩者互不影響。同時(shí)設(shè)計(jì)算法使雙端口RAM具有位讀寫能力,即利用Core8051來(lái)靈活地讀寫雙端口RAM中的任何一位,這樣對(duì)圖像數(shù)據(jù)的處理就非常靈活了。這種設(shè)計(jì)的最大優(yōu)點(diǎn)是如方法(1)一樣可以實(shí)時(shí)地顯示。
本文結(jié)合(2)、(3)兩種方法進(jìn)行系統(tǒng)的設(shè)計(jì),彌補(bǔ)了各種方案的缺點(diǎn),實(shí)現(xiàn)了動(dòng)態(tài)、實(shí)時(shí)顯示的功能,使得片上系統(tǒng)的功能變得完善。這種設(shè)計(jì)結(jié)合了FPGA的可編程性成功解決了低端8位處理器無(wú)法驅(qū)動(dòng)彩色TFT_LCD動(dòng)態(tài)、實(shí)時(shí)顯示的問(wèn)題。在此基礎(chǔ)上,還可以利用FPGA和Core8051的資源開發(fā)其他的功能模塊,例如與PC機(jī)的通信、SD卡大量心電數(shù)據(jù)存儲(chǔ)、心電分析與報(bào)警等。
3 系統(tǒng)測(cè)試及結(jié)果
心電信號(hào)能力集中在中低頻段,隨著頻率的升高,響應(yīng)的能量也逐漸降低[6]。利用信號(hào)發(fā)生器產(chǎn)生不同頻率和幅值的正弦信號(hào)來(lái)模擬心電信號(hào),并將其加到心電信號(hào)輸入端口,可以看到CRT顯示器上顯示出和輸入信號(hào)完全一致的正弦波形,沒有任何失真。
Fution模數(shù)混合信號(hào)芯片的誕生給小型化、便攜式片上系統(tǒng)的設(shè)計(jì)帶來(lái)了可能,本文通過(guò)對(duì)FPGA各種資源的綜合應(yīng)用完成了一種心電監(jiān)護(hù)儀的片上系統(tǒng)的設(shè)計(jì),通過(guò)實(shí)際的測(cè)試驗(yàn)證了它的準(zhǔn)確性。系統(tǒng)的所有功能都是在FPGA上完成的,所以它的單芯片性和FPGA可編程性,給產(chǎn)品的升級(jí)帶來(lái)了極大的便利。
評(píng)論