作者:中國(guó)電波傳播研究所 高榮山 來源:電子設(shè)計(jì)應(yīng)用2009年第11期 引言 CPCI規(guī)范是由PICMG制定的一種開放工業(yè)計(jì)算機(jī)標(biāo)準(zhǔn),用于工業(yè)和嵌入式應(yīng)用。CPCI系統(tǒng)背板和CPCI板卡采用標(biāo)準(zhǔn)的2mm高密度氣密性針孔連接器,提高了系統(tǒng)可靠性。在電氣、邏輯和軟件功能等方面,其與PCI標(biāo)準(zhǔn)完全兼容,使得基于PCI技術(shù)的豐富軟件工具同樣可以在CPCI系統(tǒng)中使用。另外,CPCI可采用IEEE 1101.11后端輸出方式,使系統(tǒng)維護(hù)更加便捷。 CPCI板卡的尺寸分3U(100mm×160mm)和6U(160mm×233mm)兩種,3U系統(tǒng)只提供32位/64位的PCI系統(tǒng)總線,6U的系統(tǒng)除了提供32位/64位的PCI系統(tǒng)總線外,還通過連接器接口J3、J4、J5實(shí)現(xiàn)自定義總線,可用作高速數(shù)據(jù)通信或通用輸入/輸出線等,適用于數(shù)字化高速處理的模塊化設(shè)計(jì)應(yīng)用。 本文利用TMS320C6416T內(nèi)部集成的32位、33MHz PCI主/從接口,給出了6U的CPCI信號(hào)處理板卡設(shè)計(jì)方案,并對(duì)其軟件設(shè)計(jì)特別是DSP的二次引導(dǎo)程序做了說明。 硬件設(shè)計(jì) CPCI板卡有J1~J5五個(gè)連接器接口,其中只有J1是必須有的,為32位PCI信號(hào)接口。J2為64位擴(kuò)展PCI信號(hào)。對(duì)于主控板以外的CPCI板卡,J3、J4、J5可用作用戶自定義接口。本文所設(shè)計(jì)的CPCI板卡使用J1、J4、J5接口,主要由DSP、FPGA、SDRAM、FLASH等組成。板卡以TMS320C6416T為核心,通過高性能FPGA實(shí)現(xiàn)AD數(shù)據(jù)采集后的預(yù)處理,然后經(jīng)64位寬的EMIFA總線傳入 TMS320C6416T中進(jìn)行數(shù)字信號(hào)處理,處理數(shù)據(jù)可通過32位PCI總線、光收發(fā)器或CPCI自定義總線傳輸至外部設(shè)備。CPCI的J1接口為32 位、33M的PCI接口信號(hào),與TMS320C6416T的PCI外設(shè)連接。DSP通過EMIFA的CE0存儲(chǔ)空間連接4片SDRAM芯片 MT48LC32M16A2,擴(kuò)展成64位寬度的128MB存儲(chǔ)器,CE1、CE2空間連接FPGA,通過J4、J5擴(kuò)展。EMIFB的CE1空間通過 FLASH芯片S29LV016D擴(kuò)展2MB的FLASH,用于系統(tǒng)的自舉。系統(tǒng)框圖如圖1所示。 圖1 CPCI板卡框圖 處理板通過高速16位ADC芯片LTC2206實(shí)現(xiàn)模數(shù)轉(zhuǎn)換,然后將數(shù)據(jù)傳輸?shù)紽PGA進(jìn)行數(shù)據(jù)預(yù)處理,包括數(shù)字下變頻及緩存等,之后經(jīng)64位EMIFA 總線通過EDMA傳到DSP中進(jìn)行數(shù)字信號(hào)處理,最后通過CPCI總線傳輸?shù)街鳈C(jī)。板卡通過帶選擇器的時(shí)鐘分配器SY89464實(shí)現(xiàn)內(nèi)外時(shí)鐘的控制和單端時(shí)鐘到差分時(shí)鐘的轉(zhuǎn)換。FPGA的配置芯片采用EPC16,配置方式為PS,EPC和FPGA通過JTAG鏈實(shí)現(xiàn)編程。 TMS320C6416T通過SDRAM擴(kuò)展256MB存儲(chǔ)空間,SDRAM采用512Mb芯片MT48LC32M16A2,位寬為16位,通過4個(gè)此芯片擴(kuò)展為64位。 EMIFB的CE1空間通過FLASH擴(kuò)展BOOTROM空間,采用FLASH芯片S29AL016D實(shí)現(xiàn),S29AL016D有8位byte和16位word兩種方式,通過引腳byte#設(shè)置,這里使用8位數(shù)據(jù)格式。 PCI接口信號(hào)的連接如圖2所示,使能TMS320C6416T的PCI接口對(duì)應(yīng)PCI_en引腳置高。該接口符合PCI 2.2規(guī)范,為33M、32位的PCI主/從接口。 圖2 TMS320C6416T的PCI接口電路圖 上電后DSP自動(dòng)從4KB的EEPROM芯片93LC66B讀取配置信息。DSP與上位機(jī)可通過EDMA進(jìn)行數(shù)據(jù)傳輸。 這里,DSP的輸入時(shí)鐘采用50M晶振通過零延遲時(shí)鐘緩沖分配器CY2308輸出,DSP的EMIFA、EMIFB外接存儲(chǔ)器時(shí)鐘為100MHz,也通過晶體振蕩器連接CY2308給出。 DSP和FPGA的核電壓均為1.2V,I/O電壓為3.3V,1.2V通過CPCI接口的5V電壓經(jīng)開關(guān)電源控制芯片TPS54612實(shí)現(xiàn),3.3V經(jīng)LDO芯片MIC29300實(shí)現(xiàn)。電路如圖3所示。 圖3 電源電路圖 軟件設(shè)計(jì) 板卡的軟件設(shè)計(jì)包括DSP的Boot程序、上位機(jī)的驅(qū)動(dòng)程序及信號(hào)處理板需要實(shí)現(xiàn)的專門算法程序。這里重點(diǎn)介紹TMS320C6416的二次Bootloader程序設(shè)計(jì)。 TMS320C6416T的程序加載方式有HPI、ROM、Noboot、JTAG等幾種,通過上電時(shí)BEA[18:19]的值決定,板卡中可通過撥碼開關(guān)進(jìn)行設(shè)置。使用ROM加載可實(shí)現(xiàn)系統(tǒng)上電自動(dòng)加載,其加載過程是:DSP內(nèi)部Bootloader程序?qū)⒈4嬗谕獠縍OM(FLASH)中的前1K字節(jié)長(zhǎng)度的程序自動(dòng)搬到DSP內(nèi)部RAM 0地址處,然后從0地址開始執(zhí)行程序。由于應(yīng)用程序一般都大于1K字節(jié),所以必須用二次引導(dǎo)的方法。二次引導(dǎo)程序放在FLASH的前1K字節(jié)中,這樣 DSP自動(dòng)Boot完成后就從0地址開始執(zhí)行二次引導(dǎo)程序。當(dāng)所有的數(shù)據(jù)都搬運(yùn)完畢后,DSP跳轉(zhuǎn)到主程序的入口處,并開始執(zhí)行主程序。為了實(shí)現(xiàn)這一引導(dǎo)過程,首先需要在驗(yàn)證好的算法程序工程文件中加入二次Boot的搬移文件,并修改CMD文件,通過CCS編譯成out文件后,通過hex工具轉(zhuǎn)換成.hex文件,再轉(zhuǎn)變文件格式成bin二進(jìn)制數(shù)據(jù)文件格式,最后通過另外的FLASH燒寫工程文件寫入到FLASH中。 TMS320C6416T只支持8位的ROM加載。ROM中的程序存儲(chǔ)格式需要與芯片的大小端存儲(chǔ)模式一致。 搬移文件Boot.asm采用匯編語(yǔ)言實(shí)現(xiàn),實(shí)現(xiàn)1K代碼的搬移。 CMD文件中應(yīng)將Boot段分配為從地址0開始的1K空間,F(xiàn)LASH空間從0x64000000開始,長(zhǎng)度也為1K,即分配為: MEMORY { BOOT : origin = 0x00000000, len = 0x00000400 ISRAM : origin = 0x00000400, len = 0x000ffc00 ;DSP的內(nèi)部L2空間 FLASH : origin = 0x64000000, len = 0x00000400 } 利用CCS經(jīng)工程文件編譯生成.out文件后,再利用其自帶的Hex轉(zhuǎn)換工具h(yuǎn)ex6x.exe轉(zhuǎn)換成hex文件,轉(zhuǎn)換時(shí)需要首先編寫一個(gè)cmd命令文件, 說明需要轉(zhuǎn)換的out文件名、存儲(chǔ)器寬度、Flash起始地址和長(zhǎng)度、hex輸出文件名等。如cmd文件名為myHex_cmd,則調(diào)用格式為: hex6x.exe myHex_Cmd.cmd hex文件以行為單位。每行以字符 ‘:’ (0x3a)開頭,以回車和換行符(0x0d、0x0a)為結(jié)束。每行開始和結(jié)束之間的所有內(nèi)容都是以字符形式表現(xiàn)的。通過C程序?qū)ex文件轉(zhuǎn)換為 bin文件,在燒寫FLASH的工程中以.h頭文件保存定義為data數(shù)組。然后在CCS中通過FlashBurn的工程文件將data數(shù)據(jù)燒寫到 FLASH中,即可實(shí)現(xiàn)DSP的上電自舉。 FlashBurn工程文件主要實(shí)現(xiàn)S29AL016D的編程。S29AL016D的編程流程圖如圖4所示。 圖4 FLASH寫操作流程圖 按照S29AL016D的命令格式和程序流程,燒寫FLASH子程序如下。其中,*data為要寫入的數(shù)組,nByte為數(shù)據(jù)個(gè)數(shù)。 void BurnFlash(unsigned char *data, unsigned long nBytes) { unsigned short timeout; unsigned char c; while(nBytes--) { *(volatile char *)0x64000AAA = (char)0xaa; *(volatile char *)0x64000555= (char)0x55; *(volatile char *)0x64000AAA = (char)0xa0; *flashnext = *data; c = *data++; timeout = 0; do timeout += 1; while(*flashnext != c && timeout < (unsigned short)0xffff); flashnext++; } } 對(duì)于上位機(jī)驅(qū)動(dòng)程序,在Windows系統(tǒng)中,PCI設(shè)備需要專用的驅(qū)動(dòng)程序,系統(tǒng)上電后會(huì)自動(dòng)掃描PCI總線上的設(shè)備,本文通過WindRiver開發(fā)工具實(shí)現(xiàn)驅(qū)動(dòng)程序。設(shè)置好DSP的PCI寄存器DSPP,即可直接訪問DSP的預(yù)存取4M空間,設(shè)置DSP的寄存器RSTSRC的值,即可產(chǎn)生PCI中斷。 結(jié)語(yǔ) CPCI總線系統(tǒng)在當(dāng)前工控、通信領(lǐng)域獲得廣泛應(yīng)用,本文通過TMS320C6416T給出了CPCI信號(hào)處理板卡的具體設(shè)計(jì)方案,對(duì)DSP的二次引導(dǎo)程序的設(shè)計(jì)進(jìn)行了詳細(xì)說明,對(duì)CPCI板卡的設(shè)計(jì)具有很好的指導(dǎo)意義。 參考文獻(xiàn) 1. TMS320C6416T Fixed-point Digital Signal Processors. Texas Instruments Incorp.2004.3 2. StratixIIGX Device Handbook. Altera Corp.2007.8 3. 任麗香,馬淑芬,李方惠.TMS320C6000系列DSPs的原理與應(yīng)用[M].北京:電子工業(yè)出版社,2000 |