《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 高性能主從模式動態(tài)可重構(gòu)的SPI IP核設(shè)計(jì)
高性能主從模式動態(tài)可重構(gòu)的SPI IP核設(shè)計(jì)
2018年電子技術(shù)應(yīng)用第3期
魏朋博1,2,,張存德1,,2,黃 翔1,,2,,虞致國1,2,,顧曉峰1,,2
1.物聯(lián)網(wǎng)技術(shù)應(yīng)用教育部工程研究中心,江蘇 無錫214122,;2.江南大學(xué) 電子工程系,,江蘇 無錫214122
摘要: 為滿足系統(tǒng)芯片(SoC)中的串行外設(shè)接口(SPI)靈活配置的要求,設(shè)計(jì)了一種既可作為主機(jī)又可作為從機(jī),、支持4種數(shù)據(jù)傳輸模式,、允許7種時鐘傳輸速率的SPI IP核。該SPI IP核通過狀態(tài)機(jī)來控制數(shù)據(jù)傳輸模塊端口的方向,,以此來解決主從模式下數(shù)據(jù)傳輸方向相反的問題,,通過對移位寄存器的復(fù)用減少了邏輯資源消耗,利用時鐘分頻模塊來實(shí)現(xiàn)不同傳輸速率下的數(shù)據(jù)交換,,設(shè)計(jì)了配置數(shù)據(jù)傳輸模式的時鐘極性和時鐘相位等端口,,方便了對SPI IP核的操作。結(jié)果表明:該SPI IP核符合SPI總線協(xié)議,,在0.13 μm工藝下消耗1 062個邏輯門,,在系統(tǒng)工作頻率80 MHz下的功耗約為0.395 7 mW,。
中圖分類號: TN492
文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.172838
中文引用格式: 魏朋博,張存德,,黃翔,,等. 高性能主從模式動態(tài)可重構(gòu)的SPI IP核設(shè)計(jì)[J].電子技術(shù)應(yīng)用,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 引言

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

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

1 SPI工作原理

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

wdz3-b1.gif

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

wdz3-t1.gif

2 SPI IP核設(shè)計(jì)

2.1 模塊劃分和接口定義

2.1.1 模塊劃分

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

wdz3-t2.gif

2.1.2 端口定義

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

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

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

2.2 電路設(shè)計(jì)

2.2.1 SPI可重構(gòu)電路狀態(tài)機(jī)的設(shè)計(jì)

    SPI可重構(gòu)電路狀態(tài)機(jī)的設(shè)計(jì),,如圖3所示。當(dāng)復(fù)位信號有效或者SPI使能端口spen被配置為低電平無效狀態(tài)時,,可重構(gòu)電路狀態(tài)機(jī)就會處于空閑狀態(tài),。此時,可向主機(jī)模式或從機(jī)模式進(jìn)行轉(zhuǎn)移,。

wdz3-t3.gif

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

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

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

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

2.2.2 時鐘分頻

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

wdz3-t4.gif

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

wdz3-b2.gif

3 仿真與驗(yàn)證

3.1 仿真平臺搭建

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

wdz3-t5.gif

3.2 仿真及結(jié)果分析

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

wdz3-t6.gif

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

wdz3-t7.gif

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

4 結(jié)論

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

參考文獻(xiàn)

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

[2] 尉曉龍.X-DSP SPI模塊及其AMBA接口的設(shè)計(jì)[D].長沙:國防科學(xué)技術(shù)大學(xué),,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)級芯片的串行外設(shè)接口模塊設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用,,2015,35(12):3607-3610.

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

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

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

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

[9] 辛?xí)詫帲瑢O文強(qiáng).全功能SPI接口的設(shè)計(jì)與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,,2012,,20(23):153-156.

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

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



作者信息:

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

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

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。