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