《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 高性能主從模式動態(tài)可重構的SPI IP核設計
高性能主從模式動態(tài)可重構的SPI IP核設計
2018年電子技術應用第3期
魏朋博1,2,張存德1,2,黃 翔1,2,虞致國1,2,顧曉峰1,2
1.物聯(lián)網技術應用教育部工程研究中心,江蘇 無錫214122;2.江南大學 電子工程系,江蘇 無錫214122
摘要: 為滿足系統(tǒng)芯片(SoC)中的串行外設接口(SPI)靈活配置的要求,設計了一種既可作為主機又可作為從機、支持4種數(shù)據(jù)傳輸模式、允許7種時鐘傳輸速率的SPI IP核。該SPI IP核通過狀態(tài)機來控制數(shù)據(jù)傳輸模塊端口的方向,以此來解決主從模式下數(shù)據(jù)傳輸方向相反的問題,通過對移位寄存器的復用減少了邏輯資源消耗,利用時鐘分頻模塊來實現(xiàn)不同傳輸速率下的數(shù)據(jù)交換,設計了配置數(shù)據(jù)傳輸模式的時鐘極性和時鐘相位等端口,方便了對SPI IP核的操作。結果表明:該SPI IP核符合SPI總線協(xié)議,在0.13 μm工藝下消耗1 062個邏輯門,在系統(tǒng)工作頻率80 MHz下的功耗約為0.395 7 mW。
中圖分類號: TN492
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.172838
中文引用格式: 魏朋博,張存德,黃翔,等. 高性能主從模式動態(tài)可重構的SPI IP核設計[J].電子技術應用,2018,44(3):15-18.
英文引用格式: Wei Pengbo,Zhang Cunde,Huang Xiang,et al. Design of a high-performance and dynamic reconfigurable SPI IP core with master and slave mode[J]. Application of Electronic Technique,2018,44(3):15-18.
Design of a high-performance and dynamic reconfigurable SPI IP core with master and slave mode
Wei Pengbo1,2,Zhang Cunde1,2,Huang Xiang1,2,Yu Zhiguo1,2,GU Xiaofeng1,2
1.Engineering Research Center of IoT Technology Applications(Ministry of Education),Wuxi 214122,China; 2.Department of Electronic Engineering,Jiangnan University,Wuxi 214122,China
Abstract: To meet the flexible configuration requirements of serial peripheral interface(SPI) in the System-on-a-Chip(SoC), the SPI IP core which can be configured as a master or slave with four date transfer modes and seven clock transmission rates is designed. The SPI IP core through the state machine controls the port direction of data transmission module, which solves the problem of the opposite direction of data transmission in master and slave mode. The SPI IP core also multiplexes the shift register to reduce logic resource consumption. The clock frequency division module is designed to realize the data exchange with different transmission rates. In order to facilitate the operation of the SPI IP core, the ports including cpol and cpha that can configure the data transfer modes are designed. The results show that the SPI IP core is in good agreement with the SPI bus protocol. In addition, the circuit scale contains 1 062 logic gates under the 0.13 μm technology and the power consumption is 0.395 7 mW at a system operating frequency of 80 MHz.
Key words : high-performance;master and slave mode;dynamic reconfigurable;serial peripheral interface(SPI);IP core

0 引言

    隨著集成電路設計的快速發(fā)展,系統(tǒng)芯片(System-on-a-Chip,SoC)的集成度越來越高,從而對信號之間交流的要求也變高[1-2]。由于串行外設接口(Serial Peripheral Interface,SPI)總線協(xié)議具有全雙工模式、占用I/O端口少、協(xié)議靈活等優(yōu)點,在實時時鐘、AD轉換器、數(shù)字信號處理器和數(shù)字信號解碼器之間得到了廣泛應用[3-4]。

    目前,SPI IP核已經成為SoC的標準配置,相關人員也做了很多研究。例如,周雪榮等人面向AD9222設計的一款SPI模塊[5],可以配置為主機模式且符合AD9222芯片的接口時序;汪永琳等人設計的SPI接口[6],實現(xiàn)了SPI主從機之間數(shù)據(jù)的雙向傳輸且滿足三線半全工工作方式;李大江等人基于FPGA的SPI總線設計[7],分別設計了主機和從機。上述SPI設計可以適用于不同的應用場合,但是在SoC中進行通信時,不具有主從模式動態(tài)可重構的能力。因此,本文根據(jù)SPI總線協(xié)議,設計了一種主從模式動態(tài)可重構,支持四線全雙工,允許七種時鐘傳輸速率的SPI IP核,并對其邏輯資源消耗和功耗問題進行了優(yōu)化。

