摘 要: Xilinx 7系列FPGA是Xilinx公司最新推出的一個芯片系列,Kintex7是該系列芯片中的一種,擁有大量的可編程資源。即便如此,在一些多模式的大型復雜的系統(tǒng)設計中,芯片的資源還是遠遠不能滿足設計需求。FPGA的多重加載可以解決可編程資源不足的難題。FPGA多重加載是將設計的多個模式的比特文件存儲到Flash,用戶可以根據需要選擇加載不同模式的比特文件。FPGA的多重加載解決了可編程資源不足的問題,提高了FPGA可編程資源的利用率。
隨著通信技術的快速發(fā)展,多模式通信體制在現代通信中廣泛存在,如時分多址、空分多址、空分多址、頻分多址等。而調制、解調技術又分為FM、FSK、BPSK、QPSK等多種調制及解調技術。在一個通信系統(tǒng)中往往采用多種通信模式,這對硬件設備資源提出了比較高的要求,特別是對可編程芯片資源的要求。另外,多模式系統(tǒng)設計的復雜性也大大提高,同時對系統(tǒng)的維護和升級提出了挑戰(zhàn)。
近些年FPGA技術得到了飛速的發(fā)展,其作為可編程資源廣泛應用在大型復雜通信系統(tǒng)設計中。盡管FPGA在資源集成度方面近些年取得了可觀的成果,但是在多模式的大型系統(tǒng)設計中,單片FPGA資源遠遠不能夠滿足設計需求,有時可能需要多個芯片。然而FPGA價格相對較高,這大大提高了設計成本,而且不易于產品升級和維護。
FPGA多重加載技術[1-2]實際是對可編程資源的復用,用戶可以根據需求選擇加載不同的比特文件,從而實現多模式功能。FPGA多重加載技術可以解決可編程資源不足的問題,提高了可編程資源的利用率,同時降低了系統(tǒng)設計的復雜性,增加了系統(tǒng)設計的靈活性,減小了多模式系統(tǒng)的耦合性,便于系統(tǒng)升級和維護。
1 硬件設計Kintex7和SPI Flash物理連接的硬件設計如圖1所示。SPI Flash的容量選擇與設計的加載模式的個數和FPGA芯片的種類有關,本設計實現4種模式切換,SPI Flash內存儲4個比特文件,SPI Flash的容量是512 Mbit。
2 控制部分的設計
控制部分的設計是基于PowerPC[3]處理器實現的,用于對整個數據采集系統(tǒng)的控制,這里只對FPGA模式加載控制做簡單說明。FPGA的加載模式控制信息由上位機發(fā)送,上位機的1 G(TCP協議)網絡將加載模式控制信息發(fā)送到數據采集系統(tǒng)的1 G網絡;數據采集系統(tǒng)控制部分解析TCP數據包,提取有效信息,判斷加載模式,將加載信息通過EPC(外設控制器)寫到FPGA的寄存器中,Kintex7會根據寄存器中的值選擇加載模式。外設控制器(EPC)是FPGA與PowerPC之間通信的橋梁,在重加載控制過程中主要負責傳遞加載模式信息到FPGA寄存器內,另外還需要將加載成功后的模式信息進行回讀,并且通過1 G網絡送到上位機界面,判斷是否重加載成功。嵌入式控制部分的設計如圖2所示。
3 重加載模塊的設計
IRPOG命令序列是實現FPGA重加載的重要環(huán)節(jié)。IPROG命令的效果與在PROGRAM_B引腳產生一個脈沖的效果類似,但是IPROG命令不對重配置[4]邏輯進行復位。Kintex7內部ICAPE2模塊能夠執(zhí)行IPROG命令,IPROG命令觸發(fā)FPGA從SPI Flash中重新加載比特文件,加載地址是Kintex7中WBSTAR寄存器指定的地址。IPROG命令發(fā)送后,FPGA完成3個動作:發(fā)送同步字節(jié)(AA995566);向Kintex7的WBSTAR寄存器寫入下一個加載地址(表1地址為00000000);發(fā)送IPORG命令(0000000F)。表1是通過ICAPE2向重配置模塊發(fā)送IPROG命令的比特流,MulTIboot[5]控制器用一個狀態(tài)機向ICAPE2發(fā)送表1中的IPROG命令序列。一般情況下,重配置控制器等待外部的激勵信號,當激勵信號到達后,控制器向ICAPE2發(fā)送表1命令序列,在發(fā)送命令序列之前,控制器先把WRITE端口置為低電平,在下一個時鐘的上升沿把CE端口置為低電平,接下來發(fā)送表1指令序列。
FPGA內的重配置邏輯接收到IPROG命令后,FPGA執(zhí)行復位操作,但不對重配置邏輯進行復位,并且將INIT_B和DONE引腳拉低。FPGA清除了所有的配置存儲后,INIT_B端口被拉高。最后,WBSTAR寄存器的值被用來重新配置FPGA。
IPROG命令序列通過狀態(tài)機實現,狀態(tài)機中最少有8個狀態(tài)才能生成整個IPROG命令序列,否則,IPROG命令序列不能夠生成,FPGA不能重新配置。另外,IPROG命令的發(fā)送由ICAPE2模塊執(zhí)行,ICAPE2模塊的輸出時序和SelectMAP的輸出時序是一致的,SelectMAP的輸出數據格式是位轉換格式,所以IPROG命令序列生成的過程中需要將配置數據進行位轉換。這里位轉換是指字節(jié)內位轉換,即最高有效位變?yōu)樽畹陀行?,以此為?guī)則進行字節(jié)內的位互換。位轉換結果如表2所示。