專利名稱:一種用cpu同時(shí)加載多片fpga的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用CPU對(duì)FPGA (Field Programmable Gate Array,現(xiàn)場(chǎng)可編 程門陣列)的加載技術(shù),特別是涉及在多片F(xiàn)PGA的系統(tǒng)中,并且系統(tǒng)對(duì)加載 速度有一定要求的情況下用CPU同時(shí)對(duì)多片F(xiàn)PGA進(jìn)行快速加載的方法。
背景技術(shù):
通常,用CPU加載FPGA時(shí)使用兩種方法, 一種是將多個(gè)FPGA用菊花 鏈連接起來(lái)串行下載,該方法的缺點(diǎn)是當(dāng)FPGA規(guī)模較大時(shí),多個(gè)FPGA下載 時(shí)候可能達(dá)到數(shù)分鐘之久,并且如果菊花鏈中的某一片F(xiàn)PGA因故障而不能加 載時(shí)可能導(dǎo)致菊花鏈上所有FPGA加載失敗,并且在事先存儲(chǔ)多片F(xiàn)PGA的下 載文件,將占用很大的FLASH存儲(chǔ)空間;另一種方法是將每個(gè)FPGA當(dāng)成一 個(gè)獨(dú)立的個(gè)體依次進(jìn)行下載,但是同樣有下載時(shí)間長(zhǎng)、占用大量FLASH空間 的缺點(diǎn),并且還占用大量CPU的1/0 (Input/Output,輸入/輸出)管腳,造成 設(shè)計(jì)上的壓力。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題在于提供一種用CPU同時(shí)加載多片F(xiàn)PGA的 方法,用于解決現(xiàn)有技術(shù)中CPU在加載多片F(xiàn)PGA時(shí),加載時(shí)間長(zhǎng)、加載程 序占用空間大、一片F(xiàn)PGA加載出現(xiàn)問(wèn)題時(shí)會(huì)影響整個(gè)加載時(shí)間甚至影響其它 FPGA的加載,并且傳統(tǒng)方式加載FPGA時(shí)會(huì)占用大量CPU的I/O端口的問(wèn) 題。
為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種用CPU同時(shí)加載多片F(xiàn)PGA的方 法,用于包括單片或多片F(xiàn)PGA及CPU的系統(tǒng),其特征在于,包括
步驟一,通過(guò)對(duì)多片F(xiàn)PGA的加載比特流文件進(jìn)行合并處理生成一 FPGA 加載文件;
步驟二,對(duì)所述CPU的地址總線進(jìn)行邏輯擴(kuò)展得到加載所述多片F(xiàn)PGA 所需的寄存器和鎖存器;及
步驟三,所述CPU讀取所述FPGA加載文件到所述CPU的擴(kuò)展內(nèi)存并通
過(guò)控制所述寄存器和所述鎖存器產(chǎn)生加載時(shí)序?qū)λ龆嗥現(xiàn)PGA或所述多片
FPGA中一片F(xiàn)PGA進(jìn)行加載。
所述的用CPU同時(shí)加載多片F(xiàn)PGA的方法,其中,所述步驟一具體為 步驟ll,當(dāng)所述FPGA的個(gè)數(shù)為N時(shí),將所述N個(gè)FPGA的加載比特流
文件按照最大/長(zhǎng)的加載比特流文件進(jìn)行擴(kuò)展,將小/短的加載比特流文件后面
補(bǔ)零,使所述N個(gè)FPGA的加載比特流文件大小/長(zhǎng)度一致;N為大于等于2
的自然數(shù);
步驟12,將第一個(gè)到第N個(gè)所述FPGA的加載比特流文件的第零個(gè)比特 取出,串成另一比特流,取出第一個(gè)比特的數(shù)據(jù)設(shè)置于所述另一比特流后,并 將第二個(gè)比特至第N個(gè)比特的數(shù)據(jù)都以所述第一個(gè)比特設(shè)置方式進(jìn)行設(shè)置, 從而生成所述FPGA加載文件。
所述的用CPU同時(shí)加載多片F(xiàn)PGA的方法,其中,所述步驟一中,還包 括一對(duì)所述FPGA加載文件進(jìn)行文件壓縮處理的步驟。
所述的用CPU同時(shí)加載多片F(xiàn)PGA的方法,其中,所述步驟二中,所述 寄存器包括 一編程通知寄存器、 一時(shí)鐘寄存器及一數(shù)據(jù)寄存器,所述鎖存器 包括一編程響應(yīng)鎖存器及一編程完成指示鎖存器,其中,所述寄存器用于所述 CPU對(duì)FPGA加載進(jìn)行寫操作,所述鎖存器用于所述CPU在FPGA被加載時(shí) 讀取FPGA狀態(tài)。
所述的用CPU同時(shí)加載多片F(xiàn)PGA的方法,其中,所述寄存器的位寬的 數(shù)值不小于所述多片F(xiàn)PGA的片數(shù)。
所述的用CPU同時(shí)加載多片F(xiàn)PGA的方法,其中,所述步驟三中,在所 述CPU讀取所述FPGA加載文件到所述CPU的擴(kuò)展內(nèi)存的步驟之后,還包括 一判斷所述FPGA加載文件是否為壓縮文件的步驟,若是,則對(duì)所述FPGA 加載文件進(jìn)行解壓縮處理。
所述的用CPU同時(shí)加載多片F(xiàn)PGA的方法,其中,所述步驟三中,由所 述CPU通過(guò)控制所述寄存器和所述鎖存器產(chǎn)生加載時(shí)序?qū)λ龆嗥現(xiàn)PGA進(jìn) 行加載的步驟具體為
步驟71,先對(duì)所述編程通知寄存器寫入一通知低脈沖,通知所述FPGA
即將進(jìn)行加載操作,所述FPGA向所述編程響應(yīng)鎖存器響應(yīng)一低脈沖;
步驟72,所述CPU讀取所述低脈沖并在所述數(shù)據(jù)寄存器寫入所述FPGA 加載文件并通過(guò)寫所述時(shí)鐘寄存器產(chǎn)生加載所需的時(shí)鐘;及
步驟73,根據(jù)所述時(shí)鐘,當(dāng)所述FPGA加載文件寫完后,向所述編程完 成指示鎖存器輸出一高電平,所述CPU讀所述編程完成指示鎖存器并在讀到 所述高電平時(shí)完成加載并返回一 FPGA加載成功消息。
所述的用CPU同時(shí)加載多片F(xiàn)PGA的方法,其中,所述數(shù)據(jù)寄存器輸出 的每個(gè)比特對(duì)應(yīng)一個(gè)所述FPGA,所述編程響應(yīng)鎖存器、所述編程完成指示鎖 存器的每個(gè)比特分別對(duì)應(yīng)一個(gè)所述FPGA。
所述的用CPU同時(shí)加載多片F(xiàn)PGA的方法,其中,所述步驟三中,由所 述CPU通過(guò)控制所述寄存器和所述鎖存器產(chǎn)生加載時(shí)序?qū)λ龆嗥現(xiàn)PGA中 一片F(xiàn)PGA進(jìn)行加載的步驟,具體為
步驟901,對(duì)所述編程通知寄存器寫操作時(shí),在該片F(xiàn)PGA的位上寫入一 通知低脈沖,通知該片F(xiàn)PGA即將進(jìn)行加載操作,該片F(xiàn)PGA向所述編程響應(yīng) 鎖存器響應(yīng)一低脈沖;
步驟902,所述CPU讀取所述低脈沖并在所述數(shù)據(jù)寄存器寫入所述FPGA 加載文件并通過(guò)寫所述時(shí)鐘寄存器產(chǎn)生加載所需的時(shí)鐘;及
步驟903,根據(jù)所述時(shí)鐘,當(dāng)所述FPGA加載文件寫完后,向所述編程完 成指示鎖存器輸出一高電平,所述CPU讀所述編程完成指示鎖存器并在讀到 所述高電平時(shí)完成加載并返回一 FPGA加載成功消息。
本發(fā)明的有益技術(shù)效果
與現(xiàn)有技術(shù)相比,本發(fā)明的CPU對(duì)多片F(xiàn)PGA的加載方法大大加快了CPU 對(duì)多片F(xiàn)PGA的加載速度,提高了加載電路的可靠性和靈活性,有效節(jié)約了外 部FLASH的容量。具體地,
1) , FPGA加載速度快;
2) ,加載FPGA的信號(hào)使用CPU的統(tǒng)一總線資源,不單獨(dú)占用CPU的 1/0資源;
3) ,可單獨(dú)加載任何一片F(xiàn)PGA;
4) ,加載總線上的任何一片F(xiàn)PGA故障都不會(huì)影響其它FPGA的正常加 載;及
5),多片F(xiàn)PGA的加載文件可以用壓縮工具進(jìn)行壓縮,在CPU加載過(guò)程 中進(jìn)行解壓、下載操作,節(jié)省大量FLASH空間。
以下結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)描述,但不作為對(duì)本發(fā)明的 限定。
圖1為本發(fā)明用CPU同時(shí)加載多片F(xiàn)PGA的方法流程示意圖; 圖2為單片F(xiàn)PGA加載文件比特流格式結(jié)構(gòu)圖3為本發(fā)明多片F(xiàn)PGA的加載比特流文件合并成一個(gè)文件的示意圖; 圖4為本發(fā)明多片F(xiàn)PGA的加載比特流文件合并成一個(gè)文件的又一示意
圖5為本發(fā)明用邏輯器件擴(kuò)展CPU總線資源進(jìn)行多片F(xiàn)PGA加載的電路 示意圖6為本發(fā)明單片F(xiàn)PGA加載的時(shí)序圖; 圖7為本發(fā)明多片F(xiàn)PGA加載的時(shí)序圖。
具體實(shí)施例方式
下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明所述技術(shù)方案作進(jìn)一步詳細(xì)說(shuō)明。 如圖1所示,為本發(fā)明用CPU同時(shí)加載多片F(xiàn)PGA的方法流程示意圖; 該示意圖描述了在由單片或多片F(xiàn)PGA組成的系統(tǒng)中,并且系統(tǒng)對(duì)加載速度有 一定要求的情況下,用擴(kuò)展CPU端口同時(shí)快速加載多片F(xiàn)PGA的過(guò)程,具體 包括以下步驟
步驟IOI,對(duì)多片F(xiàn)PGA的加載比特流(bitstream)文件進(jìn)行合并處理, 生成一FPGA加載文件;
若FPGA的個(gè)數(shù)是N (大于等于2的自然數(shù))個(gè),首先將所有FPGA的加 載比特流文件按照最大的一個(gè)文件進(jìn)行擴(kuò)展,將小的文件后面補(bǔ)零,使所有文 件大小一致,再將第一個(gè)到第N個(gè)加載比特流文件的bitO取出,串成一個(gè)比 特流,接著取出bit 1的數(shù)據(jù)跟在所述比特流后面,直到所有的比特都按照這 種交織的方式串成一個(gè)文件,這樣就完成了文件合并;再將合并后的文件壓縮 (或不進(jìn)行壓縮)保存于CPU的外部FLASH中。
步驟102,用邏輯器件對(duì)CPU的地址總線進(jìn)行譯碼來(lái)擴(kuò)展出多片F(xiàn)PGA 加載時(shí)所需的寄存器和鎖存器;
邏輯器件包括CPLD (Complex Programmable Logic Device,復(fù)雜可編程 邏輯器件)或獨(dú)立的譯碼器、寄存器、鎖存器、三態(tài)門等器件。
寄存器用于CPU對(duì)FPGA加載進(jìn)行寫操作,包括編程通知寄存器 PROG_B(nCONFIG)、數(shù)據(jù)寄存器DIN(DATA)、時(shí)鐘寄存器CCLK(DCLK)。
鎖存器用于CPU在FPGA被加載時(shí)讀取FPGA狀態(tài),包括編程響應(yīng)鎖 存器INIT—B (nSTATUS)、編程完成指示鎖存器DONE (CONFIG—DONE)。
上述各寄存器的功能分別為 (al),編程通知寄存器,當(dāng)要加載某一片F(xiàn)PGA時(shí),CPU對(duì)編程通知 寄存器內(nèi)該片F(xiàn)PGA所對(duì)應(yīng)的位先后寫入"1"、 "0"、 "1"電平,這樣相 當(dāng)于對(duì)FPGA的PROG—B (nCONFIG)端口輸入了一個(gè)低脈沖。FPGA將進(jìn) 行加載模式。
(a2),數(shù)據(jù)寄存器,當(dāng)CPU從編程響應(yīng)鎖存器讀到響應(yīng)信號(hào)后,就將 加載比特流文件逐比特送到數(shù)據(jù)寄存器,數(shù)據(jù)寄存器的輸出直接與FPGA的加 載端口DIN (DATA)相連,達(dá)到對(duì)FPGA加載的目的。
(a3),時(shí)鐘寄存器,F(xiàn)PGA在加載比特流文件時(shí),需要用時(shí)鐘將端口 DIN (DATA)的數(shù)據(jù)打到FPGA內(nèi)部,所以CPU對(duì)時(shí)鐘寄存器不斷寫入"0" 和"1"來(lái)模擬FPGA加載時(shí)的時(shí)鐘信號(hào)。 上述各鎖存器的功能分別為
(bl),編程響應(yīng)鎖存器,當(dāng)FPGA的PROG—B (nCONFIG)端口收到 一個(gè)低脈沖時(shí),如果該片F(xiàn)PGA沒(méi)有損壞,它將返回一個(gè)響應(yīng)信號(hào),如圖6 所示,CPU讀到這個(gè)信號(hào)后就認(rèn)為FPGA是正常的,可以進(jìn)行加載操作。
(b2),編程完成指示鎖存器,CPU對(duì)FPGA完成加載數(shù)據(jù)后,如果加 載的比特流文件傳輸正確,并且FPGA器件沒(méi)有損壞,F(xiàn)PGA的DONE (CONFIG—DONE)端口將會(huì)輸出高電平至編程完成指示鎖存器,CPU通過(guò) 讀取該鎖存器的值來(lái)判斷FPGA加載是否成功。
上面這些寄存器/鎖存器的英文名稱定義中,沒(méi)有加括號(hào)的是引用XILINX 公司對(duì)其FPGA的加載端口定義的名稱,加括號(hào)的是引用ALTERA公司對(duì)其 FPGA加載端口定義的名稱。
步驟103, CPU讀取外部FLASH中的FPGA加載文件到CPU的擴(kuò)展內(nèi)存
中;
該步驟中,還對(duì)FPGA加載文件是否為壓縮文件進(jìn)行判斷,如果是壓縮文 件,則進(jìn)行解壓,如果未壓縮,則直接可進(jìn)行下一步的操作。
該歩驟中,擴(kuò)展內(nèi)存指SDRAM (Synchronous Dynamic Random Access Memory,同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器)或DDR (Double Data Rate,雙倍數(shù)據(jù)速率) 存儲(chǔ)器。
步驟104, CPU通過(guò)擴(kuò)展邏輯對(duì)多片F(xiàn)PGA或多片F(xiàn)PGA中一片F(xiàn)PGA 進(jìn)行加載操作;
加載FPGA所需的寄存器的位寬一般是CPU的數(shù)據(jù)位寬,可以是16位或 者更寬,所以位寬都是不小于FPGA的個(gè)數(shù)的,所以對(duì)這些寄存器的數(shù)據(jù)操作 可以做到同時(shí)對(duì)所有FPGA的操作。
加載FPGA時(shí),先對(duì)編程通知寄存器PROG—B (nCONFIG)寫入一個(gè)低 脈沖,通知FPGA即將進(jìn)行加載操作,F(xiàn)PGA向編程響應(yīng)鎖存器INIT_B
(nSTATUS)響應(yīng)一個(gè)低脈沖,當(dāng)CPU讀到這個(gè)響應(yīng)后就開始在數(shù)據(jù)寄存器 DIN (DATA)上寫入合成后的FPGA加載文件,每次寫入數(shù)據(jù)的位寬就等于 FPGA的個(gè)數(shù),這樣數(shù)據(jù)寄存器DIN( DATA )輸出的每個(gè)比特都對(duì)應(yīng)一個(gè)FPGA 的數(shù)據(jù)加載端口。同時(shí)CPU通過(guò)寫時(shí)鐘寄存器CCLK (DCLK)來(lái)產(chǎn)生加載 FPGA所需的時(shí)鐘。當(dāng)FPGA加載文件寫完后,編程完成指示鎖存器DONE
(CONFIG—DONE)會(huì)輸出高電平,CPU讀該寄存器,讀到高電平說(shuō)明加載 成功。
加載過(guò)程中,所有讀狀態(tài)寄存器的每個(gè)比特都分別對(duì)應(yīng)一個(gè)FPGA,所以 某個(gè)FPGA由于硬件原因而不能進(jìn)行加載時(shí)CPU就可以很容易判別出來(lái),而 不影響對(duì)其它FPGA的加載操作。同樣這種位操作也可以很方便地提供對(duì)單獨(dú) 某一片F(xiàn)PGA的加載,方法就是在寫編程通知寄存器PROG—B (nCONFIG) 時(shí),只在想要加載的FPGA的位上寫入一個(gè)低脈沖,其它位都為高,剩下的操 作就和上面的步驟一樣。
如圖2所示,為普通方式下單個(gè)FPGA的加載文件比特流格式結(jié)構(gòu)圖。該 結(jié)構(gòu)圖描述了加載文件比特流的格式,加載文件一般為由FPGA開發(fā)工具自動(dòng) 生成的二進(jìn)制文件,加載時(shí),按照第一字節(jié)的bit0到bit7,緊接著第二字節(jié)的bit 0到bit 7等比特流的方式進(jìn)行FPGA的加載;
該圖中,F(xiàn)l表示第一個(gè)文件,Bn表示第n個(gè)字節(jié),b0表示第0個(gè)比特。 如圖3所示,為本發(fā)明多片F(xiàn)PGA的加載比特流文件合并成一個(gè)文件的示
意圖,圖4為本發(fā)明多片F(xiàn)PGA的加載比特流文件合并成一個(gè)文件的又一示意圖。
結(jié)合圖1,本發(fā)明實(shí)施的第一步就是先將多片F(xiàn)PGA的加載比特流文件進(jìn) 行合并,生成一個(gè)FPGA加載文件。文件合并的規(guī)律如下
如果加載的FPGA的個(gè)數(shù)是2的n次方個(gè),比如,n為3時(shí),加載的FPGA 的個(gè)數(shù)為8個(gè),如圖3所示,則每一片F(xiàn)PGA的加載比特流文件放在每個(gè)字節(jié) 的某個(gè)比特位上。比如,F(xiàn)PGA1的加載比特流文件按bitO到bitn的順序放在 新文件的每個(gè)字節(jié)的bit 0位上,F(xiàn)PGA1的加載比特流文件按bit 0到bit n的 順序放在新文件的每個(gè)字節(jié)的bit 1位上,這種方式比較適合于CPU處理。
如果要加載FPGA的個(gè)數(shù)是任意N個(gè)(這時(shí)CPU的處理上稍微復(fù)雜一點(diǎn), 但也不影響這種方法的使用),文件合并的規(guī)律則是將每個(gè)加載比特流文件的 bit 0按文件順序放到新文件的bit 0至bit N上,將每個(gè)加載比特流文件的bit 1 按文件順序放到新文件的bit N+l至bit 2N上,如圖4所示。
一般情況下CPU的數(shù)據(jù)總線寬度有32位寬,其足夠用于FPGA的加載。 如果這些FPGA的加載比特流文件的長(zhǎng)度不一樣長(zhǎng),則要將短的文件末尾補(bǔ) 零,使所有文件的長(zhǎng)度達(dá)到最大的一個(gè)文件的長(zhǎng)度。合并后的FPGA加載文件 可以用常用的一些壓縮工具來(lái)壓縮后存儲(chǔ)到FLASH中,在需要加載FPGA時(shí), 由CPU對(duì)FPGA加載文件進(jìn)行讀取和解壓縮即可。
如圖5所示,為本發(fā)明用邏輯器件擴(kuò)展CPU總線資源進(jìn)行多片F(xiàn)PGA加 載的電路示意圖。結(jié)合圖1,本發(fā)明實(shí)施的第二步是對(duì)CPU總線進(jìn)行邏輯擴(kuò) 展,如圖5所示,將FPGA的程序加載端口按功能部分進(jìn)行分類編址,當(dāng)CPU 對(duì)FPGA進(jìn)行加載時(shí),片選CsO有效,地址信號(hào)將對(duì)譯碼器產(chǎn)生作用。這里擴(kuò) 展出的3個(gè)寄存器和2個(gè)鎖存器分別定義地址為0至4 (這里寄存器和鎖存器 的地址可以單獨(dú)編址,即寄存器的地址定義為0至2,鎖存器的地址定義為O 和l,是可以重復(fù)的,因?yàn)樗鼈兎謩e對(duì)應(yīng)寫、讀操作,所以不會(huì)有地址沖突現(xiàn) 象,但是為了理解上清晰,就統(tǒng)一編址為0至4),只要用3根地址線就可以 譯碼得到5個(gè)使能控制信號(hào)分別去使能這3個(gè)寄存器和2個(gè)鎖存器單元,達(dá)到
用同一組數(shù)據(jù)總線訪問(wèn)不同邏輯單元的目的(3根地址線最多可以用譯碼器譯
出8個(gè)使能控制信號(hào)),當(dāng)CPU進(jìn)行寫操作時(shí),即對(duì)寄存器進(jìn)行操作時(shí),OE 信號(hào)為高,三態(tài)門控制數(shù)據(jù)總線的方向由CPU到寄存器,在WE信號(hào)的上升 沿將總線上的數(shù)據(jù)打到寄存器內(nèi)。當(dāng)CPU進(jìn)行讀操作時(shí),即對(duì)鎖存器進(jìn)行操 作時(shí),三態(tài)門控制數(shù)據(jù)總線的方向?qū)⒂涉i存器到CPU。
如圖6所示,為本發(fā)明單片F(xiàn)PGA加載的時(shí)序圖。結(jié)合圖l,本發(fā)明實(shí)施 關(guān)鍵部分的第四步就是CPU通過(guò)對(duì)寄存器、鎖存器的控制來(lái)產(chǎn)生模擬PS (Passive Serial,被動(dòng)串行/連續(xù))加載時(shí)序,對(duì)多片F(xiàn)PGA進(jìn)行加載,其下載 時(shí)序如圖6所示,PS加載過(guò)程是先對(duì)PROG一B發(fā)出一個(gè)低脈沖信號(hào)進(jìn)行加載 通知,F(xiàn)PGA就向CPU回復(fù)一個(gè)INIT一B響應(yīng),CPU讀到INIT—B有了從低到 高的變化后就可以對(duì)FPGA進(jìn)行加載了 ,用DIN端口將FPGA加載文件在CLK 的上升沿送入FPGA內(nèi)部配置單元。所有的FPGA加載文件傳輸完成后,F(xiàn)PGA 將DONE信號(hào)由低拉高,當(dāng)CPU讀到DONE信號(hào)的由低到高變化過(guò)程,則認(rèn) 為FPGA加載成功。所以本發(fā)明在CPU總線的邏輯擴(kuò)展實(shí)施上,將多片F(xiàn)PGA 的加載信號(hào)放在CPU總線上進(jìn)行操作,見(jiàn)圖7所示。如所有FPGA的PROG—B 信號(hào)放在一個(gè)寄存器上,可同時(shí)對(duì)多片F(xiàn)PGA進(jìn)行加載通知操作,將所有 INIT—B信號(hào)放在一個(gè)讀寄存器上,對(duì)FPGA的加載初始化進(jìn)行回讀,在一定 的時(shí)間內(nèi),INIT—B由低變高后可進(jìn)行加載操作,如果某片F(xiàn)PGA的INIT—B 信號(hào)沒(méi)有圖6中所示的這種變化時(shí),可上報(bào)控制平臺(tái)該片F(xiàn)PGA有故障,但并 不影響其它FPGA的加載操作。FPGA的數(shù)據(jù)寄存器和時(shí)鐘寄存器分別放在兩 個(gè)寫寄存器中,CPU按圖7所示的時(shí)序?qū)PGA進(jìn)行FPGA加載文件加載。 FPGA加載文件加載完成后,CPU進(jìn)行讀DONE鎖存器;如果所有寄存器、 鎖存器由低變高,說(shuō)明加載正確,如果有某片F(xiàn)PGA的DONE信號(hào)不能變高, 說(shuō)明該片F(xiàn)PGA在硬件上存在問(wèn)題。
如果需要單獨(dú)加載某一片F(xiàn)PGA,則在第四步的實(shí)施過(guò)程中,在相應(yīng)FPGA 的PROG—B位輸出低脈沖,其余步驟不變,即可實(shí)現(xiàn)對(duì)單獨(dú)某片F(xiàn)PGA的加 載。
本發(fā)明提出了一種用邏輯器件進(jìn)行擴(kuò)展CPU總線來(lái)加載多片F(xiàn)PGA的可 行性方案,其用邏輯電路對(duì)CPU的接口進(jìn)行擴(kuò)展后同時(shí)下載多片F(xiàn)PGA,并 且對(duì)要加載的加載比特流文件進(jìn)行處理,從根本上解決了現(xiàn)有技術(shù)的缺點(diǎn)和不足,達(dá)到多片F(xiàn)PGA同時(shí)加載。
當(dāng)然,本發(fā)明還可有其他多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的情 況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但 這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。
權(quán)利要求
1、一種用CPU同時(shí)加載多片F(xiàn)PGA的方法,用于包括單片或多片F(xiàn)PGA及CPU的系統(tǒng),其特征在于,包括步驟一,通過(guò)對(duì)多片F(xiàn)PGA的加載比特流文件進(jìn)行合并處理生成一FPGA加載文件;步驟二,對(duì)所述CPU的地址總線進(jìn)行邏輯擴(kuò)展得到加載所述多片F(xiàn)PGA所需的寄存器和鎖存器;及步驟三,所述CPU讀取所述FPGA加載文件到所述CPU的擴(kuò)展內(nèi)存并通過(guò)控制所述寄存器和所述鎖存器產(chǎn)生加載時(shí)序?qū)λ龆嗥現(xiàn)PGA或所述多片F(xiàn)PGA中一片F(xiàn)PGA進(jìn)行加載。
2、 根據(jù)權(quán)利要求1所述的用CPU同時(shí)加載多片F(xiàn)PGA的方法,其特征在 于,所述步驟一具體為步驟ll,當(dāng)所述FPGA的個(gè)數(shù)為N時(shí),將所述N個(gè)FPGA的加載比特流 文件按照最大/長(zhǎng)的加載比特流文件進(jìn)行擴(kuò)展,將小/短的加載比特流文件后面 補(bǔ)零,使所述N個(gè)FPGA的加載比特流文件大小/長(zhǎng)度一致;N為大于等于2 的自然數(shù);步驟12,將第一個(gè)到第N個(gè)所述FPGA的加載比特流文件的第零個(gè)比特 取出,串成另一比特流,取出第一個(gè)比特的數(shù)據(jù)設(shè)置于所述另一比特流后,并 將第二個(gè)比特至第N個(gè)比特的數(shù)據(jù)都以所述第一個(gè)比特設(shè)置方式進(jìn)行設(shè)置, 從而生成所述FPGA加載文件。
3、 根據(jù)權(quán)利要求1或2所述的用CPU同時(shí)加載多片F(xiàn)PGA的方法,其特 征在于,所述步驟一中,還包括一對(duì)所述FPGA加載文件進(jìn)行文件壓縮處理的步驟o
4、 根據(jù)權(quán)利要求1或2所述的用CPU同時(shí)加載多片F(xiàn)PGA的方法,其特 征在于,所述步驟二中,所述寄存器包括 一編程通知寄存器、 一時(shí)鐘寄存器 及一數(shù)據(jù)寄存器,所述鎖存器包括一編程響應(yīng)鎖存器及一編程完成指示鎖存 器,其中,所述寄存器用于所述CPU對(duì)FPGA加載進(jìn)行寫操作,所述鎖存器 用于所述CPU在FPGA被加載時(shí)讀取FPGA狀態(tài)。
5、 根據(jù)權(quán)利要求4所述的用CPU同時(shí)加載多片F(xiàn)PGA的方法,其特征在于,所述寄存器的位寬的數(shù)值不小于所述多片F(xiàn)PGA的片數(shù)。
6、 根據(jù)權(quán)利要求4所述的用CPU同時(shí)加載多片F(xiàn)PGA的方法,其特征在 于,所述步驟三中,在所述CPU讀取所述FPGA加載文件到所述CPU的擴(kuò)展 內(nèi)存的步驟之后,還包括一判斷所述FPGA加載文件是否為壓縮文件的步驟, 若是,則對(duì)所述FPGA加載文件進(jìn)行解壓縮處理。
7、 根據(jù)權(quán)利要求5或6所述的用CPU同時(shí)加載多片F(xiàn)PGA的方法,其特 征在于,所述步驟三中,由所述CPU通過(guò)控制所述寄存器和所述鎖存器產(chǎn)生 加載時(shí)序?qū)λ龆嗥現(xiàn)PGA進(jìn)行加載的步驟具體為步驟71,先對(duì)所述編程通知寄存器寫入一通知低脈沖,通知所述FPGA 即將進(jìn)行加載操作,所述FPGA向所述編程響應(yīng)鎖存器響應(yīng)一低脈沖;步驟72,所述CPU讀取所述低脈沖并在所述數(shù)據(jù)寄存器寫入所述FPGA加載文件并通過(guò)寫所述時(shí)鐘寄存器產(chǎn)生加載所需的時(shí)鐘;及步驟73,根據(jù)所述時(shí)鐘,當(dāng)所述FPGA加載文件寫完后,向所述編程完 成指示鎖存器輸出一高電平,所述CPU讀所述編程完成指示鎖存器并在讀到 所述高電平時(shí)完成加載并返回一 FPGA加載成功消息。
8、 根據(jù)權(quán)利要求7所述的用CPU同時(shí)加載多片F(xiàn)PGA的方法,其特征在 于,所述數(shù)據(jù)寄存器輸出的每個(gè)比特對(duì)應(yīng)一個(gè)所述FPGA,所述編程響應(yīng)鎖存 器、所述編程完成指示鎖存器的每個(gè)比特分別對(duì)應(yīng)一個(gè)所述FPGA。
9、 根據(jù)權(quán)利要求5或6所述的用CPU同時(shí)加載多片F(xiàn)PGA的方法,其特 征在于,所述步驟三中,由所述CPU通過(guò)控制所述寄存器和所述鎖存器產(chǎn)生 加載時(shí)序?qū)λ龆嗥現(xiàn)PGA中一片F(xiàn)PGA進(jìn)行加載的步驟,具體為步驟901,對(duì)所述編程通知寄存器寫操作時(shí),在該片F(xiàn)PGA的位上寫入一 通知低脈沖,通知該片F(xiàn)PGA即將進(jìn)行加載操作,該片F(xiàn)PGA向所述編程響應(yīng) 鎖存器響應(yīng)一低脈沖;步驟902,所述CPU讀取所述低脈沖并在所述數(shù)據(jù)寄存器寫入所述FPGA加載文件并通過(guò)寫所述時(shí)鐘寄存器產(chǎn)生加載所需的時(shí)鐘;及步驟903,根據(jù)所述時(shí)鐘,當(dāng)所述FPGA加載文件寫完后,向所述編程完成指示鎖存器輸出一高電平,所述CPU讀所述編程完成指示鎖存器并在讀到所述高電平時(shí)完成加載并返回一 FPGA加載成功消息。
全文摘要
本發(fā)明公開了一種用CPU同時(shí)加載多片F(xiàn)PGA的方法,用于包括單片或多片F(xiàn)PGA及CPU的系統(tǒng),其特征在于,包括步驟一,通過(guò)對(duì)多片F(xiàn)PGA的加載比特流文件進(jìn)行合并處理生成一FPGA加載文件;步驟二,對(duì)所述CPU的地址總線進(jìn)行邏輯擴(kuò)展得到加載所述多片F(xiàn)PGA所需的寄存器和鎖存器;及步驟三,所述CPU讀取所述FPGA加載文件到所述CPU的擴(kuò)展內(nèi)存并通過(guò)控制所述寄存器和所述鎖存器產(chǎn)生加載時(shí)序?qū)λ龆嗥現(xiàn)PGA或所述多片F(xiàn)PGA中一片F(xiàn)PGA進(jìn)行加載。與現(xiàn)有技術(shù)相比,本發(fā)明方法大大加快了CPU對(duì)多片F(xiàn)PGA的加載速度,提高了加載電路的可靠性和靈活性,有效節(jié)約了外部FLASH的容量。
文檔編號(hào)G06F9/445GK101165652SQ20061011384
公開日2008年4月23日 申請(qǐng)日期2006年10月18日 優(yōu)先權(quán)日2006年10月18日
發(fā)明者方有綱, 趙亞鋒, 陳石良 申請(qǐng)人:中興通訊股份有限公司