0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于高性能主從模式動態(tài)可重構(gòu)的SPI IP核的設(shè)計(jì)

電子設(shè)計(jì) ? 來源:網(wǎng)絡(luò)整理 ? 作者:工程師吳畏 ? 2018-06-14 15:26 ? 次閱讀

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í)時(shí)時(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í)序;汪永琳等人設(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)行通信時(shí),不具有主從模式下動態(tài)可重構(gòu)的能力。因此,本文根據(jù)SPI總線協(xié)議,設(shè)計(jì)了一種主從模式動態(tài)可重構(gòu),支持四線全雙工,允許七種時(shí)鐘傳輸速率的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(時(shí)鐘極性)和cpha(時(shí)鐘相位)來控制,如表1所示。當(dāng)cpol=0時(shí),sclk的空閑電平為0;當(dāng)cpol=1時(shí),sclk的空閑電平為1。當(dāng)cpha=0時(shí),在空閑狀態(tài)到有效狀態(tài)邊沿采集數(shù)據(jù);當(dāng)cpha=1時(shí),在有效狀態(tài)到空閑狀態(tài)邊沿采集數(shù)據(jù)[9]。

關(guān)于高性能主從模式動態(tài)可重構(gòu)的SPI IP核的設(shè)計(jì)

在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]。

關(guān)于高性能主從模式動態(tài)可重構(gòu)的SPI IP核的設(shè)計(jì)

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

2.1 模塊劃分和接口定義

2.1.1 模塊劃分

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

關(guān)于高性能主從模式動態(tài)可重構(gòu)的SPI IP核的設(shè)計(jì)

2.1.2 端口定義

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

misoo、misotri和misoi 3個(gè)端口與一個(gè)三態(tài)緩沖器連接,以提供一個(gè)外部雙向端口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ā)送時(shí)鐘,在從機(jī)模式下接收時(shí)鐘。同時(shí),SPI IP核通過復(fù)用一個(gè)移位寄存器就可以完成主機(jī)和從機(jī)模式下的數(shù)據(jù)傳輸,實(shí)現(xiàn)了主從模式可配置的能力并節(jié)省了芯片面積。ssn是從機(jī)選擇端口,配置為從機(jī)時(shí)才使用,低電平有效。

int是中斷控制端口,當(dāng)數(shù)據(jù)傳輸完成或SPI被配置為主機(jī)而ssn(從機(jī)選擇)端口為低電平等情況時(shí),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)時(shí),可重構(gòu)電路狀態(tài)機(jī)就會處于空閑狀態(tài)。此時(shí),可向主機(jī)模式或從機(jī)模式進(jìn)行轉(zhuǎn)移。

關(guān)于高性能主從模式動態(tài)可重構(gòu)的SPI IP核的設(shè)計(jì)

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

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