1 SPI工作原理

    SPI總線協(xié)議是由Motorola公司首先提出的,主要應用于單片機系統(tǒng)中短程通信的同步串行通信接口規(guī)范[8]。SPI總線協(xié)議規(guī)定,它以主機或從機方式工作,主從機之間的數(shù)據(jù)傳輸存在4種數(shù)據(jù)傳輸模式并由cpol(時鐘極性)和cpha(時鐘相位)來控制,如表1所示。當cpol=0時,sclk的空閑電平為0;當cpol=1時,sclk的空閑電平為1。當cpha=0時,在空閑狀態(tài)到有效狀態(tài)邊沿采集數(shù)據(jù);當cpha=1時,在有效狀態(tài)到空閑狀態(tài)邊沿采集數(shù)據(jù)[9]。

wdz3-b1.gif

    在SoC中SPI IP核的傳統(tǒng)連接方式如圖1所示。通信過程中,SPI通過片上總線將CPU核傳輸?shù)牟⑿袛?shù)據(jù)轉換為串行數(shù)據(jù),與從機進行數(shù)據(jù)交換;并把從機傳輸?shù)拇袛?shù)據(jù)轉換成并行數(shù)據(jù),通過片上總線發(fā)送給CPU核[10]。對SPI從機來說,它會在被主機選中的情況下與主機進行數(shù)據(jù)的傳輸[11]。

wdz3-t1.gif

2 SPI IP核設計

2.1 模塊劃分和接口定義

2.1.1 模塊劃分

    根據(jù)SPI功能的不同,將所設計的SPI IP核劃分為如圖2所示的3個模塊:寄存器配置塊(Register Configuration Block,RCB)、數(shù)據(jù)傳輸塊(Data Transfer Block,DTB)和錯誤中斷塊(Fault Interrupt Block,F(xiàn)IB)。RCB由CPU核對其進行配置,如主從模式、時鐘極性和時鐘相位等;DTB根據(jù)配置的信息來進行主從機間的數(shù)據(jù)傳輸;FIB在出現(xiàn)模式錯誤(例如當SPI配置為主機時,從機選擇端口被拉低)、讀寫沖突等問題時會向CPU核發(fā)出中斷請求。

wdz3-t2.gif

2.1.2 端口定義

    nwr和nrd分別是寫使能和讀使能端口;addr是地址端口;idata和odata分別是數(shù)據(jù)輸入和輸出端口。當?shù)刂酚行r,數(shù)據(jù)輸入和輸出端口根據(jù)讀寫使能的配置來進行數(shù)據(jù)的輸入和輸出操作。spen、mstr、cpol和cpha 4個端口依次是SPI使能端、主從機配置端、時鐘極性和時鐘相位端,使得對SPI IP核進行配置更加直接和方便。

    misoo、misotri和misoi 3個端口與一個三態(tài)緩沖器連接,以提供一個外部雙向端口miso,外部雙向端口mosi和sclk原理相同。這些雙向端口在有限狀態(tài)機模塊的控制下被配置為不同的傳輸方向,以此來解決主機模式和從機模式下數(shù)據(jù)傳輸端口傳輸方向相反的問題。miso在從機模式下發(fā)送數(shù)據(jù),在主機模式下接收數(shù)據(jù);mosi在主機模式下發(fā)送數(shù)據(jù),在從機模式下接收數(shù)據(jù);sclk在主機模式下發(fā)送時鐘,在從機模式下接收時鐘。同時,SPI IP核通過復用一個移位寄存器就可以完成主機和從機模式下的數(shù)據(jù)傳輸,實現(xiàn)了主從模式可配置的能力并節(jié)省了芯片面積。ssn是從機選擇端口,配置為從機時才使用,低電平有效。

    int是中斷控制端口,當數(shù)據(jù)傳輸完成或SPI被配置為主機而ssn(從機選擇)端口為低電平等情況時,F(xiàn)IB模塊就會產生中斷請求。

