《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 一種基于FPGA的可配置SPI Master接口設計實現
一種基于FPGA的可配置SPI Master接口設計實現
來源:電子技術應用2010年第10期
李大江,崔建明
山東科技大學 信息科學與工程學院,山東 青島266510
摘要: 介紹一種基于FPGA的SPI Master Interface設計。依據SPI同步串行接口的通信協議, 設計一個可配置的、高度靈活的SPI Master 模塊,以滿足正常、異常及強度測試要求。利用Verilog 語言實現SPI接口的設計原理和編程思想。
中圖分類號: TP332
文獻標識碼: A
文章編號: 0258-7998(2010)10-0060-03
The design and implementation of configurable SPI master interface based on FPGA
LI Da Jiang,CUI Jian Ming
1.College of Information Science and Engineering , Shandong University of Science and Technology , Qingdao 266510,China
Abstract: The design of SPI master interface by FPGA is detailed described in this paper.According to communication protocol of SPI synchronous serial interface,a configurable and highly flexible SPI master interface is introduced, to meet the requirements of normal test,exception test, and strength test. This paper presents the design theory and programming idea of implementing SPI interface with Verilog language.
Key words : SPI synchronous serial interface;filed programmable gate array;test

    隨著現場可編程門陣列(FPGA)芯片在商業、軍事、航空航天等領域的廣泛應用,其可靠性和可測試性顯得尤為重要。對設計人員來說,FPGA的使用相當靈活。然而,正是這種應用的不確定性和重復可編程性,增加了芯片的測試難度。其核心問題是建立什么樣的測試模型才能使故障激活。根據需求,FPGA的測試大體可分為面向制造的測試過程(MTP)和面向應用的測試過程(ATP)兩類。MTP主要是從制造商的角度來測試,ATP是在應用級上的測試,也就是把FPGA配置為特定的功能進行測試,具有很強的針對性[1]。本文介紹ATP測試中SPI Master 模型的建立。在測試FPGA設計的集成電路時,對設計電路的性能進行實時測試是必不可少的環節[2]。這就需要設計一種接口電路,將測試數據送入設計電路。
1 SPI總線協議介紹
    SPI(Serion Perpheral Interface)[3]是一種高速的、全雙工、同步的通信總線,并且在芯片的管腳上只占用4根線,節約了芯片的管腳,同時為PCB的布局節省空間,提供方便,正是出于這種簡單易用的特性,越來越多的芯片集成了這種通信協議。SPI的通信原理很簡單,它以主從方式工作,這種模式通常有一個主設備和一個或多個從設備,需要至少4根線,事實上3根也可以(用于單向傳輸時,也就是半雙工方式)。也是所有基于SPI的設備共有,分別是MISO(數據輸入),MOSI(數據輸出),SCK(時鐘),NSS(片選),如圖1所示。

    (1)MOSI:主設備數據輸出,從設備數據輸入。
    (2)MISO:主設備數據輸入,從設備數據輸出。
    (3)SCK:時鐘信號,由主設備產生。
    (4)NSS:從設備使能信號,由主設備控制。
    使能信號低電平有效,當使能信號為低電平時,輸出數據(MOSI)在串行時鐘(SCK)下降沿變化,輸入數據(MISO)在(SCK)上升沿變化。
2 SPI Master原理
    本文介紹的基于FPGA的、可配置的SPI Master接口設計,能滿足測試的各種正常、異常以及強度測試要求。此SPI接口模塊可設置為單次發送、循環發送(發送間隔可設);發送數據長度可變;串行時鐘線(SCK)與輸出數據線(MOSI)時序關系可變;串行時鐘線(SCK)與使能信號(NSS)時序關系可變。
    一般情況下,為了SPI數據發送的靈活性,SPI發送次數及發送間隔是由軟件實現的,當需要循環發送且發送間隔達到微秒甚至納秒數量級時,軟件很難實現。本文將SPI發送次數以及發送間隔集成到SPI Master模塊中,使SPI發送間隔可變且最小為一個SCK周期。按照SPI總線協議設計的SPI Master輸出數據(MOSI)在串行時鐘(SCK)下降沿變化,不能進行異常時序測試,而異常時序在FPGA[4,5]的接口測試中又最為重要,故本文利用觸發器特性設計電路,使SPI發送數據時序可變,精度為1個系統時鐘周期。
3 SPI Master 模塊結構圖
    SPI Master模塊由Bram接口、配置寄存器、控制器三部分組成,如圖2所示。此模塊系統時鐘為100 MHz。
    BRAM接口:控制配置參數以及SPI數據的讀寫配置參數及SPI數據在BRAM中存儲結構如表1所示。


    控制器:解析配置寄存器,產生發送時序,控制BRAM接口進行數據讀寫。
    對配置寄存器說明如下。
    (1)循環發送標識寄存器:1 bit,高電平標識循環發送,低電平標識單次發送。
    (2)循環發送次數寄存器:15 bit,若循環發送標識為高電平時,此寄存器值為要發送的數據長度,單位:B;發送模塊中包含一發送次數計數器,NSS從高電平變為低電平,發送次數計數器加1。
    (3)循環發送間隔寄存器:16 bit,若循環發送標識為高電平時,此寄存器值為每兩次發送間隔,單位:10 ns。(最小間隔為1個SCK周期,若小于1個SCK周期,則從設備不能檢測到NSS信號變化),發送模塊中包含1個發送間隔計數器,從一次SPI發送結束開始計數,直到與循環發送間隔寄存器中值相等,啟動下次發送。
    (4)SCK頻率寄存器:16 bit,此寄存器值表示串行時鐘SCK周期,單位為10 ns(系統時鐘為100 MHz,精度為20 ns);時序模塊中包含一分頻模塊,SCK周期=(SCK頻率寄存器)×10 ns。
    (5)MOSI時序寄存器:8 bit,此寄存器值表示MOSI變化與SCK下降沿間隔時間,單位:10 ns(系統時鐘為100 MHz,因此最小間隔為10 ns)。
    (6)數據長度寄存器:16 bit,此寄存器值表示要發送數據的長度,單位:B。
    (7)NSS時序寄存器:8 bit,此寄存器值表示NSS變化與SCK下降沿間隔時間,單位:10 ns(系統時鐘為100 MHz,因此最小間隔為10 ns)。
