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