王厚磊 張友愛(ài) 于 奇
(中國(guó)船舶重工集團(tuán)公司第722研究所 武漢 430079)
在通信、雷達(dá)、聲納等電子系統(tǒng)中,對(duì)數(shù)字信號(hào)處理模塊的性能要求越來(lái)越高,傳統(tǒng)的方法是利用并行處理技術(shù),選用多片DSP構(gòu)成并行處理系統(tǒng),這種方法的缺點(diǎn)是對(duì)外部總線的依賴(lài)性太強(qiáng),易產(chǎn)生總線瓶頸,還有布板較復(fù)雜,功耗也比較大。選用多核DSP既可以提高數(shù)字信號(hào)處理的性能又能避免以上的缺點(diǎn)。
MSC8122TVT6400型DSP是飛思卡爾公司生產(chǎn)的一款四核數(shù)字信號(hào)處理器,該處理器能多核并行處理。運(yùn)算速度是同一代單核DSP的四倍,且有成本低、功耗小、性能高、外設(shè)集成度高,數(shù)據(jù)以及程序存儲(chǔ)量大的優(yōu)點(diǎn)。它采用內(nèi)核1.2V供電,外設(shè)3.3V供電,功耗只有2W,每個(gè)內(nèi)核主頻為400MHZ,4個(gè)內(nèi)核共有 1.6GHZ,可達(dá)6400MMACS每秒的運(yùn)算能力[1],是高速數(shù)據(jù)處理和大量數(shù)據(jù)處理時(shí)理想的選擇。
飛思卡爾公司的 MSC8122TVT6400四核DSP,利用的是Motorola和 Lucent共同開(kāi)發(fā)的StarCore 140內(nèi)核的擴(kuò)展核,每個(gè)StarCore140擴(kuò)展核由一個(gè)StarCore140核、224KB的內(nèi)部存儲(chǔ)器和擴(kuò)展的QBus系統(tǒng)組成。StarCore140內(nèi)核是第一個(gè)低功耗高性能具有特大指令字組(VLIW)結(jié)構(gòu)的16位定點(diǎn)DSP內(nèi)核。StarCore140核有四條16位數(shù)據(jù)通路,每一條有一個(gè)組合的ALU/MAC資料欄單元(BFU),每一個(gè)BFU包含一個(gè)40位柱式移位器,兩條32位地址總線和兩條64位數(shù)據(jù)總線,用來(lái)傳輸數(shù)據(jù)。128位程序總線能在一個(gè)周期內(nèi)檢索八條16位指令[2]。
圖1 MSC8122TVT6400的內(nèi)部結(jié)構(gòu)
如圖1所示,MSC8122TVT6400內(nèi)部集成了4個(gè)StarCore140擴(kuò)展核,提供1.43MB內(nèi)存(4×224KB M1及476KB M2)、一個(gè)高寬帶外部存儲(chǔ)器接口、1組豐富的高級(jí)外圍設(shè)備(包括10/100Mbit/s以太網(wǎng)控制器)和高吞吐量處理器。各個(gè)內(nèi)核由SQBus、MQBus和 LocalBus連接,MQBus共享公共內(nèi)存資源,SQBus主要是用來(lái)響應(yīng)外部中斷。SQBus和 MQbus都工作在 StarCore140內(nèi)核頻率,允許數(shù)據(jù)線進(jìn)行128bit讀操作和 64bit寫(xiě)操作。一個(gè)高效的仲裁器決定哪個(gè)StarCore140內(nèi)核使用MQbus和SQBus,通過(guò)一個(gè)像停車(chē)場(chǎng)一樣的機(jī)制,仲裁器決定最后獲勝者取得 MQbus和SQBus總線的使用權(quán),一直到另外一個(gè)StarCore140核開(kāi)始另外一次請(qǐng)求。LocalBus主要負(fù)責(zé)外部主機(jī)和各個(gè)外設(shè)接口與內(nèi)核的通信,此外各個(gè)內(nèi)核的M1存儲(chǔ)器也是通過(guò)通過(guò)LocalBus實(shí)現(xiàn)直接存儲(chǔ)器傳輸(DMA)的。
MSC8122 TVT6400有高性能(每秒64億次乘累加)和低功耗(功耗僅為2W)的特點(diǎn),可以減少系統(tǒng)的DSP數(shù)量和那些高成本高功耗的輔助ASIC和FPGA,同時(shí)低功耗和單芯片的設(shè)計(jì)有助于減少實(shí)際應(yīng)用系統(tǒng)體積及緩存散熱問(wèn)題。
根據(jù)數(shù)據(jù)終端處理機(jī)的需求,以MSC8122TVT6400為核心構(gòu)建數(shù)字信號(hào)處理最小系統(tǒng)板,系統(tǒng)電路圖可按以下幾個(gè)模塊設(shè)計(jì):復(fù)位電路;時(shí)鐘生成電路和400M主頻設(shè)計(jì);電源模塊設(shè)計(jì);存儲(chǔ)器模塊;數(shù)模/模數(shù)轉(zhuǎn)換模塊;JTAG仿真接口;以太網(wǎng)接口;串行口;系統(tǒng)框圖如圖2所示。
圖2 系統(tǒng)整體框圖
向DSP提供時(shí)鐘一般有兩種方式:一種是利用DSP內(nèi)部提供的晶體振蕩器電路,即在DSP的X1和X2管腳間引入一個(gè)晶體來(lái)啟動(dòng)內(nèi)部振蕩器;另一種是外部時(shí)鐘源直接接入X2/CLKIN引腳。本設(shè)計(jì)采用了外接時(shí)鐘源的方法。
外接一個(gè)25M時(shí)鐘源為DSP提供時(shí)鐘。時(shí)鐘配置模式由MODCK[1-5]決定;設(shè)計(jì)中這樣配置:MODCK[1-2]=11,MODCK[3-5]=000。這時(shí)五個(gè)因數(shù) PLLRDF=1,PLLFDF=2,PLLODF=2,PLLTP=7,BUSDF=4;這樣CLKIN=25M,內(nèi)核時(shí)鐘400MHz,總線時(shí)鐘100MHz。
內(nèi)核時(shí)鐘與總線時(shí)鐘,兩個(gè)時(shí)鐘同步且相位相同[3]。其中內(nèi)核時(shí)鐘為Starcore140擴(kuò)展核提供時(shí)鐘,包括SC140內(nèi)核;M1、M2內(nèi)存 ;PIC;LIC;指令高速緩存;寫(xiě)緩存。總線時(shí)鐘為外部接口提供時(shí)鐘,包括系統(tǒng)接口單元(SIU);直接存儲(chǔ)器傳遞(DMA);直接從接口(DSI);時(shí)分多址接口;定時(shí)器;串行口;GIC;以太網(wǎng)口。
MSC8122TVT6400復(fù)位管腳有三個(gè)上電復(fù)位(PORESET),硬件復(fù)位(H RESET),軟件復(fù)位(SRESET)。在電路設(shè)計(jì)中對(duì)芯片的上電復(fù)位用看門(mén)狗電路復(fù)位,硬件復(fù)位作為輸出,復(fù)位JTAG口。復(fù)位采用上電復(fù)位電路,由電源器件給出復(fù)位信號(hào)一旦電源上電系統(tǒng)便處于復(fù)位狀態(tài),為使DSP初始化正確,應(yīng)保證 MSC8122TVT6400的VDD和VDDH穩(wěn)定16個(gè)時(shí)鐘輸入周期之后再使用上電復(fù)位管腳。
復(fù)位電路如圖3所示,DSP的GPIO2向WDI輸入交替的01電平,當(dāng)程序出現(xiàn)跑飛,如果大于1.6s沒(méi)有電平輸入,WDO就輸出一個(gè)200ms的低電平復(fù)位信號(hào),把它和手動(dòng)開(kāi)關(guān)經(jīng)相與后輸出到手動(dòng)復(fù)位管腳,作用是當(dāng)有手動(dòng)按下開(kāi)關(guān)或是WDO有復(fù)位電平輸出,都會(huì)使MAX706SCSA的復(fù)位管腳輸出復(fù)位信號(hào),使DSP芯片復(fù)位。
圖3 看門(mén)狗復(fù)位模塊
圖4 電源模塊設(shè)計(jì)
DSP芯片MSC8122TVT6400內(nèi)核電壓3.3V,I/O電壓1.2V,本設(shè)計(jì)采用5V電壓源供電,用電壓轉(zhuǎn)換芯片LM20145進(jìn)行電壓轉(zhuǎn)換。它能連續(xù)輸出電流高達(dá)5A,是可調(diào)頻同步降壓穩(wěn)壓電壓轉(zhuǎn)換芯片,采用恒流模式控制電路,對(duì)各種輸出電容能穩(wěn)定工作,器件的輸入電壓為2.95V到5.5V,內(nèi)部有過(guò)壓保護(hù)(OUP)和過(guò)流保護(hù)(OCP)。
電源模塊設(shè)計(jì)連接圖如圖 4所示,下面的LM20145芯片的PGOOD輸出連到上面一片LM20145的使能端口,內(nèi)核上電后下面LM20145的PGOOD管腳輸出一個(gè)低電平信號(hào),輸入到上面LM20145的使能端,上面的LM20145開(kāi)始工作輸出外圍電路需要的3.3V電壓。這樣能保證內(nèi)核先上電,外圍后上電,進(jìn)而使DSP芯片正常工作。
本設(shè)計(jì)的總線時(shí)鐘頻率是100MHZ,外部存儲(chǔ)器的存取速率應(yīng)略大于總線的時(shí)鐘頻率,才能夠同步內(nèi)核的工作[4]。設(shè)計(jì)選用 HY57V561620T-H作為DSP的外部存儲(chǔ)器,這片SDRAM的動(dòng)態(tài)存儲(chǔ)空間 32Mb×16Bit,正常的時(shí)鐘頻率是133MHZ,滿(mǎn)足總線時(shí)鐘的要求。
DSP的自舉方式采用外部 flash自舉,選用16MB的flash存儲(chǔ) Bootload程序,把程序通過(guò)JTAG口寫(xiě)入flash,當(dāng)電路板再次上電是DSP通過(guò)flash自動(dòng)配置DSP的內(nèi)部寄存器實(shí)現(xiàn)自舉。選用flash芯片S29GL016A,存儲(chǔ)空間16MB。
串口的發(fā)送和接收管腳分別是 DSP的GPIO27-28,該管腳通過(guò)IPBUS與外部主機(jī)、四個(gè)內(nèi)核相連,外部主機(jī)通過(guò)LOCAL BUS與IPBUS相連,而四個(gè)內(nèi)核通過(guò)SQbus連到IPBUS上。串口配置由五個(gè)寄存器完成,所有的串口配置寄存器要配置進(jìn)IPBUS的地址空間[5]。
因?yàn)镸SC8122TVT6400內(nèi)部集成有并串轉(zhuǎn)換的電路,所以在外部只需要接一個(gè)電平轉(zhuǎn)換芯片,將MSC8122TVT6400中SCI接口的 T TL電平轉(zhuǎn)換成RS-232電平,即進(jìn)行串口電平轉(zhuǎn)換,然后用DB9連接器外接就行了。本設(shè)計(jì)采用了MAX3232芯片,功耗低,集成度高+3.3V供電具有兩個(gè)接收和發(fā)送通道,在本設(shè)計(jì)中只用了一個(gè)通道,剩余的那個(gè)通道用于擴(kuò)展功能備用,V+與V-,C+與 C-用0.1uF的電容相連,這樣利用MAX3232把DSP外圍電平轉(zhuǎn)換成 RS-232電平[6]。
1)以太網(wǎng)口設(shè)計(jì),MSC8122TVT6400芯片本身支持三種模式MII,RMII,SMII.能夠支持多種物理指令。本設(shè)計(jì)選用的是 MII模式,用LXT971A實(shí)現(xiàn)的物理層轉(zhuǎn)換,10M/100M自適應(yīng)的以太網(wǎng)數(shù)據(jù)傳輸[7]。
2)系統(tǒng)設(shè)計(jì)了外部模擬信號(hào)輸入端口,可以對(duì)模擬信號(hào)進(jìn)行數(shù)模轉(zhuǎn)換然后再對(duì)生成的數(shù)字信號(hào)進(jìn)行數(shù)字信號(hào)處理,選用 TI公司的TLV320AIC10雙向轉(zhuǎn)換芯片,設(shè)置合適的采樣頻率,由 Fs=MCLK/(256*N),可設(shè)置 N=2,MCLK=4.096MHz,可得采樣頻率為32kHz。從在這里輸入音頻信號(hào),DSP可對(duì)其進(jìn)行調(diào)制解調(diào)等算法運(yùn)算。
軟件開(kāi)發(fā)平臺(tái)采用Codewarrior,VC6.0用于單幀調(diào)試時(shí)對(duì)照使用,Codewarrior是由Metrowerks公司開(kāi)發(fā)的適用于飛思卡爾DSP和MCU產(chǎn)品開(kāi)發(fā)的交叉編譯器。本課題采用的是CodeWarrior forStarCore,即專(zhuān)門(mén)用于采用StarCore核的DSP產(chǎn)品開(kāi)發(fā)配套軟件集成開(kāi)發(fā)環(huán)境[8]。CodeWarrior提供一套靈活的及高效的軟件開(kāi)發(fā)組件,包括工程管理器、編輯器、搜索引擎、源代碼瀏覽器、軟件編譯和連接器以及調(diào)試器等。CodeWarrior界面如圖5所示。
圖5 CodeWarrior界面
系統(tǒng)平臺(tái)搭設(shè)完成后對(duì)各個(gè)模塊進(jìn)行了調(diào)試,經(jīng)多次努力終使各個(gè)模塊均能正常工作,下面是串口和網(wǎng)口的調(diào)試過(guò)程。
串口配置由五個(gè)寄存器完成,所有的串口配置寄存器要配置進(jìn)IPBUS的地址空間,SCIBR決定波特率;SCICR決定傳輸長(zhǎng)度,傳輸中斷,傳輸模式,奇偶校驗(yàn)等;SCISR是串口狀態(tài)寄存器,內(nèi)核通過(guò)查詢(xún)狀態(tài)寄存器的狀態(tài)位來(lái)控制發(fā)送和接收過(guò)程;SCIDR數(shù)據(jù)寄存器,主要是暫存要傳輸?shù)臄?shù)據(jù),SCIDDR是串口數(shù)據(jù)方向寄存器。
根據(jù)需要采取Run Mode傳輸模式,由波特率計(jì)算公式UART band rate=System clock/(16×SCIBR[12-0])得波特率11520bps,不設(shè)奇偶校驗(yàn)位。
串口配置程序如下:
;SCI Baud-rate Register
SCIBR equ 0x1000
;SCI control register
SCISR equ 0x1008
;SCI Status register
SCISR equ 0x1010
;SCI Data Register
SCIDR equ 0x1018
;SCI Data Direction Register
SCIDDR equ 0x1028
在PC端運(yùn)行串口調(diào)試助手,該軟件可以在網(wǎng)上免費(fèi)獲得,軟件運(yùn)行后根據(jù)實(shí)際運(yùn)行環(huán)境進(jìn)行配置,經(jīng)測(cè)試,模塊轉(zhuǎn)發(fā)數(shù)據(jù)正常。
網(wǎng)口的調(diào)試,直接支持IEEE Std.802.3標(biāo)準(zhǔn)協(xié)議的以太網(wǎng)接口是MSC8122TVT6400重要特點(diǎn),需配置的寄存器有以下幾類(lèi):通用控制及狀態(tài)寄存器、FIFO控制及狀態(tài)寄存器、發(fā)送控制及狀態(tài)寄存器、接收控制及狀態(tài)寄存器、MAC寄存器、MII配置寄存器、MIIGSK寄存器、RMON計(jì)數(shù)器、RMON寄存器、無(wú)用信號(hào)功能寄存器、模式匹配寄存器、數(shù)據(jù)結(jié)構(gòu)體。
這里我們選擇MII模式,傳輸速度為10M/100M自適應(yīng),設(shè)計(jì)中只需對(duì)三個(gè)寄存器賦值,
MACCFG2=x0003afc,導(dǎo)入長(zhǎng)度設(shè)為7,無(wú)長(zhǎng)度檢測(cè),無(wú)padding和CRC狀態(tài),MAC CRC激活,半雙工方模式。
DMAMR=x000sfc8,發(fā)送數(shù)據(jù)的輪流檢測(cè)頻率為512個(gè)時(shí)鐘,亂序緩沖描述輪流檢測(cè)激活,報(bào)警模式優(yōu)先級(jí)設(shè)為高級(jí),報(bào)警模式的緩沖描述符取來(lái)優(yōu)先級(jí)設(shè)為中級(jí)。MIIMCFG=x00003ae0;MII模式激活,生成導(dǎo)入位初始化,總線時(shí)鐘被8分頻。
經(jīng)測(cè)試網(wǎng)口模塊收發(fā)數(shù)據(jù)正常。
本文設(shè)計(jì)的 MSC8122TVT6400最小系統(tǒng)經(jīng)過(guò)實(shí)驗(yàn),表明具備了數(shù)據(jù)采集、與PC通信及實(shí)時(shí)數(shù)據(jù)處理等功能,具有一定的實(shí)用價(jià)值。此外根據(jù)不同的信號(hào)處理需求,還可對(duì)該最小系統(tǒng)的功能開(kāi)發(fā)驗(yàn)證實(shí)驗(yàn)進(jìn)一步完善:如增加CPCI總線功能及數(shù)字信號(hào)處理功能等,對(duì)于通用I/O(如鍵盤(pán)、液晶)及擴(kuò)展外存的實(shí)現(xiàn)進(jìn)一步深入研究,可將該最小系統(tǒng)功能升級(jí)成為通用DSP系統(tǒng),從而可更廣泛地滿(mǎn)足各類(lèi)復(fù)雜工程需求。
[1]Freescale Semiconductor.MSC8122 Data Sheet.Rev.16,12/2008
[2]Freescale Semiconductor.MSC8122 Reference Manual.Rev 3,2005,4
[3]Freescale Semiconductor.MSC8122/26ADS Reference Manual,2005
[4]張雄偉,陳亮,徐光輝.DSP芯片的原理與開(kāi)發(fā)應(yīng)用[M].北京:電子工業(yè)出版社,2003
[5]李朝青.PC機(jī)與單片機(jī) &DSP數(shù)據(jù)通信技術(shù)選編[M].北京:北京航空航天大學(xué)出版社,2003
[6]趙紅怡.DSP技術(shù)與應(yīng)用實(shí)例[M].北京:電子工業(yè)出版社,2006
[7]范壽康,康廣荃,尹磊.Freescale 16位DSP原理與開(kāi)發(fā)技巧[M].北京:機(jī)械工業(yè)出版社,2006:106~145
[8]Code Warrior Help[Z].Mtorola Inc,2002:106~135