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