SPI數(shù)據通信是常用的一種中低速芯片級的數(shù)據通信。SPI數(shù)據通信協(xié)議簡單,連線不多,而且是全雙工通信,因此廣泛用于實現(xiàn)數(shù)據轉換和數(shù)據存儲等功能。本章簡要介紹SPI數(shù)據通信的協(xié)議及主端與從端的VerilogHDL建模與仿真。
SPI數(shù)據通信協(xié)議
SPI是英文Serial Peripheral Interface的首字母縮寫,中文可以翻譯為串行外圍設備接口。SPI 是Motorola公司首先推出的一種同步串行接口。它用于CPU或者FPGA與各種外圍器件進行全雙工、同步串行數(shù)據通信。SPI 通信接口簡單,只需要4根線:clk同步時鐘信號、mosi主端輸出/從端輸人數(shù)據信號、miso主端輸人/從端輸出數(shù)據信號、cs從端片選信號(如果有多個從端,則需要有多個cs從端片選信號與之相對應)。SPI數(shù)據通信的同步串行傳輸順序是高位先傳、低位后傳。
四種SPI通信模式
SPI數(shù)據通信有4種模式,分別稱為模式1至模式4。不同的模式是由開始數(shù)據采樣的邊沿及時鐘的空閑狀態(tài)決定的。時鐘的空閑狀態(tài)有2種,即高電平與低電平,分別對應CPOL=1與CPOL=0,如圖18-1所示。

發(fā)送與接收數(shù)據的時鐘邊沿的情況也有2種:數(shù)據開始采樣發(fā)生在時鐘的第一個邊沿(也可理解為奇數(shù)邊沿進行數(shù)據采樣)與數(shù)據開始發(fā)送發(fā)生在時鐘的第二個邊沿(也可理解為偶數(shù)邊沿進行數(shù)據發(fā)送),分別對應 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,分析在片選信號下降沿有效時開始發(fā)送最高位數(shù)據,其余的數(shù)據在時鐘信號的下降沿發(fā)送,最后一個時鐘下降沿不發(fā)送數(shù)據。而數(shù)據采樣發(fā)生在時鐘信號的上升沿。
SPI從端數(shù)據通信模塊
SPI從端數(shù)據通信模塊建模
SPI數(shù)據通信分主端與從端,從端被動地進行數(shù)據通信的接收與發(fā)送。從端被動的數(shù)據通信是根據時鐘信號與片選信號的邊沿進行判斷的。當片選信號的下降沿有效時發(fā)送最高位數(shù)據,當時鐘信號上升沿有效時進行數(shù)據采樣接收數(shù)據。根據以上分析設計Verilog HDL代碼如【代碼18-1】所列。
【代碼18-1】






【代碼18-1】編譯無誤后,設計【代碼18-1】的測試平臺,通過觀察分析波形來確定spi_slave模塊是否滿足SPI從端數(shù)據通信的邏輯功能。設計spi_slave模塊的測試平臺如【代碼18-2】所列。
【代碼18-2】





在ModelSim軟件中對【代碼18-1】進行波形仿真,如圖18-4所示。

波形仿真報告分析
在圖18-4上,先確定SPI主端發(fā)送的數(shù)據是00001001,SPI從端發(fā)送的數(shù)據是10000001。在373 ns時刻捕獲到SPI片選信號r_spi_cs的下沿,此時主、從端開始發(fā)送最高位數(shù)據0與1,在接下來的時鐘下降沿發(fā)送其余的數(shù)據,同時在時鐘的上升沿接收數(shù)據。最后,從端接收到的數(shù)據w_ srx_data為00001001,該數(shù)據與主端發(fā)送的數(shù)據00001001一致,說明SPI從端實現(xiàn)了數(shù)據通信。
SPI主端數(shù)據通佶模塊
SPI主端數(shù)據通信模塊建模
在數(shù)據通信模式上,SPI主端與SPI從端一樣,也分為4種模式,而且數(shù)據發(fā)送與接收的時序也基本一致。本節(jié)也是以模式0為例。與SPI從端不同的是,SPI主端多了產生片選信號與時鐘的邏輯,因為在SPI數(shù)據通信中,片選信號與時鐘信號是由SPI主端產生的。因此,只要根據模式0的時序關系產生相應的片選信號與時鐘信號,再實例化SPI從端模塊即可設計成SPI主端模塊。根據以上分析設計Verilog HDL代碼如【代碼18-3】所列。
【代碼18-3】










【代碼18-3】編譯無誤后,設計【代碼18-3】的測試平臺,通過觀察分析波形來確定spi_master模塊是否滿足SPI主端數(shù)據通信的邏輯功能。設計spi_master模塊的測試平臺如【代碼18-4】所列。
【代碼18-4】






在ModelSim軟件中對【代碼18-3】進行波形仿真,如圖18-5所示。

波形仿真報告分析
在圖18-5上,先確定SPI主端發(fā)送的數(shù)據r_mtx_data是00001101,SPI從端發(fā)送的數(shù)據r_stx_data是00001101。經過8個SPI時鐘周期之后,主、從端都接收到數(shù)據00001101,說明SPI主、從端實現(xiàn)了數(shù)據通信。
本篇知識點主要介紹有關SPI主、從端數(shù)據通信建模方面的內容,包括什么是SPI數(shù)據通信,四種SPI通信模式,以及SPI主、從端通信模塊建模的具體方法。另外,我們還講到如何基于Qsys的最小Nios II系統(tǒng)的搭建,基于其自帶的IP模塊的使用,包括了PIO模塊、UART模塊、定時器模塊以及SPI模塊等,基于Qsys的自定義外設、自定義指令的應用實例。
-
SPI
+關注
關注
17文章
1893瀏覽量
101718 -
數(shù)據通信
+關注
關注
2文章
538瀏覽量
35155
原文標題:FPGA設計應用實例——SPI主從端數(shù)據通信實現(xiàn)
文章出處:【微信號:elecfans,微信公眾號:電子發(fā)燒友網】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
數(shù)據通信基礎課件
數(shù)據通信基礎
數(shù)據通信的基本概念
什么是數(shù)據通信
無線移動數(shù)據通信,無線移動數(shù)據通信是什么意思
數(shù)據通信,數(shù)據通信原理是什么?
數(shù)據通信技術(華為資料)
數(shù)據通信基礎知識匯總
數(shù)據通信協(xié)議的簡介_數(shù)據通信協(xié)議有哪些
采用軟件模擬SPI總線實現(xiàn)雙單片機數(shù)據通信模塊的設計
詳談數(shù)據通信的傳輸損耗分類和原理
SPI主、從端數(shù)據通信建模的基礎知識
評論