專利名稱:一種實現(xiàn)現(xiàn)場可編程門陣列加載的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及可編程邏輯器件領(lǐng)域,特別涉及一種實現(xiàn)現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)加載的方法。
背景技術(shù):
FPGA器件的出現(xiàn)是超大規(guī)模集成電路技術(shù)和計算機輔助設(shè)計技術(shù)發(fā)展的結(jié)果。FPGA器件集成度高、體積小,可以通過用戶編程實現(xiàn)專門的應(yīng)用功能。它允許電路設(shè)計者利用基于計算機的開發(fā)平臺,經(jīng)過設(shè)計輸入、仿真、測試和校驗,直到實現(xiàn)預(yù)期的功能。
FPGA器件上電后要能正常工作,需要用于作為FPGA開發(fā)平臺的單板的中央處理器(CPU)把編制好的程序通過串行方式加載到FPGA上,所述加載過程需要通過CPU的外圍接口芯片來完成。圖1所示為實現(xiàn)對FPGA程序加載的硬件連接示意圖,其中,可擦除可編程邏輯器件(ErasableProgrammable Logic Device,EPLD)120即為用于實現(xiàn)FPGA加載的外圍接口芯片。CPU 110通過局部總線(Local Bus)設(shè)置EPLD 120內(nèi)的加載控制寄存器121的相應(yīng)控制位的電平狀態(tài)。所述控制位包括數(shù)據(jù)(DATA)線控制位和時鐘(CLK)線控制位。FGPA 130進入接收狀態(tài)后,首先EPLD 120在數(shù)據(jù)線上置好要傳的數(shù)據(jù),然后使時鐘線由低電平變?yōu)楦唠娖?,在時鐘線的上升沿,F(xiàn)PGA 130鎖存數(shù)據(jù)線上的數(shù)據(jù),這樣一個比特的數(shù)據(jù)就傳送完畢;隨后時鐘線再由高電平變?yōu)榈碗娖?,準備傳送下一個比特的數(shù)據(jù)。如此重復(fù)操作即可把CPU 110中所有需要加載的數(shù)據(jù),通過EPLD 120傳送到FPGA 130上,完成FPGA的程序加載過程。
加載控制寄存器121一般為一個8位寄存器,所述數(shù)據(jù)線控制位和時鐘線控制位分別占用其中1位,剩余6位可能會做其它用途。因此在對數(shù)據(jù)線或時鐘線置位時不能改變加載控制寄存器121中其它各位的值。
針對圖1所示的硬件結(jié)構(gòu),現(xiàn)有FPGA加載程序的實現(xiàn)過程為CPU定義一個指針變量指向EPLD中的加載控制寄存器,通過對所定義的指針變量的值進行邏輯操作,來直接改變加載控制寄存器相應(yīng)控制位的值,從而實現(xiàn)控制數(shù)據(jù)線和時鐘線的高低電平置位,具體流程如圖2所示,包括如下步驟步驟201定義一個指針變量指向EPLD加載控制寄存器地址;步驟202使用該指針變量對EPLD加載控制寄存器的值進行“與”邏輯操作,將EPLD加載控制寄存器中時鐘線控制位置為0,其余位保持不變,從而使時鐘線變?yōu)榈碗娖?;所述“與”操作的含義是生成一個8位的與加載控制寄存器的值對應(yīng)的立即數(shù),該立即數(shù)的時鐘線控制位為0,其余位為1;再將該立即數(shù)與EPLD加載控制寄存器的值進行“與”邏輯操作。以下所述其它邏輯操作與此類似,故不再贅述。
步驟203使用該指針變量對加載控制器中的值進行“與或”邏輯操作,使EPLD加載控制寄存器中數(shù)據(jù)線控制位變?yōu)橐獋鬏數(shù)臄?shù)據(jù),其余位保持不變,從而使數(shù)據(jù)線置為要傳輸?shù)臄?shù)據(jù)所對應(yīng)的電平狀態(tài);步驟204使用該指針變量對加載控制器中的值進行“或”邏輯操作,將EPLD加載控制寄存器中時鐘線控制位置為1,其余位保持不變,從而使時鐘線變?yōu)楦唠娖?,在時鐘線的上升沿,數(shù)據(jù)線上的數(shù)據(jù)鎖存到FPGA中;步驟205判斷是否還有需要加載的數(shù)據(jù),若是,則轉(zhuǎn)至步驟202,否則結(jié)束加載過程。
其中,步驟202所述通過操作指針變量使時鐘線變?yōu)榈碗娖剑m然只需要一條指令,但該指令實際進行的操作過程如下步驟202aCPU通過局部總線從EPLD中把加載控制寄存器時鐘線控制位的值讀出并存入CPU內(nèi)部的運算單元;
步驟202bCPU執(zhí)行“與”操作把時鐘控制位的值置為0;步驟202cCPU通過局部總線把重新設(shè)置后的時鐘控制位的值存入EPLD的加載控制寄存器中。
如步驟202a~202c所示,修改EPLD的加載控制寄存器的一個位必須訪問兩次EPLD的加載控制寄存器,一次讀,一次寫。同理,步驟203中設(shè)置數(shù)據(jù)控制位以及步驟204中將時鐘線變?yōu)楦唠娖礁餍枰L問兩次EPLD的加載控制寄存器;這樣,傳輸一個數(shù)據(jù)到FPGA共需要訪問6次EPLD的加載控制寄存器。而EPLD的局部總線的總線頻率一般為25MHz,最大不超過50MHz,遠低于CPU主頻和FPGA加載的時鐘頻率,在FGPA的加載過程中頻繁地訪問EPLD勢必會極大地降低加載速率。因此現(xiàn)有的通過EPLD這樣的低速外圍接口芯片實現(xiàn)FPGA的加載方法缺點在于效率低,加載時間長,不適用于要求快速加載的場合。
為提高FPGA的加載速率,可以采用高速的外圍接口芯片來實現(xiàn)FPGA的加載,但目前還沒有現(xiàn)成的用于實現(xiàn)FPGA加載的高速外圍接口芯片,并且,使用高速外圍接口芯片會大大增加成本。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的在于,提出一種實現(xiàn)FPGA程序加載的方法,可以提高CPU通過現(xiàn)有低速外圍接口芯片實現(xiàn)FPGA加載的速率。該方法包括如下步驟A、讀取加載控制寄存器的值并將所讀取的值存儲于高速存儲器件中;B、對所述高速存儲器件中的值進行邏輯運算,并將運算結(jié)果寫入加載控制寄存器,實現(xiàn)將要加載的數(shù)據(jù)鎖存到FPGA中;C、判斷是否還有需要加載的數(shù)據(jù),若是,則轉(zhuǎn)至步驟B,否則結(jié)束對FPGA的加載過程。
在所述高速存儲器件中定義一個寄存器變量,步驟A所述存儲為將所讀取的值存儲于所定義的寄存器變量中。
所述FPGA在時鐘的上升沿鎖存要加載的數(shù)據(jù),則步驟B所述對所述高速存儲器件中的值進行邏輯運算,并將運算結(jié)果寫入加載控制寄存器包括B11、使所述高速存儲器件中的值的時鐘線控制位變?yōu)?,數(shù)據(jù)線控制位變?yōu)橐虞d的數(shù)據(jù),再把所述值寫入加載控制寄存器;B12、使所述高速存儲器件中的值的時鐘線控制位變?yōu)?,再把所述值寫入加載控制寄存器。
步驟B11所述把所述值寫入加載控制寄存器為把高速存儲器件中的值寫入加載控制寄存器中,使加載控制寄存器的時鐘線變?yōu)榈碗娖?,?shù)據(jù)線變?yōu)橐虞d的數(shù)據(jù)對應(yīng)的電平狀態(tài),其余線保持不變。
步驟B12所述把所述值寫入加載控制寄存器,實現(xiàn)將要加載的數(shù)據(jù)鎖存到FPGA中為把存儲器件中的所述值寫入加載控制寄存器中,使時鐘線變?yōu)楦唠娖剑溆嗑€保持不變,在時鐘線的上升沿FPGA鎖存數(shù)據(jù)線的電平狀態(tài)所對應(yīng)的值。
所述FPGA在時鐘的下降沿鎖存要加載的數(shù)據(jù),則步驟B所述對所述高速存儲器件中的值進行邏輯運算,并將運算結(jié)果寫入加載控制寄存器包括B21、使所述高速存儲器件中的值的時鐘線控制位變?yōu)?,數(shù)據(jù)線控制位變?yōu)橐虞d的數(shù)據(jù),再把所述值寫入加載控制寄存器;B22、使所述高速存儲器件中的值的時鐘線控制位變?yōu)?,再把所述值寫入加載控制寄存器。
步驟B21所述把所述值寫入加載控制寄存器為把高速存儲器件中的值寫入加載控制寄存器中,使加載控制寄存器的時鐘線變?yōu)楦唠娖?,?shù)據(jù)線變?yōu)橐虞d的數(shù)據(jù)對應(yīng)的電平狀態(tài),其余線保持不變。
步驟B22所述把所述值寫入加載控制寄存器,實現(xiàn)將要加載的數(shù)據(jù)鎖存到FPGA中為把存儲器件中的所述值寫入加載控制寄存器中,使時鐘線變?yōu)榈碗娖?,其余線保持不變,在時鐘線的下降沿FPGA鎖存數(shù)據(jù)線的電平狀態(tài)所對應(yīng)的值。
所述高速存儲器件為以下的任意一種單板的中央處理器CPU的寄存器、單板的內(nèi)存或所述CPU可高速訪問的具有存儲功能的器件。
所述低速接口芯片為可擦除可編程邏輯器件EPLD。
從以上方案可以看出,在初始化時將加載控制寄存器的值讀取到高速存儲器件中,其后加載過程的運算操作都是對高速存儲器件進行操作,只需把運算結(jié)果寫入加載控制寄存器中,并且在時鐘線的下降沿同時置數(shù)據(jù)線,這樣就減少了對低速外圍接口芯片的訪問次數(shù),提高了對FPGA的加載速率。
圖1為實現(xiàn)FPGA加載的硬件結(jié)構(gòu)圖;圖2為現(xiàn)有技術(shù)實現(xiàn)FPGA加載的流程圖;圖3為本發(fā)明實現(xiàn)FPGA加載的流程圖。
具體實施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合附圖對本發(fā)明作進一步的詳細闡述。
本發(fā)明的核心內(nèi)容為定義一個寄存器對象,先讀取EPLD加載控制寄存器中的值并存于該對象中;在加載過程中,對所述寄存器對象的值進行邏輯運算,然后把運算結(jié)果通過局部總線寫入EPLD加載控制寄存器中,這樣每加載一個數(shù)據(jù),對EPLD加載控制寄存器的訪問次數(shù)減少為兩次;此外,根據(jù)芯片的具體規(guī)定,F(xiàn)PGA只是在時鐘線的上升沿或下降沿鎖存數(shù)據(jù),所以在時鐘線的下降沿或上升沿可以同時設(shè)置數(shù)據(jù)線,準備傳輸下個數(shù)據(jù),這樣可以進一步節(jié)省加載所需的時間,提高加載速度。以下為了敘述方便,將FPGA鎖存數(shù)據(jù)的時鐘邊沿稱為鎖存沿,將另外一個時鐘邊沿稱為非鎖存沿。
所述寄存器對象可以位于開發(fā)平臺的CPU自身的寄存器、開發(fā)平臺的內(nèi)存、或者其他開發(fā)平臺的CPU可以高速訪問的具有存儲功能的器件中;所述高速是相對于EPLD的低速局部總線而言的,一般來說,只要CPU對所述具有存儲功能的器件的訪問速度為局部總線的5倍以上,就能達到明顯提高加載速率的效果。
本發(fā)明方法實施例的實現(xiàn)流程如圖3所示,其中FPGA的鎖存沿為時鐘的上升沿,具體包括如下步驟步驟301定義一個指針變量指向EPLD加載控制寄存器地址,并定義一個寄存器對象;步驟302通過所述指向EPLD加載控制寄存器地址的指針變量,把加載控制寄存器的值通過局部總線讀入所定義的寄存器對象中;步驟303對寄存器對象的值進行“與”邏輯操作,使寄存器對象的值的時鐘線控制位設(shè)置為0,其余位保持不變;步驟304對寄存器對象的值進行“與或”邏輯操作,使寄存器對象的值的數(shù)據(jù)線控制位為要傳輸?shù)臄?shù)據(jù),其余位保持不變;步驟305把寄存器對象的值通過局部總線寫入EPLD加載控制寄存器,從而使加載控制寄存器的時鐘線變?yōu)榈碗娖?,并將?shù)據(jù)線置為要傳輸?shù)臄?shù)據(jù)對應(yīng)的電平狀態(tài);步驟306對寄存器對象的值進行“或”邏輯操作,使寄存器對象的值的時鐘線控制位設(shè)置為1,其余位保持不變;再把寄存器對象的值通過局部總線寫入EPLD加載控制寄存器,從而使加載控制寄存器的時鐘線變?yōu)楦唠娖?;步驟307判斷是否還有要加載的數(shù)據(jù),若是,轉(zhuǎn)至步驟303;否則結(jié)束加載過程。
如果FPGA的鎖存沿為時鐘的下降沿,則在上述流程中,時鐘線控制位的0和1互換,時鐘線的高電平和低電平互換即可得到相應(yīng)流程,故不再贅述。
從以上流程可以看出,在初始化時讀一次EPLD加載控制寄存器的值,其后的運算都是在CPU中操作;加載過程中只需把運算結(jié)果寫入EPLD的加載控制寄存器中,這樣向FPGA加載一個數(shù)據(jù)只需訪問兩次局部總線;并且在時鐘線下降沿,即非鎖存沿設(shè)置數(shù)據(jù)線的電平狀態(tài),從而實現(xiàn)同時修改加載控制寄存器的時鐘位和數(shù)據(jù),減少對局部總線的訪問次數(shù),可以進一步提高加載速度。
以上實施例所述低速外圍接口芯片為EPLD,實際上也可為其他種類的接口芯片,只要該接口芯片中包含至少一個寄存器,且通過改變該寄存器指定位的值,能改變芯片對應(yīng)管腳電平的高低,并且這些管腳能夠連接到FPGA的對應(yīng)管腳上,滿足上述要求的低速外圍接口芯片都可應(yīng)用本發(fā)明方法,且所述寄存器可作為加載控制寄存器,本發(fā)明方法并未對低速外圍接口芯片及加載控制器作出限定。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種實現(xiàn)現(xiàn)場可編程門陣列FPGA加載的方法,通過低速接口芯片中的加載控制寄存器對FPGA進行加載,其特征在于,該方法包括如下步驟A、讀取加載控制寄存器的值并將所讀取的值存儲于高速存儲器件中;B、對所述高速存儲器件中的值進行邏輯運算,并將運算結(jié)果寫入加載控制寄存器,實現(xiàn)將要加載的數(shù)據(jù)鎖存到FPGA中;C、判斷是否還有需要加載的數(shù)據(jù),若是,則轉(zhuǎn)至步驟B,否則結(jié)束對FPGA的加載過程。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述高速存儲器件中定義一個寄存器變量,步驟A所述存儲為將所讀取的值存儲于所定義的寄存器變量中。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述FPGA在時鐘的上升沿鎖存要加載的數(shù)據(jù),則步驟B所述對所述高速存儲器件中的值進行邏輯運算,并將運算結(jié)果寫入加載控制寄存器包括B11、使所述高速存儲器件中的值的時鐘線控制位變?yōu)?,數(shù)據(jù)線控制位變?yōu)橐虞d的數(shù)據(jù),再把所述值寫入加載控制寄存器;B12、使所述高速存儲器件中的值的時鐘線控制位變?yōu)?,再把所述值寫入加載控制寄存器。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,步驟B11所述把所述值寫入加載控制寄存器為把高速存儲器件中的值寫入加載控制寄存器中,使加載控制寄存器的時鐘線變?yōu)榈碗娖?,?shù)據(jù)線變?yōu)橐虞d的數(shù)據(jù)對應(yīng)的電平狀態(tài),其余線保持不變。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,步驟B12所述把所述值寫入加載控制寄存器,實現(xiàn)將要加載的數(shù)據(jù)鎖存到FPGA中為把存儲器件中的所述值寫入加載控制寄存器中,使時鐘線變?yōu)楦唠娖?,其余線保持不變,在時鐘線的上升沿FPGA鎖存數(shù)據(jù)線的電平狀態(tài)所對應(yīng)的值。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述FPGA在時鐘的下降沿鎖存要加載的數(shù)據(jù),則步驟B所述對所述高速存儲器件中的值進行邏輯運算,并將運算結(jié)果寫入加載控制寄存器包括B21、使所述高速存儲器件中的值的時鐘線控制位變?yōu)?,數(shù)據(jù)線控制位變?yōu)橐虞d的數(shù)據(jù),再把所述值寫入加載控制寄存器;B22、使所述高速存儲器件中的值的時鐘線控制位變?yōu)?,再把所述值寫入加載控制寄存器。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,步驟B21所述把所述值寫入加載控制寄存器為把高速存儲器件中的值寫入加載控制寄存器中,使加載控制寄存器的時鐘線變?yōu)楦唠娖?,?shù)據(jù)線變?yōu)橐虞d的數(shù)據(jù)對應(yīng)的電平狀態(tài),其余線保持不變。
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,步驟B22所述把所述值寫入加載控制寄存器,實現(xiàn)將要加載的數(shù)據(jù)鎖存到FPGA中為把存儲器件中的所述值寫入加載控制寄存器中,使時鐘線變?yōu)榈碗娖?,其余線保持不變,在時鐘線的下降沿FPGA鎖存數(shù)據(jù)線的電平狀態(tài)所對應(yīng)的值。
9.根據(jù)權(quán)利要求1至8任一項所述的方法,其特征在于,所述高速存儲器件為以下的任意一種單板的中央處理器CPU的寄存器、單板的內(nèi)存或所述CPU可高速訪問的具有存儲功能的器件。
10.根據(jù)權(quán)利要求1至8任一項所述的方法,其特征在于,所述低速接口芯片為可擦除可編程邏輯器件EPLD。
全文摘要
本發(fā)明公開了一種實現(xiàn)現(xiàn)場可編程門陣列FPGA加載的方法,通過低速接口芯片中的加載控制寄存器實現(xiàn)對FPGA的加載,包括如下步驟A、讀取加載控制寄存器的值并將所讀取的值存儲于高速存儲器件中;B、對所述高速存儲器件中的值進行邏輯運算,并將運算結(jié)果寫入加載控制寄存器,實現(xiàn)將要加載的數(shù)據(jù)鎖存到FPGA中;C、判斷是否還有需要加載的數(shù)據(jù),若是,則轉(zhuǎn)至步驟B,否則結(jié)束對FPGA的加載過程。本發(fā)明方法可以減少對低速接口芯片的訪問次數(shù),提高了對FPGA的加載速率。
文檔編號G06F13/00GK1851647SQ20061007842
公開日2006年10月25日 申請日期2006年5月26日 優(yōu)先權(quán)日2006年5月26日
發(fā)明者郭峰 申請人:杭州華為三康技術(shù)有限公司