當(dāng)前位置:首頁(yè) > EDA > 電子設(shè)計(jì)自動(dòng)化
[導(dǎo)讀]摘要:從一種軍用板卡的實(shí)際需求出發(fā),對(duì)SPI接口在設(shè)計(jì)中有諸如FPGA資源和管腳等限制的情況下,快速加栽配置數(shù)據(jù)的方法進(jìn)行了分析。并基于ATMEL公司的AT25F1024 FLASH器件,描述了高速SPI接口的設(shè)計(jì)原理和方法,具有

摘要:從一種軍用板卡的實(shí)際需求出發(fā),對(duì)SPI接口在設(shè)計(jì)中有諸如FPGA資源和管腳等限制的情況下,快速加栽配置數(shù)據(jù)的方法進(jìn)行了分析。并基于ATMEL公司的AT25F1024 FLASH器件,描述了高速SPI接口的設(shè)計(jì)原理和方法,具有一定的實(shí)用性和可行性。
關(guān)鍵詞:SPI;FIASH;軍用板卡;FPGA;AT25T1024

0 引言
    在一些軍用芯片的早期設(shè)計(jì)中,一般先采用比較成熟的商用協(xié)議芯片進(jìn)行軍用化改造(通常做成板卡形式),而商用芯片的軍用化改造主要體現(xiàn)在確定性、實(shí)時(shí)性、穩(wěn)定性、安全性等問(wèn)題上,所以一般需要在商用協(xié)議芯片的上層加入較多的控制功能。FPGA以其資源豐富,易于組織流水和并行處理等優(yōu)點(diǎn),為這種復(fù)雜控制提供了很好的選擇。而SPI在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時(shí)為PCB的布局上節(jié)省空間,因此在基于FPGA的讀寫接口設(shè)計(jì)中,高速SPI是一種很好的選擇。

1 SPI結(jié)構(gòu)
    SPI (Serial Peripheral Interface-串行外圍設(shè)備接口)是Motorola公司推出的一種高效率全雙工同步串行數(shù)據(jù)接口,以主從模式工作,廣泛應(yīng)用于FLASH,實(shí)時(shí)時(shí)鐘,AD轉(zhuǎn)換器等。SPI串行外圍設(shè)備總線根據(jù)串行同步時(shí)鐘極性(CPOL)和時(shí)鐘相位(CPHA)兩個(gè)參數(shù)的設(shè)置分為四種工作方式(SPO,SP1,SP2,SP3)。本板卡選用的片外存儲(chǔ)器AT25F1024僅支持0和3模式,為簡(jiǎn)化設(shè)計(jì),本設(shè)計(jì)的SPI時(shí)鐘采用SP0模式(CP-OL=0,CPHA=0),時(shí)鐘極性為低電平,時(shí)鐘相位串行時(shí)鐘上升沿采樣數(shù)據(jù),下降沿?cái)?shù)據(jù)輸出.SPI為主從工作方式,主設(shè)備由三部分構(gòu)成,SPI_CFG_LOAD配置加載模塊可自動(dòng)讀取存儲(chǔ)器FLASH的值,并加載到片內(nèi)DPRAM中。主機(jī)通過(guò)配置SPI_CTRL控制模塊相應(yīng)的寄存器,來(lái)完成對(duì)片外FLASH的訪問(wèn)。SPI結(jié)構(gòu)框圖如圖1所示。



2 高速SPI接口設(shè)計(jì)
2.1 配置加載模塊的設(shè)計(jì)
    SPI_CFG_LOAD配置加載模塊主要完成從片外FLASH讀取數(shù)據(jù),并將數(shù)據(jù)存入片內(nèi)DPRAM中的功能。圖2給出了對(duì)應(yīng)的狀態(tài)機(jī)設(shè)計(jì)。


    各狀態(tài)說(shuō)明如下:
    SPI_IDLE:空閑狀態(tài),如果主機(jī)配置了寄存器SPICFGSTART,狀態(tài)就跳到SPI_TX_BUFFER狀態(tài)。
    SPI_TX_BUFFER:在此狀態(tài)主要向SPI_CTRL模塊的發(fā)送緩沖區(qū)地址0填入8位讀命令及讀取數(shù)據(jù)的三字節(jié)起始地址,狀態(tài)機(jī)之間進(jìn)入下一狀態(tài)。
    SPI_CTRL_REG:在這一狀態(tài),配置SPI_CTRL模塊CTRL寄存器的值,包括一次讀操作搬運(yùn)的數(shù)據(jù)位數(shù),數(shù)據(jù)加載方式。如果配置GO位為“1”,表明可以開始進(jìn)行讀傳輸,進(jìn)入下一狀態(tài)SPI_CS。
    SPI_CS:配置SPI_CTRL)模塊寄存器SS位的值,以選擇傳輸數(shù)據(jù)的從設(shè)備。
    SPI_WAIT:本狀態(tài)判斷讀操作的起始地址和終止地址是否在要求的范圍內(nèi),如果處于相應(yīng)的范圍,地址自動(dòng)加64后,狀態(tài)機(jī)進(jìn)入SPI_SS_ UA狀態(tài)。
    SPI_SS_UA:等待片內(nèi)DPRAM的寫操作完成,如果DPRAM_WR_END_T信號(hào)為高,說(shuō)明當(dāng)前的傳輸操作已經(jīng)結(jié)束,可以進(jìn)入下一次的訪問(wèn),狀態(tài)機(jī)進(jìn)入SPI_IDLE狀態(tài)。
