《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 一種基于FPGA的可配置SPI Master接口設(shè)計實現(xiàn)
一種基于FPGA的可配置SPI Master接口設(shè)計實現(xiàn)
來源:電子技術(shù)應(yīng)用2010年第10期
李大江,崔建明
山東科技大學(xué) 信息科學(xué)與工程學(xué)院,山東 青島266510
摘要: 介紹一種基于FPGA的SPI Master Interface設(shè)計,。依據(jù)SPI同步串行接口的通信協(xié)議,, 設(shè)計一個可配置的、高度靈活的SPI Master 模塊,以滿足正常、異常及強度測試要求,。利用Verilog 語言實現(xiàn)SPI接口的設(shè)計原理和編程思想,。
中圖分類號: 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

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

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


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

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

    每增加一個觸發(fā)器,,延時增加一個系統(tǒng)時鐘[6],多路開關(guān)依據(jù)MOSI時序寄存器中值選擇相應(yīng)觸發(fā)器輸出,,產(chǎn)生異常時序,,舉例說明如圖5。

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

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。