本發(fā)明涉及數(shù)據(jù)通信領域,尤其涉及fpga配置,具體涉及一種采用并行被動模式以不同配置文件分別配置多個fpga的裝置及方法。
背景技術:
隨著對數(shù)據(jù)處理的功能復雜度要求日益提高,多fpga的應用日益廣泛。當多個fpga分別實現(xiàn)不同的功能時,各fpga的配置文件也不同。在配置效率方面,若要采用串行的方式實現(xiàn)多個fpga的不同配置,配置效率低,而較常用的配置多fpga的方法,由于過多的指令周期所帶來的時延可能會導致配置數(shù)據(jù)傳輸不正確。
技術實現(xiàn)要素:
為解決上述問題,本發(fā)明提供一種采用并行被動模式以不同配置文件配置多個fpga的方法,能夠實現(xiàn)不同配置文件的高效、準確、靈活加載。
本發(fā)明的技術方案是:一種配置多個fpga的裝置,包括多個fpga,還包括外部控制電路,外部控制電路分別與每個fpga連接。
進一步地,所述外部控制電路為微處理器或cpld芯片。
進一步地,所述外部控制電路的data[7:0]引腳、clock引腳、read/write引腳、progarm_b引腳、init_b引腳、done引腳分別與每個fpga的d[7:0]引腳、cclk引腳、rdwr_b引腳、progarm_b引腳、init_b引腳、done引腳連接。
一種配置多個fpga的方法,包括外部控制電路和多個fpga;
還包括以下步驟:
s1:對每個fpga配置接口進行初始化;
s2:通過外部控制電路對每個fpga的配置信號進行加載數(shù)據(jù)前的準備操作;
s3:根據(jù)配置的順序需要進行片選fpga,并進行相應配置文件的加載;
s4:任一fpga配置文件加載完成后,根據(jù)需要配置fpga的個數(shù)重復步驟s3;
s5:所有fpga均加載完相應的配置文件后,外部控制電路等待done信號變高,done信號變高后,配置完成。
進一步地,步驟s1中,初始化包括對數(shù)據(jù)管腳、信號管腳的初始化操作。
進一步地,步驟s2中,配置信號包括progarm_b信號、rdwr_b信號、init_b信號、cclk信號。
進一步地,步驟s2中進行加載數(shù)據(jù)前的準備操作具體包括以下步驟:
s2.1:通過外部控制電路給fpga時鐘信號,然后給program_b信號一個周期的低電平,之后將其拉高,邊給時鐘信號邊判斷init_b信號是否為高,若為低則繼續(xù)等待判斷;
s2.2:init_b信號為高后,外部控制電路給fpga一個周期的時鐘信號,然后將rdwr_b信號拉低,使其寫使能,至此完成配置數(shù)據(jù)加載前的準備工作。
進一步地,步驟s3中進行相應配置文件的加載具體包括以下步驟:
s3.1:確定片選出的fpga的配置文件的存儲位置;
s3.2:將存儲的配置文件數(shù)據(jù)根據(jù)具體情況進行字節(jié)順序的轉換操作后,將其賦值給數(shù)據(jù)線相應的gpio寄存器,每賦值完一個字節(jié),外部控制電路給fpga一個周期的時鐘信號。
進一步地,步驟s5還包括:當所有fpga完成配置數(shù)據(jù)加載后,外部控制電路邊給時鐘信號邊判斷done信號是否變高,當done信號變高后,說明多個fpga均配置完成。
本發(fā)明提供的配置多個fpga的裝置及方法,在數(shù)據(jù)加載方面,并非像傳統(tǒng)方法一樣對每個數(shù)據(jù)管腳進行依次賦值,而是直接向數(shù)據(jù)線相應的gpio寄存器進行賦值操作,這樣不僅可以大大減少指令周期,而且避免了由于時延導致配置數(shù)據(jù)傳輸不正確的可能性,從而實現(xiàn)多fpga的準確、高效配置。且本發(fā)明可對多個fpga配置順序進行靈活選擇,從而實現(xiàn)多fpga的靈活配置。
附圖說明
圖1是本發(fā)明具體實施例配置多個fpga信號連接示意圖。
圖2是本發(fā)明具體實施例配置多個fpga的方法流程圖。
具體實施方式
下面結合附圖并通過具體實施例對本發(fā)明進行詳細闡述,以下實施例是對本發(fā)明的解釋,而本發(fā)明并不局限于以下實施方式。
如圖1所示,本發(fā)明提供的配置多個fpga的裝置,包括多個fpga,還包括外部控制電路,外部控制電路分別與每個fpga連接,外部控制電路為微處理器或cpld芯片。外部控制電路的data[7:0]引腳、clock引腳、read/write引腳、progarm_b引腳、init_b引腳、done引腳分別與每個fpga的d[7:0]引腳、cclk引腳、rdwr_b引腳、progarm_b引腳、init_b引腳、done引腳連接。
如圖2所示,本實施例以8位傳輸數(shù)據(jù)位寬,配置三個fpga為例對配置多個fpga的方法進一步說明。
本方法包括以下步驟:
s1:對每個fpga配置接口進行初始化;初始化包括對數(shù)據(jù)管腳、信號管腳的初始化操作;
s2:通過外部控制電路對每個fpga的配置信號進行加載數(shù)據(jù)前的準備操作;配置信號包括progarm_b信號、rdwr_b信號、init_b信號、cclk信號;
進行加載數(shù)據(jù)前的準備操作具體包括:
s2.1:通過外部控制電路給fpga時鐘信號,然后給program_b信號一個周期的低電平,之后將其拉高,邊給時鐘信號邊判斷init_b信號是否為高,若為低則繼續(xù)等待判斷;
s2.2:init_b信號為高后,外部控制電路給fpga一個周期的時鐘信號,然后將rdwr_b信號拉低,使其寫使能,至此完成配置數(shù)據(jù)加載前的準備工作;
s3:根據(jù)配置的順序需要進行片選fpga,并進行相應配置文件的加載;
進行相應配置文件的加載具體包括:
s3.1:確定片選出的fpga的配置文件的存儲位置;
s3.2:將存儲的配置文件數(shù)據(jù)根據(jù)具體情況進行字節(jié)順序的轉換操作后,將其賦值給數(shù)據(jù)線相應的gpio寄存器,每賦值完一個字節(jié),外部控制電路給fpga一個周期的時鐘信號;
s4:任一fpga配置文件加載完成后,根據(jù)需要配置fpga的個數(shù)重復步驟s3;
s5:所有fpga均加載完相應的配置文件后,外部控制電路等待done信號變高,done信號變高后,配置完成;在該步驟中,當所有fpga完成配置數(shù)據(jù)加載后,外部控制電路邊給時鐘信號邊判斷done信號是否變高,當done信號變高后,說明多個fpga均配置完成。
以上公開的僅為本發(fā)明的優(yōu)選實施方式,但本發(fā)明并非局限于此,任何本領域的技術人員能思之的沒有創(chuàng)造性的變化,以及在不脫離本發(fā)明原理前提下所作的若干改進和潤飾,都應落在本發(fā)明的保護范圍內(nèi)。