• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于APB總線的SPI控制器的設(shè)計(jì)

      2012-06-01 06:58:10東南大學(xué)集成電路學(xué)院符宏利
      電子世界 2012年3期
      關(guān)鍵詞:基帶寄存器總線

      東南大學(xué)集成電路學(xué)院 符宏利 田 茜 吳 金

      基于APB總線的SPI控制器的設(shè)計(jì)

      東南大學(xué)集成電路學(xué)院 符宏利 田 茜 吳 金

      隨著以IP核復(fù)用為基礎(chǔ)的SoC設(shè)計(jì)技術(shù)的發(fā)展,SoC的規(guī)模不斷擴(kuò)大,片上各個(gè)模塊之間的通信問(wèn)題越來(lái)越突出。本文描述了一個(gè)可用于傳感器網(wǎng)絡(luò)核心芯片中的SPI接口模塊的設(shè)計(jì)。該設(shè)計(jì)可靈活配置為主從機(jī)模式,同時(shí)配置主機(jī)時(shí)可以支持對(duì)基帶控制器的操作;最后,通過(guò)詳細(xì)的功能驗(yàn)證表明,該設(shè)計(jì)能滿足SPI通信協(xié)議,性能可靠。

      基帶;SPI;接口模塊;IP

      1.引言

      隨著以IP核復(fù)用為基礎(chǔ)的SoC設(shè)計(jì)技術(shù)的發(fā)展以及對(duì)SoC設(shè)計(jì)越來(lái)越高的功能要求,SoC的規(guī)模不斷擴(kuò)大,集成的IP模塊不斷增多,使得片上各個(gè)模塊之間的通信問(wèn)題越來(lái)越突出,許多通信協(xié)議出現(xiàn)了[1]。然而,隨著處理器需要的外設(shè)越來(lái)越多,這時(shí)串行總線相比于并行總線用的接口線數(shù)較少的優(yōu)點(diǎn)就逐漸顯現(xiàn)出來(lái)了。當(dāng)我們需要在集成模塊,比如微控制器和一些低速外設(shè)之間通信時(shí),是沒(méi)有必要用過(guò)于復(fù)雜的協(xié)議的[2];此時(shí),SPI(Serial Peripheral Interface,串行外圍設(shè)備)將是很好的選擇。它具有電路結(jié)構(gòu)簡(jiǎn)單(只有四根接口線),通信可靠等優(yōu)點(diǎn),比較適合在集成模塊和片上外設(shè)以中低速傳輸數(shù)據(jù)的。實(shí)現(xiàn)SPI協(xié)議的IP核已經(jīng)成為業(yè)界的設(shè)計(jì)熱點(diǎn)之一[3-7]。本文中,我們將介紹一種可靈活配置為主從機(jī)模式,并在配置主機(jī)時(shí)可以支持對(duì)基帶控制器的操作的SPI接口的設(shè)計(jì)。

      2.SPI協(xié)議分析(SPI工作原理)

      SPI有兩種工作模式[8]:主模式和從模式;工作在主模式的為Master,工作在從模式的為Slave。SPI接口信號(hào)在兩種工作模式下的作用是不一樣的。

      只有Master可以發(fā)起數(shù)據(jù)傳輸。可以通過(guò)對(duì)Master的數(shù)據(jù)寄存器執(zhí)行寫操作啟動(dòng)數(shù)據(jù)傳輸。數(shù)據(jù)

      圖1 SPI數(shù)據(jù)傳輸時(shí)序(CPHA=0)

      圖2 SPI數(shù)據(jù)傳輸時(shí)序(CPHA=1)

      圖3 寫基帶控制器的時(shí)序

      在具體應(yīng)用中,要想完成一次操作,比如讀基帶控制器,一次需要傳輸多個(gè)比特的數(shù)據(jù),包括讀寫命令、地址、數(shù)據(jù)等,具體內(nèi)容與從設(shè)備有關(guān)。在讀寫基帶寄存器時(shí),在開始每次操作之前將來(lái)自APB總線的信號(hào)進(jìn)行組幀。采用加一個(gè)頭字節(jié)的方式,其中,bit[7]代表讀寫操作,bit[0]~bit[3]為讀寫地址,依次從MOSI串行輸出。若為寫操作,則后面緊接著將要寫的數(shù)據(jù)。如寫基帶控制器的時(shí)序如下圖3所示,此時(shí)CPOL=1’b0,CPHA=1’b0。

      相應(yīng)的Slave將采樣Master的MOSI結(jié)果分別寫入讀寫指示、地址線、輸入數(shù)據(jù)對(duì)應(yīng)的寄存器;并將寄存器中的數(shù)據(jù)置入發(fā)送移位寄存器通過(guò)其MISO輸出。

      圖4 SPI接口模塊結(jié)構(gòu)框圖

      圖5 主機(jī)FSM轉(zhuǎn)態(tài)轉(zhuǎn)移圖

      表1 tx_loaddata的值與數(shù)據(jù)傳輸模式關(guān)系

      表2 Data和Head態(tài)時(shí),phase_cnt值與數(shù)據(jù)位寬的關(guān)系

      3.SPI接口模塊的設(shè)計(jì)

      像很多IP模塊的設(shè)計(jì)一樣,我們采用先定義了關(guān)鍵特性和規(guī)范,明確設(shè)計(jì)目標(biāo);將目標(biāo)分解為各個(gè)子模塊分別實(shí)現(xiàn)并集成的自頂而下的方法,之后進(jìn)行了全面地功能仿真。

      3.1 接口模塊頂層設(shè)計(jì)

      由我們?cè)O(shè)計(jì)的SPI Controller是一個(gè)基于AMBA的APB總線的外設(shè)類接口模塊,Master Host通過(guò)APB總線對(duì)模塊進(jìn)行操作;同時(shí)另一端通過(guò)SPI總線與外部設(shè)備相連。根據(jù)功能定義和SPI工作原理,可以得出SPI接口模塊結(jié)構(gòu)框圖如圖4所示。

      SPI接口模塊上除了四個(gè)中斷信號(hào)外,還需要14個(gè)I/O端口,主要由APB總線信號(hào)和SPI總線信號(hào)組成。其中,APB信號(hào)是主從模式通用的,對(duì)于APB總線信號(hào)定義,詳見參考文獻(xiàn)[9]。對(duì)于SPI信號(hào)而言,為了滿足SPI可配置不同工作模式的需要,在模塊內(nèi)部,需要設(shè)計(jì)比SPI協(xié)議要求更多的接口信號(hào)。其中,txd在主模式時(shí),相當(dāng)于MOSI,從模式時(shí)相當(dāng)于MISO;rxd在主模式時(shí)相當(dāng)于MOSI,從模式時(shí)相當(dāng)于MISO。

      3.2 主模式設(shè)計(jì)實(shí)現(xiàn)

      本接口模塊支持可編程的數(shù)據(jù)幀格式(數(shù)據(jù)寬度為4/8/16/32 bit),還支持可編程四種傳輸模式:讀寫基帶寄存器,發(fā)送又接收,只發(fā)送,只接收?,F(xiàn)將各個(gè)組成模塊介紹如下:

      APB Slave主要負(fù)責(zé)地址譯碼,實(shí)現(xiàn)接口模塊與ARM的APB總線相連接。通過(guò)該模塊,ARM可以對(duì)相應(yīng)控制寄存器以及Data FIFO嚴(yán)格按照APB總線協(xié)議進(jìn)行讀寫,從而實(shí)現(xiàn)對(duì)本模塊和外設(shè)的控制。

      寄存器模塊(Registers)則包含各控制寄存器,狀態(tài)寄存器。在模塊使能(spe=1)后,模塊才可以開始正常工作。分頻邏輯用于在主機(jī)模式時(shí)通過(guò)一個(gè)邏輯分頻變量實(shí)現(xiàn)對(duì)pclk信號(hào)的分頻控制。該分頻變量在內(nèi)部減法計(jì)數(shù)器為零且SPI處于工作狀態(tài)時(shí)有效(置1),且包含在狀態(tài)機(jī)(FSM)控制邏輯和端口控制邏輯(Port Control Logic)中。

      中斷邏輯則用于實(shí)現(xiàn)中斷控制,使ARM可以對(duì)SPI進(jìn)行適當(dāng)操作,比如讀寫Data FIFO。如圖4所示,本模塊可產(chǎn)生spi_txe_intr,spi_txo_intr,spi_rxf_intr,spi_rxo_intr四個(gè)獨(dú)立可屏蔽中斷。

      Data FIFO用于緩存數(shù)據(jù),有RxFIFO和TxFIFO兩個(gè)FIFO,并且在每一個(gè)工作模式下,都相應(yīng)有兩個(gè)移位寄存器(Shift Registers)進(jìn)行串并轉(zhuǎn)換。除此之外,還設(shè)置了一個(gè)中間變量tx_loaddata。在每次數(shù)據(jù)傳輸之前,將tx_loaddata加載到移位寄存器中。tx_loaddata的值與數(shù)據(jù)傳輸模式有關(guān)。如表1所示。

      FSM則控制了SPI模塊的數(shù)據(jù)傳輸過(guò)程,從而完成對(duì)SPI傳輸時(shí)序的實(shí)現(xiàn)控制。該FSM只用于主模式。其狀態(tài)轉(zhuǎn)移圖如圖5所示。

      我們采用了兩個(gè)計(jì)數(shù)變量:data_num和phase_cnt來(lái)控制數(shù)據(jù)的傳輸。其中,data_num大致產(chǎn)生邏輯為:當(dāng)為只接收模式時(shí),data_num初始值由控制寄存器讀入,否則每對(duì)Tx FIFO寫一次,數(shù)目就加1;每傳輸一個(gè)數(shù)據(jù)后該數(shù)目減1。而phase_cnt則由FSM的狀態(tài)和配置的數(shù)據(jù)幀寬度格式?jīng)Q定,只有phase_cnt為零時(shí),F(xiàn)SM狀態(tài)才轉(zhuǎn)移。當(dāng)處于Data和Head時(shí),其關(guān)系如表2所示。其中,dfs

      圖6 主模式SPI寫基帶控制器的波形

      圖7 主模式SPI發(fā)送又接收時(shí)的波形

      在開始傳輸之前,若傳輸模式為只發(fā)送或即發(fā)送又接收,則應(yīng)保證TxFIFO中不為空。我們?cè)O(shè)置了一個(gè)計(jì)數(shù)器counter對(duì)Sclk_in的上升沿進(jìn)行計(jì)數(shù)。當(dāng)計(jì)數(shù)到閾值cnt_threshold時(shí)則表明一個(gè)完整數(shù)據(jù)傳輸完成,根據(jù)需要決定是否寫Rx和加載新的數(shù)據(jù)到Txshift_reg,之后計(jì)數(shù)器再歸零;cnt_threshold的值由配置的數(shù)據(jù)幀寬度格式?jīng)Q定。

      這樣,從機(jī)在輸入的SPI信號(hào)控制下,完成相應(yīng)數(shù)據(jù)的傳輸工作。為控制寄存器SPCR0中的數(shù)據(jù)位寬控制位。

      當(dāng)一整個(gè)數(shù)據(jù)傳輸結(jié)束時(shí)則按照傳輸模式?jīng)Q定是否將接收移位寄存器的數(shù)據(jù)寫入RxFIFO或寄存器中。起始狀態(tài)為Idle,當(dāng)數(shù)據(jù)傳輸請(qǐng)求產(chǎn)生時(shí),根據(jù)傳輸模式分別轉(zhuǎn)入Head和Data(僅讀寫基帶寄存器時(shí)進(jìn)入Head)。Head在將數(shù)據(jù)幀頭傳輸結(jié)束后進(jìn)入Data。在處于Head或Data時(shí),通過(guò)一個(gè)對(duì)pclk分頻后的時(shí)鐘的計(jì)數(shù)值phase_cnt進(jìn)行發(fā)送和接收狀態(tài)的轉(zhuǎn)換:當(dāng)為偶數(shù)時(shí)為發(fā)送狀態(tài),SCLK等于CPOL^CPHA;為奇數(shù)時(shí)為接收狀態(tài),SCLK等于!CPOL^CPHA;SS亦由FSM狀態(tài)和phase_cnt值進(jìn)行確定,以保證傳輸時(shí)序。必須考慮到scpha=1時(shí),可連續(xù)進(jìn)行數(shù)據(jù)傳輸而SS無(wú)須拉高,而scpha=0時(shí),連續(xù)傳輸之間SS需要拉高的情況對(duì)兩者在開始傳輸以及連續(xù)傳輸之間進(jìn)行不同的處理。End和Start可以用于確定在初始傳輸之前的SS值。

      3.3 從模式設(shè)計(jì)實(shí)現(xiàn)

      當(dāng)配置為從機(jī)時(shí),F(xiàn)SM和分頻部分不工作;它相應(yīng)的傳輸控制邏輯包含在Port Control Logic中。它根據(jù)接收的SPI信號(hào)進(jìn)行控制以完成數(shù)據(jù)的接收和發(fā)送。其余組成部分的功能與主機(jī)相似。

      我們將SCLK_in轉(zhuǎn)化成SCLK_s,以使得從SPI模塊總是在SCLK_s的上升沿傳送數(shù)據(jù),下降沿采樣數(shù)據(jù)。其換算邏輯為:

      4.SPI接口模塊的仿真驗(yàn)證

      為了保證設(shè)計(jì)的正確性,我們進(jìn)行了詳細(xì)的功能仿真。首先進(jìn)行VCS進(jìn)行RTL級(jí)仿真。RTL級(jí)仿真是將代碼文件調(diào)入硬件描述語(yǔ)言的仿真軟件進(jìn)行功能仿真,檢查邏輯功能是否正確。根據(jù)模塊的功能,我們先分解出了詳細(xì)的測(cè)試點(diǎn),并通過(guò)搭建不同的測(cè)試平臺(tái)輸入不同的激勵(lì)依次進(jìn)行仿真。覆蓋了包括SPI的主模式下讀寫基帶寄存器模式,主從模式下其他各種傳輸模式下各種長(zhǎng)度的數(shù)據(jù)幀的數(shù)據(jù)情形。其中,主模式SPI寫基帶控制器仿真波形如圖6。

      首先將SPI模塊的SPCR0和SPBRR分別配置為32’h0x603c和16’h0x02,同時(shí)各進(jìn)行一次讀操作;之后寫SPCR1,同時(shí)將啟動(dòng)一次數(shù)據(jù)傳輸操作。類似的,圖7為主模式SPI發(fā)送又接收時(shí)的波形。

      首先將兩SPI模塊相應(yīng)的SPI接口信號(hào)連接起來(lái),并進(jìn)行一次復(fù)位,之后分別配置為主從模式。其中Master的SPCR0和SPBRR分別配置為32’h0602d和16’h0x02,Slave的SPCR0為32’h0402d。之后同時(shí)各進(jìn)行一次讀操作確認(rèn)寄存器的值;再先后分別往從機(jī)和主機(jī)的SPDR1(TxFIFO)中寫入數(shù)據(jù)32’h12345678和32’h55551432。同時(shí)將啟動(dòng)一次數(shù)據(jù)傳輸。傳輸完成后分別讀主、從機(jī)的SPDR1(RxFIFO),得到從機(jī)傳來(lái)的數(shù)據(jù)32’h12345678以及主機(jī)傳來(lái)的32’h55551432。

      由圖6、7可知,SPI能正確完成對(duì)應(yīng)的操作。

      此外,通過(guò)將SPI接在基于APB總線的SoC系統(tǒng)中,該系統(tǒng)包含ARM內(nèi)核,ROM,AHB,APB以及相連的Bridge,將系統(tǒng)代碼修改并移植到FPGA中,完成了FPGA原型驗(yàn)證平臺(tái)的搭建。通過(guò)在該驗(yàn)證平臺(tái)運(yùn)行C驗(yàn)證代碼驗(yàn)證了其功能的正確性。

      5.總結(jié)語(yǔ)

      本文先比較了現(xiàn)有的接口協(xié)議,指出了SPI串行總線接口的優(yōu)點(diǎn),以及應(yīng)用場(chǎng)合。在討論了SPI接口協(xié)議的特點(diǎn)后,基于SPI的多方面應(yīng)用,完成了一個(gè)SPI接口模塊的設(shè)計(jì),并通過(guò)了驗(yàn)證。其設(shè)計(jì)過(guò)程采用了典型的自頂向下方法。本設(shè)計(jì)可以靈活用于基于AMBA APB的典型SoC系統(tǒng)中。在IP核復(fù)用為基礎(chǔ)的SoC快速發(fā)展的今天,對(duì)IP設(shè)計(jì)的研究具有普遍的實(shí)際意義。

      [1]田澤,張怡浩,于敦山,等.SoC片上總線綜述[J].趨勢(shì)與展望,2003.

      [2]A.K,Oudjida,M.L,Berrandjia,A,Liacha,etc,De sign and Test of General-Purpose SPI Master/Slave IPs on OPB Bus,International Muti-Conference on Systems,Signals and Devices,2010.

      [3]趙杰.基于AMBA總線的SPI協(xié)議IP核的實(shí)現(xiàn)與驗(yàn)證[D].中國(guó)科技大學(xué)碩士學(xué)位論文,2009.

      [4]李躍峰.基于Verilog HDL的SPI可復(fù)用IP核的設(shè)計(jì)與實(shí)現(xiàn)[D].西南交通大學(xué)碩士學(xué)位論文,2008.

      [5]趙彧,張楚.多媒體處理器中SPI接口的設(shè)計(jì)[J].電子測(cè)量技術(shù),2007,30(6):126-129.

      [6]曹儐,王祥,程野,等.SPI控制器的ASIC設(shè)計(jì)與實(shí)現(xiàn)[J].數(shù)字通信,2010,2:94-96.

      [7]喻小虎,咸德勇,陳華明.專用SPI從設(shè)備接口電路設(shè)計(jì)[J].微處理機(jī),2009,5:28-30.[8]Motorola,Inc,SPI Block Guide V04.01,2004.[9]ARM.AMBATMSpecif i cation(Rev 2.0),1999.

      符宏利(1985—),男,湖南瀘溪人,碩士研究生,主要研究方向:數(shù)字集成電路設(shè)計(jì)與驗(yàn)證。

      田茜(1980—),女,江蘇徐州人,博士,東南大學(xué)教師,研究方向:無(wú)線傳感網(wǎng)。

      吳金(1965—),男,四川樂(lè)山人,工學(xué)博士,教授,研究方向:數(shù)?;旌霞呻娐吩O(shè)計(jì)。

      猜你喜歡
      基帶寄存器總線
      Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
      基于PCI Express總線的xHC與FPGA的直接通信
      機(jī)載飛控1553B總線轉(zhuǎn)以太網(wǎng)總線設(shè)計(jì)
      分簇結(jié)構(gòu)向量寄存器分配策略研究*
      2014年LTE基帶收益占蜂窩基帶收益50%以上
      AIS基帶信號(hào)的接收與處理
      多通道ARINC429總線檢查儀
      數(shù)字基帶系統(tǒng)的System View仿真設(shè)計(jì)
      基于FPGA的WSN數(shù)字基帶成形濾波器設(shè)計(jì)
      基于EtherCAT總線的ROV控制系統(tǒng)設(shè)計(jì)
      河南科技(2014年16期)2014-02-27 14:13:22
      洛隆县| 连山| 达日县| 东城区| 珠海市| 岱山县| 泾源县| 高清| 定州市| 蒲城县| 平泉县| 东丰县| 永靖县| 彰武县| 遵义县| 公主岭市| 富川| 韩城市| 崇信县| 安仁县| 宁河县| 乐业县| 新丰县| 隆德县| 惠来县| 新绛县| 连平县| 徐闻县| 台东县| 大宁县| 五华县| 三门县| 曲麻莱县| 孝义市| 宜都市| 米泉市| 涞源县| 祁阳县| 绿春县| 武宣县| 武义县|