于長海
摘要:提出一種FPGA的動態配置方案,方案提供了一種FPGA芯片的Slave SelectMAP配置方式,用DSP芯片作為FPGA的外部配置控制器,利用EMIF總線完成配置數據和時鐘信號的輸出,利用DSP的部分IO管腳完成FPGA相關配置信號的控制,實現了對于FPGA配置文件的靈活加載和動態重構功能。對于FPGA與DSP芯片的組合,設計中FPGA的配置方式給出一種實用化的高性能解決方法,對于實際工程應用具有重要的參考價值。
關鍵詞:FPGA動態配置;EMIF總線;DSP;Slave SelectMAP
中圖分類號:TP393文獻標志碼:A文章編號:1008-1739(2020)21-64-5

0引言
FPGA芯片的配置分為主串、主并、從串、從并及JTAG等方式。一般工程前期設計時,FPGA芯片都采用JTAG燒寫的方式為主,這樣可以和主機進行互動,方便調試和仿真工作[1]。設計實現后可外接Flash等非易失性存儲芯片,上電啟動時FPGA主動讀取芯片中的配置文件,完成自身的配置和初始化工作。這樣的配置方式需要硬件上額外增加Flash等存儲芯片支持,另外,需要用主機配合JTAG進行配置文件的燒寫,每次啟動只能加載固定的配置文件。在通信系統信號處理設計方案中,又常常將FPGA與DSP芯片一起組合設計,采用EMIF(External Memory Interface)總線進行數據交互,實際應用中存在芯片載荷功能動態重構的需求[2]。傳統外接Flash等存儲芯片的配置方式很難完成FPGA的在線動態重配置和靈活加載的功能需求,且硬件上需要額外的儲存資源支持。為了節約存儲芯片等硬件資源,同時提高FPGA芯片配置的靈活性,滿足動態重構的功能需求,設計了一種Slave SelectMAP的FPGA芯片配置方案[3]。
1方案總體設計
方案設計時考慮了硬件資源的復用性,利用FPGA與DSP之間EMIF總線的數據和寫信號完成FPGA的配置數據和時鐘信號的控制[4]。利用DSP芯片的IO管腳實現FPGA相關配置信號的控制,利用DSP芯片的本地Flash完成FPGA配置文件的存儲,利用DSP芯片內的執行軟件實現FPGA配置文件的Flash讀取和動態配置功能,實現了硬件資源的節約,FPGA芯片的靈活配置及動態可重構等功能需求總體方案分為硬件設計和軟件設計2個部分。
1.1硬件設計
方案設計時FPGA硬件采用Xilinx公司的7系列芯片XC7K410T,外部配置主控制器DSP采用TI的TMS320C6672實現。
Xilinx對于7系列FPGA的Slave SelectMAP配置方式的硬件設計要求如圖1所示,配置需要數據總線、片選信號、讀寫信號和時鐘信號,故方案設計時,外部處理器或微控制器需要按照FPGA的配置要求提供對應的控制和數據信號接入,在特定的時序要求下完成配置[5]。

TMS320C6672芯片的EMIF總線是一個DSP的外部存儲接口,其信號組成結構如圖2所示,主要由數據、地址、片選、字節使能、寫信號、讀信號、等待信號和讀寫控制信號組成[6]。綜合考慮FPGA端的配置時序需求,利用EMIF總線的16 bit數據線作為FPGA配置數據信號,因為TMS320C6672的EMIF總線沒有時鐘信號,設計時利用EMIF總線的寫信號作為FPGA的配置時鐘,其他EMIF接口信號只作為正常通信使用,不參與FPGA配置功能的實現。

綜合以上XC7K410T芯片的配置硬件需求與TMS320C6672芯片EMIF總線組成情況,硬件總體設計結構如圖3所示。DSP端的EMIF總線數據和寫信號分別連接FPGA配置數據和時鐘管腳,其余FPGA配置需要的控制信號和狀態信號與DSP的IO管腳連接。根據FPGA端配置的時序要求,完成相應信號的控制和狀態讀取,FPAG的配置文件存儲在DSP端本地Flash之中,配置工作啟動后由DSP完成文件的讀取和FPGA端的寫入。

1.2軟件設計
FPGA配置主控軟件在DSP芯片中運行,采用C語言實現,CCS開發環境中進行設計。針對方案所要實現的功能,軟件的設計分為Flash配置文件讀取、EMIF總線接口時序配置、FPGA配置信號管理和FPGA配置文件寫4個模塊,總體結構如圖4所示。

