SPI數據通信是常用的一種中低速芯片級的數據通信。SPI數據通信協議簡單,連線不多,而且是全雙工通信,因此廣泛用于實現數據轉換和數據存儲等功能。本章簡要介紹SPI數據通信的協議及主端與從端的VerilogHDL建模與仿真。
SPI數據通信協議
SPI是英文Serial Peripheral Interface的首字母縮寫,中文可以翻譯為串行外圍設備接口。SPI 是Motorola公司首先推出的一種同步串行接口。它用于CPU或者FPGA與各種外圍器件進行全雙工、同步串行數據通信。SPI 通信接口簡單,只需要4根線:clk同步時鐘信號、mosi主端輸出/從端輸人數據信號、miso主端輸人/從端輸出數據信號、cs從端片選信號(如果有多個從端,則需要有多個cs從端片選信號與之相對應)。SPI數據通信的同步串行傳輸順序是高位先傳、低位后傳。
四種SPI通信模式
SPI數據通信有4種模式,分別稱為模式1至模式4。不同的模式是由開始數據采樣的邊沿及時鐘的空閑狀態決定的。時鐘的空閑狀態有2種,即高電平與低電平,分別對應CPOL=1與CPOL=0,如圖18-1所示。
發送與接收數據的時鐘邊沿的情況也有2種:數據開始采樣發生在時鐘的第一個邊沿(也可理解為奇數邊沿進行數據采樣)與數據開始發送發生在時鐘的第二個邊沿(也可理解為偶數邊沿進行數據發送),分別對應 CPHA=0與CPHA=1,如圖18-2與圖18-3所示。
根據CPOL與CPHA的值,SPI的傳輸就可分為4種模式:模式0是CPOL=0,CPHA=0;模式1是CPOL= 1,CPHA=0;模式2是CPOL=0,CPHA=1;模式3是CPOL=1,CPHA=1。本章以模式0為例進行介紹。
對應圖18-2,分析在片選信號下降沿有效時開始發送最高位數據,其余的數據在時鐘信號的下降沿發送,最后一個時鐘下降沿不發送數據。而數據采樣發生在時鐘信號的上升沿。
SPI從端數據通信模塊
SPI從端數據通信模塊建模
SPI數據通信分主端與從端,從端被動地進行數據通信的接收與發送。從端被動的數據通信是根據時鐘信號與片選信號的邊沿進行判斷的。當片選信號的下降沿有效時發送最高位數據,當時鐘信號上升沿有效時進行數據采樣接收數據。根據以上分析設計Verilog HDL代碼如【代碼18-1】所列。
【代碼18-1】
【代碼18-1】編譯無誤后,設計【代碼18-1】的測試平臺,通過觀察分析波形來確定spi_slave模塊是否滿足SPI從端數據通信的邏輯功能。設計spi_slave模塊的測試平臺如【代碼18-2】所列。
【代碼18-2】
在ModelSim軟件中對【代碼18-1】進行波形仿真,如圖18-4所示。
波形仿真報告分析
在圖18-4上,先確定SPI主端發送的數據是00001001,SPI從端發送的數據是10000001。在373 ns時刻捕獲到SPI片選信號r_spi_cs的下沿,此時主、從端開始發送最高位數據0與1,在接下來的時鐘下降沿發送其余的數據,同時在時鐘的上升沿接收數據。最后,從端接收到的數據w_ srx_data為00001001,該數據與主端發送的數據00001001一致,說明SPI從端實現了數據通信。
SPI主端數據通佶模塊
SPI主端數據通信模塊建模
在數據通信模式上,SPI主端與SPI從端一樣,也分為4種模式,而且數據發送與接收的時序也基本一致。本節也是以模式0為例。與SPI從端不同的是,SPI主端多了產生片選信號與時鐘的邏輯,因為在SPI數據通信中,片選信號與時鐘信號是由SPI主端產生的。因此,只要根據模式0的時序關系產生相應的片選信號與時鐘信號,再實例化SPI從端模塊即可設計成SPI主端模塊。根據以上分析設計Verilog HDL代碼如【代碼18-3】所列。
【代碼18-3】
【代碼18-3】編譯無誤后,設計【代碼18-3】的測試平臺,通過觀察分析波形來確定spi_master模塊是否滿足SPI主端數據通信的邏輯功能。設計spi_master模塊的測試平臺如【代碼18-4】所列。
【代碼18-4】
在ModelSim軟件中對【代碼18-3】進行波形仿真,如圖18-5所示。
波形仿真報告分析
在圖18-5上,先確定SPI主端發送的數據r_mtx_data是00001101,SPI從端發送的數據r_stx_data是00001101。經過8個SPI時鐘周期之后,主、從端都接收到數據00001101,說明SPI主、從端實現了數據通信。
本篇知識點主要介紹有關SPI主、從端數據通信建模方面的內容,包括什么是SPI數據通信,四種SPI通信模式,以及SPI主、從端通信模塊建模的具體方法。另外,我們還講到如何基于Qsys的最小Nios II系統的搭建,基于其自帶的IP模塊的使用,包括了PIO模塊、UART模塊、定時器模塊以及SPI模塊等,基于Qsys的自定義外設、自定義指令的應用實例。
-
SPI
+關注
關注
17文章
1804瀏覽量
95892 -
數據通信
+關注
關注
2文章
470瀏覽量
34456
原文標題:FPGA設計應用實例——SPI主從端數據通信實現
文章出處:【微信號:elecfans,微信公眾號:電子發燒友網】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
數據通信的基本概念
無線移動數據通信,無線移動數據通信是什么意思
數據通信,數據通信原理是什么?

數據通信技術(華為資料)
數據通信基礎知識匯總
數據通信協議的簡介_數據通信協議有哪些

采用軟件模擬SPI總線實現雙單片機數據通信模塊的設計

詳談數據通信的傳輸損耗分類和原理

評論