專利名稱:一種現(xiàn)場(chǎng)可編程門陣列邏輯在線加載的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式系統(tǒng)領(lǐng)域,尤其涉及一種現(xiàn)場(chǎng)可編程門陣列邏輯在線加載的方法和裝置。
背景技術(shù):
現(xiàn)行的現(xiàn)場(chǎng)可編程門陣列(Field-Programmable Gate Array, FPGA)常用的邏輯加載方法有三種JTAG加載、串行加載和并行加載。JTAG加載一般只在邏輯調(diào)試過程中使用,串行加載和并行加載則主要用在FPGA的邏輯在線加載中。對(duì)FPGA邏輯在線加載的好處是能隨時(shí)隨地對(duì)FPGA進(jìn)行遠(yuǎn)程操作和邏輯升級(jí)。并行加載和串行加載各有優(yōu)缺點(diǎn)。并行加載的優(yōu)點(diǎn)是加載速度較快,缺點(diǎn)是需要主配置芯片要有足夠多的管腳資源,在有些情況下系統(tǒng)并不能滿足此項(xiàng)要求。串行加載的缺點(diǎn)是加載速度慢,優(yōu)點(diǎn)是所需主配置芯片的管腳較少。在串行加載方式中,一般主配置芯片都是CPU,使用CPU的通用輸入/輸出 (General Purpose Input/Output, GPI0)管腳來(lái)模擬FPGA的串行加載信號(hào)對(duì)FPGA邏輯進(jìn)行加載,這種CPU模擬的串行加載數(shù)據(jù)時(shí)鐘較慢,加載邏輯所需時(shí)間很長(zhǎng),給用戶帶來(lái)的體
驗(yàn)感較差。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種現(xiàn)場(chǎng)可編程門陣列邏輯在線加載的方法和裝置,能夠減少FPGA邏輯在串行加載過程中所需時(shí)間。為解決上述技術(shù)問題,本發(fā)明的一種現(xiàn)場(chǎng)可編程門陣列邏輯在線加載的方法,包括主配置芯片將現(xiàn)場(chǎng)可編程門陣列(FPGA)的邏輯加載數(shù)據(jù)通過并行數(shù)據(jù)總線發(fā)送給與所述主配置芯片相連的可編程邏輯器件;所述可編程邏輯器件在通過并行數(shù)據(jù)總線接收到并行的邏輯加載數(shù)據(jù)后,將所述并行的邏輯加載數(shù)據(jù)轉(zhuǎn)換為串行的邏輯加載數(shù)據(jù)發(fā)送給FPGA,并向所述FPGA發(fā)送串行加載時(shí)鐘。進(jìn)一步地,所述可編程邏輯器件與外部晶振相連,接收所述外部晶振的外部高速時(shí)鐘,根據(jù)所述外部高速時(shí)鐘將所述并行的邏輯加載數(shù)據(jù)轉(zhuǎn)換為串行的邏輯加載數(shù)據(jù)發(fā)送給FPGA,并且,所述可編程邏輯器件是根據(jù)所述外部高速時(shí)鐘產(chǎn)生高速串行加載時(shí)鐘作為發(fā)送給所述FPGA的串行加載時(shí)鐘。進(jìn)一步地,所述可編程邏輯器件是在向所述FPGA發(fā)送所述串行的邏輯加載數(shù)據(jù)時(shí),向所述FPGA發(fā)送所述高速串行加載時(shí)鐘,并且,在向所述FPGA發(fā)送所述串行的邏輯加載數(shù)據(jù)前以及每次發(fā)送串行的邏輯加載數(shù)據(jù)的間隔時(shí)間內(nèi),將時(shí)鐘信號(hào)置為恒定電平狀態(tài)。進(jìn)一步地,還包括
所述主配置芯片在向所述可編程邏輯器件發(fā)送所述邏輯加載數(shù)據(jù)前,向所述可編程邏輯器件發(fā)送命令,通知所述可編程邏輯器件準(zhǔn)備開始FPGA邏輯在線加載;所述可編程邏輯器件在接收到所述主配置芯片的命令后,向所述FPGA發(fā)送邏輯加載命令,通知所述FPGA準(zhǔn)備進(jìn)行邏輯加載,并采集FPGA傳送過來(lái)的加載狀態(tài)信號(hào);所述主配置芯片在向所述可編程邏輯器件發(fā)送命令后,訪問所述可編程邏輯器件,讀取FPGA的加載狀態(tài)信號(hào),在發(fā)現(xiàn)所述FPGA已準(zhǔn)備就緒時(shí),向所述可編程邏輯器件發(fā)送所述邏輯加載數(shù)據(jù)。進(jìn)一步地,還包括所述主配置芯片在將所述邏輯加載數(shù)據(jù)發(fā)送給所述可編程邏輯器件后,訪問所述可編程邏輯器件,讀取FPGA的加載狀態(tài)信號(hào),判斷FPGA邏輯加載是否成功,如果邏輯加載失敗,則重新開始FPGA邏輯在線加載。進(jìn)一步地,一種現(xiàn)場(chǎng)可編程門陣列邏輯在線加載的裝置,包括通過并行數(shù)據(jù)總線相連接的主配置芯片和可編程邏輯器件,其中所述主配置芯片,用于將現(xiàn)場(chǎng)可編程門陣列(FPGA)的邏輯加載數(shù)據(jù)通過并行數(shù)據(jù)總線發(fā)送給與所述主配置芯片相連的可編程邏輯器件;所述可編程邏輯器件,用于在通過并行數(shù)據(jù)總線接收到所述并行的邏輯加載數(shù)據(jù)后,將所述并行的邏輯加載數(shù)據(jù)轉(zhuǎn)換為串行的邏輯加載數(shù)據(jù)發(fā)送給FPGA,并向所述FPGA發(fā)送串行加載時(shí)鐘。進(jìn)一步地,還包括外部晶振,所述外部晶振與所述可編程邏輯器件相連,其中所述外部晶振,用于向所述可編程邏輯器件發(fā)送外部高速時(shí)鐘;所述可編程邏輯器件,具體用于接收所述外部晶振的外部高速時(shí)鐘,根據(jù)所述外部高速時(shí)鐘將所述并行的邏輯加載數(shù)據(jù)轉(zhuǎn)換為串行的邏輯加載數(shù)據(jù)發(fā)送給FPGA,并且,所述可編程邏輯器件是根據(jù)所述外部高速時(shí)鐘產(chǎn)生高速串行加載時(shí)鐘作為發(fā)送給所述FPGA 的串行加載時(shí)鐘。進(jìn)一步地,所述可編程邏輯器件是在向所述FPGA發(fā)送所述串行的邏輯加載數(shù)據(jù)時(shí),向所述FPGA發(fā)送所述高速串行加載時(shí)鐘,并且,在向所述FPGA發(fā)送所述串行的邏輯加載數(shù)據(jù)前以及每次發(fā)送串行的邏輯加載數(shù)據(jù)的間隔時(shí)間內(nèi),將時(shí)鐘信號(hào)置為恒定電平狀態(tài)。進(jìn)一步地,所述主配置芯片,還用于在向所述可編程邏輯器件發(fā)送所述邏輯加載數(shù)據(jù)前,向所述可編程邏輯器件發(fā)送命令,通知所述可編程邏輯器件準(zhǔn)備開始FPGA邏輯在線加載,并在向所述可編程邏輯器件發(fā)送命令后,訪問所述可編程邏輯器件,讀取FPGA的加載狀態(tài)信號(hào),在發(fā)現(xiàn)所述FPGA已準(zhǔn)備就緒時(shí),向所述可編程邏輯器件發(fā)送所述邏輯加載數(shù)據(jù);所述可編程邏輯器件,還用于在接收到所述主配置芯片的命令后,向所述FPGA發(fā)送邏輯加載命令,通知所述FPGA準(zhǔn)備進(jìn)行邏輯加載,并采集FPGA傳送過來(lái)的加載狀態(tài)信號(hào)。進(jìn)一步地,所述主配置芯片,還用于在將所述邏輯加載數(shù)據(jù)發(fā)送給所述可編程邏輯器件后,訪問所述可編程邏輯器件,讀取FPGA的加載狀態(tài)信號(hào),判斷FPGA邏輯加載是否成功,如果邏輯加載失敗,則重新開始FPGA邏輯在線加載。
綜上所述,本發(fā)明采用可編程邏輯器件將CPU送來(lái)的并行邏輯加載數(shù)據(jù)轉(zhuǎn)換成高速串行邏輯加載數(shù)據(jù),進(jìn)行高速FPGA邏輯串行加載,大大提高了 FPGA在線加載的速度,并且實(shí)現(xiàn)靈活方便,成本低廉。
圖I為本實(shí)施方式的FPGA邏輯在線加載的硬件結(jié)構(gòu)示意圖;圖2為本實(shí)施方式的FPGA邏輯在線加載的方法流程圖。
具體實(shí)施例方式考慮到CPU通常都帶有并行數(shù)據(jù)總線,并且,現(xiàn)有系統(tǒng)設(shè)備中基本上都會(huì)有可編程邏輯器件,本實(shí)施方式利用CPU既有的并行數(shù)據(jù)總線與可編程邏輯器件通訊,CPU只需要通過并行數(shù)據(jù)總線發(fā)送邏輯加載命令,然后進(jìn)行邏輯加載數(shù)據(jù)傳送即可,由可編程邏輯器件來(lái)完成并行的邏輯加載數(shù)據(jù)到串行的邏輯加載數(shù)據(jù)的轉(zhuǎn)換以及FPGA的串行加載時(shí)序的模擬,可編程邏輯器件可以將FPGA邏輯的主配置芯片CPU送來(lái)的并行的邏輯加載數(shù)據(jù)轉(zhuǎn)換成高速串行的邏輯加載數(shù)據(jù)后進(jìn)行邏輯加載,此方法規(guī)避了 CPU需要模擬FPGA邏輯加載時(shí)序?qū)е逻壿嫾虞d速度慢的缺點(diǎn),大大提高FPGA邏輯加載效率,并且,所占可編程邏輯器件的邏輯資源少。以下結(jié)合附圖對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行詳細(xì)說(shuō)明,應(yīng)當(dāng)理解,以下所說(shuō)明的優(yōu)選實(shí)施例僅用于說(shuō)明和解釋本發(fā)明,并不用于限定本發(fā)明。如圖I所示,本實(shí)施方式的FPGA邏輯在線加載的裝置,包括主配置芯片(CPU)、可編程邏輯器件和晶振,CPU和可編程邏輯器件之間通過并行數(shù)據(jù)總線來(lái)進(jìn)行通訊,F(xiàn)PGA的串行加載信號(hào)連接在可編程邏輯器件上,可編程邏輯器件根據(jù)晶振提供的外部高速時(shí)鐘將 CPU通過并行數(shù)據(jù)總線送來(lái)的并行的邏輯加載數(shù)據(jù)轉(zhuǎn)換成高速串行的邏輯加載數(shù)據(jù),然后送出給FPGA進(jìn)行在線邏輯加載??删幊踢壿嬈骷?shí)時(shí)采樣FPGA邏輯加載過程中的加載狀態(tài)信號(hào),CPU通過訪問可編程邏輯器件可以得知FPGA邏輯加載是否成功。CPU作為FPGA邏輯加載的主配置芯片,CPU通過可編程邏輯器件來(lái)控制FPGA的邏輯加載。CPU通過并行數(shù)據(jù)總線與可編程邏輯器件相連,可編程邏輯器件與FPGA的串行加載信號(hào)相連,F(xiàn)PGA的串行加載狀態(tài)信號(hào)引入可編程邏輯器件中,F(xiàn)PGA的串行加載控制信號(hào)由可編程邏輯器件產(chǎn)生,CPU通過訪問可編程邏輯器件來(lái)控制FPGA的邏輯加載??删幊踢壿嬈骷鈬幸粋€(gè)高速晶振,用來(lái)給可編程器件提供工作時(shí)鐘,可編程邏輯器件利用此高速時(shí)鐘將CPU通過并行數(shù)據(jù)總線送來(lái)的并行的邏輯加載數(shù)據(jù)轉(zhuǎn)換成高速串行的邏輯加載數(shù)據(jù),將此高速串行的邏輯加載數(shù)據(jù)送給FPGA,同時(shí)以此外部高速時(shí)鐘為基準(zhǔn)送出一高速時(shí)鐘給FPGA,用作串行加載時(shí)鐘,對(duì)FPGA進(jìn)行邏輯串行加載??删幊踢壿嬈骷统龈咚俅屑虞d時(shí)鐘的原則如下可編程邏輯器件是在向 FPGA發(fā)送串行的邏輯加載數(shù)據(jù)時(shí),向FPGA發(fā)送高速串行加載時(shí)鐘,并且,在向FPGA發(fā)送串行的邏輯加載數(shù)據(jù)前以及每次發(fā)送串行的邏輯加載數(shù)據(jù)的間隔時(shí)間內(nèi),不向FPGA發(fā)送高速串行加載時(shí)鐘,將時(shí)鐘信號(hào)置為恒定電平狀態(tài)。CPU發(fā)送完FPGA邏輯數(shù)據(jù)后,訪問可編程邏輯器件,判斷FPGA邏輯加載是否成功。圖2是本實(shí)施方式的FPGA邏輯在線加載的方法的流程圖,包括
步驟201 =CPU發(fā)送命令給可編程邏輯器件,通知可編程邏輯器件準(zhǔn)備開始FPGA邏輯在線加載;步驟202 :可編程邏輯器件接收到CPU發(fā)出的命令后,輸出邏輯加載命令給FPGA, 通知FPGA準(zhǔn)備進(jìn)行邏輯加載,同時(shí)實(shí)時(shí)采集FPGA送來(lái)的串行加載狀態(tài)信號(hào),以便CPU訪問可編程邏輯時(shí)能獲知FPGA的邏輯加載狀態(tài);步驟203,CPU發(fā)送命令通知可編程邏輯器件準(zhǔn)備開始FPGA邏輯在線加載后,反復(fù)訪問可編程邏輯器件讀取FPGA的邏輯加載狀態(tài),直到發(fā)現(xiàn)FPGA已準(zhǔn)備開始接收邏輯加載后,將FPGA的邏輯加載數(shù)據(jù)通過并行數(shù)據(jù)總線發(fā)送給可編程邏輯器件;步驟204,可編程邏輯器件檢測(cè)到有邏輯加載數(shù)據(jù)輸入,根據(jù)可編程邏輯器件外部晶振提供的高速時(shí)鐘,將從并行數(shù)據(jù)總線接收到的并行的邏輯加載數(shù)據(jù)轉(zhuǎn)換成高速串行的邏輯加載數(shù)據(jù)發(fā)送給FPGA,同時(shí)送出高速串行加載時(shí)鐘給FPGA ;可編程邏輯器件送出高速串行加載時(shí)鐘的原則如下可編程邏輯器件是在向 FPGA發(fā)送串行的邏輯加載數(shù)據(jù)時(shí),向FPGA發(fā)送高速串行加載時(shí)鐘,并且,在向FPGA發(fā)送串行的邏輯加載數(shù)據(jù)前以及每次發(fā)送串行的邏輯加載數(shù)據(jù)的間隔時(shí)間內(nèi),不向FPGA發(fā)送高速串行加載時(shí)鐘,將時(shí)鐘信號(hào)置為恒定電平狀態(tài)。步驟205,CPU發(fā)送串行的邏輯加載數(shù)據(jù)全部結(jié)束,訪問可編程邏輯器件,判斷 FPGA邏輯在線加載是否成功,如果邏輯加載成功,流程結(jié)束,如果邏輯加載失敗,則返回步驟201,重復(fù)FPGA邏輯加載。本領(lǐng)域普通技術(shù)人員可以理解上述方法中的全部或部分步驟可通過程序來(lái)指令相關(guān)硬件完成,所述程序可以存儲(chǔ)于計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,如只讀存儲(chǔ)器、磁盤或光盤等。可選地,上述實(shí)施例的全部或部分步驟也可以使用一個(gè)或多個(gè)集成電路來(lái)實(shí)現(xiàn)。相應(yīng)地,上述實(shí)施例中的各模塊/單元可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí)現(xiàn)。本發(fā)明不限制于任何特定形式的硬件和軟件的結(jié)合。以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種現(xiàn)場(chǎng)可編程門陣列邏輯在線加載的方法,其特征在于,包括主配置芯片將現(xiàn)場(chǎng)可編程門陣列(FPGA)的邏輯加載數(shù)據(jù)通過并行數(shù)據(jù)總線發(fā)送給與所述主配置芯片相連的可編程邏輯器件;所述可編程邏輯器件在通過并行數(shù)據(jù)總線接收到并行的邏輯加載數(shù)據(jù)后,將所述并行的邏輯加載數(shù)據(jù)轉(zhuǎn)換為串行的邏輯加載數(shù)據(jù)發(fā)送給FPGA,并向所述FPGA發(fā)送串行加載時(shí)鐘。
2.如權(quán)利要求I所述的方法,其特征在于所述可編程邏輯器件與外部晶振相連,接收所述外部晶振的外部高速時(shí)鐘,根據(jù)所述外部高速時(shí)鐘將所述并行的邏輯加載數(shù)據(jù)轉(zhuǎn)換為串行的邏輯加載數(shù)據(jù)發(fā)送給FPGA,并且, 所述可編程邏輯器件是根據(jù)所述外部高速時(shí)鐘產(chǎn)生高速串行加載時(shí)鐘作為發(fā)送給所述 FPGA的串行加載時(shí)鐘。
3.如權(quán)利要求2所述的方法,其特征在于所述可編程邏輯器件是在向所述FPGA發(fā)送所述串行的邏輯加載數(shù)據(jù)時(shí),向所述FPGA 發(fā)送所述高速串行加載時(shí)鐘,并且,在向所述FPGA發(fā)送所述串行的邏輯加載數(shù)據(jù)前以及每次發(fā)送串行的邏輯加載數(shù)據(jù)的間隔時(shí)間內(nèi),將時(shí)鐘信號(hào)置為恒定電平狀態(tài)。
4.如權(quán)利要求3所述的方法,其特征在于,還包括所述主配置芯片在向所述可編程邏輯器件發(fā)送所述邏輯加載數(shù)據(jù)前,向所述可編程邏輯器件發(fā)送命令,通知所述可編程邏輯器件準(zhǔn)備開始FPGA邏輯在線加載;所述可編程邏輯器件在接收到所述主配置芯片的命令后,向所述FPGA發(fā)送邏輯加載命令,通知所述FPGA準(zhǔn)備進(jìn)行邏輯加載,并采集FPGA傳送過來(lái)的加載狀態(tài)信號(hào);所述主配置芯片在向所述可編程邏輯器件發(fā)送命令后,訪問所述可編程邏輯器件,讀取FPGA的加載狀態(tài)信號(hào),在發(fā)現(xiàn)所述FPGA已準(zhǔn)備就緒時(shí),向所述可編程邏輯器件發(fā)送所述邏輯加載數(shù)據(jù)。
5.如權(quán)利要求4所述的方法,其特征在于,還包括所述主配置芯片在將所述邏輯加載數(shù)據(jù)發(fā)送給所述可編程邏輯器件后,訪問所述可編程邏輯器件,讀取FPGA的加載狀態(tài)信號(hào),判斷FPGA邏輯加載是否成功,如果邏輯加載失敗, 則重新開始FPGA邏輯在線加載。
6.一種現(xiàn)場(chǎng)可編程門陣列邏輯在線加載的裝置,其特征在于,包括通過并行數(shù)據(jù)總線相連接的主配置芯片和可編程邏輯器件,其中所述主配置芯片,用于將現(xiàn)場(chǎng)可編程門陣列(FPGA)的邏輯加載數(shù)據(jù)通過并行數(shù)據(jù)總線發(fā)送給與所述主配置芯片相連的可編程邏輯器件;所述可編程邏輯器件,用于在通過并行數(shù)據(jù)總線接收到所述并行的邏輯加載數(shù)據(jù)后, 將所述并行的邏輯加載數(shù)據(jù)轉(zhuǎn)換為串行的邏輯加載數(shù)據(jù)發(fā)送給FPGA,并向所述FPGA發(fā)送串行加載時(shí)鐘。
7.如權(quán)利要求6所述的裝置,其特征在于,還包括外部晶振,所述外部晶振與所述可編程邏輯器件相連,其中所述外部晶振,用于向所述可編程邏輯器件發(fā)送外部高速時(shí)鐘;所述可編程邏輯器件,具體用于接收所述外部晶振的外部高速時(shí)鐘,根據(jù)所述外部高速時(shí)鐘將所述并行的邏輯加載數(shù)據(jù)轉(zhuǎn)換為串行的邏輯加載數(shù)據(jù)發(fā)送給FPGA,并且,所述可編程邏輯器件是根據(jù)所述外部高速時(shí)鐘產(chǎn)生高速串行加載時(shí)鐘作為發(fā)送給所述FPGA的串行加載時(shí)鐘。
8.如權(quán)利要求7所述的裝置,其特征在于所述可編程邏輯器件是在向所述FPGA發(fā)送所述串行的邏輯加載數(shù)據(jù)時(shí),向所述FPGA 發(fā)送所述高速串行加載時(shí)鐘,并且,在向所述FPGA發(fā)送所述串行的邏輯加載數(shù)據(jù)前以及每次發(fā)送串行的邏輯加載數(shù)據(jù)的間隔時(shí)間內(nèi),將時(shí)鐘信號(hào)置為恒定電平狀態(tài)。
9.如權(quán)利要求8所述的裝置,其特征在于所述主配置芯片,還用于在向所述可編程邏輯器件發(fā)送所述邏輯加載數(shù)據(jù)前,向所述可編程邏輯器件發(fā)送命令,通知所述可編程邏輯器件準(zhǔn)備開始FPGA邏輯在線加載,并在向所述可編程邏輯器件發(fā)送命令后,訪問所述可編程邏輯器件,讀取FPGA的加載狀態(tài)信號(hào), 在發(fā)現(xiàn)所述FPGA已準(zhǔn)備就緒時(shí),向所述可編程邏輯器件發(fā)送所述邏輯加載數(shù)據(jù);所述可編程邏輯器件,還用于在接收到所述主配置芯片的命令后,向所述FPGA發(fā)送邏輯加載命令,通知所述FPGA準(zhǔn)備進(jìn)行邏輯加載,并采集FPGA傳送過來(lái)的加載狀態(tài)信號(hào)。
10.如權(quán)利要求9所述的裝置,其特征在于所述主配置芯片,還用于在將所述邏輯加載數(shù)據(jù)發(fā)送給所述可編程邏輯器件后,訪問所述可編程邏輯器件,讀取FPGA的加載狀態(tài)信號(hào),判斷FPGA邏輯加載是否成功,如果邏輯加載失敗,則重新開始FPGA邏輯在線加載。
全文摘要
本發(fā)明公開了一種現(xiàn)場(chǎng)可編程門陣列邏輯在線加載的方法和裝置,包括主配置芯片將現(xiàn)場(chǎng)可編程門陣列(FPGA)的邏輯加載數(shù)據(jù)通過并行數(shù)據(jù)總線發(fā)送給與所述主配置芯片相連的可編程邏輯器件;所述可編程邏輯器件在通過并行數(shù)據(jù)總線接收到并行的邏輯加載數(shù)據(jù)后,將所述并行的邏輯加載數(shù)據(jù)轉(zhuǎn)換為串行的邏輯加載數(shù)據(jù)發(fā)送給FPGA,并向所述FPGA發(fā)送串行加載時(shí)鐘。本發(fā)明采用可編程邏輯器件將CPU送來(lái)的并行邏輯加載數(shù)據(jù)轉(zhuǎn)換成高速串行邏輯加載數(shù)據(jù),進(jìn)行高速FPGA邏輯串行加載,大大提高了FPGA在線加載的速度,并且實(shí)現(xiàn)靈活方便,成本低廉。
文檔編號(hào)G06F9/445GK102609289SQ201210034098
公開日2012年7月25日 申請(qǐng)日期2012年2月15日 優(yōu)先權(quán)日2012年2月15日
發(fā)明者劉霞忠, 翟紅健 申請(qǐng)人:中興通訊股份有限公司