串行外圍設(shè)備接口SPI(serial peripheralinterface)總線技術(shù)是MOTOROLA公司推出的一種微處理器、微控制器及其外設(shè)間的一種全/半雙工同步串行數(shù)據(jù)接口標(biāo)準(zhǔn),具有連接線少、傳輸效率高等特點(diǎn),因其硬件功能很強(qiáng),與SPI有關(guān)的軟件就相當(dāng)簡(jiǎn)單,使CPU有更多的時(shí)間處理其他事務(wù)。
SPI接口一般采用4條連接線:串行時(shí)鐘線(SCK)、主機(jī)輸出/從機(jī)輸入數(shù)據(jù)線(MOSI)、主機(jī)輸入/從機(jī)輸出數(shù)據(jù)線(MISO)和低電平使能的從機(jī)選擇線(SS),有的還帶有中斷信號(hào)線(INT),半雙工或單向模式則不需要主機(jī)輸出/從機(jī)輸入數(shù)據(jù)線(MOSI)。為了在減少引腳的基礎(chǔ)上完成主從機(jī)的雙向通訊,本文采用半雙工機(jī)制實(shí)現(xiàn)了一種3線制雙向SPI總線模塊,即通過(guò)使能信號(hào)實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)姆较蚩刂?,因此將主機(jī)輸出/從機(jī)輸入(MOSI)線和主機(jī)輸入/從機(jī)輸出線(MISO)線合并為一條雙向信號(hào)線。該模塊是某射頻芯片中的接口模塊,其作用是實(shí)現(xiàn)基帶芯片對(duì)射頻芯片的控制以及數(shù)據(jù)交換,而且為了便于和射頻電路集成,該模塊最終以硬IP形式實(shí)現(xiàn)。
1 SPI總線協(xié)議
射頻芯片的SPI接口具有兩個(gè)主要特征:Slave工作模式和半雙工方式通訊。
SPI接口信號(hào)描述如表1。
接口時(shí)序要求如下:
1)輸出時(shí)序
當(dāng)SEN為高電平時(shí),SPI接口處于輸出狀態(tài)。每次數(shù)據(jù)傳輸開(kāi)始于SCK信號(hào)的上升沿。數(shù)據(jù)傳輸過(guò)程中,數(shù)據(jù)由SCK信號(hào)控制,并遵循下列規(guī)則:數(shù)據(jù)傳輸時(shí),低位在前,高位在后;每個(gè)輸出數(shù)據(jù)位在SCK下降沿采樣;當(dāng)本幀數(shù)據(jù)輸出達(dá)到24 bit時(shí),結(jié)束數(shù)據(jù)輸出;當(dāng)本幀數(shù)據(jù)輸出超過(guò)24 bit時(shí),則多余位數(shù)全為高電平。
2)輸入時(shí)序
當(dāng)SEN為低電平時(shí),SPI接口處于輸入狀態(tài)。每次數(shù)據(jù)傳輸開(kāi)始于SEN信號(hào)的下降沿,結(jié)束于其上升沿。數(shù)據(jù)傳輸過(guò)程中命令和數(shù)據(jù)有SCK和SEN信號(hào)控制,并遵循下列規(guī)則:數(shù)據(jù)傳輸時(shí),低位在前,高位在后;每個(gè)輸入數(shù)據(jù)在SCK下降沿移入MOSI;當(dāng)本幀數(shù)據(jù)輸入為24 bit時(shí),當(dāng)SEN轉(zhuǎn)為高電平時(shí),將已輸入的24 bit數(shù)據(jù)寫入RF IC內(nèi)部寄存器;當(dāng)本幀數(shù)據(jù)輸入不足24 bit或多于24 bit時(shí),放棄本幀輸入,等待下一幀。
射頻SPI接口的最大特點(diǎn)就是采用半雙工通訊機(jī)制,串行數(shù)據(jù)的輸入/輸出共用一條數(shù)據(jù)線,因此SPI接口數(shù)據(jù)通路的設(shè)計(jì)和普通的4線制SPI接口完全不同。
2 實(shí)現(xiàn)方案
2.1 總體結(jié)構(gòu)
SPI接口電路主要由讀/寫控制器、串行寄存器組、輸出寄存器組和內(nèi)部定時(shí)器四部分構(gòu)成,如圖1所示。
在SPI接口模塊中,數(shù)據(jù)交換的核心是串行寄存器組,讀、寫控制器根據(jù)外部方向選擇信號(hào)SEN交替控制串行寄存器組的輸人和輸出。
2.2 串行寄存器組
串行寄存器的作用是接收射頻芯片內(nèi)部狀態(tài)信息并轉(zhuǎn)換成24 bit串行數(shù)據(jù)輸出,以及接收外部串行控制字輸入并轉(zhuǎn)換成30 bit并行數(shù)據(jù)輸入射頻芯片,其基本結(jié)構(gòu)如圖2所示。串行寄存器組是半雙工方式SPI接口設(shè)計(jì)的核心,輸入和輸出數(shù)據(jù)共享此數(shù)據(jù)通路,必須保證數(shù)據(jù)傳輸方向的正確切換。本文采用串行寄存器鏈+輸入選擇器方式實(shí)現(xiàn)輸入和輸出數(shù)據(jù)間的切換。
2.3 讀控制器
讀控制器的作用是在SEN為高電平的周期內(nèi),控制串行寄存器組在第一個(gè)SCK上升沿到來(lái)時(shí)接收指定的24 bit射頻芯片內(nèi)部信號(hào),并將最低位串行輸出,然后在剩下的23個(gè)時(shí)鐘周期內(nèi)將余下的23 bit數(shù)據(jù)串行輸出,讀控制器結(jié)構(gòu)如圖3所示。
2.4 寫入寄存器組
寫入寄存器的作用是在SEN信號(hào)的上升沿接收串行寄存器組的輸出,并將結(jié)果寫入射頻芯片的內(nèi)部模塊。其中射頻芯片比較特殊的要求是根據(jù)寫入控制字第7位選擇將串行輸入數(shù)據(jù)的第0~6 bit數(shù)據(jù)寫入兩個(gè)不同的控制寄存器中的一個(gè),這樣,寫入寄存器組的輸出位數(shù)就變成了30 bit,輸入為23 bit。輸出寄存器的結(jié)構(gòu)如圖4所示。
2.5 寫控制器
寫控制器的作用是在SEN信號(hào)的低電平周期內(nèi),判斷寫入數(shù)據(jù)是否恰好滿足24 bit以使能輸出寄存器組,另外根據(jù)寫入數(shù)據(jù)的第8位控制低7位數(shù)據(jù)的寫入方向(寄存器A或寄存器B)。寫控制器的結(jié)構(gòu)如圖5所示。
3 實(shí)現(xiàn)結(jié)果
圖6是采用Verilos實(shí)現(xiàn)的SPI接口的部分功能仿真波形,測(cè)試激勵(lì)首先將SPI接口置于發(fā)送模式下(SEN為高電平),SPI接口將從內(nèi)部獲得的信息碼“24’hFFFFFE”正確地串行發(fā)出;測(cè)試激勵(lì)再將SPI接口置于接收模式下(SEN為低電平),SPI接口正確接收外部發(fā)送的“24’hFFFFF8”,并轉(zhuǎn)換成內(nèi)部的“30’h3FFC078”。為了保證收發(fā)方向切換在一個(gè)時(shí)鐘周期內(nèi)完成,SEN信號(hào)的轉(zhuǎn)換在接口時(shí)鐘的下降沿完成。通過(guò)NC-Verilog仿真,SPI接口功能正確,工作時(shí)序符合設(shè)計(jì)要求。
4 結(jié)論
本SPI接口模塊已成功應(yīng)用在一個(gè)射頻芯片中,以硬IP的形式集成進(jìn)射頻模塊中。SPI接口電路在0.18 μm工藝下實(shí)現(xiàn)后的版圖總尺寸約為240 μm×460 μm,最高工作頻率原高于10 MHz的設(shè)計(jì)上限,相應(yīng)在10 MHz下的功耗約為2 mW。