引言
CPCI規(guī)范是由PICMG制定的一種開放工業(yè)計算機標(biāo)準(zhǔn),用于工業(yè)和嵌入式應(yīng)用。CPCI系統(tǒng)背板和CPCI板卡采用標(biāo)準(zhǔn)的2mm高密度氣密性針孔連接器,提高了系統(tǒng)可靠性。CPCI可采用IEEE 1101.11后端輸出方式,使系統(tǒng)維護更加便捷。
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實現(xiàn)自定義總線,可用作高速數(shù)據(jù)通信或通用輸入/輸出線等,適用于數(shù)字化高速處理的模塊化設(shè)計應(yīng)用。
本文利用TMS320C6416T內(nèi)部集成的32位、33MHz PCI主/從接口,給出了6U的CPCI信號處理板卡設(shè)計方案,并對其軟件設(shè)計特別是DSP的二次引導(dǎo)程序做了說明。
硬件設(shè)計
CPCI板卡有J1~J5五個連接器接口,其中只有J1是必須有的,為32位PCI信號接口。J2為64位擴展PCI信號。對于主控板以外的CPCI板卡,J3、J4、J5可用作用戶自定義接口。本文所設(shè)計的CPCI板卡使用J1、J4、J5接口,主要由DSP、FPGA、SDRAM、FLASH等組成。板卡以TMS320C6416T為核心,通過高性能FPGA實現(xiàn)AD數(shù)據(jù)采集后的預(yù)處理,然后經(jīng)64位寬的EMIFA總線傳入TMS320C6416T中進行數(shù)字信號處理,處理數(shù)據(jù)可通過32位PCI總線、光收發(fā)器或CPCI自定義總線傳輸至外部設(shè)備。CPCI的J1接口為32位、33M的PCI接口信號,與TMS320C6416T的PCI外設(shè)連接。DSP通過EMIFA的CE0存儲空間連接4片SDRAM芯片MT48LC32M16A2,擴展成64位寬度的128MB存儲器,CE1、CE2空間連接FPGA,通過J4、J5擴展。EMIFB的CE1空間通過FLASH芯片S29LV016D擴展2MB的FLASH,用于系統(tǒng)的自舉。系統(tǒng)框圖如圖1所示。
?
圖1 CPCI板卡框圖
處理板通過高速16位ADC芯片LTC2206實現(xiàn)模數(shù)轉(zhuǎn)換,然后將數(shù)據(jù)傳輸?shù)紽PGA進行數(shù)據(jù)預(yù)處理,包括數(shù)字下變頻及緩存等,之后經(jīng)64位EMIFA總線通過EDMA傳到DSP中進行數(shù)字信號處理,最后通過CPCI總線傳輸?shù)街鳈C。板卡通過帶選擇器的時鐘分配器SY89464實現(xiàn)內(nèi)外時鐘的控制和單端時鐘到差分時鐘的轉(zhuǎn)換。FPGA的配置芯片采用EPC16,配置方式為PS,EPC和FPGA通過JTAG鏈實現(xiàn)編程。
TMS320C6416T通過SDRAM擴展256MB存儲空間,SDRAM采用512Mb芯片MT48LC32M16A2,位寬為16位,通過4個此芯片擴展為64位。
EMIFB的CE1空間通過FLASH擴展BOOTROM空間,采用FLASH芯片S29AL016D實現(xiàn),S29AL016D有8位byte和16位word兩種方式,通過引腳byte#設(shè)置,這里使用8位數(shù)據(jù)格式。
PCI接口信號的連接如圖2所示,使能TMS320C6416T的PCI接口對應(yīng)PCI_en引腳置高。該接口符合PCI 2.2規(guī)范,為33M、32位的PCI主/從接口。
?
圖2 TMS320C6416T的PCI接口電路圖
上電后DSP自動從4KB的EEPROM芯片93LC66B讀取配置信息。DSP與上位機可通過EDMA進行數(shù)據(jù)傳輸。
這里,DSP的輸入時鐘采用50M晶振通過零延遲時鐘緩沖分配器CY2308輸出,DSP的EMIFA、EMIFB外接存儲器時鐘為100MHz,也通過晶體振蕩器連接CY2308給出。
DSP和FPGA的核電壓均為1.2V,I/O電壓為3.3V,1.2V通過CPCI接口的5V電壓經(jīng)開關(guān)電源控制芯片TPS54612實現(xiàn),3.3V經(jīng)LDO芯片MIC29300實現(xiàn)。電路如圖3所示。
?
圖3 電源電路圖
軟件設(shè)計
板卡的軟件設(shè)計包括DSP的Boot程序、上位機的驅(qū)動程序及信號處理板需要實現(xiàn)的專門算法程序。這里重點介紹TMS320C6416的二次Bootloader程序設(shè)計。
TMS320C6416T的程序加載方式有HPI、ROM、Noboot、JTAG等幾種,通過上電時BEA[18:19]的值決定,板卡中可通過撥碼開關(guān)進行設(shè)置。使用ROM加載可實現(xiàn)系統(tǒng)上電自動加載,其加載過程是:DSP內(nèi)部Bootloader程序?qū)⒈4嬗谕獠縍OM(FLASH)中的前1K字節(jié)長度的程序自動搬到DSP內(nèi)部RAM 0地址處,然后從0地址開始執(zhí)行程序。由于應(yīng)用程序一般都大于1K字節(jié),所以必須用二次引導(dǎo)的方法。二次引導(dǎo)程序放在FLASH的前1K字節(jié)中,這樣DSP自動Boot完成后就從0地址開始執(zhí)行二次引導(dǎo)程序。當(dāng)所有的數(shù)據(jù)都搬運完畢后,DSP跳轉(zhuǎn)到主程序的入口處,并開始執(zhí)行主程序。為了實現(xiàn)這一引導(dǎo)過程,首先需要在驗證好的算法程序工程文件中加入二次Boot的搬移文件,并修改CMD文件,通過CCS編譯成out文件后,通過hex工具轉(zhuǎn)換成.hex文件,再轉(zhuǎn)變文件格式成bin二進制數(shù)據(jù)文件格式,最后通過另外的FLASH燒寫工程文件寫入到FLASH中。
TMS320C6416T只支持8位的ROM加載。ROM中的程序存儲格式需要與芯片的大小端存儲模式一致。
搬移文件Boot.asm采用匯編語言實現(xiàn),實現(xiàn)1K代碼的搬移。
CMD文件中應(yīng)將Boot段分配為從地址0開始的1K空間,F(xiàn)LASH空間從0x64000000開始,長度也為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)換工具hex6x.exe轉(zhuǎn)換成hex文件,轉(zhuǎn)換時需要首先編寫一個cmd命令文件, 說明需要轉(zhuǎn)換的out文件名、存儲器寬度、Flash起始地址和長度、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中,即可實現(xiàn)DSP的上電自舉。
FlashBurn工程文件主要實現(xiàn)S29AL016D的編程。S29AL016D的編程流程圖如圖4所示。
?
圖4 FLASH寫操作流程圖
按照S29AL016D的命令格式和程序流程,燒寫FLASH子程序如下。其中,*data為要寫入的數(shù)組,nByte為數(shù)據(jù)個數(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++;
}
}
對于上位機驅(qū)動程序,在Windows系統(tǒng)中,PCI設(shè)備需要專用的驅(qū)動程序,系統(tǒng)上電后會自動掃描PCI總線上的設(shè)備,本文通過WindRiver開發(fā)工具實現(xiàn)驅(qū)動程序。設(shè)置好DSP的PCI寄存器DSPP,即可直接訪問DSP的預(yù)存取4M空間,設(shè)置DSP的寄存器RSTSRC的值,即可產(chǎn)生PCI中斷。
結(jié)語
CPCI總線系統(tǒng)在當(dāng)前工控、通信領(lǐng)域獲得廣泛應(yīng)用,本文通過TMS320C6416T給出了CPCI信號處理板卡的具體設(shè)計方案,對DSP的二次引導(dǎo)程序的設(shè)計進行了詳細(xì)說明,對CPCI板卡的設(shè)計具有很好的指導(dǎo)意義。
評論
查看更多