一種基于FPGA的可配置SPI Master接口設計實(shí)現
隨著(zhù)現場(chǎng)可編程門(mén)陣列(FPGA)芯片在商業(yè)、軍事、航空航天等領(lǐng)域的廣泛應用,其可靠性和可測試性顯得尤為重要。對設計人員來(lái)說(shuō),FPGA的使用相當靈活。然而,正是這種應用的不確定性和重復可編程性,增加了芯片的測試難度。其核心問(wèn)題是建立什么樣的測試模型才能使故障激活。根據需求,FPGA的測試大體可分為面向制造的測試過(guò)程(MTP)和面向應用的測試過(guò)程(ATP)兩類(lèi)。MTP主要是從制造商的角度來(lái)測試,ATP是在應用級上的測試,也就是把FPCA配置為特定的功能進(jìn)行測試,具有很強的針對性。本文介紹ATP測試中SPI Master模型的建立。在測試FPGA設計的集成電路時(shí),對設計電路的性能進(jìn)行實(shí)時(shí)測試是必不可少的環(huán)節。這就需要設計一種接口電路,將測試數據送人設計電路。
1 SPI總線(xiàn)協(xié)議介紹
SPI(Seri。n Perpheral Interface)是一種高速的、全雙工、同步的通信總線(xiàn),并且在芯片的管腳上只占用4根線(xiàn),節約了芯片的管腳,同時(shí)為PCB的布局節省空間,提供方便,正是出于這種簡(jiǎn)單易用的特性,越來(lái)越多的芯片集成了這種通信協(xié)議。SPI的通信原理很簡(jiǎn)單,它以主從方式工作,這種模式通常有一個(gè)主設各和一個(gè)或多個(gè)從設備,需要至少4根線(xiàn),事實(shí)上3根也可以(用于單向傳輸時(shí),也就是半雙工方式)。也是所有基于SPI的設各共有,分別是MIS0(數據輸人),M0SI(數據輸出),SCK(時(shí)鐘),NSS(片選),如圖1所示。
圖1 SPI總線(xiàn)時(shí)
?。?)M0SI:主設備數據輸出,從設備數據輸人。
?。?)MISO:主設各數據輸人,從設備數據輸出。
?。?)SCK:時(shí)鐘信號,由主設各產(chǎn)生。
?。?)NSS:從設各使能信號,由主設各控制。
使能信號低電平有效,當使能信號為低電平時(shí),輸出數據(M0SI)在串行時(shí)鐘(SCK)下降沿變化,輸人數據(MIS0)在(SCK)上升沿變化。
2 SPI Master原理
本文介紹的基于FPGA的、可配置的SPI Master接口設計,能滿(mǎn)足測試的各種正常、異常以及強度測試要求。此SPI接口模塊可設置為單次發(fā)送、循環(huán)發(fā)送(發(fā)送間隔可設);發(fā)送數據長(cháng)度可變;串行時(shí)鐘線(xiàn)(SCK)與輸出數據線(xiàn)(MOSI)時(shí)序關(guān)系可變;串行時(shí)鐘線(xiàn)(SCK)與使能信號(NSS)時(shí)序關(guān)系可變。
一般情況下,為了SPI數據發(fā)送的靈活性,SPI發(fā)送次數及發(fā)送間隔是由軟件實(shí)現的,當需要循環(huán)發(fā)送且發(fā)送間隔達到微秒甚至納秒數量級時(shí),軟件很難實(shí)現。本文將SPI發(fā)送次數以及發(fā)送間隔集成到SΠ Master模塊中,使SPI發(fā)送間隔可變且最小為一個(gè)SCK周期。按照SPI總線(xiàn)協(xié)議設計的SPI Master輸出數據(M0SI)在串行時(shí)鐘(SCK)下降沿變化,不能進(jìn)行異常時(shí)序測試,而異常時(shí)序在FPGAH的接口測試中又最為重要,故本文利用觸發(fā)器特性設計電路,使SPI發(fā)送數據時(shí)序可變,精度為1個(gè)系統時(shí)鐘周期。
3 SP丨Master模塊結構圖
SPI Master模塊由Bram接口、配置寄存器、控制器三部分組成,如圖2所示。此模塊系統時(shí)鐘為100 MHz。
圖2 SPI Master模塊結構圖
BRAY接口:控制配置參數以及SPI數據的讀寫(xiě)配置參數及SPI數據在BRAM中存儲結構如表1所示。
表1 BRAM存儲結構表
控制器:解析配置寄存器,產(chǎn)生發(fā)送時(shí)序,控制BRAM接口進(jìn)行數據讀寫(xiě)。
對配置寄存器說(shuō)明如下。
?。?)循環(huán)發(fā)送標識寄存器:1 bit,高電平標識循環(huán)發(fā)送,低電平標識單次發(fā)送。
?。?)循環(huán)發(fā)送次數寄存器:15 bit,若循環(huán)發(fā)送標識為高電平時(shí),此寄存器值為要發(fā)送的數據長(cháng)度,單位:B;發(fā)送模塊中包含一發(fā)送次數計數器,NSS從高電平變?yōu)榈碗娖?,發(fā)送次數計數器加1。
?。?)循環(huán)發(fā)送間隔寄存器:16 bit,若循環(huán)發(fā)送標識為高電平時(shí),此寄存器值為每?jì)纱伟l(fā)送間隔,單位:10 ns。(最小間隔為1個(gè)SCK周期,若小于1個(gè)SCK周期,則從設各不能檢測到NSS信號變化),發(fā)送模塊中包含1個(gè)發(fā)送間隔計數器,從一次SPI發(fā)送結束開(kāi)始計數,直到與循環(huán)發(fā)送間隔寄存器中值相等,啟動(dòng)下次發(fā)送。
?。?)SCK頻率寄存器:16 bit,此寄存器值表示串行時(shí)鐘tCK周期,單位為10 ns(系統時(shí)鐘為100 MHz,精度為⒛ns);時(shí)序模塊中包含一分頻模塊,SCK周期=(SCK頻率寄存器)×10 ns。
?。?)M0SI時(shí)序寄存器:8 bit,此寄存器值表示M0SI變化與SCK下降沿間隔時(shí)間,單位:10 ns(系統時(shí)鐘為100 MHz,因此最小間隔為lO ns)。
?。?)數據長(cháng)度寄存器:16 bit,此寄存器值表示要發(fā)送數據的長(cháng)度,單位:B。
?。?)NSS時(shí)序寄存器:8 bit,此寄存器值表示NSS變化與SCK下降沿間隔時(shí)間,單位:lO ns(系統時(shí)鐘為100 MHz,因此最小間隔為lO ns)。
4 SPI Master模塊功能介紹
?。?)SPI循環(huán)發(fā)送次數可變,范圍:1~32 767;(2)SPI數據發(fā)送長(cháng)度可變,范圍:1~65 535,單位:B;(3)SPI循環(huán)發(fā)送間隔可變,范圍:(1個(gè)SCK周期)~(65 536×10 ns),實(shí)現了連續發(fā)送,即一次SPI發(fā)送結束后下一SCK時(shí)鐘立即啟動(dòng)下次SPI發(fā)送;(4)MOSI與SCK時(shí)序關(guān)系可變,NSS與SCK時(shí)序關(guān)系可變,SPI總線(xiàn)為下降沿發(fā)送,上升沿接收,故MOSI、NSS在SCK下降沿后半個(gè)周期可調即可。
SPI功能流程如圖3所示,FPGA上電復位后不斷檢測SPI start信號,當SPI stalt信號有效時(shí)(高電平)啟動(dòng)SPI發(fā)送,讀取BRAM中的配置參數,進(jìn)行澤碼,依據譯碼后數據長(cháng)度值讀取BRAM中數據,按照SPI協(xié)議發(fā)送數據;完成一次SPI發(fā)送后判斷是否為循環(huán)發(fā)送,若為循環(huán)發(fā)送則啟動(dòng)下一次SPI發(fā)送,直到發(fā)送次數等于循環(huán)發(fā)送次數寄存器值,萁中發(fā)送間隔由循環(huán)發(fā)送間隔寄存器值決定。
圖3功能流程圖
4.1單次發(fā)送(正常時(shí)序)
SPI Master控制器檢測到SPl_start信號有效,即控制Bram接口讀取配置參數,經(jīng)譯碼后若循環(huán)發(fā)送標識寄存器為低電平,則配合發(fā)送長(cháng)度寄存器讀取BRAM中數據,并進(jìn)行發(fā)送。
4.2單次發(fā)送(異常時(shí)序)
M051異常時(shí)序:正常情況下M0SI在SCK下降沿變化,此設計采用一帶抽頭的序列寄存器產(chǎn)生異常時(shí)序,如圖4。
圖4異常時(shí)序產(chǎn)生模塊結構圖
每增加一個(gè)觸發(fā)器,延時(shí)增加一個(gè)系統時(shí)鐘,多路開(kāi)關(guān)依據M051日寸序寄存器中值選擇相應觸發(fā)器輸出,產(chǎn)生異常時(shí)序,舉例說(shuō)明如圖5。
圖5中sys_clk為系統時(shí)鐘頻率100 MHz,NSS為使能信號;MOSI為串行輸出信號;當SCK頻率寄存器為10時(shí),SPI串行時(shí)鐘SCK周期=(SCK頻率寄存器)×10 ns=100 ns,即SCK頻率為10 MHz;當M0SI時(shí)序寄存器值為4時(shí),M0SI在SCK下降沿后4個(gè)sys elk開(kāi)始變化。
圖5 SPI異常時(shí)序圖
4.3循環(huán)發(fā)送(時(shí)序正常)
每完成一次SPI發(fā)送,發(fā)送次數計數器加1,當發(fā)送次數計數器中的值與循環(huán)發(fā)送次數寄存器中值相等時(shí),完成循環(huán)發(fā)送。發(fā)送次數由循環(huán)發(fā)送次數寄存器值決定,循環(huán)發(fā)送間隔由發(fā)送間隔計數器決定。
4.4循環(huán)發(fā)送(時(shí)序異常)
類(lèi)似循環(huán)發(fā)送(正常時(shí)序),異常時(shí)序產(chǎn)生類(lèi)似單次發(fā)送(異常時(shí)序)。
實(shí)現的目標器件是Xilinx的Vitex2 pro開(kāi)發(fā)板。本文已應用于中國科學(xué)院光電研究院測試平臺中,實(shí)現了SPI接口以及與其功能相關(guān)的的測試。與同類(lèi)SPI Master相比,發(fā)送間隔可變、精度高,最小間隔僅為1個(gè)SCK時(shí)鐘周期;發(fā)送時(shí)序可變,精度高,為1個(gè)系統時(shí)鐘周期;基本滿(mǎn)足正常、異常以及強度等測試要求。
評論