本發(fā)明涉及fpga配置這一
技術(shù)領(lǐng)域:
,具體而言,涉及一種同時對多片fpga進行上電配置的多fpga上電自動配置方法。
背景技術(shù):
:隨著摩爾定律(moore’slaw)不斷的被人們用一代代技術(shù)證明,多核處理器(multi-core)結(jié)構(gòu)成為微處理器體系結(jié)構(gòu)技術(shù)發(fā)展的主流,流片后驗證處理器設(shè)計正確性的工作也越來越重要。目前,對處理器進行流片后驗證的方法主要有軟件驗證方法、硬件驗證方法和fpga驗證方法,其中,軟件驗證方法采用軟件驗證系統(tǒng)進行驗證,軟件驗證系統(tǒng)雖然靈活,但是驗證速度太慢;硬件驗證方法采用專用的硬件驗證系統(tǒng)進行驗證,而專用的硬件驗證系統(tǒng)的成本很高,無法普及使用;fpga驗證方法從速度和成本上都有自身的優(yōu)點,是現(xiàn)在處理器設(shè)計驗證中廣泛應(yīng)用的方法。fpga驗證方法是把處理器設(shè)計通過fpga公司提供的配套軟件經(jīng)過綜合后生成網(wǎng)表,通過軟件將網(wǎng)表變換為對應(yīng)的門級電路,最后生成配置文件,以將整個處理器設(shè)計在fpga芯片上并且真正用硬件實現(xiàn),然后在fpga的硬件系統(tǒng)上面運行軟件,fpga驗證方法實現(xiàn)了軟硬件協(xié)同驗證,所以能夠避免軟件驗證方法和硬件驗證方法存在的缺點。fpga器件的配置是實現(xiàn)fpga功能的前提,上電后,配置數(shù)據(jù)保存在配置ram中,將配置數(shù)據(jù)載入配置ram即是對fpga編程,但是掉電后fpga內(nèi)部的配置信息便丟失,下次上電需要再次對fpga進行配置。目前主流的對fpga進行配置的方式是jtag配置(jointtestactiongroupconfiguration),在使用jtag配置時,每次都要使用jtag下載器將pc機和fpga連接進行通信。每一片fpga需要一臺pc機和一條jtag下載器,在硬件上通過插拔的方式進行連接及下載,這種配置方式在對數(shù)量不多的fpga進行配置時可以方便的實現(xiàn)。但是,在用fpga搭建眾核處理器架構(gòu)驗證平臺的時候,動輒就需要上百塊fpga互連,如果對每一塊fpga仍采用傳統(tǒng)的jtag下載器進行逐片插拔的方式下載,整個平臺配置中僅插拔動作就需要耗費4小時的時間,并且pc機對jtag設(shè)備的識別率并不高,耗費人力物力;其次,用jtag方式進行下載時,軟件每配置一片fpga需要3分鐘的時間,上百塊fpga僅軟件配置就需要耗費5小時。這樣算下來,整個平臺配置過程需要至少一天的時間。由此可見,jtag配置方式在對多fpga進行配置時非常不方便。技術(shù)實現(xiàn)要素:本發(fā)明提供一種多fpga上電自動配置方法,用以解決現(xiàn)有技術(shù)中對多fpga平臺配置耗費人力、物力大的問題。為達到上述目的,本發(fā)明提供了一種多fpga上電自動配置方法,用于將多個配置文件分別寫入多個fpga芯片中,一個配置文件對應(yīng)其中一個fpga芯片,其包括以下步驟:s1:將多個配置文件分別寫入多個存儲模塊中;s2:將每一fpga芯片分別與一數(shù)據(jù)讀寫平臺連接;s3:將每一數(shù)據(jù)平臺與對應(yīng)的存儲模塊連接;s4:每一數(shù)據(jù)讀寫平臺分別從對應(yīng)的存儲模塊中讀取配置文件;s5:每一數(shù)據(jù)讀寫平臺分別將讀取到的配置文件寫入對應(yīng)的fpga芯片中。在本發(fā)明的一實施例中,步驟s1中,通過sd卡燒寫器將多個配置文件分別寫入多個fpga芯片。在本發(fā)明的一實施例中,所述數(shù)據(jù)讀寫平臺為stm32f103zet6。在本發(fā)明的一實施例中,所述存儲模塊為sd卡。在本發(fā)明的一實施例中,步驟s4中,數(shù)據(jù)讀寫平臺通過spi串行總線的方式從對應(yīng)的存儲模塊中讀取配置文件。在本發(fā)明的一實施例中,步驟s5中,數(shù)據(jù)讀寫平臺為主設(shè)備,fpga芯片為從設(shè)備,采用slaveserial模式或slaveselectmap模式進行數(shù)據(jù)寫入。在本發(fā)明的一實施例中,配置文件的格式為fat32。在本發(fā)明的一實施例中,步驟s4和步驟s5為同時進行。下面以對包括256個fpga芯片的fpga平臺進行配置為例,本發(fā)明提供的多fpga上電自動配置方法與現(xiàn)有的采用jtag方式配置fpga的方法相比,具有以下優(yōu)勢:(1)節(jié)省大量時間,采用jtag配置方式需要逐片配置,并且至少需要一天的時間,而采用本發(fā)明提供的多fpga上電自動配置方法只需要一分鐘就可以完成配置,大大節(jié)省了時間,提高了效率。(2)節(jié)省人力成本,采用jtag配置方式進行配置時,每配置一個fpga芯片需要對板卡進行兩次插拔,在pc端也需要兩次插拔,費時費力,一個人無法一次完成對這么多個fpga的配置,而本發(fā)明提供的多fpga上電自動配置方法不需要人為進行操作就可以自動完成對fpga芯片的配置,大大降低了人力成本。(3)節(jié)省物資成本,采用jtag配置方式進行配置時,配置一個fpga芯片需要一個jtag燒寫器和一臺pc機,而本發(fā)明提供的多fpga上電自動配置方法只需要一個sd卡和一塊stm32的最小系統(tǒng),一個fpga芯片就可節(jié)省物資成本3000元左右,整個fpga平臺即可節(jié)省一大筆項目開發(fā)費用。(4)解決了各平臺無法同步工作的問題,采用jtag配置方式進行配置時,會出現(xiàn)一些fpga芯片中的程序已經(jīng)開始運行甚至已經(jīng)運行結(jié)束了,而其他剩余的fpga芯片中的程序還沒有開始配置,這種用串行的燒寫方式會造成整個平臺無法運行以及時鐘不同步等問題,導(dǎo)致整個fpga平臺無法正常運行下去。而本發(fā)明提供的多fpga上電自動配置方法是對所有fpga芯片同步并行配置,同步上電即可實現(xiàn)同步配置,程序在所有fpga芯片中同步運行,使得整個fpga平臺中的所有fpga芯片同時工作,從而能夠保證整個fpga平臺中的程序順利配置完成。附圖說明為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明中的sd卡、stm32f103zet6和fpga芯片的連接示意圖;圖2為本發(fā)明中的sd卡與stm32f103zet6的管腳連接示意圖;圖3為fpga芯片采用slaveserial模式進行配置時的時序關(guān)系示意圖;圖4為fpga芯片采用slaveserial模式進行配置時的流程圖;圖5為fpga芯片采用slaveselectmap模式進行配置時bit交換示意圖;圖6為fpga芯片的配置過程示意圖;圖7為配置文件采用fat32格式進行存儲時的文件存儲結(jié)構(gòu)。具體實施方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有付出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。圖1為本發(fā)明中的sd卡、stm32f103zet6和fpga芯片的連接示意圖,圖2為本發(fā)明中的sd卡與stm32f103zet6的管腳連接示意圖,如圖1、圖2所示,本發(fā)明提供的多fpga上電自動配置方法用于將多個配置文件分別寫入多個fpga芯片中,一個配置文件對應(yīng)其中一個fpga芯片,其包括以下步驟:s1:將多個配置文件分別寫入多個存儲模塊中;本實施例中的存儲模塊為sd卡,配置文件的格式為fat32,也可以根據(jù)實際需要選擇使用其他具有存儲功能的器件作為存儲模塊。除了fat32格式,配置文件的格式還可以設(shè)置為*.bit、*.bin、*.rbt、*.mcs、*.hex等,“寫入”方式可以是通過sd卡燒寫器將多個配置文件分別寫入多個fpga芯片,以于短時間內(nèi)實現(xiàn)快速寫入,也可以根據(jù)實際的寫入工作量選擇其他寫入方式。如圖7所示為配置文件采用fat32格式進行存儲時的文件存儲結(jié)構(gòu),主引導(dǎo)記錄(mbr)由446個字節(jié)的引導(dǎo)代碼、64字節(jié)的主分區(qū)(4個)表以及兩個字節(jié)的簽名“55aa”組成。其中最重要的參數(shù)是邏輯扇區(qū)的起始地址(lba)。獲得該參數(shù)后即可以讀取bios參數(shù)數(shù)據(jù)塊(bpb)。bpb中存儲了每扇區(qū)字節(jié)數(shù)、每簇扇區(qū)數(shù)、保留扇區(qū)數(shù)、fat表個數(shù)、文件系統(tǒng)大小、每個fat表大小、根目錄起始簇號等信息??赏ㄟ^上述信息定位文件系統(tǒng)根目錄位置。文件分配表描述簇的分配狀態(tài)以及標明文件或目錄的下一簇的簇號。根目錄中記錄了各不同文件的文件名和起始簇以及文件大小等信息,根目錄是數(shù)據(jù)區(qū)的起始位置,通常位于2號簇(第一簇)。關(guān)于配置文件的讀取和發(fā)送進一步說明如下:首先讀取主引導(dǎo)記錄(mbr),獲取邏輯扇區(qū)的起始位置(偏移字節(jié)數(shù)為0x08-0x0b)。根據(jù)此地址獲取bios參數(shù)數(shù)據(jù)塊(bpb),得到保留扇區(qū)數(shù)、每個fat表大小扇區(qū)數(shù)和fat表個數(shù)信息,并計算根目錄的位置,計算公式為:根目錄位置(數(shù)據(jù)區(qū)起始扇區(qū)號)=保留扇區(qū)數(shù)+每個fat表大小扇區(qū)數(shù)×fat表個數(shù)。從根目錄中讀取當(dāng)前文件的起始簇號,然后通過訪問fat(該地址由bpb得到)讀取對應(yīng)該起始簇的字節(jié),獲得文件系統(tǒng)的下一個簇號,直至最后一簇(fat中對應(yīng)數(shù)值為0xffff)。需要注意的是,最后一簇的數(shù)據(jù)量可能不足一簇,因此需要特殊處理。使用sd卡或其他具有存儲功能的器件作為存儲模塊,是考慮到fpga芯片作為驗證平臺,需要經(jīng)常更換配置文件,而將配置文件寫入sd卡中則十分便于更換配置文件。另外,為了便于對單片fpga進行配置和調(diào)試,fpga上還預(yù)留了jtag接口。s2:將每一fpga芯片分別與一數(shù)據(jù)讀寫平臺連接;本實施例中,數(shù)據(jù)讀寫平臺選用stm32f103zet6,其是一種常用的微處理器,其具體功能可參考其對應(yīng)的數(shù)據(jù)手冊。s3:將每一數(shù)據(jù)平臺與對應(yīng)的存儲模塊連接;圖1為本發(fā)明中的sd卡、stm32f103zet6和fpga芯片的連接示意圖,圖2為本發(fā)明中的sd卡與stm32f103zet6的管腳連接示意圖,如圖1、圖2所示,對多個fpga芯片進行配置之前,sd卡、stm32f103zet6和fpga芯片需要先按照圖1和圖2所示連接。s4:每一數(shù)據(jù)讀寫平臺分別從對應(yīng)的存儲模塊中讀取配置文件;本實施例中,數(shù)據(jù)讀寫平臺通過spi串行總線的方式從對應(yīng)的存儲模塊中讀取配置文件,spi串行總線方式是一種常見的數(shù)據(jù)傳輸方式,具體讀取過程為本領(lǐng)域技術(shù)人員所熟知,在此不予贅述。s5:每一數(shù)據(jù)讀寫平臺分別將讀取到的配置文件寫入對應(yīng)的fpga芯片中;在本實施例中,步驟s5在執(zhí)行時,數(shù)據(jù)讀寫平臺為主設(shè)備,fpga芯片為從設(shè)備,采用slaveserial模式或slaveselectmap模式進行數(shù)據(jù)寫入,如圖3所示為fpga芯片采用slaveserial模式進行配置時的時序關(guān)系示意圖,圖4為fpga芯片采用slaveserial模式進行配置時的流程圖,圖6為fpga芯片的配置過程示意圖,其中,圖4虛線框內(nèi)的流程是slaveselectmap模式且配置時鐘頻率大于50mhz時所需。需要注意的是,接收完配置數(shù)據(jù)后,done信號會拉高,但此時fpga的配置過程并未結(jié)束,系統(tǒng)仍需要cclk進行后續(xù)的啟動工作,因此,在done信號拉高后,還要持續(xù)輸出8個周期的cclk,以保證配置過程的正確性。此外,在slaveserial模式中發(fā)送1字節(jié)數(shù)據(jù)過程中,應(yīng)先發(fā)送高位,依次遞減;在slaveselectmap模式中,則需要進行bit交換,以發(fā)送0xabcd為例,經(jīng)bit交換之后,發(fā)送的數(shù)據(jù)為0xd5b3,如圖5所示為fpga芯片采用slaveselectmap模式進行配置時bit交換示意圖。以xilinx系列fpga為例,配置模式是由上電時其專用配置管腳的狀態(tài)決定的,對應(yīng)關(guān)系如表1所示。表1fpga配置模式選擇表fpga配置模式配置管腳slaveserial111slaveselectmap110當(dāng)設(shè)置fpga的配置模式為slaveserial模式時,對應(yīng)的配置管腳有5個,分別是:cclk、prog_b、init、din和done,其管腳信號說明如表2所示。表2slaveserial模式配置管腳說明管腳名稱方向功能說明cclk輸入配置時鐘prog_b輸入復(fù)位配置邏輯init輸出標識是否準備接收配置數(shù)din輸入配置數(shù)據(jù)傳輸管腳done輸出標識是否配置完畢由于本發(fā)明為每一個fpga芯片均設(shè)置了一個與其連接的sd卡數(shù)據(jù)和一個數(shù)據(jù)讀寫平臺,因此,各個fpga芯片之間的配置文件的讀取和寫入可以同時進行,不必等待一個fpga芯片的配置文件讀寫完成后才開始下一個,從而大大節(jié)省了fpga的上電配置時間,另外,步驟s4和步驟s5可以為同時進行,一邊從存儲模塊中讀取數(shù)據(jù)文件,一邊將讀取到的數(shù)據(jù)文件寫入對應(yīng)的fpga芯片,實現(xiàn)了邊讀邊寫,從而能夠節(jié)省時間和成本。下面以對包括256個fpga芯片的fpga平臺進行配置為例,本發(fā)明提供的多fpga上電自動配置方法與現(xiàn)有的采用jtag方式配置fpga的方法相比,具有以下優(yōu)勢:(1)節(jié)省大量時間,采用jtag配置方式需要逐片配置,并且至少需要一天的時間,而采用本發(fā)明提供的多fpga上電自動配置方法只需要一分鐘就可以完成配置,大大節(jié)省了時間,提高了效率。(2)節(jié)省人力成本,采用jtag配置方式進行配置時,每配置一個fpga芯片需要對板卡進行兩次插拔,在pc端也需要兩次插拔,費時費力,一個人無法一次完成對這么多個fpga的配置,而本發(fā)明提供的多fpga上電自動配置方法不需要人為進行操作就可以自動完成對fpga芯片的配置,大大降低了人力成本。(3)節(jié)省物資成本,采用jtag配置方式進行配置時,配置一個fpga芯片需要一個jtag燒寫器和一臺pc機,而本發(fā)明提供的多fpga上電自動配置方法只需要一個sd卡和一塊stm32的最小系統(tǒng),一個fpga芯片就可節(jié)省物資成本3000元左右,整個fpga平臺即可節(jié)省一大筆項目開發(fā)費用。(4)解決了各平臺無法同步工作的問題,采用jtag配置方式進行配置時,會出現(xiàn)一些fpga芯片中的程序已經(jīng)開始運行甚至已經(jīng)運行結(jié)束了,而其他剩余的fpga芯片中的程序還沒有開始配置,這種用串行的燒寫方式會造成整個平臺無法運行以及時鐘不同步等問題,導(dǎo)致整個fpga平臺無法正常運行下去。而本發(fā)明提供的多fpga上電自動配置方法是對所有fpga芯片同步并行配置,同步上電即可實現(xiàn)同步配置,程序在所有fpga芯片中同步運行,使得整個fpga平臺中的所有fpga芯片同時工作,從而能夠保證整個fpga平臺中的程序順利配置完成。本發(fā)明提供的多fpga上電自動配置方法中,若僅限于其中的一個燒寫平臺(即一個fpga芯片、一個stm32f103zet6和一個sd卡),則本發(fā)明并不具有明顯的優(yōu)勢。在進行眾核處理器架構(gòu)模擬時,動輒需要上百塊燒寫平臺,此時本發(fā)明才能充分體現(xiàn)其優(yōu)勢,通過開啟總電源,使得所有燒寫平臺能夠同時上電工作,實現(xiàn)了于非常短時間內(nèi)完成大量燒寫任務(wù)的目的。前案1(齊冶.基于微處理器的fpga配置方案[j].2007.)公開了一種基于微處理器的fpga配置方案,本發(fā)明與其的區(qū)別如下:(1)微處理器的選擇不同:前案1中的微處理器選擇的是at89c2051,本發(fā)明選擇的是stm32f103zet6。但是,受限于at89c2051本身受到晶振頻率的限制,本案發(fā)明人實驗證明,用at89c2051進行一次燒寫,在超頻的狀態(tài)下需要12分鐘,而且成功率很低。而本發(fā)明配置過程只需要一分鐘,而且是在正常工作狀態(tài)下,并且成功率高。(2)存儲文件的器件選擇不同:前案1選擇eeprom芯片at24c01。首先,fpga的配置文件很大,at24c01的存儲空間不足。其次,前案1中也提到,配置文件可以利用編程器燒入其中,那這個方法產(chǎn)生的問題又和用jtag的方式一樣了,上千塊的板卡就需要上千個燒寫器,上千個pc機和上千個工程人員進行工作,而且難以保證時序的同步。(3)前案1中的圖4為一塊at89c2051配置多塊fpga。這種方式在實際工程中不可用。區(qū)別(1)中已經(jīng)指出,超頻燒寫一塊就需要12分鐘,而且錯誤率很高。再進行一個at89c2051配置多塊fpga,速度之慢和錯誤率之高可想而知。而本發(fā)明中的每一燒寫平臺均為一個stm32和一個sd卡配置一塊fpga,并且能夠同步燒寫。綜上所述,前案1在進行單個fpga的燒寫時不比本發(fā)明有優(yōu)勢,在進行上千個fpga的燒寫時,根本沒法工作。前案2(張承暢,嚴單貴,楊力生,等.基于xcf32p的多fpga配置方案[j].計算機工程,2010,36(15):259-261.)公開了一種基于xcf32p的多fpga配置方案,本發(fā)明與其的區(qū)別如下:(1)配置方式不同:前案2使用的是并行配置,本發(fā)明使用串行配置。在保證速度為前提的條件下,占用的微處理器接口和資源越少越好,前案2采用并行方式占用的微處理器接口太多,而且速度和串行配置相對于一塊板卡而言無異。(2)前案2選擇xcf32p的存儲器,該存儲器工作時需要特有的下載器,前案2中提到的一個xcf32p和一個cpld可配置4塊fpga,那么,當(dāng)達到上百核的時候,需要上百個下載器和上百個pc機,相比于本發(fā)明只需要一臺pc機和一臺sd卡燒寫器,上百個下載器和上百個pc機花費要大很多,而且工程人員的工作量也要大很多。(3)前案2中也指出了可用于配置數(shù)據(jù)小于8mb的fpga,在進行眾核處理器架構(gòu)模擬的時候,fpga的程序遠遠大于8mb,而本發(fā)明使用的sd卡存儲容量例如可以擴充至8g甚至更高,以滿足配置文件的存儲需求。綜上所述,前案2具有很多的限制因素,當(dāng)fpga板卡的數(shù)量多到百塊的時候無法進行快速自動的配置。本領(lǐng)域普通技術(shù)人員可以理解:附圖只是一個實施例的示意圖,附圖中的模塊或流程并不一定是實施本發(fā)明所必須的。本領(lǐng)域普通技術(shù)人員可以理解:實施例中的裝置中的模塊可以按照實施例描述分布于實施例的裝置中,也可以進行相應(yīng)變化位于不同于本實施例的一個或多個裝置中。上述實施例的模塊可以合并為一個模塊,也可以進一步拆分成多個子模塊。最后應(yīng)說明的是:以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明實施例技術(shù)方案的精神和范圍。當(dāng)前第1頁12