HPI接口在腦電數(shù)據(jù)采集系統(tǒng)中的實(shí)現(xiàn)
1 引 言
TMS320VC5402是TI公司的一種16位數(shù)字信號(hào)處理器,以其獨(dú)有的低功耗和高性?xún)r(jià)比,受到用戶(hù)的歡迎。C54x操作靈活及運(yùn)行速度高;使用改進(jìn)的哈佛結(jié)構(gòu),具有專(zhuān)用硬件邏輯的CPU、片內(nèi)存儲(chǔ)器和外設(shè)接口,以及高度專(zhuān)業(yè)化的指令集。而且, C54系列DSP與主機(jī)連接通過(guò)HPI(Host Port Interface)接口,以邏輯電路設(shè)計(jì)簡(jiǎn)單、不需要額外的存儲(chǔ)器和程序更新方便優(yōu)點(diǎn),可以應(yīng)用靈活多樣的引導(dǎo)加載模式以實(shí)現(xiàn)接口和處理功能開(kāi)發(fā)。
HPI口是C54x DSP系列芯片內(nèi)部的并行接口部件,用于與其他總線(xiàn)或CPU主機(jī)之間進(jìn)行連接通信,主機(jī)是HPI口的主控者,通過(guò)專(zhuān)用地址和數(shù)據(jù)寄存器、HPI控制寄存器以及外部數(shù)據(jù)和接口控制信號(hào)與HPI口通信。
本文基于對(duì)一個(gè)腦電信號(hào)采集系統(tǒng)中數(shù)字處理電路部分的研究,設(shè)計(jì)并實(shí)現(xiàn)了TMS320VC5402應(yīng)用程序的HPI自舉加載,HPI方式通信,詳細(xì)介紹了調(diào)試方法與過(guò)程,對(duì)開(kāi)發(fā)
基于DSP處理芯片的腦電信號(hào)采集系統(tǒng)有很大的參考價(jià)值。
2 系統(tǒng)介紹
腦電信號(hào)(EEG)是一種比較特殊的微弱信號(hào)。它是由腦神經(jīng)活動(dòng)產(chǎn)生并且始終存在于中樞神經(jīng)系統(tǒng)的自發(fā)性電位活動(dòng),含有豐富的大腦活動(dòng)信息。腦電信號(hào)的采集處理對(duì)于生物醫(yī)學(xué)工程學(xué)研究具有重要意義,可以為臨床手術(shù)中的麻醉鎮(zhèn)靜監(jiān)護(hù)分析提供必要的數(shù)據(jù)。腦電信號(hào)數(shù)據(jù)采集系統(tǒng)主要功能是將人腦部的生物電信號(hào)通過(guò)腦電極提取出來(lái),經(jīng)過(guò)放大處理,傳輸至上位機(jī)顯示并存儲(chǔ)。本文所研究的數(shù)字腦電采集系統(tǒng)就是基于DSP 芯片VC5402 處理能力強(qiáng)、實(shí)時(shí)性高等優(yōu)點(diǎn)的應(yīng)用。由系統(tǒng)模擬部分對(duì)腦電信號(hào)進(jìn)行放大和預(yù)處理,經(jīng)過(guò)A/D 變換后送往數(shù)字處理部分。數(shù)字處理部分由DSP 芯片和USB 等芯片構(gòu)成,由DSP 控制實(shí)現(xiàn)對(duì)腦電數(shù)字信號(hào)的采集與處理,并完成DSP 與USB 芯片的通信,最后通過(guò)USB總線(xiàn)將數(shù)據(jù)送往上位機(jī)實(shí)時(shí)顯示與儲(chǔ)存。
系統(tǒng)的核心為T(mén)MS320VC5402,有三個(gè)功能:首先,控制整個(gè)系統(tǒng)模數(shù)轉(zhuǎn)換并設(shè)置各種模擬部分的參數(shù);其次,對(duì)A/D變換后的數(shù)據(jù)進(jìn)行各種算法處理,包括信號(hào)濾波與分析等,也是高性能腦電數(shù)字信號(hào)采集器的重點(diǎn);最后完成數(shù)據(jù)接口功能,把數(shù)據(jù)按一定的格式打包,通過(guò)高速的HPI總線(xiàn)把數(shù)據(jù)交給USB接口芯片并送往PC機(jī)。圖(1)為整個(gè)方案的原理圖,其中虛線(xiàn)部分為調(diào)試過(guò)程示意圖。調(diào)試過(guò)程中,通過(guò)集成開(kāi)發(fā)環(huán)境KEIL C51和CCS 5000系統(tǒng),可視化的調(diào)試過(guò)程有利于整個(gè)方案的后期調(diào)試。
圖 1 系統(tǒng)方框圖
3 透明式USB通信設(shè)計(jì)
VC5402 自身提供了標(biāo)準(zhǔn)的串行口, 時(shí)分復(fù)用(TDM) 串行口和自動(dòng)緩沖串行口BSP(Auto-Buffered Serial Port),這些接口必須通過(guò)PC 機(jī)的串口與PC 機(jī)進(jìn)行通信,而PC 機(jī)的串口無(wú)法滿(mǎn)足高速數(shù)據(jù)采集對(duì)速度的要求。本文采用CY7C68013A 芯片通過(guò)HPI(HostPort Interface)接口和DSP 芯片TMS320VC5402 相連,再由CY7C68013A 通過(guò)USB2.0 將數(shù)據(jù)傳送到PC 機(jī)上,方便滿(mǎn)足系統(tǒng)對(duì)傳輸速度的要求。
3.1 硬件
CY7C68013A芯片有56腳SSOP,56腳QFN,100腳TQFP以及128腳TQFP四種封裝形式。引腳少的芯片占用PCB面積小,價(jià)格低,功能基本滿(mǎn)足需要。但在開(kāi)發(fā)階段,選取100腳TQFP封裝形式以支持在線(xiàn)調(diào)試,可以節(jié)省開(kāi)發(fā)時(shí)間。實(shí)際生產(chǎn)階段,可以采用56腳封裝芯片來(lái)做實(shí)際電路應(yīng)用。
3.2 開(kāi)發(fā)工具
本文選用Keil uVision3作為USB接口芯片固件程序的開(kāi)發(fā)工具能提高開(kāi)發(fā)效果。KeiluVision3是一個(gè)集成開(kāi)發(fā)環(huán)境,擁有C51編譯器、A51匯編器以及BL連接定位器等工具和模擬仿真與調(diào)試器。它能夠支持C程序和匯編程序混合的編程工作,對(duì)軟件的開(kāi)發(fā)便利。
3.3 固件開(kāi)發(fā)與調(diào)試過(guò)程
在編寫(xiě)固件程序時(shí)需要用到大量的函數(shù),可以應(yīng)用CY7C68013A芯片的開(kāi)發(fā)工具包。該開(kāi)發(fā)包提供了開(kāi)發(fā)所需的固件框架程序以及一些例程,以簡(jiǎn)化其固件開(kāi)發(fā)過(guò)程。在Cypress C51固件框架程序下的主要工作有:
1、修改設(shè)備描述符表: USB 設(shè)備與主機(jī)建立通信前須先向主機(jī)提供具體配置,包括設(shè)備的廠(chǎng)商、產(chǎn)品識(shí)別號(hào)(VID,PID),設(shè)備的供電方式以及能量消耗等系列信息。而有關(guān)設(shè)備的信息是通過(guò)設(shè)備描述符表提供給主機(jī)的,從而決定主機(jī)使用哪一個(gè)USB 設(shè)備驅(qū)動(dòng)和采用哪種方式建立與設(shè)備之間的連接。
2、CY7C68013A有可編程接口GPIF??删幊探涌贕PIF是主機(jī)方式,可以由軟件編寫(xiě)讀寫(xiě)控制時(shí)序,幾乎可以和所有8/16 bit接口的控制器、存儲(chǔ)器和總線(xiàn)進(jìn)行無(wú)縫連接。在調(diào)試過(guò)程中,把CY7C68013A芯片的串口接到PC機(jī)的串口上,無(wú)需仿真器就能完成在線(xiàn)仿真工作。利用CYPRESS提供開(kāi)發(fā)工具包的Monitor程序,能對(duì)應(yīng)用程序?qū)嵤﹩尾竭\(yùn)行、斷點(diǎn)設(shè)置和變量查看等調(diào)試工作,既降低了固件程序的開(kāi)發(fā)難度,又加速了USB系統(tǒng)開(kāi)發(fā)的過(guò)程。
4 DSP部分設(shè)計(jì)
4.1 HPI方式自舉加載
VC5402片內(nèi)ROM 固化有TI公司的自舉引導(dǎo)程序Bootloader,在上電復(fù)位時(shí)把用戶(hù)代碼從外部存儲(chǔ)器引導(dǎo)到片內(nèi)RAM 并運(yùn)行。VC5402支持多種引導(dǎo)方式,如HPI引導(dǎo)、并行EPROM引導(dǎo)、并行I/O引導(dǎo)、串行口引導(dǎo)等。DSP采用哪種引導(dǎo)模式取決于硬件設(shè)計(jì)。VC5402上電復(fù)位后,先檢測(cè)MP/MC引腳,如果MP/MC=“0”,表示使用片內(nèi)ROM引導(dǎo)。此時(shí),DSP從0xFF80處開(kāi)始執(zhí)行TI的片內(nèi)引導(dǎo)程序。進(jìn)入引導(dǎo)程序后,首先HINT引腳變?yōu)榈碗娖剑缓箝_(kāi)始檢測(cè)INT2是否為低電平(有效)。若INT2為低電平,則進(jìn)入HPI引導(dǎo)方式;否則,檢測(cè)其它引導(dǎo)方式是否有效。在硬件連接上,為了使VC5402復(fù)位后進(jìn)入HPI啟動(dòng)方式,直接使INT2接到HINT引腳上,使HPIENA引腳接高電平。對(duì)HPI接口的操作主要通過(guò)以下三個(gè)寄存器來(lái)完成:HPI地址寄存器(HPIA)、數(shù)據(jù)鎖存器(HPID)和控制寄存器(HPIC)。如當(dāng)前進(jìn)行的是讀操作,則HPID中存放的是要從HPI存儲(chǔ)器中讀出的數(shù)據(jù);如果當(dāng)前進(jìn)行的是寫(xiě)操作,則HPID存放的是要寫(xiě)到HPI存儲(chǔ)器的數(shù)據(jù)。
4.2 軟件部分設(shè)計(jì)
CCS(Code Composer Studio)是TI開(kāi)發(fā)的一個(gè)DSP集成開(kāi)發(fā)環(huán)境。其集成了常規(guī)的開(kāi)發(fā)工具,如源程序編輯器、代碼生成工具(編譯器,連接器)以及調(diào)試環(huán)境等。CCS的編譯器和鏈接器生成COFF格式文件,用HEX轉(zhuǎn)化程序hex500.exe將COFF格式代碼轉(zhuǎn)換為標(biāo)準(zhǔn)的ASCII十六進(jìn)制格式TI Tagged,支持16位地址。轉(zhuǎn)換而成的Hex文件為ASCII碼形式的,不能用于HPI自舉,需將其轉(zhuǎn)換為二進(jìn)制(Bin)格式。
4.3 用戶(hù)代碼下載(HPI)
由于Intel的HEX代碼格式是分段的,本文編寫(xiě)的代碼段,是將一個(gè)Intel 的HEX代碼段通過(guò)HPI接口寫(xiě)入DSP RAM中。下面代碼段為HPI加載子程序,count為要寫(xiě)入代碼的長(zhǎng)度,addrESS為起始地址,EP2FIFOBUF是指向HEX代碼段的指針,HPI_WriteA子程序功能是寫(xiě)HPI地址寄存器,HPI_WriteD2完成部分程序的寫(xiě)入。代碼如下:
4.4 寫(xiě)入DSP入口地址并運(yùn)行
在TMS320VC5402進(jìn)入HPI啟動(dòng)模式后,它將一直檢查0X007F這個(gè)地址是否為0,如不為0,則跳轉(zhuǎn)到0X007F指向的地址處執(zhí)行代碼。在將DSP的代碼寫(xiě)入之后,只需將程序的入口地址寫(xiě)入0X007F這個(gè)地址,DSP將自動(dòng)跳轉(zhuǎn)到入口執(zhí)行程序。程序的入口地址可以在CCS生成的.map文件中看到,其格式如:ENTRY POINT SYMBOL: "_c_int00" address: 000020be。
由于調(diào)用的是HPI_WriteD2()函數(shù)寫(xiě)數(shù)據(jù),而HPI_WriteD2()在寫(xiě)數(shù)據(jù)之前,會(huì)自動(dòng)將地址+1,所以在調(diào)用之前寫(xiě)入地址時(shí),調(diào)用的是HPI_WriteA(0x007E),這樣,最后調(diào)用HPI_WriteD2(m_dat)時(shí),地址會(huì)自動(dòng)指向0X007F。
4.5 觀(guān)察寫(xiě)入代碼
TMS320VC5402 在仿真時(shí)候其HPI接口也是正常工作的,這就方便了對(duì)HPI啟動(dòng)方式的調(diào)試。首先把5402連接到仿真器上,然后打開(kāi)CCS5000集成環(huán)境。此時(shí)可以利用CCS5000的MemoryView來(lái)觀(guān)察5402的內(nèi)部RAM數(shù)據(jù)。調(diào)試中,先通過(guò)HPI接口把DSP的代碼下載進(jìn)去,再通過(guò)CCS5000集成環(huán)境觀(guān)察,同時(shí)用UltraEdit十六進(jìn)制編輯器打開(kāi)由HEX500.EXE生成的.HEX文件。由于兩者都是以ASCII碼形式顯示,可以直觀(guān)地比較各個(gè)地址空間中的代碼是否完全相同以及下載的代碼是否完全正確。
4.6 整體方案測(cè)試效果
上述的各個(gè)模塊調(diào)試通過(guò)后,又編寫(xiě)了上位機(jī)應(yīng)用程序。上位機(jī)應(yīng)用程序功能包括:建立USB 通信、加載DSP 代碼、讀取DSP 代碼、寫(xiě)入口地址、數(shù)據(jù)采集與保存等功能。在把各個(gè)??爝B接之后,用控制臺(tái)通過(guò)HPI 接口加載DSP 代碼5402 Code.i00,并寫(xiě)入程序入口地址0x20BE,啟動(dòng)下位機(jī)進(jìn)入采集過(guò)程。圖2 為上位機(jī)控制臺(tái)應(yīng)用程序截圖。
圖2 應(yīng)用程序截圖
5 結(jié) 論
利用 C54x 的HPI 接口在腦電數(shù)據(jù)采集系統(tǒng)中的設(shè)計(jì)與實(shí)現(xiàn),可用于自發(fā)腦電信號(hào)實(shí)時(shí)準(zhǔn)確的高速采集。如從DSP 的實(shí)際應(yīng)用環(huán)境出發(fā),利用DSP 的HPI 加載方式和JTAG 調(diào)試相結(jié)合的開(kāi)發(fā)模式,可以在線(xiàn)調(diào)試該電路板的制作,自行編制相應(yīng)的主機(jī)軟件,設(shè)計(jì)DSP KERNEI和HPI 接口邏輯,還可以實(shí)現(xiàn)開(kāi)發(fā)基于HPI 自舉和通信的DSP 應(yīng)用設(shè)計(jì)方案。這樣做可以縮短開(kāi)發(fā)周期,且硬件資源透明。該透明化開(kāi)發(fā)過(guò)程更利于學(xué)習(xí)者理解和掌握DSP 的軟硬件原理。該方案還可以從腦電采集系統(tǒng)設(shè)計(jì)推廣到其它領(lǐng)域。
本文作者創(chuàng)新點(diǎn):在于將USB接口芯片CY7C68013A(100引腳)的在線(xiàn)仿真和DSP芯片TMS320VC5402的JTAG仿真結(jié)合起來(lái),設(shè)計(jì)VC5402基于USB2.0和HPI自舉加載的腦電采集系統(tǒng)。通過(guò)CCS5000集成環(huán)境,能即刻查看DSP內(nèi)部HPI加載代碼,使該方案設(shè)計(jì)的采集系統(tǒng)直觀(guān)地調(diào)試并縮短開(kāi)發(fā)時(shí)間。該方案還可以從腦電采集系統(tǒng)設(shè)計(jì)方面推廣到其它領(lǐng)域。
評(píng)論