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