基于FPGA的串行外圍接口SPI設計與實現
2012年05月23日 10:18 來源:互聯網 作者:秩名 我要評論(0)
引言
SPI(串行外圍接口)總線,是一個同步串行接口的數據總線,它具有全雙工、信號線少、協議簡單、傳輸速度快等優點。由于串行總線的信號線比并行總線更少、更簡單,越來越多的系統放棄使用并行總線而采用串行總線。在眾多串行總線中,SPI 總線與I2C 總線、CAN 總線、USB 等其他常用總線相比有很大優勢,如SPI 總線的數據傳輸速度可達若干Mbps, 比I2C 總線快很多。SPI 總線最典型的應用就是主機與外圍設備(如EEPROM、Flash RAM、A/D 轉換器、LED 顯示器、實時時鐘等)之間的通信。
FPGA(現場可編程門陣列)是在PAL、GAL、PLD 等可編程器件的基礎上進一步發展的產物,具有設計周期短、可重復編程、靈活性強等特點。用FPGA 設計的SPI 總線具有可擴展性強、便于修改等優點。只要對設計做簡單的改動,即可對SPI 總線的數據位數、工作模式等進行擴展,充分發揮了FPGA 的優勢。
1 SPI 總線的結構和工作原理
SPI 總線區分主機(Master)和從機(Slave)兩部分,它的結構框圖如圖1 所示。
圖1 SPI 總線結構框圖
主機和從機之間通過4 根信號線連接,分別是SCK、MOSI、MISO、CS,它們的定義如下。
SCK:同步時鐘信號,用來同步主機和從機的數據傳輸,由主機控制輸出,從機在SCK 的邊沿接收和發送數據;MOSI:主機輸出、從機輸入信號,主機在上升沿(或下降沿)通過該信號線發送數據給從機,從機在下降沿(或上升沿)通過該信號線接收該數據;MISO:主機輸入、從機輸出信號,從機在上升沿(或下降沿)通過該信號線發送數據給主機,主機在下降沿(或上升沿)通過該信號線接收該數據;CS:從機片選信號,由主機控制輸出。
其工作原理是: 當沒有數據需要在主機和從機之間傳輸時,主機控制SCK 輸出空閑電平,CS 輸出無效電平,SPI 總線處于空閑狀態;當有數據需要傳輸時,主機控制CS 輸出有效電平,SCK輸出時鐘信號,SPI 總線處于工作狀態;在某個時鐘邊沿,主機和從機同時發送數據,將數據分別傳輸到MOSI 和MISO 上;在下一個時鐘邊沿,主機和從機同時接收數據,分別將MISO 和MOSI上的數據接收并存儲;當數據全部傳輸完畢時,主機控制SCK 輸出空閑電平,CS 輸出無效電平,SPI 總線重新回到空閑狀態。至此,一個完整的SPI 總線數據傳輸過程完成。
SPI 總線有兩個控制位:CPOL 和CPHA.將SCK 的空閑電平用IDLE 表示,非空閑電平用ACTIVE 表示。CPOL 用來選擇IDLE 的電平值。當CPOL=0 時,IDLE=0;當CPOL=1 時,IDLE=1.
CPHA 用來選擇接收數據的時刻。當CPHA=0 時, 接收時刻是IDLE-ACTIVE 邊沿;當CPHA=1 時,接收時刻是ACTIVE-IDLE邊沿。根據CPOL 和CPHA 的取值情況,SPI 總線共有4 種不同的工作模式。圖2 給出了SPI 總線在不同工作模式下的工作時序。
圖2 SPI 總線的工作時序
當CPHA=0 時,MOSI 和MISO 的時序有所不同,主要是第一個數據位MSB 的發送時刻不同。MOSI 的MSB 在SCK 的第一個IDLE-ACTIVE 邊沿的前半個周期由主機發送到MOSI 上;而MISO 的MSB 則在CS 信號的下降沿由從機發送到MISO 上。當CPHA=1 時,MOSI 和MISO 的時序完全相同。
2 SPI 主機模塊的設計
本文設計的SPI 主機模塊主要完成以下工作:
(1) 將主機收到的8 位并行數據轉換為串行數據,并發送給從機;(2) 接收來自從機的串行數據,將其轉換為并行數據,通過并行端口輸出;(3) 輸出從機所需要的輸入信號、時鐘信號SCK 和片選信號CS。
在數據串并轉換的過程中, 必須用到寄存器來存放臨時數據。一般情況下,發送數據需要1 個發送寄存器,接收數據需要1個接收寄存器,則至少需要2 個寄存器。在SPI 總線中,每發送1個數據位則發送寄存器多出1 個空閑位, 正好可以在半個周期后用來接收1 個數據位。為了減少資源消耗,可以用1 個移位寄存器來代替2 個獨立的接收寄存器和發送寄存器。圖3 所示為SPI 總線的硬件結構框圖,其中MaSTer 和Slave 各使用1 個移位寄存器接收和發送數據。
圖3 SPI 總線的硬件結構
上周熱點文章排行榜
上周資料下載排行榜
論壇熱帖
熱門博文
創新實用技術專題
熱評
- LM3S9B96開發板手冊及原理圖
- STM32F103ZET6紅牛電路圖
- 高通發布全新設計DragonBoard板
- NI推出Single-Board RIO嵌入式介面
- protel99se正式漢化版免費下載
- hi3515海思原版原理圖
- matlab 7.0軟件下載(免費破解版)
- TX-1C型單片機開發板原理圖
- 三菱A500變頻器原理圖
- 三相IGBT全橋隔離驅動電源設計
博文
- 問什么郵箱激活不了
- 八成大學生認同先就業后擇業
- 我的心路
- 你是否曾這樣傷害過一個人?
- 為什么郵箱激活不了
- 2012.5.12 第一個DS18B20程序
- 到底有多少人在校園里浪費青春
- 藍牙技術越來越雞肋
- 【博客分享季】 我的單片機入門
- 到底有多少人在校園里浪費青春
用戶評論
查看全部 條評論
查看全部 條評論>>