(中國船舶重工集團公司第七二二研究所 武漢 430079)
在通信產(chǎn)品設(shè)計中,一般都會采用可拔插的多板卡設(shè)計,板卡分為兩類:一類為主控板,主要實現(xiàn)數(shù)據(jù)交換、網(wǎng)管代理、配置保存和下載、狀態(tài)查詢和上報等功能,設(shè)計較為復(fù)雜;另一類為接口板,主要實現(xiàn)數(shù)據(jù)轉(zhuǎn)換和接口適配功能,設(shè)計一般較為簡單。設(shè)備中主控板一般只有一塊(如果需要冗余設(shè)計則為兩塊),而接口板有多塊,所有板卡均插在一塊背板上。為了實現(xiàn)統(tǒng)一管理,主控板和接口板間需要增加管理通道。
對于管理通道,也有兩種實現(xiàn)方式:一種是主控板和接口板均配置CPU 芯片,板卡間采用HDLC 接口或以太網(wǎng)接口實現(xiàn)管理通道,這樣就需要每塊板卡都編寫軟件代碼,對于接口眾多而接口板實現(xiàn)簡單的設(shè)備而言,設(shè)計工作量大、成本高;另一種是僅在主控板上配置CPU 芯片,通過主控板提供并行數(shù)據(jù)/地址總線連接到各接口板上,接口板上的芯片可以直接由主控板通過總線進行控制,這樣可以簡化軟件的代碼編寫,但由于并行數(shù)據(jù)/地址總線信號數(shù)量眾多,設(shè)備背板設(shè)計將會很復(fù)雜,同時由于一組總線連接到多塊接口板卡,其可靠性會降低。
本文綜合這兩種實現(xiàn)方式的優(yōu)點,在此基礎(chǔ)上提出了一種新的實現(xiàn)方式,即主控板通過FPGA 芯片擴展出多個通道的SPI主模式接口,而接口板通過EPLD 芯片實現(xiàn)SPI從模式接口,再通過背板將主控板的SPI接口與接口板的SPI接口一一對應(yīng)連接,主控板即可通過SPI接口對接口板進行管理操作。
SPI(Serial Peripheral Interface—串行外設(shè)接口)總線是一種同步串行外設(shè)接口,它可以使MCU 與各種外圍設(shè)備以串行方式進行通信以交換信息。該接口一般使用四條線:串行時鐘線(SCLK)、主機輸入/從機輸出數(shù)據(jù)線MISO、主機輸出/從機輸入數(shù)據(jù)線MOSI和低電平有效的從機選擇線SS。SPI接口傳輸?shù)臄?shù)據(jù)一般為八位,在主器件產(chǎn)生的從器件使能信號和移位脈沖下,按位傳輸,高位在前,低位在后。
本方案中采用的FPGA 芯片是Xilinx公司的Spartan-6系列[4]。該系列由13 個成員組成,可提供的密度從3,840 個邏輯單元到147,443 個邏輯單元不等。Spartan-6系列采用成熟的45nm 低功耗銅制程技術(shù)制造,與上一代Spartan 系列相比,該系列功耗僅為其50%,且速度更快、連接功能更豐富全面。Spartan-6FPGA 具備堅實的可編程芯片基礎(chǔ),且成本低,非常適用于可提供集成軟硬件組件的目標(biāo)設(shè)計平臺。
圖1 方案設(shè)計框圖
本方案中采用FPGA 芯片實現(xiàn)16路SPI主模式接口,同時采用EPLD 芯片實現(xiàn)單路SPI從模式接口,具體框圖如圖1所示。
由于需要擴展16路SPI主模式接口,所采用的邏輯資源較多,所以FPGA 芯片采用了Spartan-6 系列的XC6SLX9型號,該型號具備9152個邏輯單元和102 個可用IO 口管腳,且功耗很小,EPLD 芯片則采用了Altera公司的MAX II系列的EPM240芯片,也同樣具備成本低和功耗小的特點。
本方案由于SPI接口的主從模式均由邏輯實現(xiàn),為統(tǒng)一設(shè)計,規(guī)范SPI接口的時序如下:
寫操作時,SPI主模式接口在片選有效后,從時鐘上升沿先輸出地址,再輸出數(shù)據(jù),高位在前,低位在后;讀操作時,SPI主模式接口同樣先輸出地址,然后由SPI從模式接口在時鐘上升沿輸出數(shù)據(jù),也是高位在前,低位在后。地址的最高位bit作為讀寫指示信號,bit為0時表示本次操作是讀操作,bit為1時表示是寫操作。
圖2 SPI接口的寫時序
圖3 SPI接口的讀時序
根據(jù)設(shè)計框圖,為了實現(xiàn)多通道SPI接口,需要在FPGA 芯片內(nèi)部擴展多組寄存器,CPU 通過并行數(shù)據(jù)/地址總線對寄存器進行訪問,以控制每個通道SPI接口的讀寫操作。每組寄存器對應(yīng)一個SPI接口,寄存器包括控制寄存器、地址寄存器,寫數(shù)據(jù)寄存器和讀數(shù)據(jù)寄存器。其中控制寄存器的bit0用于啟動讀寫操作,置1表示啟動讀寫操作,清0則表示停止操作;bit7為只讀bit,讀出為1表示本次操作尚未結(jié)束,為0則表示操作已完成。
SPI主模式接口的主要邏輯實現(xiàn)代碼如下:
由于接口板的接口芯片存在不同類型,而不同類型的接口芯片其CPU 接口的時序要求也可能不同。為了靈活適配,在接口板的EPLD 中擴展了四個寄存器:并行接口控制寄存器、并行接口地址寄存器、并行接口寫數(shù)據(jù)寄存器和并行接口讀數(shù)據(jù)寄存器。主控板可以通過SPI接口對這些寄存器進行訪問,以控制EPLD 的并行數(shù)據(jù)/地址總線的讀寫時序。其中并行接口控制寄存器的bit0表示是否使能操作,1表示使能讀寫操作,0表示禁止;bit1表示當(dāng)前操作類型,0表示讀操作,1表示寫操作;bit7表示當(dāng)前操作是否結(jié)束,1表示操作尚未結(jié)束,0表示操作已結(jié)束。
由于SPI從模式接口的邏輯代碼較長,無法一一列舉,這里將流程框圖描述如圖4:
圖4 SPI從模式設(shè)計流程
本文對不同設(shè)備內(nèi)的板卡管理通道進行了分析,提出了采用SPI接口作為板卡間管理通道的設(shè)計方案。該方案采用FPGA+EPLD芯片實現(xiàn)SPI接口,可以根據(jù)項目需求靈活增加接口數(shù)量,同時也可以很方便地調(diào)整CPU 接口的訪問時序。在實際的設(shè)備應(yīng)用中,SPI接口作為管理通道運行穩(wěn)定良好,有效地提高了設(shè)備的開發(fā)效率。
另外,本文中應(yīng)用的SPI接口是8位數(shù)據(jù)和8位地址,如果實際使用有新的需求,完全可以將SPI接口的位寬擴展到16位或更多,而不會對整體設(shè)計架構(gòu)有任何影響。
[1]田耘,徐文波.Xilinx FPGA 開發(fā)實用教程[M].北京:清華大學(xué)出版社,2008.
[2]EDA 先鋒工作室.Altera FPGA/CPLD設(shè)計(基礎(chǔ)篇)[M].第2版.北京:人民郵電出版社,2011.
[3]夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計教程[M].第2版.北京:北京航空航天大學(xué)出版社,2008.
[4]Xilinx,Inc.Spartan-6Family Overview,2011:1-2.http://www.xilinx.com.
[5]Xilinx,Inc.Spartan-6 FPGA Data Sheet,2011.http://www.xilinx.com.
[6]Xilinx,Inc.Spartan-6 FPGA Clocking Resources User Guide,2011.http://www.xilinx.com.
[7]Altera Corporation.MAX II Device Handbook,2009.http://www.altera.com.cn.
[8]麻志鵬,沈小林.PCI總線接口的FPGA 設(shè)計與實現(xiàn)[J].計算機與數(shù)字工程,2011(2).