2.2 電路設計

2.2.1 SPI可重構電路狀態(tài)機的設計

    SPI可重構電路狀態(tài)機的設計,如圖3所示。當復位信號有效或者SPI使能端口spen被配置為低電平無效狀態(tài)時,可重構電路狀態(tài)機就會處于空閑狀態(tài)。此時,可向主機模式或從機模式進行轉移。

wdz3-t3.gif

    轉移為主機模式時,首先需要把mstr端口配置為1。然后,有兩種情況可以轉移到主機模式:(1)配置從機選擇端口無效位ssdis為高電平有效狀態(tài);(2)配置ssn端口為高電平無效狀態(tài)。

    轉移為從機模式時,首先需要把mstr配置為0。然后,有3種情況可以轉移到從機模式:(1)當配置cpha為高電平時,并配置ssdis位為有效狀態(tài),此種情況適用于只有一個從機下的數(shù)據(jù)傳輸;(2)當配置cpha為高電平時,檢測到ssn端口為低電平;(3)當配置cpha為低電平時,檢測到ssn端口的下降沿。

    當狀態(tài)機從空閑狀態(tài)已經過渡到主機或者從機模式時,就會判斷數(shù)據(jù)的傳輸是否完成,當傳輸未完成時,就會保持在當前狀態(tài);當傳輸已完成時,就會轉移到空閑狀態(tài)。此外,當前模式出現(xiàn)錯誤時,也會轉移到空閑狀態(tài)。SPI可重構電路狀態(tài)機如圖3所示。

    由狀態(tài)轉移圖可知,此SPI IP核可實現(xiàn)空閑狀態(tài)、主機模式和從機模式之間的狀態(tài)轉換,具有在線動態(tài)可重構的特性。

2.2.2 時鐘分頻

    主機模式下的串行時鐘由7位計數(shù)器、數(shù)據(jù)選擇器和D觸發(fā)器組成的時鐘分頻模塊產生,如圖4所示。

wdz3-t4.gif

    輸出時鐘sclko取決于CPU核對控制寄存器的配置,當對控制器寄存器相應的三位配置都為1時,sclko的值為cpol的值,不產生時鐘,其他情況均對時鐘有分頻作用。因此,此時鐘分頻模塊可對系統(tǒng)時鐘產生7種分頻,如表2所示。

wdz3-b2.gif

3 仿真與驗證

3.1 仿真平臺搭建

    為了方便驗證此SPI IP核的正確性,設計了模擬CPU核功能的發(fā)送接收模塊、驗證IP核(Verification IP,VIP)模塊和數(shù)據(jù)比較模塊等。發(fā)送接收模塊產生指令和數(shù)據(jù)對SPI IP核和VIP模塊進行配置。配置完成后,SPI IP核和VIP模塊進行主從機之間數(shù)據(jù)的傳輸;傳輸完成后,發(fā)送接收模塊分別讀取SPI IP核和VIP模塊傳輸?shù)臄?shù)據(jù)。最后,比較模塊從CPU核讀取所傳輸?shù)臄?shù)據(jù)并驗證數(shù)據(jù)的正確性。仿真原理如圖5所示。

wdz3-t5.gif

3.2 仿真及結果分析

    最后,使用NC-Verilog對其進行仿真驗證,主從模式下的仿真時序如圖6所示。首先,通過發(fā)送接收模塊對SPI IP核的控制寄存器依次寫入h’10和h’50(配置SPI為主機模式,SPI接口有效)。同時,配置VIP模塊為從機。然后,設置主機要發(fā)送的數(shù)據(jù)為h’aa,從機要發(fā)送的數(shù)據(jù)為h’55,在sclko(對clk時鐘2分頻)時鐘頻率下,主機的mosio(主機輸出,從機輸入)端口串行發(fā)送數(shù)據(jù)h’aa,misoi(主機輸入,從機輸出)端口串行接收數(shù)據(jù)h’55,傳輸完成后讀取狀態(tài)寄存器的值為h’80(傳輸完成),讀取數(shù)據(jù)寄存器的值為h’55(傳輸成功)。然后,對控制寄存器寫入h’40(配置SPI為從機,SPI接口有效)。同時,配置VIP模塊為主機,ssn(從機選擇端口)變?yōu)榈碗娖接行顟B(tài)。在sclki(對clk時鐘4分頻)時鐘頻率下,從機的miso(從機輸出,主機輸入)端口串行發(fā)送數(shù)據(jù)h’55,mosii(從機輸入,主機輸出)端口串行接收數(shù)據(jù)h’aa,傳輸完成后讀取狀態(tài)寄存器的值為h’80(傳輸完成),讀取數(shù)據(jù)寄存器的值為h’aa(傳輸成功)。