4 SPI Master模塊功能介紹
    (1)SPI循環發送次數可變,范圍:1~32 767;(2)SPI數據發送長度可變,范圍:1~65 535,單位:B;(3)SPI循環發送間隔可變,范圍:(1個SCK周期)~(65 536×10 ns),實現了連續發送,即一次SPI發送結束后下一SCK時鐘立即啟動下次SPI發送;(4)MOSI與SCK時序關系可變,NSS與SCK時序關系可變,SPI總線為下降沿發送,上升沿接收,故MOSI、NSS在SCK下降沿后半個周期可調即可。
    SPI功能流程如圖3所示,FPGA上電復位后不斷檢測SPI_start信號,當SPI_start信號有效時(高電平)啟動SPI發送,讀取BRAM中的配置參數,進行譯碼,依據譯碼后數據長度值讀取BRAM中數據,按照SPI協議發送數據;完成一次SPI發送后判斷是否為循環發送,若為循環發送則啟動下一次SPI發送,直到發送次數等于循環發送次數寄存器值,其中發送間隔由循環發送間隔寄存器值決定。

4.1 單次發送(正常時序)
    SPI Master控制器檢測到SPI_start信號有效,即控制Bram接口讀取配置參數,經譯碼后若循環發送標識寄存器為低電平,則配合發送長度寄存器讀取BRAM中數據,并進行發送。
4.2 單次發送(異常時序)
    MOSI異常時序:正常情況下MOSI在SCK下降沿變化,此設計采用一帶抽頭的序列寄存器產生異常時序,如圖4。

    每增加一個觸發器,延時增加一個系統時鐘[6],多路開關依據MOSI時序寄存器中值選擇相應觸發器輸出,產生異常時序,舉例說明如圖5。

    圖5中sys_clk為系統時鐘頻率100 MHz,NSS為使能信號;MOSI為串行輸出信號;當SCK頻率寄存器為10時,SPI串行時鐘SCK周期=(SCK頻率寄存器)×10 ns=100 ns,即SCK頻率為10 MHz;當MOSI時序寄存器值為4時,MOSI在SCK下降沿后4個sys_clk開始變化。
4.3 循環發送(時序正常)
      每完成一次SPI發送,發送次數計數器加1,當發送次數計數器中的值與循環發送次數寄存器中值相等時,完成循環發送。發送次數由循環發送次數寄存器值決定,循環發送間隔由發送間隔計數器決定。
4.4 循環發送(時序異常)
      類似循環發送(正常時序),異常時序產生類似單次發送(異常時序)。
    實現的目標器件是Xilinx的Virtex2 pro開發板。本文已應用于中國科學院光電研究院測試平臺中,實現了SPI接口以及與其功能相關的的測試。
    與同類SPI Master相比,發送間隔可變、精度高,最小間隔僅為1個SCK時鐘周期;發送時序可變,精度高,為1個系統時鐘周期;基本滿足正常、異常以及強度等測試要求。
參考文獻
[1] 唐恒標,馮建華,馮建科.基于測試系統的FPGA邏輯資源的測試[J],微電子學,2006(6).
[2] (美)伯杰龍(Bergeron,J.)著,編寫測試平臺:HDL模型的功能驗證(第二版)[M],張春等譯.北京:電子工業出版社,2006.
[3] 孫曉云.接口與通信技術原理與應用[M].北京:中國電力出版社,2007.
[4] 李云松.Xilinx FPGA設計基礎[M].西安:西安電子科技大學出版社,2008.
[5] 薛小剛,葛毅敏.Xilinx ISE 9.X FPGA/CPLD設計指南[M]. 北京:人民郵電出版社,2007.
[6] 夏宇文.Verilog數字系統設計教程[M].北京:北京航空航天大學出版社,2008.

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 亚洲精品无码久久毛片| 国产三级在线视频播放线| 99久久国产综合精品1尤物| 成人免费视频网站www| 久久国产精品一国产精品金尊| 欧美午夜成年片在线观看| 亚洲色图校园春色| 精品一区二区三区四区五区| 国产720刺激在线视频| 韩国久播影院理论片不卡影院| 国产精品99久久久久久人| 91精品国产免费久久国语麻豆| 女人张开大腿让男人桶| 三男三女换着曰| 抽搐一进一出gif免费视频| 久久国产中文字幕| 最新国产精品精品视频| 亚洲国产一成人久久精品| 毛片大全免费观看| 人妻少妇偷人精品视频| 精品一区二区久久久久久久网站| 四虎免费久久影院| 草莓视频未满十八岁| 国产午夜无码福利在线看网站| 国产私拍福利精品视频网站| 国产精品久久久久久亚洲影视| 8x8×在线永久免费视频| 国外欧美一区另类中文字幕| 9自拍视频在线观看| 天天澡天天碰天天狠伊人五月| 一个人看的片免费高清大全| 成人免费男女视频网站慢动作| 中文字幕第十页| 无码人妻精品一区二区三区久久| 久久九九精品国产综合喷水| 日本精品啪啪一区二区三区| 久久国产美女免费观看精品| 日韩午夜激情视频| 久久精品国产亚洲AV蜜臀色欲 | 国产揄拍国内精品对白| 日本理论片www视频|