主控軟件主要完成對于FPGA配置文件的讀取、EMIF總線時序的配置、FPGA配置信號的時序管理及FPGA端配置文件的寫入等工作的流程化控制,軟件系統各個模塊的功能如下:
①Flash配置文件讀取模塊主要完成對于FPGA配置文件的讀取相關工作,包括動態配置文件的識別和獲取,Flash數據的讀取和緩存等;②EMIF總線時序配置模塊主要完成EMIF總線的時序配置,包括數據和寫信號的產生周期控制,完成FPGA加載時間的控制功能;③FPGA配置文件寫模塊主要完成配置文件的EMIF寫入,按照配置的時序要求,在指定時刻完成配置文件的數據時鐘輸出;④FPGA配置信號管理模塊主要完成FPGA相關的配置信號控制和管理功能,包括IO管腳方向、電平狀態和配置時序的控制等。
2方案實現流程
方案主要實現的功能是通過外部DSP芯片完成FPGA的動態配置,給出Slave SelectMAP配置模式的一種實現方式。由于配置所需的數據、時鐘和控制信號由DSP的EMIF總線數據、寫信號和IO管腳實現,具體實現時主要流程包含FPGA的配置時序分析、EMIF總線時序的控制、控制信號的接入和配置、配置數據格式實現和DSP端主控軟件的實現。
2.1 FPGA的配置時序分析
Xilinx公司給出的7系列FPGA芯片Slave SelectMAP配置方式下各個配置信號的時序關系圖,如圖5所示。從圖中可以看出配置功能實現過程中各個信號的邏輯以及依賴關系,配置開始時首先拉低PROGRAM_B信號至少一個時鐘周期,然后判斷INT_B的信號電平狀態,若INT_B為低電平則表示FPGA芯片內部還沒準備完成,需要繼續等待,直到INT_B信號為高,表示FPGA芯片可以進行配置工作。配置寫數據的過程中,首先應拉低RDWR_B信號,然后等待一個時鐘周期拉低CSI_B信號,此時可以進行數據的寫入工作,等待配置數據全部寫入完成后,需要判斷DONE信號的電平狀態,若DONE信號拉高說明FPGA內部配置完成,否則表示FPGA沒有配置完成。
DONE信號拉高后仍需要提供幾個時鐘周期的時鐘信號,因為FPGA內部需要繼續進行初始化的操作,然后可以拉高CSI_B信號,接著拉高RDWR_B信號,此時整個FPGA芯片的配置工作完成。從配置時序圖可知,部分信號的先后順序和持續時間需要進行嚴格的控制,只有滿足特定的時序關系才能完成FPGA芯片的配置工作。因此DSP芯片的IO管腳和EMIF總線的部分信號需要根據時序要求嚴格進行設計。

2.2 EMIF總線的時序控制
根據Xilinx官方Slave SelectMAP模式的配置時鐘與數據關系的要求,配置時鐘低電平持續時間至少是所提供的時鐘最小低電平時間與數據產生到時鐘上升沿建立時間的最大值。配置時鐘的高電平持續時間至少是所提供時鐘高電平最小時間與時鐘上升沿到數據保持的最小時間的最大值。
TMS320C6672芯片的EMIF總線寫時序如圖6所示,一個16 bit的數據寫操作主要包含setup,strobe,hold三個階段,3個階段的時間參數可以由DSP進行配置,是EMIF內部時鐘周期的整數倍。
本方案設計時選用的TMS320C6672芯片EMIF總線的內部時鐘為主頻的固定分頻值208 MHz,時鐘周期約為4.8 ns,Write setup參數設置為3,Write strobe參數設置為4,Write hold參數設置為3。本方案設計時由于此款DSP芯片EMIF總線無時鐘信號,利用EMIFWE信號作為FPGA的配置時鐘,故時鐘周期為Write setup,Write strobe,Write hold的總和,也就是(3+4+3)×4.8 ns=48 ns,加載數據速率為333.3 Mbit/s。

2.3控制信號的接入和配置
根據Xilinx對于7系列FPGA的Slave SelectMAP方式配置硬件需求及TMS320C6672芯片實際硬件接口組成情況,綜合考慮設計如圖7所示的硬件詳細配置信號連接關系。配置數據采用DSP芯片EMIF接口的16 bit數據信號連接,配置時鐘信號由EMIF接口的寫信號接入,片選信號由DSP的IO0管腳連接,讀寫控制信號由DSP的IO1管腳連接,PROGRAM_B信號由DSP的IO2管腳連接,INT_B信號由DSP的IO3管腳連接,DONE信號由DSP的IO4管腳連接。其中,數據管腳是雙向連接,時鐘、片選、讀寫控制和PROGRAM_B信號由DSP輸出到FPGA端,INT_B與DONE信號由FPGA輸入到DSP端。配置功能啟動時,DSP端主動產生數據和時鐘信號,并通過片選、讀寫控制和PROGRAM_B信號完成關鍵信號的配置,通過INT_B查詢FPGA的準備配置狀態,通過DONE信號的狀態查詢FPGA配置工作完成情況,通過以上所有管腳的有效配合完成FPGA芯片的配置功能。