當(dāng)狀態(tài)機(jī)從空閑狀態(tài)已經(jīng)過渡到主機(jī)或者從機(jī)模式時(shí),就會判斷數(shù)據(jù)的傳輸是否完成,當(dāng)傳輸未完成時(shí),就會保持在當(dāng)前狀態(tài);當(dāng)傳輸已完成時(shí),就會轉(zhuǎn)移到空閑狀態(tài)。此外,當(dāng)前模式出現(xiàn)錯(cuò)誤時(shí),也會轉(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 時(shí)鐘分頻

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

關(guān)于高性能主從模式動態(tài)可重構(gòu)的SPI IP核的設(shè)計(jì)

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

關(guān)于高性能主從模式動態(tài)可重構(gòu)的SPI IP核的設(shè)計(jì)

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所示。

關(guān)于高性能主從模式動態(tài)可重構(gòu)的SPI IP核的設(shè)計(jì)

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

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

關(guān)于高性能主從模式動態(tài)可重構(gòu)的SPI IP核的設(shè)計(jì)

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

關(guān)于高性能主從模式動態(tài)可重構(gòu)的SPI IP核的設(shè)計(jì)

仿真結(jié)果表明:此SPI IP核符合SPI總線協(xié)議并且滿足設(shè)計(jì)規(guī)范的要求。綜合結(jié)果顯示:在0.13 μm工藝下消耗1 062個(gè)邏輯門,在系統(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種時(shí)鐘分頻,支持4種數(shù)據(jù)傳輸模式;在保證功能和性能情況下,邏輯資源消耗更少、功耗更低。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • soc
    soc
    +關(guān)注

    關(guān)注

    38

    文章

    4108

    瀏覽量

    217790
  • SPI接口
    +關(guān)注

    關(guān)注

    0

    文章

    258

    瀏覽量

    34323
  • IP核
    +關(guān)注

    關(guān)注

    4

    文章

    326

    瀏覽量

    49382
收藏 人收藏

    評論

    相關(guān)推薦

    基于xilinx ISE的動態(tài)重構(gòu)

    大家好有誰對FPGA的動態(tài)重構(gòu)有研究嗎?本人現(xiàn)在在搞這塊尋人共同探討。。。謝謝
    發(fā)表于 03-10 16:03

    基于PAD的接收機(jī)動態(tài)重構(gòu)結(jié)構(gòu)應(yīng)用

    和ASIC電路高速性的解決方案。在筆者所從事的系統(tǒng)設(shè)計(jì)中,當(dāng)模擬器件的一些性能改變但又不能及時(shí)更新調(diào)整后端的數(shù)字基帶處理時(shí),比如濾波器由于工作時(shí)間過長引起的溫漂特性所帶來的影響,此時(shí)就可以用可編程模擬器件替代一部分前端固定模擬器件,進(jìn)而可以實(shí)時(shí)的對FPGA模塊進(jìn)行動態(tài)
    發(fā)表于 07-10 07:56

    怎么設(shè)計(jì)PAD在接收機(jī)動態(tài)重構(gòu)結(jié)構(gòu)中的應(yīng)用?

    重構(gòu)結(jié)構(gòu)是一種可以根據(jù)具體運(yùn)算情況重組自身資源,實(shí)現(xiàn)硬件結(jié)構(gòu)自身優(yōu)化、自我生成的計(jì)算技術(shù)。動態(tài)重構(gòu)技術(shù)
    發(fā)表于 08-13 07:56

    擴(kuò)展的高性能RISC-V 內(nèi)核IP

    SiFive推出的SiFive U8系列核心IP是一種面向現(xiàn)代SoC設(shè)計(jì)具有擴(kuò)展性、高性能的微架構(gòu)。SiFive U8系列是當(dāng)今商用化基于RISC-V指令集架構(gòu)中性能最高的內(nèi)核
    發(fā)表于 08-13 15:14

    重構(gòu)體系結(jié)構(gòu)分為哪幾種?動態(tài)重構(gòu)系統(tǒng)有哪些應(yīng)用實(shí)例?

    重構(gòu)體系結(jié)構(gòu)分為哪幾種?典型動態(tài)重構(gòu)系統(tǒng)結(jié)構(gòu)有哪幾種?動態(tài)
    發(fā)表于 04-28 06:13

    怎么實(shí)現(xiàn)基于FPGA的動態(tài)重構(gòu)系統(tǒng)設(shè)計(jì)?

    本文提出的通過微處理器加FPGA結(jié)合串行菊花鏈實(shí)現(xiàn)重構(gòu)的方式,實(shí)現(xiàn)了動態(tài)重構(gòu)FPGA結(jié)構(gòu)設(shè)計(jì)的一種應(yīng)用。
    發(fā)表于 05-10 06:22

    滿足高性能數(shù)字接收機(jī)動態(tài)性能要求的ADC和射頻器件有哪些?

    滿足高性能數(shù)字接收機(jī)動態(tài)性能要求的ADC和射頻器件有哪些?
    發(fā)表于 05-28 06:45

    劃分和時(shí)延驅(qū)動的動態(tài)重構(gòu)FPGA在線布局算法

    可編程邏輯芯片特別是FPGA的快速發(fā)展,使得新的芯片能夠根據(jù)具體應(yīng)用動態(tài)地調(diào)整結(jié)構(gòu)以獲得更好的性能,這類芯片稱為動態(tài)重構(gòu)FPGA芯片(DR
    發(fā)表于 01-18 08:40 ?10次下載

    動態(tài)重構(gòu)系統(tǒng)的通信結(jié)構(gòu)分析

    動態(tài)重構(gòu)系統(tǒng)的通信結(jié)構(gòu)分析 動態(tài)重構(gòu)技術(shù)能在一定控制邏輯的驅(qū)動下,對全部或部分邏輯資源實(shí)現(xiàn)
    發(fā)表于 03-29 15:12 ?1039次閱讀
    <b class='flag-5'>動態(tài)</b><b class='flag-5'>可</b><b class='flag-5'>重構(gòu)</b>系統(tǒng)的通信結(jié)構(gòu)分析

    PAD在接收機(jī)動態(tài)重構(gòu)結(jié)構(gòu)中的應(yīng)用設(shè)計(jì)

    PAD在接收機(jī)動態(tài)重構(gòu)結(jié)構(gòu)中的應(yīng)用設(shè)計(jì) 重構(gòu)結(jié)構(gòu)是一種可以根據(jù)具體運(yùn)算情況重組自身資源,實(shí)現(xiàn)硬件結(jié)構(gòu)自身優(yōu)化、自我生成的計(jì)算技術(shù)。
    發(fā)表于 12-28 09:15 ?804次閱讀
    PAD在接收機(jī)<b class='flag-5'>動態(tài)</b><b class='flag-5'>可</b><b class='flag-5'>重構(gòu)</b>結(jié)構(gòu)中的應(yīng)用設(shè)計(jì)

    重構(gòu)技術(shù)分析及動態(tài)重構(gòu)系統(tǒng)設(shè)計(jì)

    基于SRAM的FPGA的問世標(biāo)志著現(xiàn)代重構(gòu)技術(shù)的開端,并極大地推動了其發(fā)展。可編程FPGA可以根據(jù)不同算法設(shè)計(jì)合理的硬件結(jié)構(gòu),以達(dá)到提高執(zhí)行效率的目的。動態(tài)
    發(fā)表于 11-25 10:20 ?1.3w次閱讀
    <b class='flag-5'>可</b><b class='flag-5'>重構(gòu)</b>技術(shù)分析及<b class='flag-5'>動態(tài)</b><b class='flag-5'>可</b><b class='flag-5'>重構(gòu)</b>系統(tǒng)設(shè)計(jì)

    FPGA動態(tài)重構(gòu)技術(shù)是什么,局部動態(tài)重構(gòu)的時(shí)序問題解決方案

    所謂FPGA動態(tài)重構(gòu)技術(shù),就是要對基于SRAM編程技術(shù)的FPGA實(shí)現(xiàn)全部或部分邏輯資源的動態(tài)功能變換。根據(jù)實(shí)現(xiàn)重構(gòu)的面積不同,
    的頭像 發(fā)表于 07-05 15:41 ?3052次閱讀
    FPGA<b class='flag-5'>動態(tài)</b><b class='flag-5'>可</b><b class='flag-5'>重構(gòu)</b>技術(shù)是什么,局部<b class='flag-5'>動態(tài)</b><b class='flag-5'>可</b><b class='flag-5'>重構(gòu)</b>的時(shí)序問題解決方案

    重構(gòu)計(jì)算:基于FPGA重構(gòu)計(jì)算的理論與實(shí)踐 1.器件架構(gòu) 譯文(一)

    根本上來說,重構(gòu)計(jì)算可以最好地發(fā)揮重構(gòu)硬件的潛力。雖然一個(gè)完整的系統(tǒng)必須包括編譯軟件和高性能的應(yīng)用程序,但了解
    發(fā)表于 01-26 18:23 ?7次下載
    <b class='flag-5'>可</b><b class='flag-5'>重構(gòu)</b>計(jì)算:基于FPGA<b class='flag-5'>可</b><b class='flag-5'>重構(gòu)</b>計(jì)算的理論與實(shí)踐 1.器件架構(gòu) 譯文(一)

    關(guān)于FPGA重構(gòu)技術(shù)分析

    FPGA上的重構(gòu)技術(shù)根據(jù)FPGA芯片內(nèi)部的不同結(jié)構(gòu)可以分為兩種,分別是動態(tài)重構(gòu)和靜態(tài)
    發(fā)表于 11-03 20:09 ?901次閱讀

    CW32的SPI單工模式主從通信介紹

    CW32的SPI單工模式主從通信介紹
    的頭像 發(fā)表于 10-24 15:50 ?734次閱讀
    CW32的<b class='flag-5'>SPI</b>單工<b class='flag-5'>模式</b><b class='flag-5'>主從</b>通信介紹