2.2 控制模塊的設(shè)計(jì)
    SPI_CTRL控制模塊可將發(fā)送緩沖區(qū)0的數(shù)據(jù)讀出來(lái),經(jīng)過(guò)并串轉(zhuǎn)換,發(fā)送到串行線SI上,并且控制從串行線SO上接收數(shù)據(jù),存儲(chǔ)在接收緩沖區(qū),并行數(shù)據(jù)轉(zhuǎn)換成串行輸出由并串轉(zhuǎn)換狀態(tài)機(jī)來(lái)控制實(shí)現(xiàn),見(jiàn)圖3。


    各狀態(tài)含義如下:
    TX_IDLE:等待主機(jī)設(shè)置控制寄存器的GO位,如果置“1”,表示準(zhǔn)備開始傳輸,跳入下一狀態(tài)TX_ADDR。
    TX_ADDR:當(dāng)傳輸長(zhǎng)度小于等于32位時(shí),跳入下一狀態(tài)PARALELL_DATA。
    PARALELL_DATA:如果GO為1,在此狀態(tài)TIP將被置“1”,說(shuō)明傳輸開始,傳輸?shù)挠?jì)數(shù)器開始計(jì)數(shù)。
    SERIAL_DATA:并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù)發(fā)送出去,當(dāng)CNT_SHIFT計(jì)數(shù)器減到0時(shí),傳輸結(jié)束,狀態(tài)跳入TX_IDLE。
2.3 串行移位時(shí)鐘設(shè)計(jì)
    SPI串行線上的主從設(shè)備必須根據(jù)具體要求設(shè)置匹配的傳輸時(shí)序模式,時(shí)序只有匹配,數(shù)據(jù)傳輸才能正常進(jìn)行。如果設(shè)置的不匹配,可能導(dǎo)致數(shù)據(jù)接收方和發(fā)送方在同一時(shí)鐘沿作用,而使數(shù)據(jù)傳輸失敗。本設(shè)計(jì)中的時(shí)鐘僅支持SP0模式,即串行時(shí)鐘處于空閑電平時(shí),空閑狀態(tài)時(shí)鐘的極性電平為低,在時(shí)鐘的前沿采樣數(shù)據(jù),時(shí)鐘后沿串行線上數(shù)據(jù)變化。
    在采樣時(shí)刻,線上數(shù)據(jù)必須已經(jīng)穩(wěn)定可靠,因此數(shù)據(jù)發(fā)送端設(shè)備應(yīng)提前將數(shù)據(jù)移出到數(shù)據(jù)線上,本SPI接口電路設(shè)計(jì)在同一串行移位時(shí)鐘周期中的前一個(gè)時(shí)鐘沿(即相反時(shí)鐘變化方向)將數(shù)據(jù)移出,移位時(shí)鐘設(shè)計(jì)為系統(tǒng)時(shí)鐘的兩分頻,為40/2MHz。
2.4 SPI相關(guān)寄存器描述
    在本設(shè)計(jì)中,共有四種32位寄存器,包括控制寄存器,從設(shè)備選擇寄存器,加載配置數(shù)據(jù)起始寄存器以及加載配置數(shù)據(jù)完成寄存器。
    控制寄存器用來(lái)控制配置信息加載方式,即:片外FLASH加載方式或主機(jī)直接加載方式。當(dāng)選擇片外FLASH加載方式時(shí),控制寄存器還用來(lái)控制一次數(shù)據(jù)傳輸?shù)拈L(zhǎng)度。CTRL寄存器的具體描述見(jiàn)表1。


    從設(shè)備選擇寄存器的SS位置“1”時(shí),表示選中從設(shè)備。置“0”表示不選擇任何從設(shè)備,本設(shè)計(jì)僅支持一個(gè)從設(shè)備。
    加載配置數(shù)據(jù)起始寄存器的SPICFGSTART位置“1”時(shí),配置數(shù)據(jù)自動(dòng)從FLASH中讀取并寫入到DPRAM中,置“0”不進(jìn)行讀FLASH操作。
    加載配置數(shù)據(jù)完成寄存器為只讀寄存器,用來(lái)判斷數(shù)據(jù)是否已經(jīng)加載完成。
