許亞星,徐 楠,門 茜,賈雪航
(中國航空計(jì)算技術(shù)研究所,陜西 西安710065)
PowerPC芯片以其優(yōu)異的性能在工業(yè)控制領(lǐng)域逐漸得到廣泛的應(yīng)用,DSP芯片具有良好的運(yùn)算性能,配合PowerPC芯片,可以大大提升系統(tǒng)的整體性能。PowerPC作為主控芯片、DSP作為對(duì)外接口擴(kuò)展芯片時(shí),兩芯片間的數(shù)據(jù)交換是影響整個(gè)系統(tǒng)性能的瓶頸。本文在兩芯片間原有的RS422總線數(shù)據(jù)交換外,增加設(shè)計(jì)了SPI總線,用來交換429數(shù)據(jù),降低了422的總線負(fù)載,同時(shí)提高了系統(tǒng)數(shù)據(jù)交換的總量和速率。
PowerPC芯片作為主控芯片,負(fù)責(zé)數(shù)據(jù)處理和控制率實(shí)現(xiàn),芯片上行通過1394總線進(jìn)行數(shù)據(jù)上傳和指令接收,下行通過DSP芯片對(duì)外進(jìn)行422總線、429總線、離散量、模擬量等的數(shù)據(jù)采集和總線通信。PowerPC芯片和DSP芯片之間通過422總線和SPI總線進(jìn)行數(shù)據(jù)交換。系統(tǒng)架構(gòu)如圖1所示。
圖1 系統(tǒng)架構(gòu)
圖1中,DSP芯片采集離散量、模擬量、422數(shù)據(jù),經(jīng)過處理后通過422總線發(fā)送給PowerPC芯片,PowerPC芯片經(jīng)過邏輯處理后,將處理結(jié)果通過1394總線上傳顯示。由于所有數(shù)據(jù)都通過422交換時(shí),422總線負(fù)載過大,數(shù)據(jù)量受到限制,因此429總線數(shù)據(jù)單獨(dú)通過SPI總線進(jìn)行交換,DSP芯片接收到429數(shù)據(jù)后,通過SPI總線傳輸給PowerPC,同時(shí)PowerPC將需要發(fā)送的429數(shù)據(jù)通過SPI總線傳輸給DSP,由DSP實(shí)現(xiàn)對(duì)外發(fā)送。
SPI總線由摩托羅拉公司提出,是一種全雙工同步串行通信總線,通信速率可以由時(shí)鐘信號(hào)進(jìn)行配置,通信雙方采用主從方式進(jìn)行通信。SPI總線由四根信號(hào)線組成,分別為:CS-片選信號(hào)、CLK-時(shí)鐘信號(hào)、MOSI-主輸出從輸入信號(hào)、MISO-主輸入從輸出信號(hào)[1]。SPI總線支持一主多從通信,通信架構(gòu)如圖2所示。
圖2 SPI主從通信架構(gòu)
SPI總線的MOSI和MISO兩個(gè)數(shù)據(jù)寄存器,由雙向移位寄存器實(shí)現(xiàn)。即當(dāng)產(chǎn)生CS和CLK信號(hào)時(shí),在一個(gè)時(shí)鐘周期內(nèi),會(huì)同時(shí)完成主設(shè)備向從設(shè)備發(fā)送一位數(shù)據(jù)和從設(shè)備向主設(shè)備發(fā)送一位數(shù)據(jù)[2],主從設(shè)備通過移位寄存器交換數(shù)據(jù)的形式如圖3所示。
圖3 基于移位寄存器的SPI數(shù)據(jù)交換
本文所研究系統(tǒng)的SPI總線是為了減小RS422數(shù)據(jù)的總線負(fù)載而增加設(shè)計(jì),主要傳輸?shù)氖?29總線數(shù)據(jù),其中PowerPC是SPI傳輸?shù)闹髟O(shè)備,DSP是從設(shè)備。分別在PowerPC和DSP軟件中創(chuàng)建若干結(jié)構(gòu)體數(shù)組,用來存放各自需要接收和發(fā)送的429數(shù)據(jù)。由于SPI總線是內(nèi)存交換的同步傳輸方式,主從方創(chuàng)建的接收發(fā)送結(jié)構(gòu)體大小應(yīng)相同,有效數(shù)據(jù)長度如果小于結(jié)構(gòu)體長度,可以用備份字補(bǔ)齊。
PowerPC作為主設(shè)備,運(yùn)行周期任務(wù):進(jìn)行SPI數(shù)據(jù)的收發(fā);DSP作為從設(shè)備,運(yùn)行周期任務(wù):進(jìn)行429數(shù)據(jù)的收發(fā),同時(shí)以中斷方式配合響應(yīng)PowerPC進(jìn)行SPI數(shù)據(jù)的收發(fā)。為了確保SPI數(shù)據(jù)傳輸?shù)恼_性,對(duì)傳輸?shù)臄?shù)據(jù)包設(shè)置包頭和校驗(yàn)和,接收數(shù)據(jù)后,需要進(jìn)行解包操作,只有當(dāng)解包正確時(shí),才將接收數(shù)據(jù)包中的數(shù)據(jù)段讀出[3]。
進(jìn)行數(shù)據(jù)收發(fā)時(shí),PowerPC和DSP首先將需要發(fā)送的429數(shù)據(jù)放進(jìn)發(fā)送緩沖區(qū)中,然后進(jìn)行SPI的數(shù)據(jù)收發(fā)。因?yàn)镾PI是內(nèi)存交換的同步傳輸方式,進(jìn)行數(shù)據(jù)發(fā)送的同時(shí)進(jìn)行了數(shù)據(jù)接收,PowerPC和DSP在SPI傳輸?shù)臅r(shí)候?qū)⒔邮盏臄?shù)據(jù)首先放入接收環(huán)形緩沖區(qū)中,然后進(jìn)行解包操作。
進(jìn)行解包時(shí),首先在環(huán)形緩沖區(qū)中尋找包頭,找到包頭后按照固定的長度去讀校驗(yàn)和。當(dāng)接收方算出的校驗(yàn)和與去讀的校驗(yàn)和一致時(shí),將中間的數(shù)據(jù)段讀出放入429接收數(shù)組區(qū)。
DSP以中斷方式接收SPI數(shù)據(jù)時(shí),為了確保數(shù)據(jù)傳輸?shù)耐叫?,在接收中斷里?yīng)進(jìn)行盡量簡單的操作,只進(jìn)行SPI數(shù)據(jù)的接收和發(fā)送操作,而填包、解包、取數(shù)等操作則放在周期任務(wù)中進(jìn)行[4]。當(dāng)有多路429數(shù)據(jù)需要交換時(shí),在PowerPC主任務(wù)周期內(nèi),以1 ms為單位進(jìn)行傳輸,即每1 ms傳輸一路429數(shù)據(jù),在一個(gè)任務(wù)周期內(nèi),可以將多路429數(shù)據(jù)傳輸交換完成。進(jìn)行數(shù)據(jù)交換時(shí),PowerPC和DSP的軟件設(shè)計(jì)分別如圖4和圖5所示。
圖4 PowerPC軟件流程 圖5 DSP軟件流程
按照如上設(shè)計(jì)進(jìn)行硬件和軟件實(shí)現(xiàn)后,經(jīng)過試驗(yàn),在PowerPC端能夠接收到DSP發(fā)送的多路429數(shù)據(jù),同時(shí)在DSP端也能夠接收到PowerPC發(fā)送的429數(shù)據(jù)。
本文通過設(shè)計(jì)一種SPI數(shù)據(jù)交換方法,實(shí)現(xiàn)了兩芯片間的429數(shù)據(jù)傳輸交換,減小了422總線負(fù)載,提高了系統(tǒng)數(shù)據(jù)交換速率,進(jìn)一步提高了系統(tǒng)性能。