基于A(yíng)T25T1024 FLASH的高速SPI接口設計
SPI_CTRL控制模塊可將發(fā)送緩沖區0的數據讀出來(lái),經(jīng)過(guò)并串轉換,發(fā)送到串行線(xiàn)SI上,并且控制從串行線(xiàn)SO上接收數據,存儲在接收緩沖區,并行數據轉換成串行輸出由并串轉換狀態(tài)機來(lái)控制實(shí)現,見(jiàn)圖3。

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

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

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