2.5 SPI緩沖區(qū)設(shè)計(jì)
    圖4所示為主機(jī)可直接訪問(wèn)的SPI接口內(nèi)部DPRAM發(fā)送和接收數(shù)據(jù)緩沖區(qū)。


    SPI發(fā)送數(shù)據(jù)緩沖區(qū)深度65,數(shù)據(jù)位寬32位,其中地址22’h 3e0600存放訪問(wèn)AT25F1024存儲(chǔ)器的指令,當(dāng)進(jìn)行寫操作時(shí),從數(shù)據(jù)發(fā)送緩沖區(qū)最低位地址22’h3e0604開始,將數(shù)據(jù)搬運(yùn)出來(lái),串行發(fā)送到AT25F1024存儲(chǔ)器。
    SPI接收數(shù)據(jù)緩沖區(qū)深度65,數(shù)據(jù)位寬32位,其中地址22’h3e0400緩存讀取的AT25F1024配置和狀態(tài)信息,偏移地址22’h3e0404~22’ h3e0500緩存指定FLASH讀取的總線配置數(shù)據(jù)數(shù)據(jù),最大緩存2048位。

3 數(shù)據(jù)搬運(yùn)時(shí)間
3.1 主機(jī)寫片外FLASH的時(shí)間
    本設(shè)計(jì)使用的存儲(chǔ)器AT25F1024緩沖數(shù)據(jù)寄存器大小2048位,寫使能需要8個(gè)串行時(shí)鐘周期,向片外FLASH傳輸2048位數(shù)據(jù)需要2080個(gè)串行時(shí)鐘周期(包括了32位寫指令的傳輸數(shù)據(jù)),這樣寫一次需要時(shí)間為2088個(gè)時(shí)鐘周期,主機(jī)將1Mbits的FLASH填滿,時(shí)間大約為2088 x50ns(串行時(shí)鐘40/2MHz)×512 (填滿1Mbits需要512次寫操作)=53.4ms。讀1Mbits的FLASH需要的時(shí)間約為2080x50x512=53.2ms。圖5所示為主機(jī)寫片外FLASH時(shí)序圖。


3.2 讀取數(shù)據(jù)并加載到片內(nèi)DPRAM的時(shí)間
    通過(guò)SO管腳讀取AT25F1024的過(guò)程按下面順序執(zhí)行,當(dāng)片選拉低選擇此器件之后,通過(guò)SI線發(fā)送讀指令,后面跟隨要讀的地址(三個(gè)字節(jié)地址),指令傳輸完之后,SI線上的任何數(shù)據(jù)將被忽略。指定地址的數(shù)據(jù)接著被移出到SO線上。如果僅讀取一個(gè)字節(jié),當(dāng)數(shù)據(jù)讀出來(lái)之后,CS信號(hào)驅(qū)動(dòng)為高。讀指令繼續(xù)時(shí),字節(jié)地址自動(dòng)增加,并且數(shù)據(jù)不斷被搬運(yùn)出來(lái)。
    AT25F1024緩沖數(shù)據(jù)寄存器大小2048位,在本設(shè)計(jì)中,寫使能需要32個(gè)串行時(shí)鐘周期,這樣讀取一次需要時(shí)間為2080個(gè)時(shí)鐘周期,將片內(nèi)DPRAM(DPRAM大小14940字節(jié))填滿,時(shí)間大約為2080x50ns(串行時(shí)鐘40/2MHZ)x59(填滿片內(nèi)DPRAM需要大約59次讀操作)=6.13ms。

4 結(jié)束語(yǔ)
    本文從應(yīng)用的實(shí)際需求出發(fā),在FPGA中實(shí)現(xiàn)了對(duì)外部FLASH進(jìn)行讀寫的高速SPI接口,并已在某型板卡中成功應(yīng)用。本文重點(diǎn)用有限狀態(tài)機(jī)的形式對(duì)各部分的工作原理和實(shí)現(xiàn)方法進(jìn)行了描述。在FPGA資源比較緊張,限制管腳的使用數(shù)目,對(duì)速率又有比較高的需求的情況下,利用此SPI接口進(jìn)行數(shù)據(jù)的加載或者固化,具有很高的應(yīng)用價(jià)值。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