專(zhuān)利名稱(chēng)::一種對(duì)設(shè)備內(nèi)fpga芯片統(tǒng)一配置和管理的系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本實(shí)用新型涉及嵌入式系統(tǒng)
技術(shù)領(lǐng)域:
,具體涉及一種對(duì)設(shè)備內(nèi)FPGA芯片統(tǒng)一配置和管理的系統(tǒng)。
背景技術(shù):
:現(xiàn)代的超聲多普勒診斷儀越來(lái)越多的使用FPGA(FieldProgrammableGateArray,現(xiàn)場(chǎng)可編程邏輯門(mén)陣列),通常要使用超過(guò)一片的FPGA芯片。但是基于SRAM(StaticRAM,靜態(tài)隨機(jī)存儲(chǔ)器)工藝的FPGA芯片在每次上電后需要進(jìn)行配置,通常情況下FPGA芯片的配置文件由一片外部專(zhuān)用的EPROM來(lái)加載。這種傳統(tǒng)配置方式是在FPGA芯片的功能相對(duì)穩(wěn)定的情況下采用的。在系統(tǒng)設(shè)計(jì)要求配置速度高、容量大、維修以及遠(yuǎn)程升級(jí)時(shí),這種方法就顯得很不實(shí)際也不方便。在FPGA芯片正常工作時(shí),配置數(shù)據(jù)存儲(chǔ)在SRAM單元中,這個(gè)SRAM單元也被稱(chēng)為配置存儲(chǔ)(ConfigurationRAM)。由于SRAM是易失性的存儲(chǔ)器,因此,F(xiàn)PGA芯片在上電之后,外部電路需要將配置數(shù)據(jù)重新載入到片內(nèi)的配置RAM中。在芯片配置完成后,內(nèi)部的寄存器以及I/0管腳必須進(jìn)行初始化。等初始化完成以后,芯片才會(huì)按照用戶(hù)設(shè)計(jì)的功能正常工作。目前有兩種方案可以實(shí)現(xiàn),一種是使用專(zhuān)用的PROM,這些專(zhuān)用的PROM內(nèi)部集成控制電路,能夠提供FPGA芯片的配置時(shí)序,只要將PROM和FPGA芯片的專(zhuān)用引腳相連,上電時(shí)就能夠自動(dòng)加載PROM中的配置數(shù)據(jù)到FPGA芯片的SRAM中;另一種是在含有微處理器的系統(tǒng)中采用其他非易失性存儲(chǔ)器如E2PROM、Flash存儲(chǔ)配置數(shù)據(jù),微處理器模擬FPGA芯片的配置時(shí)序?qū)OM中的數(shù)據(jù)置入FPGA芯片。與第一種方案相比,該方案節(jié)省成本、縮小系統(tǒng)體積。適用于對(duì)成本和體積苛刻要求的系統(tǒng)。但是對(duì)于多普勒超聲診斷設(shè)備,一臺(tái)設(shè)備上有多個(gè)的FPGA芯片,并分布于不同的單板上。按照上述的方案,必須每個(gè)FPGA芯片都配套一片PROM,會(huì)增加成本,并且維修升級(jí)都不方便,必須將PROM從單板上取下,在專(zhuān)用的設(shè)備上將FPGA芯片的配置數(shù)據(jù)寫(xiě)入PROM,再焊接到單板上。第二種方案要求單板上必須由含有微處理器,如果沒(méi)有微處理器,就必需在單板上增加一個(gè)微處理器,增加成本。^Ka,微處理器的運(yùn)行速度一般比較慢,配置一片F(xiàn)PGA芯片需要比較長(zhǎng)的時(shí)間,F(xiàn)PGA芯片的配置數(shù)據(jù)越大,需要的時(shí)間越長(zhǎng)。由于微處理器無(wú)法進(jìn)行并行操作,如果單板上的微處理器需要配置多個(gè)FPGA芯片,就必須逐一配置FPGA芯片,這樣需要等待的時(shí)間就更長(zhǎng)。并且對(duì)于多普勒超聲診斷設(shè)備,也必須對(duì)所有的FPGA芯片的配置數(shù)據(jù)進(jìn)行管理,目前的方案都是針對(duì)單片F(xiàn)PGA芯片的配置數(shù)據(jù)或者單板上所有FPGA芯片的配置數(shù)據(jù)的管理,無(wú)法對(duì)一臺(tái)設(shè)備內(nèi)所有的FPGA芯片的配置數(shù)據(jù)進(jìn)行統(tǒng)一的、集成的管理。因此對(duì)于多普勒超聲診斷設(shè)備,如何使用一種低成本、簡(jiǎn)單有效的方案對(duì)整機(jī)的FPGA芯片的配置數(shù)據(jù)進(jìn)行有效的配置和管理配置FPGA芯片、存取數(shù)據(jù)、升級(jí)數(shù)據(jù),就擺在業(yè)內(nèi)人士的面前。
實(shí)用新型內(nèi)容本實(shí)用新型要解決的技術(shù)問(wèn)題是提供一種對(duì)設(shè)備內(nèi)FPGA芯片統(tǒng)一配置和管理的系統(tǒng)及方法,克服現(xiàn)有技術(shù)只能對(duì)單一的FPGA芯片進(jìn)行配置,配置效率低下的缺陷。本實(shí)用新型為解決上述技術(shù)問(wèn)題所采用的技術(shù)方案為-一種對(duì)設(shè)備內(nèi)FPGA芯片統(tǒng)一配置和管理的系統(tǒng),包括配置和管理邏輯組件和至少一個(gè)現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA,所述配置和管理邏輯組件與所述現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA相連,所述配置和管理邏輯組件包括微處理器、非易失性存儲(chǔ)器、復(fù)雜可編程邏輯器件CPLD,所述微處理器、所述非易失性存儲(chǔ)器和所述復(fù)雜可編程邏輯器件CPLD相互連接,所述復(fù)雜可編程邏輯器件CPLD與所述現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA連接,所述配置和管理邏輯組件用于按照串行方式或并行方式配置指定的一片或多片所述現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA。所述的對(duì)設(shè)備內(nèi)FPGA芯片統(tǒng)一配置和管理的系統(tǒng),其中所述配置和管理邏輯組件對(duì)所述現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA的配置數(shù)據(jù)進(jìn)行讀取、更新或升級(jí)。.所述的對(duì)設(shè)備內(nèi)FPGA芯片統(tǒng)一配置和管理的系統(tǒng),其中所述微處理器設(shè)置通訊接口,通過(guò)所述通訊接口與上位機(jī)進(jìn)行通訊。所述的對(duì)設(shè)備內(nèi)FPGA芯片統(tǒng)一配置和管理的系統(tǒng),其中所述微處理器對(duì)所述非易失性存儲(chǔ)器的內(nèi)容進(jìn)行讀寫(xiě)或修改。所述的對(duì)設(shè)備內(nèi)FPGA芯片統(tǒng)一配置和管理的系統(tǒng),其中所述微處理器向所述復(fù)雜可編程邏輯器件CPLD發(fā)送命令并讀取所述復(fù)雜可編程邏輯器件CPLD的狀態(tài)值。所述的對(duì)設(shè)備內(nèi)FPGA芯片統(tǒng)一配置和管理的系統(tǒng),其中所述非易失性存儲(chǔ)器存儲(chǔ)所述現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FGPA的配置數(shù)據(jù)和相關(guān)信息。所述的對(duì)設(shè)備內(nèi)FPGA芯片統(tǒng)一配置和管理的系統(tǒng),其中所述復(fù)雜可編程邏輯器件CPLD根據(jù)所述非易失性存儲(chǔ)器存儲(chǔ)的有關(guān)所述現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA的配置信息,讀取所述非易失性存儲(chǔ)器的數(shù)據(jù)并配置所述現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA。所述的對(duì)設(shè)備內(nèi)FPGA芯片統(tǒng)一配置和管理的系統(tǒng),其中所述復(fù)雜可編程邏輯器件CPLD向所述微處理器返回所述現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA的配置結(jié)果。所述的對(duì)設(shè)備內(nèi)FPGA芯片統(tǒng)一配置和管理的系統(tǒng),其中所述非易失性存儲(chǔ)器設(shè)為Flash存儲(chǔ)器或EEPROM存儲(chǔ)器。所述的對(duì)設(shè)備內(nèi)FPGA芯片統(tǒng)一配置和管理的系統(tǒng),其中所述通訊接口設(shè)為USB接口。本實(shí)用新型的有益效果本實(shí)用新型對(duì)設(shè)備內(nèi)FPGA芯片統(tǒng)一配置和管理的系統(tǒng)實(shí)現(xiàn)了對(duì)一臺(tái)設(shè)備內(nèi)FPGA芯片的統(tǒng)一配置和管理,大大提高了對(duì)設(shè)備內(nèi)FPGA芯片的配置效率,從而提高了設(shè)備使用和維護(hù)時(shí)的效率。本實(shí)用新型包括如下附圖圖1為本實(shí)用新型為對(duì)設(shè)備內(nèi)FPGA芯片統(tǒng)一配置和管理的系統(tǒng)示意圖2為本實(shí)用新型實(shí)施例Flash區(qū)域劃分示意圖3為本實(shí)用新型實(shí)施例CPLD內(nèi)部組成示意圖4為本實(shí)用新型實(shí)施例SPI接口示意圖5為本實(shí)用新型實(shí)施例CPLD命令分析模塊狀態(tài)機(jī);圖6為本實(shí)用新型實(shí)施例CPLD三態(tài)緩沖器示意圖7為本實(shí)用新型實(shí)施例CPLDFlash讀取模塊示意圖;圖8為本實(shí)用新型實(shí)施例CPLD內(nèi)部總線(xiàn)仲裁模塊狀態(tài)機(jī);圖9為本實(shí)用新型實(shí)施例CPLDFPGA配置模塊示意圖;圖10為本實(shí)用新型實(shí)施例CPLDFPGA并行配置模塊狀態(tài)機(jī);圖11為本實(shí)用新型實(shí)施例CPLDFPGA串行配置模塊狀態(tài)機(jī);圖12為本實(shí)用新型實(shí)施例CPLDFPGA校驗(yàn)?zāi)K狀態(tài)機(jī);圖13為本實(shí)用新型實(shí)施例配置和管理邏輯組件示意圖;圖14為本實(shí)用新型實(shí)施例微處理器操作流程圖。具體實(shí)施方式下面根據(jù)附圖和實(shí)施例對(duì)本實(shí)用新型作進(jìn)一步詳細(xì)說(shuō)明如圖1所示,本實(shí)用新型對(duì)設(shè)備內(nèi)FPGA芯片統(tǒng)一配置和管理的系統(tǒng),包括配置和管理邏輯組件和至少一個(gè)現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA,配置和管理邏輯組件與現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA相連,配置和管理邏輯組件包括微處理器、非易失性存儲(chǔ)器、復(fù)雜可編程邏輯器件CPLD,微處理器、非易失性存儲(chǔ)器和復(fù)雜可編程邏輯器件CPLD相互連接,復(fù)雜可編程邏輯器件CPLD與現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA連接,配置和管理邏輯組件用于按照串行方式或并行方式配置指定的一片或多片現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA。配置和管理邏輯組件對(duì)現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA的配置數(shù)據(jù)進(jìn)行讀取、更新或升級(jí)。微處理器設(shè)置通訊接口,通過(guò)通訊接口與上位機(jī)進(jìn)行通訊。微處理器對(duì)非易失性存儲(chǔ)器的內(nèi)容進(jìn)行讀寫(xiě)或修改。微處理器向復(fù)雜可編程邏輯器件CPLD發(fā)送命令并讀取復(fù)雜可編程邏輯器件CPLD的狀態(tài)值。非易失性存儲(chǔ)器存儲(chǔ)現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FGPA的配置數(shù)據(jù)和相關(guān)信息。復(fù)雜可編程邏輯器件CPLD根據(jù)非易失性存儲(chǔ)器存儲(chǔ)的有關(guān)現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA的配置信息,讀取非易失性存儲(chǔ)器的數(shù)據(jù)配置現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA。復(fù)雜可編程邏輯器件CPLD向微處理器返回現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA的配置結(jié)果。非易失性存儲(chǔ)器設(shè)為Flash存儲(chǔ)器或EEPROM存儲(chǔ)器。通訊接口設(shè)為USB接口。具體實(shí)施方式Flash如圖2所示,F(xiàn)lash是用于存儲(chǔ)FPGA芯片的配置信息以及FPGA芯片的配置數(shù)據(jù)。因此我們將Flash的存儲(chǔ)空間分成兩個(gè)區(qū)域,其中一個(gè)區(qū)域用于存放FPGA芯片的配置信息,稱(chēng)為信息區(qū);另一個(gè)區(qū)域用于存放FPGA芯片的配置數(shù)據(jù),稱(chēng)為數(shù)據(jù)區(qū)。信息區(qū)的開(kāi)始部分存放的是配置標(biāo)志位,用于指示CPLD是否需要等待微處理器的命令才開(kāi)始進(jìn)行FPGA芯片的配置。如果配置標(biāo)志位=0xAA,則CPLD無(wú)需等待微處理器的配置命令,只要獲得Flash的總線(xiàn)控制權(quán),就可以開(kāi)始FPGA芯片的配置;如果配置標(biāo)志位^0x55,CPLD必須等待微處理器的配置命令,才可以開(kāi)始FPGA芯片的配置;如果配置標(biāo)志位為上述兩個(gè)值之外的其他值,則CPLD不進(jìn)行任何的FPGA芯片配置活動(dòng),并向微處理器返回一個(gè)錯(cuò)誤狀態(tài)。如表1所示。這樣,如果我們需要FPGA芯片盡快地被配置完成,我們就可以通過(guò)微處理器將配置標(biāo)志位設(shè)置為OxAA。而如果我們有其他的需要而不希望CPLD自動(dòng)配置FPGA芯片,希望使用命令一個(gè)一個(gè)的配置FPGA芯片,則可以通過(guò)微處理器將配置標(biāo)志位設(shè)置為0x55。表l配置標(biāo)志位說(shuō)明備注0x55FPGA芯片的配置受微處理器命令的控制微處理器發(fā)送配置命令,CPLD取得Flash的控制權(quán)后才開(kāi)始配置FPGA芯片CPLD自動(dòng)配置CPLD取得Flash的控制權(quán)即9<table>tableseeoriginaldocumentpage10</column></row><table>接下來(lái)的信息區(qū)存放的是FPGA數(shù)目,表示系統(tǒng)中連接到配置模塊的FPGA的數(shù)量。0表示系統(tǒng)中沒(méi)有任何的FPGA連接到配置模塊,1表示系統(tǒng)中有1片F(xiàn)PGA連接到配置模塊,以此類(lèi)推。本配置模塊能連接的FPGA數(shù)量受Flash的容量、CPLD的引腳數(shù)量的限制。例如,在本配置模塊的一個(gè)應(yīng)用實(shí)例上,連接的FPGA是8片。接下來(lái)的是存放FPGA配置數(shù)據(jù)的相關(guān)信息的FPGA配置數(shù)據(jù)信息,通過(guò)這個(gè)信息,CPLD可以得到連接在CPLD某一個(gè)配置通道上的FI>GA代號(hào)、FPGA的配置順序、以及FPGA的配置數(shù)據(jù)的存放區(qū)域、校驗(yàn)值。其中,F(xiàn)PGA配置次序是用于指示FPGA的配置順序。如表2所示,根據(jù)不同的配置等級(jí),即可CPLD即可得到FPGA的配置順序。如果有多個(gè)FPGA具有相同的配置等級(jí),則表示這些FPGA需要并行配置。<table>tableseeoriginaldocumentpage10</column></row><table>FPGA代碼表示的是系統(tǒng)中使用的FPGA的代號(hào)。主要是基于這樣的考慮,在多普勒超聲診斷設(shè)備中,有可能需要多片F(xiàn)PGA使用同一個(gè)的配置數(shù)據(jù),使用FPGA的代號(hào)可以進(jìn)行簡(jiǎn)單的校驗(yàn)不同型號(hào)的FPGA不能使用同一個(gè)配置數(shù)據(jù),相同型號(hào)的FPGA才可以使用同一個(gè)配置數(shù)據(jù)。如表3所示,表示的是在本配置模塊的一個(gè)應(yīng)用實(shí)例上,連接的8片F(xiàn)PGA的代號(hào)。其中XC3S1400A有2片、XC3S1600E有4片。這些相同的FPGA就可以使用同一個(gè)配置數(shù)據(jù)。表3<table>tableseeoriginaldocumentpage11</column></row><table>FPGA配置數(shù)據(jù)起始地址和FPGA配置數(shù)據(jù)長(zhǎng)度存放的是FPGA配置數(shù)據(jù)的起始地址和大小。通過(guò)這兩個(gè)信息段,CPLD可以從指定區(qū)域讀出指定長(zhǎng)度的配置數(shù)據(jù),從而對(duì)FPGA進(jìn)行配置。FPGA配置數(shù)據(jù)校驗(yàn)值是保存FPGA配置數(shù)據(jù)的校驗(yàn)值,這個(gè)主要是為了防止存取過(guò)程中出現(xiàn)錯(cuò)誤,導(dǎo)致配置完成后的FPGA的工作狀態(tài)不是我們所預(yù)期的。CPLD在從Flash的數(shù)據(jù)區(qū)讀取FPGA配置數(shù)據(jù)時(shí),同時(shí)按照一定的校驗(yàn)算法進(jìn)行計(jì)算,直到FPGA配置數(shù)據(jù)起始地址和FPGA配置數(shù)據(jù)長(zhǎng)度指定的區(qū)域的FPGA配置數(shù)據(jù)被讀取完成,此時(shí)校驗(yàn)算法也完成,將得到的校驗(yàn)結(jié)果與FPGA配置數(shù)據(jù)校驗(yàn)值比較,表示FPGA配置數(shù)據(jù)存取過(guò)程中沒(méi)有失誤。如果兩個(gè)值不相等,表示有失誤,CPLD必須向微處理器返回一個(gè)錯(cuò)誤狀態(tài)。根據(jù)開(kāi)發(fā)難度和CPLD的容量,校驗(yàn)算法可以使用任何成熟的校驗(yàn)算法,本配置模塊的一個(gè)應(yīng)用實(shí)例上使用的是CRC-16(CyclicRedundancyCheck,循環(huán)冗余校驗(yàn))校驗(yàn)算法。Flash的數(shù)據(jù)區(qū)就用于存放FPGA配置數(shù)據(jù),一般的根據(jù)CPLD的配置通道順序存放。只要將FPGA配置數(shù)據(jù)的起始地址和大小正確的反應(yīng)到FPGA配置數(shù)據(jù)起始地址和FPGA配置數(shù)據(jù)長(zhǎng)度即可。CPLD如圖3所示,CPLD包括串行接口、命令分析模塊、三態(tài)緩沖器、Flash讀取模塊、內(nèi)部中線(xiàn)仲裁模塊、FPGA配置模塊等。Flash采用8M字節(jié),16位寬度的芯片;串行接口采用SPI(SerialPeripheralsInterface,串行外設(shè)接口);對(duì)上述8片F(xiàn)PGA進(jìn)行配置,其中7片采用SlaveSerial配置方式,另一片采用SdectMAP配置方式。'串行接口模塊用于CPLD與微處理器之間的通訊,兩者之間沒(méi)有很多的數(shù)據(jù)需要傳送,因此采用引線(xiàn)較少的串行接口是比較合適的。本實(shí)施例中采用SPI接口,其中CPLD屬于從器件,微處理器屬于主器件,所有的操作均由主器件引起。SPI接口只需4根信號(hào)線(xiàn):LE弁為片選信號(hào),當(dāng)其有效電平為低電平,表示從器件被選中;CLK是由主器件發(fā)送給從器件的時(shí)鐘信號(hào),用于同步主從器件的工作時(shí)序;MOSI是數(shù)據(jù)傳輸線(xiàn),由主器件輸出,從器件輸入;MISO也是數(shù)據(jù)傳輸線(xiàn),由從器件輸出,主器件輸入。SPI接口如圖4所示。當(dāng)LE弁有效時(shí),三個(gè)三態(tài)門(mén)打開(kāi),CLK、MOSI、MISO也可以輸入。在CLK的推動(dòng)下,MOSI的數(shù)據(jù)進(jìn)入接收移位寄存器,發(fā)送移位寄存器的數(shù)據(jù)出現(xiàn)在MISO。當(dāng)一個(gè)字節(jié)的數(shù)據(jù)發(fā)送接收完成之后,通過(guò)接收狀態(tài)和發(fā)送狀態(tài)產(chǎn)生RxIFG和TxIFG到命令分析模塊,由這個(gè)模塊讀取接收緩沖寄存器的數(shù)據(jù)和寫(xiě)數(shù)據(jù)到發(fā)送緩沖寄存器。如圖5所示,命令分析模塊分析微處理器發(fā)送過(guò)來(lái)的命令和數(shù)據(jù),并執(zhí)行相應(yīng)的動(dòng)作,以及從Flash中讀取信息區(qū)的數(shù)據(jù)并執(zhí)行相應(yīng)動(dòng)作。這個(gè)模塊比較復(fù)雜,采用狀態(tài)機(jī)實(shí)現(xiàn),其中虛線(xiàn)框部分,適用于CPLD自動(dòng)從Flash中讀取數(shù)據(jù),并根據(jù)Flash信息區(qū)的信息自動(dòng)配置FPGA。.當(dāng)本配置裝置上電幵始工作時(shí),需要檢測(cè)EN^信號(hào)是否有效,EN#信號(hào)是微處理器發(fā)送給CPLD的,是用于指示CPLD是否可以使用Flash的總線(xiàn)。在命令分析模塊里只需要檢測(cè)一次EN^是否有效即可。如果EN弁無(wú)效,則等待。如果ENS有效,則通過(guò)Flash讀取模塊從Flash讀取配置標(biāo)志位,并判斷。如果配置標(biāo)志位-0x55,表示需要等待微處理器的命令才進(jìn)行FPGA的配置,此時(shí)狀態(tài)機(jī)進(jìn)入空閑狀態(tài),等待微處理器的命令。如果配置標(biāo)志位-Oxaa,表示CPLD根據(jù)Flash的信息自動(dòng)進(jìn)行FPGA的配置,則再次從Flash中讀取FPGA數(shù)目。如果FPGA數(shù)目=0表示沒(méi)有FPGA需要進(jìn)行配置,此時(shí)狀態(tài)機(jī)進(jìn)入空閑狀態(tài),等待微處理器的命令。如果FPGA數(shù)目>0,表示有FPGA需要配置,則狀態(tài)機(jī)將讀取的次數(shù)設(shè)置為FPGA數(shù)目。接著從Flash讀取FPGA配置數(shù)據(jù)信息并寫(xiě)入對(duì)應(yīng)FPGA配置模塊;如果沒(méi)有達(dá)到預(yù)設(shè)的次數(shù),則繼續(xù)讀取下一個(gè)FPGA配置數(shù)據(jù)信息;如果達(dá)到預(yù)設(shè)的次數(shù),則啟動(dòng)配置,之后進(jìn)入空閑狀態(tài),等待微處理器的命令。具體的配置事務(wù)將交給FPGA配置模塊完成。當(dāng)狀態(tài)機(jī)處于空閑狀態(tài),等待微處理器的命令時(shí),如果串行接口的R^IFG有效,則從串行接口的接收緩沖寄存器讀取微處理器的命令,并進(jìn)入命令分析[表4是一個(gè)實(shí)例的命令列表]。如果分析結(jié)果是該命令無(wú)效,則又返回空閑狀態(tài);如果命令是配置,則進(jìn)入配置FPGA狀態(tài),從13命令中獲得配置的通道,并設(shè)置讀取次數(shù)為l;接著從Flash讀取FPGA配置數(shù)據(jù)信息并寫(xiě)入對(duì)應(yīng)FPGA配置模塊,然后啟動(dòng)配置,最后進(jìn)入空閑狀態(tài)。如果命令是獲取,則進(jìn)入讀取狀態(tài),從命令中讀取讀取的目標(biāo),然后等待串行接口的TxIFG有效,如果有效,則將數(shù)據(jù)寫(xiě)入串行接口的發(fā)送緩沖寄存器,每發(fā)送一個(gè)字節(jié)都必須等待TxIFG有效,直到數(shù)據(jù)發(fā)送完成,最后進(jìn)入空閑狀態(tài)。表4<table>tableseeoriginaldocumentpage14</column></row><table>說(shuō)明命令都為一個(gè)字節(jié),其中高兩位用于區(qū)別配置命令和獲取命令,低六位用于指示命令的對(duì)象。除上面列出的命令代碼之外的,都屬于無(wú)效命令。'如圖6所示,三態(tài)緩沖器用于CPLD與外部的Flash總線(xiàn)的相互隔離。因?yàn)槲⑻幚砥?、CPLD都連接到Flash,當(dāng)微處理器、CPLD中的一個(gè)需要訪(fǎng)問(wèn)Flash,另一個(gè)就必須把自己與Flash總線(xiàn)隔離,否則引起訪(fǎng)問(wèn)錯(cuò)誤。通過(guò)多個(gè)的三態(tài)門(mén)將CPLD內(nèi)部總線(xiàn)和Flash總線(xiàn)隔離開(kāi),三態(tài)門(mén)的禁止和使能由微處理器的EN弁控制,如果EN弁有效,則三態(tài)門(mén)使能,CPLD內(nèi)部總線(xiàn)和FlashBus直接相連,可以正常從Flash中讀取數(shù)據(jù)。如果EN弁無(wú)效,則三態(tài)門(mén)將CPLD內(nèi)部總線(xiàn)和Flash總線(xiàn)隔開(kāi),禁止CPLD訪(fǎng)問(wèn)Flash。如圖7所示,F(xiàn)lash讀取模塊從Flash中讀取數(shù)據(jù)。因?yàn)椴煌腇lash有不同的讀取時(shí)序特性,需要通過(guò)本模塊來(lái)實(shí)現(xiàn)對(duì)不同的Flash的兼容性。EN#(在CPLD內(nèi)部成為CEN"從無(wú)效變成有效,將使RST信號(hào)發(fā)生器產(chǎn)生一個(gè)RST射言號(hào),使Flash恢復(fù)到讀狀態(tài)。從內(nèi)部總線(xiàn)仲裁模塊發(fā)過(guò)來(lái)兩組信號(hào)讀信號(hào)FRD存和地址FA0:22(FRD^和FA0:22是由命令分析模塊和FPGA配置模塊等在需要讀取flash數(shù)據(jù)時(shí)產(chǎn)生的,并通過(guò)內(nèi)部總線(xiàn)仲裁模塊發(fā)送到Flash讀取模塊)。FRDW吏CE信號(hào)發(fā)生器、OE信號(hào)發(fā)生器產(chǎn)生CE^OE弁信號(hào),同時(shí)CE弁使地址鎖存器輸出CA0:22信號(hào)到Flash,使Flash輸出指定地址的數(shù)據(jù);而CE#、OE弁信號(hào)將使數(shù)據(jù)鎖存器鎖定這些數(shù)據(jù),并寫(xiě)入Fash讀取數(shù)據(jù)緩沖區(qū),并發(fā)送OK弁信號(hào)到內(nèi)部總線(xiàn)仲裁模塊,表明完成一次Flash讀操作,可以讀取結(jié)果。.如圖8所示,內(nèi)部總線(xiàn)仲裁模塊用于總線(xiàn)仲裁,因?yàn)橛卸鄠€(gè)模塊需要通過(guò)Flash讀取模塊來(lái)訪(fǎng)為Flash,為了防止多個(gè)模塊同時(shí)訪(fǎng)問(wèn)Flash而互相干擾,需要一個(gè)根據(jù)模塊的優(yōu)先級(jí)作一個(gè)排列,使訪(fǎng)問(wèn)依次完成。有兩個(gè)并行的處理進(jìn)程(并行處理是CPLD/FPGA等的特點(diǎn)),一個(gè)是用于將進(jìn)程按照先后順序以及優(yōu)先級(jí)將其他模塊發(fā)送的讀請(qǐng)求排列,另一個(gè)進(jìn)程是用于將隊(duì)列里的讀請(qǐng)求取出,發(fā)送到Flash讀取模塊,并將數(shù)據(jù)讀回,發(fā)送給請(qǐng)求者。從CPLD上電后,本模塊進(jìn)入空閑狀態(tài),如果FRE^信號(hào)有效,則判斷是否有多個(gè)讀請(qǐng)求同時(shí)產(chǎn)生,如果不是,直接將本讀請(qǐng)求放入隊(duì)列的末尾,接著返回空閑狀態(tài)。如果是多個(gè)讀請(qǐng)求同時(shí)產(chǎn)生,則根據(jù)讀請(qǐng)求的優(yōu)先級(jí)(表5),從優(yōu)先級(jí)高到低排列,依次放入隊(duì)列中,接著返回空閑狀態(tài)。在空閑狀態(tài)時(shí),如果隊(duì)列中有讀請(qǐng)求,則取出最前面的一個(gè)讀請(qǐng)求,并發(fā)送到Flash讀取模塊,讀取flash中的數(shù)據(jù),等到OK弁有效時(shí),就可以從Flash讀取數(shù)據(jù)緩沖區(qū)讀取數(shù)據(jù)發(fā)送給讀請(qǐng)求者。接著進(jìn)入空閑狀態(tài)。如表5所示是實(shí)施例的優(yōu)先級(jí)說(shuō)明。將命令分析模塊設(shè)置為最高優(yōu)先級(jí),因?yàn)檫@是讀取命令的。將Virtex-5設(shè)置為次級(jí)優(yōu)先級(jí),因?yàn)檫@個(gè)FPGA很重要,需要盡快被配置完成。而其余的FPGA也都根據(jù)其重要性,設(shè)置了相應(yīng)的優(yōu)先級(jí)。表5<table>tableseeoriginaldocumentpage16</column></row><table>如圖9所示,F(xiàn)PGA配置模塊將Flash中的數(shù)據(jù)轉(zhuǎn)為FPGA可識(shí)別的格式并產(chǎn)生合適的配置信號(hào),以及計(jì)算配置數(shù)據(jù)的校驗(yàn)值。FPGA配置模塊由配置模塊和校驗(yàn)?zāi)K兩個(gè)模塊,以及起始地址寄存器、數(shù)據(jù)長(zhǎng)度寄存器、校驗(yàn)值寄存器、狀態(tài)寄存器四個(gè)寄存器組成。.其中,起始地址寄存器存放的是本配置通道上的FPGA的配置數(shù)據(jù)在Flash中的起始地址;數(shù)據(jù)長(zhǎng)度寄存器存放的是本配置通道上的FPGA的配置數(shù)據(jù)有多少個(gè)字節(jié);校驗(yàn)值寄存器存放的是本配置通道上的FPGA的配置數(shù)據(jù)的校驗(yàn)值;狀態(tài)寄存器用于存放本通道配置的結(jié)果。起始地址寄存器、數(shù)據(jù)長(zhǎng)度寄存器、校驗(yàn)值寄存器的內(nèi)容是由命令分析模塊寫(xiě)入的,狀態(tài)寄存器是在配置過(guò)程中,由配置模塊和校驗(yàn)?zāi)K寫(xiě)入的,其各位代表的意義如表6所示。如果讀取的狀態(tài)數(shù)據(jù)的Bit7-l,表示正在配置FPGA,bit0-bit3的狀態(tài)不可信,因?yàn)檫€沒(méi)配置完成;Bit6-Bit3沒(méi)有使用,讀回總是0;Bit2-Bit0是表示配置過(guò)程的狀態(tài),只有四位同時(shí)為1才表示配置是成功的,如果有不是1的狀態(tài)存在,都表示不成功。表6Bit0BitlBit2Bit3Bit4Bit5Bit6Bit70Init一B校驗(yàn)DONE保留,保留,保留,保留,空閑狀態(tài)結(jié)果信號(hào)未使未使未使未使無(wú)效不匹無(wú)效用,總用,總用,總用,總酉己是o是o是0是o1Init—B校驗(yàn)DONE正在狀態(tài)結(jié)果信號(hào)配置有效正常有效FPGA配置模塊是實(shí)際執(zhí)行FPGA配置功能的模塊。在本實(shí)例上,由于使用了兩種配置方式-串行配置和并行配置,就需要兩種不同的配置模塊。如圖IO所示的是本實(shí)例的并行配置模塊,如圖ll所示的是本實(shí)例的串行配置模塊。采用并行配置,一次可以將16位的配置數(shù)據(jù)寫(xiě)入17FPGA,配置速度快,對(duì)于大容量的FPGA來(lái)說(shuō),可以顯著的縮短時(shí)間。而串行配置方式每次只能寫(xiě)一位數(shù)據(jù),不適合大容量的FPGA,但是這種方法的引線(xiàn)顯然是很少的。并行配置模塊的一個(gè)實(shí)例如圖IO所示,CPLD上電后,進(jìn)入空閑狀態(tài),當(dāng)命令分析模塊發(fā)過(guò)來(lái)一個(gè)啟動(dòng)配置的命令后,則馬上將PROG—B、RDWR—B拉低,使FPGA進(jìn)入待配置狀態(tài),此時(shí)需要檢測(cè)Init一B引腳的狀態(tài),以確定FPGA是否進(jìn)入了待配置狀態(tài),并根據(jù)Init—B的狀態(tài)設(shè)置狀態(tài)寄存器。如果FPGA已經(jīng)進(jìn)入待配置狀態(tài),則根據(jù)起始地址寄存器、數(shù)據(jù)長(zhǎng)度寄存器的值啟動(dòng)一個(gè)Flash讀請(qǐng)求到內(nèi)部總線(xiàn)仲裁模塊,并等待配置數(shù)據(jù)返回。數(shù)據(jù)返回之后,將數(shù)據(jù)寫(xiě)入配置端口CfgD[0:15],并使CSI—B=0,同時(shí)令CRC—S=0,并將數(shù)據(jù)復(fù)制給校驗(yàn)?zāi)K,使數(shù)據(jù)校驗(yàn)?zāi)K繼續(xù)進(jìn)行。之后,根據(jù)Busy的狀態(tài),等待FPGA讀取配置端口CfgD[0:15]的數(shù)據(jù)。之后就可以令CSI—B=l,表明完成一次的FPGA配置數(shù)據(jù)的寫(xiě)入。之后,根據(jù)數(shù)據(jù)長(zhǎng)度寄存器的值判斷是否己經(jīng)將所有的配置數(shù)據(jù)寫(xiě)如FPGA,如果沒(méi)有,再發(fā)起一個(gè)Flash讀請(qǐng)求,進(jìn)行一次的FPGA配置數(shù)據(jù)的寫(xiě)入。這樣循環(huán),直到所有配置數(shù)據(jù)都寫(xiě)入FPGA,就檢測(cè)DONE的狀態(tài),根據(jù)DONE的狀態(tài),設(shè)置狀態(tài)寄存器。最后返回空閑狀態(tài)。串行配置模塊的一個(gè)實(shí)例如圖ll所示,與并行配置模塊差不多,差別是串行配置模塊必須將并行數(shù)據(jù)串行化,一位一位傳給FPGA,這個(gè)工作由移位寄存器完成。工作過(guò)程如下CPLD上電后,進(jìn)入空閑狀態(tài),當(dāng)命令分析模塊發(fā)過(guò)來(lái)一個(gè)啟動(dòng)配置的命令后,則馬上將PROGn拉低(n取值為1到7),使FPGA進(jìn)入待配置狀態(tài),此時(shí)需要檢測(cè)Initn引腳的狀態(tài),以確定FPGA是否進(jìn)入了待配置狀態(tài),并根據(jù)Initn的狀態(tài)設(shè)置狀態(tài)寄存器。如果FPGA已經(jīng)進(jìn)入待配置狀態(tài),則根據(jù)起始地址寄存器、數(shù)據(jù)長(zhǎng)度寄存器的值啟動(dòng)一個(gè)Flash讀請(qǐng)求到內(nèi)部總線(xiàn)仲裁模塊,并等待配置數(shù)據(jù)返回。數(shù)據(jù)返回之后,將數(shù)據(jù)寫(xiě)入移位寄存器,同時(shí)令CRC—S=0,并將數(shù)據(jù)復(fù)制給校驗(yàn)?zāi)K,使數(shù)據(jù)校驗(yàn)?zāi)K繼續(xù)進(jìn)行。之后,從移位寄存器移一位數(shù)據(jù)到CfgDatan,并產(chǎn)生一個(gè)CfgCLKn信號(hào)給FPGA,由于一次只向FPGA寫(xiě)一位數(shù)據(jù),因此FPGA能夠及時(shí)響應(yīng),之后,判斷移位寄存器是否為空,如果不空,重復(fù)移位和CfgCLKn,直到移位寄存器為空。之后,根據(jù)數(shù)據(jù)長(zhǎng)度寄存器的值判斷是否已經(jīng)將所有的配置數(shù)據(jù)寫(xiě)如FPGA,如果沒(méi)有,再發(fā)起一個(gè)Flash讀請(qǐng)求。這樣循環(huán),直到所有配置數(shù)據(jù)都寫(xiě)入FPGA,就檢測(cè)DONE的狀態(tài),根據(jù)DONE的狀態(tài),設(shè)置狀態(tài)寄存器。最后返回空閑狀態(tài)。如圖12所示,校驗(yàn)?zāi)K是用于校驗(yàn)Flash中的FPGA配置數(shù)據(jù)的,以防止FPGA配置數(shù)據(jù)在存儲(chǔ)、讀取過(guò)程中發(fā)生意外的修改,導(dǎo)致FPGA不能正常工作。CPLD上電后,進(jìn)入空閑狀態(tài),當(dāng)Init一B(或Initn)等于K則開(kāi)始計(jì)算校驗(yàn)值的進(jìn)程,進(jìn)入等待CRC—S=0的狀態(tài),當(dāng)CRC—S=0時(shí),接受配置模塊發(fā)過(guò)來(lái)的數(shù)據(jù),使用該數(shù)據(jù)計(jì)算校驗(yàn)值,并在計(jì)算完成之后令CRC—S=l。之后判斷是否所有數(shù)據(jù)都計(jì)算完成,如果沒(méi)有,則進(jìn)入等待CRC—S=0的狀態(tài)。如果已經(jīng)計(jì)算完成,將計(jì)算結(jié)果與校驗(yàn)值寄存器的值比較,根據(jù)結(jié)果設(shè)置狀態(tài)寄存器。這樣,完成一次配置數(shù)據(jù)的校驗(yàn)。微處理器微處理器的連接如圖13所示,微處理器通過(guò)USB(UniversalSerialBus,通用串行總線(xiàn))接口與上位機(jī)器實(shí)現(xiàn)通訊,實(shí)現(xiàn)與上位機(jī)實(shí)現(xiàn)數(shù)據(jù)、命令、狀態(tài)的通訊,這里的上位機(jī)一般使用帶USB接口的PC。另外,微處理器與CPLD之間的連接線(xiàn)主要有兩組,一組用于實(shí)現(xiàn)微處理器與ARM的通訊,如前所述的SPI接口的4根信號(hào)線(xiàn)和Busy、EN弁信號(hào)線(xiàn),以實(shí)現(xiàn)向CPLD發(fā)送命令并從CPLD得到一些狀態(tài)值;另一組是配置連接線(xiàn),用于微處理器配置CPLD的,包括CfgCLKc、CfgDatac、Progc、Initc、Donec等五根信號(hào)線(xiàn),用以實(shí)現(xiàn)更新CPLD的配置數(shù)據(jù),實(shí)現(xiàn)CPLD的升級(jí)。最后,微處理器通過(guò)三態(tài)緩沖器與Flash連接,以實(shí)現(xiàn)對(duì)Flash的內(nèi)容進(jìn)行寫(xiě)、讀、修改,又可以與Flash的總線(xiàn)斷開(kāi),使得CPLD可以無(wú)障礙的訪(fǎng)問(wèn)Flash。因此,微處理器的固件需要完成以下事務(wù)1、與上位機(jī)進(jìn)行的USB通訊;2、對(duì)Flash的操作讀、寫(xiě)、校驗(yàn);3、與CPLD的SPI命令處理模塊;4、配置CPLD的模塊其主程序流程圖如圖14所示。本領(lǐng)域技術(shù)人員不脫離本實(shí)用新型的實(shí)質(zhì)和精神,可以有多種變形方案實(shí)現(xiàn)本實(shí)用新型,以上所述僅為本實(shí)用新型較佳可行的實(shí)施例而已,并非因此局限本實(shí)用新型的權(quán)利范圍,凡運(yùn)用本實(shí)用新型說(shuō)明書(shū)及附圖內(nèi)容所作的等效結(jié)構(gòu)變化,均包含于本實(shí)用新型的權(quán)利范圍之內(nèi)。20權(quán)利要求1、一種對(duì)設(shè)備內(nèi)FPGA芯片統(tǒng)一配置和管理的系統(tǒng),其特征在于包括配置和管理邏輯組件和至少一個(gè)現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA,所述配置和管理邏輯組件與所述現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA相連,所述配置和管理邏輯組件包括微處理器、非易失性存儲(chǔ)器、復(fù)雜可編程邏輯器件CPLD,所述微處理器、所述非易失性存儲(chǔ)器和所述復(fù)雜可編程邏輯器件CPLD相互連接,所述復(fù)雜可編程邏輯器件CPLD與所述現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA連接,所述配置和管理邏輯組件用于按照串行方式或并行方式配置指定的一片或多片所述現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA。2、根據(jù)權(quán)利要求1所述的對(duì)設(shè)備內(nèi)FPGA芯片統(tǒng)一配置和管理的系統(tǒng),其特征在于所述配置和管理邏輯組件對(duì)所述現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA的配置數(shù)據(jù)進(jìn)行讀取、更新或升級(jí)。3、根據(jù)權(quán)利要求2所述的對(duì)設(shè)備內(nèi)FPGA芯片統(tǒng)一配置和管理的系統(tǒng),其特征在于所述微處理器設(shè)置通訊接口,通過(guò)所述通訊接口與上位機(jī)進(jìn)行通訊。4、根據(jù)權(quán)利要求3所述的對(duì)設(shè)備內(nèi)FPGA芯片統(tǒng)一配置和管理的系統(tǒng),其特征在于所述微處理器對(duì)所述非易失性存儲(chǔ)器的內(nèi)容進(jìn)行讀寫(xiě)或修改。5、根據(jù)權(quán)利要求4所述的對(duì)設(shè)備內(nèi)FPGA芯片統(tǒng)一配置和管理的系統(tǒng),其特征在于所述微處理器向所述復(fù)雜可編程邏輯器件CPLD發(fā)送命令并讀取所述復(fù)雜可編程邏輯器件CPLD的狀態(tài)值。6、根據(jù)權(quán)利要求5所述的對(duì)設(shè)備內(nèi)FPGA芯片統(tǒng)一配置和管理的系統(tǒng),其特征在于所述非易失性存儲(chǔ)器存儲(chǔ)所述現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FGPA的配置數(shù)據(jù)和相關(guān)信息。7、根據(jù)權(quán)利要求6所述的對(duì)設(shè)備內(nèi)FPGA芯片統(tǒng)一配置和管理的系統(tǒng),其特征在于所述復(fù)雜可編程邏輯器件CPLD根據(jù)所述非易失性存儲(chǔ)器存儲(chǔ)的有關(guān)所述現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA的配置信息,讀取所述非易失性存儲(chǔ)器的數(shù)據(jù)并配置所述現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA。8、根據(jù)權(quán)利要求7所述的對(duì)設(shè)備內(nèi)FPGA芯片統(tǒng)一配置和管理的系統(tǒng),其特征在于所述復(fù)雜可編程邏輯器件CPLD向所述微處理器返回所述現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA的配置結(jié)果。9、根據(jù)權(quán)利要求8所述的對(duì)設(shè)備內(nèi)FPGA芯片統(tǒng)一配置和管理的系統(tǒng),其特征在于所述非易失性存儲(chǔ)器設(shè)為Flash存儲(chǔ)器或EEPROM存儲(chǔ)器。10、根據(jù)權(quán)利要求9所述的對(duì)設(shè)備內(nèi)FPGA芯片統(tǒng)一配置和管理的系統(tǒng),其特征在于所述通訊接口設(shè)為USB接口。專(zhuān)利摘要本實(shí)用新型公開(kāi)了一種對(duì)設(shè)備內(nèi)FPGA芯片統(tǒng)一配置和管理的系統(tǒng),包括配置和管理邏輯組件和至少一個(gè)現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA芯片,配置和管理邏輯組件與現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA相連,配置和管理邏輯組件包括微處理器、非易失性存儲(chǔ)器、復(fù)雜可編程邏輯器件CPLD,微處理器、非易失性存儲(chǔ)器和復(fù)雜可編程邏輯器件CPLD相互連接,復(fù)雜可編程邏輯器件CPLD與現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA連接,配置和管理邏輯組件用于按照串行方式或并行方式配置指定的一片或多片所述現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA。本實(shí)用新型對(duì)設(shè)備內(nèi)FPGA芯片統(tǒng)一配置和管理的系統(tǒng)實(shí)現(xiàn)了對(duì)一臺(tái)設(shè)備內(nèi)FPGA芯片的統(tǒng)一配置和管理,大大提高了對(duì)設(shè)備內(nèi)FPGA芯片的配置效率,從而提高了設(shè)備使用和維護(hù)時(shí)的效率。文檔編號(hào)A61B8/00GK201353157SQ20082023576公開(kāi)日2009年12月2日申請(qǐng)日期2008年12月30日優(yōu)先權(quán)日2008年12月30日發(fā)明者海蘭,李春彬,蔣頌平,黃嘉熙申請(qǐng)人:深圳市藍(lán)韻實(shí)業(yè)有限公司