本發(fā)明主要涉及可編程邏輯器件技術(shù)領(lǐng)域,特指一種FPGA遠(yuǎn)程更新裝置及方法。
背景技術(shù):
目前,可編程邏輯器件FPGA大量運(yùn)用于工業(yè)中,用于數(shù)據(jù)采集,通信以及控制等方面。在研發(fā)和批量生產(chǎn)以及測(cè)試過程中,都會(huì)涉及FPGA邏輯程序的更新問題。現(xiàn)有的遠(yuǎn)程更新大多采用第三方的控制器:例如一片DSP或者一片CPLD或者FPGA來對(duì)需要升級(jí)的FPGA進(jìn)行更新。目前與此相關(guān)的論文或?qū)@校?/p>
論文一《基于NiosII多片F(xiàn)PGA遠(yuǎn)程更新設(shè)計(jì)與實(shí)現(xiàn)》:本文突出了一種基于NiosII多片F(xiàn)PGA遠(yuǎn)程更新設(shè)計(jì)方法,通過以太網(wǎng)口和串口實(shí)現(xiàn)對(duì)FPGA配置文件的更新。重點(diǎn)介紹了設(shè)計(jì)與實(shí)現(xiàn)方案、硬件設(shè)計(jì)、軟件設(shè)計(jì)。該方案解決了傳統(tǒng)程序在線升級(jí)操作復(fù)雜、距離短等難以滿足相關(guān)工程需求的問題,使得FPGA程序升級(jí)方便,提升了工作效率。但此設(shè)計(jì)主要在每個(gè)FPFA上構(gòu)建NiosII軟核,F(xiàn)PGA接通過以太網(wǎng)口連接PC機(jī),多片F(xiàn)PGA通過串口傳遞程序文件。主要缺點(diǎn)是需要特殊廠家的特殊芯片,應(yīng)用局限。多片F(xiàn)PGA采用串口相連,使得沒有和以太網(wǎng)口相連的FPGA在更新速度上很慢。
專利一《一種基于處理器控制的FPGA配置程序遠(yuǎn)程更新系統(tǒng)及其方法》:本發(fā)明公開了一種基于處理器控制的FPGA配置程序遠(yuǎn)程更新系統(tǒng)及其方法,系統(tǒng)包括:處理器模塊、FPGA 模塊、SPI 存儲(chǔ)器模塊和緩沖器模塊,處理器模塊與SPI 存儲(chǔ)器模塊相連,處理器模塊與通訊接口相連,SPI 存儲(chǔ)器模塊與FPGA模塊相連,處理器模塊還通過緩沖器模塊與SPI存儲(chǔ)器模塊相連。當(dāng)FPGA 模有配置程序需要更新時(shí),上位機(jī)或終端通過通訊接口和處理器模塊將FPGA 配置程序下載到SPI 存儲(chǔ)器模塊中,在Master SPI 模式下,F(xiàn)PGA 模塊自動(dòng)加載存儲(chǔ)在SPI 存儲(chǔ)器模塊中的配置程序。該系統(tǒng)及其方法可實(shí)現(xiàn)遠(yuǎn)程更新FPGA 配置程序,并具有在非斷電情況下在線更改配置程序的功能,特別適合現(xiàn)場(chǎng)應(yīng)用。
專利二《一種FPGA 配置文件遠(yuǎn)程更新的方法及裝置》:本發(fā)明公開了一種FPGA 配置文件遠(yuǎn)程更新的方法及裝置。方法包括:CPU 控制多路模擬開關(guān)將CPU 與存儲(chǔ)器建立連接,將存儲(chǔ)器與FPGA 斷開;CPU 更新存儲(chǔ)器中存儲(chǔ)的配置文件;在更新完成后,CPU 控制多路模擬開關(guān)斷開CPU 與存儲(chǔ)器之間的連接,將存儲(chǔ)器與FPGA建立連接;CPU 觸發(fā)FPGA 從存儲(chǔ)器中導(dǎo)入更新后的配置文件,控制FPGA 配置更新后的配置文件。專利一和專利二均需要在FPGA和配置FLASH外額外增加緩沖模塊和CPU。在只有FPGA情況下和FPGA內(nèi)嵌配置FLASH時(shí),需要增加元件數(shù)量和種類以及成本。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題就在于:針對(duì)現(xiàn)有技術(shù)存在的技術(shù)問題,本發(fā)明提供一種結(jié)構(gòu)簡(jiǎn)單、實(shí)現(xiàn)方便、成本低的FPGA遠(yuǎn)程更新裝置,并基于此裝置提供一種操作簡(jiǎn)便的FPGA遠(yuǎn)程更新方法。
為解決上述技術(shù)問題,本發(fā)明提出的技術(shù)方案為:
一種FPGA遠(yuǎn)程更新裝置,包括FPGA模塊,所述FPGA模塊內(nèi)部設(shè)有嵌入式處理器遠(yuǎn)程更新系統(tǒng),所述嵌入式處理器遠(yuǎn)程更新系統(tǒng)包括通訊模塊和遠(yuǎn)程更新模塊,所述通訊模塊分別與上位機(jī)和遠(yuǎn)程更新模塊相連,所述遠(yuǎn)程更新模塊與FPGA模塊的配置FLASH相連。
作為上述技術(shù)方案的進(jìn)一步改進(jìn):
所述通訊模塊接收上位機(jī)的命令和程序數(shù)據(jù)并發(fā)送至遠(yuǎn)程更新模塊,同時(shí)將嵌入式處理器遠(yuǎn)程更新系統(tǒng)是否允許更新、更新進(jìn)度以及回讀的程序數(shù)據(jù)回傳至上位機(jī),所述遠(yuǎn)程更新模塊將接收的命令進(jìn)行解析,并對(duì)程序數(shù)據(jù)轉(zhuǎn)換成適合配置FLASH的數(shù)據(jù)流和時(shí)鐘流,進(jìn)行配置FLASH數(shù)據(jù)的讀寫以及擦除。
所述通訊模塊采用網(wǎng)口或串口或光纖。
所述通訊模塊通過無線或網(wǎng)線或串口或USB口與所述上位機(jī)相連。
所述配置FLASH為FPGA內(nèi)置或FPGA外置。
本發(fā)明還公開一種基于如上所述的FPGA遠(yuǎn)程更新裝置的更新方法,步驟為:
S01、所述上位機(jī)向嵌入式處理器遠(yuǎn)程更新系統(tǒng)發(fā)送約定的程序更新指令,所述遠(yuǎn)程更新模塊采集嵌入式處理器遠(yuǎn)程更新系統(tǒng)的狀態(tài),決定是否接收更新指令;
S02、當(dāng)允許更新后,上位機(jī)下發(fā)數(shù)據(jù)幀,并經(jīng)通訊模塊發(fā)送至遠(yuǎn)程更新模塊,遠(yuǎn)程更新模塊進(jìn)行數(shù)據(jù)幀的暫存,再按照配置FLASH的具體時(shí)序完成數(shù)據(jù)幀的更新。
作為上述技術(shù)方案的進(jìn)一步改進(jìn):
步驟S02中,數(shù)據(jù)幀采用分頁的形式,整頁數(shù)據(jù)作為一個(gè)數(shù)據(jù)幀,所述上位機(jī)根據(jù)配置FLASH的實(shí)際頁面數(shù)進(jìn)行下發(fā)數(shù)字幀。
在步驟S02中,所述遠(yuǎn)程更新模塊每收到一頁數(shù)據(jù)幀,暫存一頁數(shù)據(jù)幀并進(jìn)行程序數(shù)據(jù)的FLASH寫入操作控制以及反饋狀態(tài),所述通訊模塊根據(jù)遠(yuǎn)程更新模塊的外部信號(hào),判斷是暫停還是繼續(xù)下一次程序數(shù)據(jù)幀的下發(fā)。
在步驟S02中,所述遠(yuǎn)程更新模塊按照配置FLASH的具體時(shí)序,通過時(shí)鐘生成模塊、配合擦除、寫使能、寫地址以及寫數(shù)據(jù)命令,完成一頁數(shù)據(jù)幀的更新;一頁數(shù)據(jù)幀更新完成后,反饋至通訊模塊,再進(jìn)行下一頁的更新。
在完成整個(gè)程序數(shù)據(jù)的更新后,所述遠(yuǎn)程更新模塊再對(duì)寫入至配置FLASH的數(shù)據(jù)幀進(jìn)行回讀,并通過通訊模塊再次回傳至上位機(jī),由上位機(jī)進(jìn)行下發(fā)數(shù)據(jù)和回讀數(shù)據(jù)的一致性比對(duì);當(dāng)上位機(jī)判斷兩個(gè)數(shù)據(jù)一致時(shí),再通過嵌入式處理器遠(yuǎn)程更新系統(tǒng)啟動(dòng)重配置,完成更新。
與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于:
本發(fā)明的FPGA遠(yuǎn)程更新裝置,在FPGA上通過軟核或者硬件語言來實(shí)現(xiàn)嵌入式處理器遠(yuǎn)程更新系統(tǒng),來實(shí)現(xiàn)FPGA對(duì)自身的配置FLASH進(jìn)行遠(yuǎn)程更新,不需要額外增加其它如DSP、CPLD和FPGA等控制器進(jìn)行程序更新,減少了FPGA遠(yuǎn)程更新的成本;另外也不需要布線,減少了FPGA布線難度以及數(shù)量。本發(fā)明的FPGA遠(yuǎn)程更新方法同樣具有如上更新裝置所述的優(yōu)點(diǎn)。
附圖說明
圖1為本發(fā)明的更新裝置的方框結(jié)構(gòu)圖之一。
圖2為本發(fā)明的更新裝置的方框結(jié)構(gòu)圖之二。
圖3為本發(fā)明的更新裝置的方框結(jié)構(gòu)圖之三。
圖4為本發(fā)明的更新方法流程圖。
具體實(shí)施方式
以下結(jié)合說明書附圖和具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步描述。
如圖1至圖3所示,本實(shí)施例的FPGA遠(yuǎn)程更新裝置,包括FPGA模塊,F(xiàn)PGA模塊內(nèi)部設(shè)有嵌入式處理器遠(yuǎn)程更新系統(tǒng),嵌入式處理器遠(yuǎn)程更新系統(tǒng)包括通訊模塊和遠(yuǎn)程更新模塊,通訊模塊分別與上位機(jī)和遠(yuǎn)程更新模塊相連,遠(yuǎn)程更新模塊與FPGA模塊的配置FLASH相連。本發(fā)明的FPGA遠(yuǎn)程更新裝置,在FPGA上通過軟核或者硬件語言來實(shí)現(xiàn)嵌入式處理器遠(yuǎn)程更新系統(tǒng),來實(shí)現(xiàn)FPGA對(duì)自身的配置FLASH進(jìn)行遠(yuǎn)程更新,不需要額外增加其它如DSP、CPLD和FPGA等控制器進(jìn)行程序更新,減少了FPGA遠(yuǎn)程更新的成本;另外也不需要布線,減少了FPGA布線難度以及數(shù)量。
本實(shí)施例中,通訊模塊接收上位機(jī)(如PC機(jī))的命令和程序數(shù)據(jù)并發(fā)送至遠(yuǎn)程更新模塊,同時(shí)將嵌入式處理器遠(yuǎn)程更新系統(tǒng)是否允許更新、更新進(jìn)度以及回讀的程序數(shù)據(jù)回傳至上位機(jī),遠(yuǎn)程更新模塊將接收的命令進(jìn)行解析,并對(duì)程序數(shù)據(jù)轉(zhuǎn)換成適合配置FLASH的數(shù)據(jù)流和時(shí)鐘流,進(jìn)行配置FLASH數(shù)據(jù)的讀寫以及擦除。
本實(shí)施例中,通訊模塊采用網(wǎng)口或串口或光纖等作為實(shí)現(xiàn)媒介,收到的數(shù)據(jù)采用命令幀和數(shù)據(jù)幀分開的模式,其中命令幀主要用于上位機(jī)下發(fā)更新命令、回讀命令以及配置FLASH寫入的程序文件是否和PC機(jī)下發(fā)程序文件相同的一致性命令。更新命令用于指示遠(yuǎn)程更新模塊進(jìn)行程序更新的使能命令,回讀命令用于回讀配置FLASH中的存在的程序文件,一致性命令和回讀命令搭配使用,用于遠(yuǎn)程更新模塊判斷是否對(duì)更新的數(shù)據(jù)進(jìn)行重配置。
本實(shí)施例中,通訊模塊通過無線或網(wǎng)線或串口或USB口與上位機(jī)相連。
如圖1和圖2所示,本實(shí)施例中,配置FLASH為FPGA內(nèi)置或FPGA外置。
如圖4所示,本發(fā)明還公開了一種基于如上所述的FPGA遠(yuǎn)程更新裝置的更新方法,步驟為:
S01、上位機(jī)向嵌入式處理器遠(yuǎn)程更新系統(tǒng)發(fā)送約定的程序更新指令,遠(yuǎn)程更新模塊采集嵌入式處理器遠(yuǎn)程更新系統(tǒng)的狀態(tài),決定是否接收更新指令;
S02、當(dāng)允許更新后,上位機(jī)下發(fā)數(shù)據(jù)幀,并經(jīng)通訊模塊發(fā)送至遠(yuǎn)程更新模塊,遠(yuǎn)程更新模塊進(jìn)行數(shù)據(jù)幀的暫存,再按照配置FLASH的具體時(shí)序完成數(shù)據(jù)幀的更新。
下面結(jié)合一實(shí)例對(duì)本發(fā)明的FPGA遠(yuǎn)程更新方法做進(jìn)一步的描述:
如圖3和圖4所示,PC機(jī)通過串口、網(wǎng)線、無線或者USB口向嵌入式處理器遠(yuǎn)程更新系統(tǒng)發(fā)送約定的程序更新指令。PC機(jī)收到從遠(yuǎn)程更新模塊發(fā)出的經(jīng)由通訊模塊上傳的允許更新指令后,下發(fā)數(shù)據(jù)幀。數(shù)據(jù)幀根據(jù)實(shí)際情況,采用分頁,頁碼起始地址+數(shù)據(jù)1+數(shù)據(jù)2……,直到整頁數(shù)據(jù)作為一個(gè)數(shù)據(jù)幀。其中根據(jù)配置FLASH實(shí)際頁面數(shù)進(jìn)行下發(fā)數(shù)據(jù)幀數(shù)。其中每收到一頁,遠(yuǎn)程更新模塊暫存一頁數(shù)據(jù)并進(jìn)行FLASH寫入操作控制以及反饋狀態(tài)。通訊模塊根據(jù)遠(yuǎn)程更新模塊以及整個(gè)遠(yuǎn)程更新系統(tǒng)外部信號(hào),進(jìn)行判斷是暫停還是繼續(xù)下一頁程序數(shù)據(jù)的下發(fā)。遠(yuǎn)程更新模塊根據(jù)通訊模塊收到的有頁面信息和地址數(shù)據(jù)以及程序數(shù)據(jù)的數(shù)據(jù)幀,先暫存數(shù)據(jù)幀。按照配置FLASH具體時(shí)序,通過時(shí)鐘生成模塊,配合擦除、寫使能、寫地址以及寫數(shù)據(jù)等命令,完成一頁數(shù)據(jù)的更新。一頁數(shù)據(jù)更新完成后,反饋給通訊模塊更新完成的標(biāo)志。再進(jìn)行下一頁數(shù)據(jù)的更新。完成整個(gè)程序的更新后,遠(yuǎn)程更新系統(tǒng)再對(duì)寫入到配置FLASH中的數(shù)據(jù)進(jìn)行回讀,通過通訊模塊再次回傳給PC機(jī),由PC機(jī)進(jìn)行下發(fā)文件和回讀文件的一致性對(duì)比。PC機(jī)判斷兩個(gè)文件一致后,再通過嵌入式處理器遠(yuǎn)程更新系統(tǒng)來啟動(dòng)重配置,完成更新。否則擦除FLASH,再次進(jìn)行上述操作,完成遠(yuǎn)程更新操作。
本發(fā)明的FPGA遠(yuǎn)程更新裝置及方法,不需要額外增加其它控制器(如DSP,CPLD和FPGA)來對(duì)FPGA進(jìn)行程序更新,減少了FPGA遠(yuǎn)程更新的成本;除了遠(yuǎn)程通訊線路,不需要其它布線來實(shí)現(xiàn)程序更新的目的,減少了布線難度以及數(shù)量;對(duì)不支持軟核的FPGA可以采用硬件描述語言實(shí)現(xiàn),擴(kuò)大了對(duì)FPGA遠(yuǎn)程更新的應(yīng)用范圍;與FPGA相連通訊速率,可以依據(jù)成本和更新速度時(shí)間要求,來配備低速或高速接口。
以上僅是本發(fā)明的優(yōu)選實(shí)施方式,本發(fā)明的保護(hù)范圍并不僅局限于上述實(shí)施例,凡屬于本發(fā)明思路下的技術(shù)方案均屬于本發(fā)明的保護(hù)范圍。應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理前提下的若干改進(jìn)和潤(rùn)飾,應(yīng)視為本發(fā)明的保護(hù)范圍。