《電子技術應用》
您所在的位置:首頁 > 可编程逻辑 > 设计应用 > 一种基于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網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 亚洲精品欧洲精品| 久久久国产精品一区| 久久久久久久久亚洲| 精品成在人线av无码免费看| 亚洲 国产 欧美一区| 国产精品久久77777| 久久99久久久久久久噜噜| 99在线看视频| 国产欧洲精品视频| 精品日韩在线播放| 久久久久久久国产精品视频| 日本午夜精品一区二区三区| 日韩视频第二页| aaa级精品久久久国产片| 国产精品久久久久久久av大片| 久久99国产精品| 久久亚洲国产成人| 欧美亚洲国产另类| 免费在线国产精品| 久久在线中文字幕| 久久精品日韩精品| 久久国产精品亚洲va麻豆| 麻豆成人av| 久久久久久国产精品久久| 久久免费在线观看| 久久99精品久久久水蜜桃| 久久综合五月天| 久久99久久99精品中文字幕| 国产综合免费视频| 国产欧美 在线欧美| 国产乱子夫妻xx黑人xyx真爽 | 奇米精品一区二区三区| 日韩中文字幕在线免费观看| 日韩网址在线观看| 亚洲欧美日韩综合一区| 亚洲精品中文字幕乱码三区不卡| 色婷婷综合久久久久| 日韩精品一区在线视频| 欧美日韩精品在线一区二区| 欧美激情第6页V| 久久久成人av|