FPGA SPI协议
本篇主要介紹SPI協(xié)議在FPGA內部的實現(xiàn),如何使用Verilog語言來搭建硬件描述電路,通過一款SPI通信協(xié)議的芯片ADC128S022來具體講解,ADC128S022是一款AD轉換芯片,具有8通道。
B站對應講解本文視頻鏈接
SPI概念:
SPI(Serial Peripheral Interface,串行外設接口)是Motorola公司提出的一種同步串行數(shù)據(jù)傳輸標準,在很多器件中被廣泛應用。
接口:
SPI接口經常被稱為4線串行總線,以主/從方式工作,數(shù)據(jù)傳輸過程由主機初始化。如圖1所示,其使用的4條信號線分別為:
在SPI總線上,某一時刻可以出現(xiàn)多個從機,但只能存在一個主機,主機通過片選線來確定要通信的從機。這就要求從機的MISO口具有三態(tài)特性,使得該口線在器件未被選通時表現(xiàn)為高阻抗。
ADC128S022具體時序:
該接口使用標準的SPI 接口,因此可以直接連接到微控制器的片上SPI。對于FPGA 來說,則可按照 SPI 時序搭建控制電路,以實現(xiàn)對ADC128S022 的控制。
特別要注意一下兩個的時序,DIN在SCLK的上升沿輸入,DOUT在SCLK的下降沿輸出,也就是說說DIN是在SCLK的下降沿改變,DOUT是在SCLK的上升沿改變。
借助器件的時序圖就可以具體來實現(xiàn)對器件的寫入和輸出數(shù)據(jù)了。
ADC128S022具體實現(xiàn)(線性序列機):
此處借鑒小梅哥FPGA該接口的時序是一個很有規(guī)律的序列,SCLK 信號什么時候該由低變高,什么時候由高變低。DIN 信號什么時候該傳輸哪一位數(shù)據(jù),都是可以根據(jù)時序參數(shù)唯一確定下來的。 這樣就可以將該數(shù)據(jù)波形放到以時間為橫軸的一個二維坐標系中,縱軸就是每個信號對應的狀態(tài)。因此只需要在邏輯中使用一個計數(shù)器來計數(shù),然后每個計數(shù)值時就相當于在t 軸上對應了一個相應的時間點,那么在這個時間點上,各個信號需要進行什么操作,直接賦值即可。
按照線性序列機的設計思路,可以整理得到每個信號發(fā)生變化時對應的時刻
以及此時對應的計數(shù)器的值。表為依照線性序列機的設計思想,整理得到的每個信號發(fā)生變化時對應的時刻以及此時對應的計數(shù)器的值。其中CS_N 為芯片狀態(tài)標志信號,SCLK 為芯片時鐘輸入腳,DIN 為芯片串行數(shù)據(jù)輸入,DOUT為芯片串行數(shù)據(jù)輸出。
ADC128S022 接口邏輯模塊圖如圖所示:
代碼:
modelsim仿真:
同理,無論是SPI協(xié)議還是其他例如UART還是IIC協(xié)議都是一樣的,實現(xiàn)器件的功能只需要去尋找所用的器件,然后根據(jù)器件中所給的時序圖,通過時序給器件發(fā)送和接收指令,實現(xiàn)控制各種器件,有不明白的,或者想要各種參考資料的可以聯(lián)系博主QQ:2859340499.
總結
以上是生活随笔為你收集整理的FPGA SPI协议的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 定时备份 MySQL 并上传到七牛
- 下一篇: Flask模板02