2.4 FPGA配置數據格式實現
Xlinx公司7系列FPGA芯片Slave SelectMAP模式下配置的數據格式要求,如圖8所示。本方案設計時TMS320C6672的EMIF總線數據為16位,故遵循圖中x16的數據bit序,方案設計時DSP芯片采用小端模式,故在進行bit序轉換時,首先進行大小端字節序變換,然后再進行每個字節內bit序反轉,配置文件中每隔16 bit數據都要進行轉換,分別發送到EMIF總線之中。是簡化DSP端軟件執行過程,可以選擇存儲前進行FPGA配置文件bit轉換,此時DSP配置可以省去bit轉換過程。

2.5 DSP端主控軟件的實現
主控軟件運行在DSP芯片中,完成各個控制信號和配置數據的產生、數據格式轉換以及配置時序的控制等工作,其實現流程如圖9所示。根據Xilinx公司提供的7系列FPGA配置時序要求,DSP的軟件首先進行相關信號及接口的初始化工作,如配置DSP芯片運行主頻、EMIF總線的時序參數和配置信號IO管腳的方向和電平狀態等;其次,在所有信號初始化完成的基礎上,按時序要求,拉低PROGRAM_B信號若干時鐘周期后再拉高,清除FPGA內已經存在的配置信息;接著輪詢INT_B管腳的電平狀態,直到判定為高電平,表示FPGA芯片可以繼續進行配置操作;接著拉低RDWR_B和CSI_B管腳,進行Flash內指定地址的配置文件讀取和bit序轉換操作;繼而將轉換后的數據通過EMIF總線輸出給FPGA;在將所有的配置文件讀取、轉換和寫出后,輪詢DONE管腳的電平狀態,直到其輸出為高電平表示FPGA芯片配置成功;繼續輸出幾個時鐘,等待FPGA內部初始化完成后,將CSI_B和RDWR_B管腳拉高,整個配置工作完成。

3方案測試結果
針對方案所要實現的FPGA芯片動態配置功能,對各個實現環節及相關參數進行配置和驗證。實際測試硬件環境中TMS320C6672芯片的EMIF和IO管腳分別連接XC7K410T的配置數據、時鐘和相關控制和狀態信號之上,Flash芯片掛接在DSP端,如圖10所示。

軟件配置上,DSP運行主頻為1.25 GHz,EMIF接口時鐘為208 MHz。配置連接CSI_B、RDWR_B和PROGRAM_B信號的IO管腳為輸出,INT_B和DONE信號連接的IO管腳為輸入。配置EMIF接口Write setup,Write strobe,Write hold參數分別為3,4,3個EMIF時鐘周期,配置仿真EMIF傳輸時序如圖11所示。

FPGA使用一個閃燈程序進行測試,配置文件存儲在DSP的本地Flash中。上電啟動,DSP首先完成自身及配置信號的初始化,然后按照Xilinx公司要求的7系列FPGA的Slave SelectMAP模式配置時序,控制各個信號的狀態和時序,讀取Flash的數據進行bit序轉換后寫入到FPGA芯片之中,DONE信號拉高后,繼續輸入幾個時鐘周期,可以看到此時FPGA端的燈開始閃爍,代表配置工作已經成功。DSP端可以接收上位機命令,實現配置文件的靈活加載和動態重構功能。
4結束語
本文研究實現了一種FPGA芯片Slave SelectMAP模式的配置方案,該方案利用DSP作為配置主控制器,利用EMIF總線的數據、寫信號以及部分IO管腳分別完成FPGA芯片配置數據、時鐘和控制狀態信號的控制,利用DSP中運行的主控軟件實現加載流程的控制。省去了FPGA端存儲芯片的硬件資源,且可以實現FPGA的靈活加載和動態重構功能,為DSP與FPGA組合的通信系統信號處理工程實際提供一種FPGA高效配置方案,該設計思想也可以應用于其他DSP與FPGA組合設計中,對于需要在線載荷重構的工程應用具有一定的參考價值。
參考文獻
[1]孫少華,屈盼讓,韓佳瑋.基于JTAG協議的FPGA在線加載[J].航空計算技術,2019,49(6):89-91,95.
[2]陳勇.基于FPGA+DSP彈載SAR信號處理系統設計[J].電子技術應用,2019,45(9):101-105.
[3]文發,尹君.基于CPU控制的FPGA配置文件遠程更新方法[J].控制與信息技術,2019(3):56-59,69.
[4]孔石,王春雷.基于EMIF16模塊的TMS320C6678與FPGA接口設計與實現[J].航空兵器,2015(1):35-38.
[5] 7 Series FPGAs Configuration User Guide[R].Xilinx.USA. 2018.
[6] External Memory Interface (EMIF16) for KeyStone Devices Users Guide[R]. Texas Instruments.USA.2011.