wdz3-t6.gif

    主機模式下不同時鐘速率下的數(shù)據(jù)傳輸如圖7所示。圖中給出了對clk時鐘2分頻時,主機發(fā)送數(shù)據(jù)為h’aa,接收數(shù)據(jù)為h’55;對clk時鐘4分頻時,主機發(fā)送數(shù)據(jù)為h’55,接收數(shù)據(jù)為h’aa;對clk時鐘8分頻時,主機發(fā)送數(shù)據(jù)為h’aa,接收數(shù)據(jù)為h’55等情況下的數(shù)據(jù)傳輸情況。在不同分頻模式下,數(shù)據(jù)傳輸能正常傳輸且結果正確。

wdz3-t7.gif

    仿真結果表明:此SPI IP核符合SPI總線協(xié)議并且滿足設計規(guī)范的要求。綜合結果顯示:在0.13 μm工藝下消耗1 062個邏輯門,在系統(tǒng)工作頻率80 MHz下的功耗約為0.395 7 mW。

4 結論

    本文根據(jù)SPI總線協(xié)議設計了一種高性能主從模式動態(tài)可重構的SPI IP核,并對該IP核的模塊劃分、接口定義和可重構電路狀態(tài)機等進行了詳細描述。結果顯示,此設計符合SPI總線協(xié)議,實現(xiàn)了7種時鐘分頻,支持4種數(shù)據(jù)傳輸模式;在保證功能和性能情況下,邏輯資源消耗更少、功耗更低。

參考文獻

[1] 李安新,周祖成.SoC新技術——可編程邏輯IP核[J].半導體技術,2001,26(12):17-19,27.

[2] 尉曉龍.X-DSP SPI模塊及其AMBA接口的設計[D].長沙:國防科學技術大學,2014.

[3] TIAN X C,LI J,F(xiàn)AN Y B,et al.Design and implementation of SPI communication based-on FPGA[J].Advanced Materials Research,2011,291-294:2658-2661.

[4] 楊曉,李戰(zhàn)明.面向系統(tǒng)級芯片的串行外設接口模塊設計[J].計算機應用,2015,35(12):3607-3610.

[5] 周雪榮,葉凡,任俊彥.面向AD9222的SPI模塊設計[J].固體電子學研究與進展,2015(3):284-288,295.

[6] 汪永琳,丁一.一種3線制半雙工SPI接口設計[J].半導體技術,2010,35(5):482-484.

[7] 李大江,崔建明.一種基于FPGA的可配置SPI Master接口設計實現(xiàn)[J].電子技術應用,2010,36(10):60-62.

[8] 孫永琦,李曉明.基于DW8051的SPI控制器設計[J].電子器件,2012,35(3):339-343.

[9] 辛曉寧,孫文強.全功能SPI接口的設計與實現(xiàn)[J].電子設計工程,2012,20(23):153-156.

[10] 劉敏,陳金鷹,唐偉,等.基于FPGA的并行數(shù)據(jù)轉SPI接口設計[J].電視技術,2012,36(5):31-32,60.

[11] 白光澤,邢燕.基于Verilog HDL的SPI IP核的設計及仿真實現(xiàn)[J].制造業(yè)自動化,2010,32(15):113-115.



作者信息:

魏朋博1,2,張存德1,2,黃  翔1,2,虞致國1,2,顧曉峰1,2

(1.物聯(lián)網技術應用教育部工程研究中心,江蘇 無錫214122;2.江南大學 電子工程系,江蘇 無錫214122)

此內容為AET網站原創(chuàng),未經授權禁止轉載。