基于cpld的fpga加載系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供一種基于CPLD的FPGA加載系統(tǒng),包括:存儲器、中央處理器CPU、復(fù)雜可編程邏輯器件CPLD、現(xiàn)場可編程門陣列FPGA和晶體振蕩器;所述存儲器,用于存儲待加載數(shù)據(jù);所述CPU,與所述存儲器連接,用于將所述存儲器中存儲的數(shù)據(jù)輸出;所述CPLD,與所述CPU和所述晶體振蕩器分別連接,用于根據(jù)所述晶體振蕩器輸出的時鐘信號將從所述CPU接收的數(shù)據(jù)發(fā)送給所述FPGA。本發(fā)明提供的系統(tǒng),利用CPLD作為加載橋梁,CPU將外部存儲器中存儲的數(shù)據(jù)發(fā)送給CPLD后,CPLD根據(jù)外接的高速時鐘信號,將收到的數(shù)據(jù)加載至FPGA中,系統(tǒng)結(jié)構(gòu)簡單,顯著減少了FPGA的加載時間,提高了加載速度。
【專利說明】基于CPLD的FPGA加載系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及電子【技術(shù)領(lǐng)域】,尤其涉及一種基于CPLD的FPGA加載系統(tǒng)。
【背景技術(shù)】
[0002]現(xiàn)場可編程門陣列(Field Programmable Gata Array,簡稱FPGA)由于其易編程、可升級的特性,被廣泛應(yīng)用于電子設(shè)備中。由于電子設(shè)備的開發(fā)是一個長期且不斷演進的過程,期間必然會需要對使用的FPGA進行多次加載。
[0003]通常,F(xiàn)PGA是基于靜態(tài)隨機存儲器(Static Random Access Memory) SRAM編程的,編程信息在系統(tǒng)掉電時會丟失,每次上電時,都需要CPU先啟動,然后通過CPU通過通用輸入輸出(General Purpose Input/Output,簡稱GP10)模擬時序的方式,將CPU外掛存儲器中的編程數(shù)據(jù)重新加載到FPGA中。
[0004]但是,上述FPGA加載方法中,CPU產(chǎn)生的加載時鐘只是千赫茲(kHz)級別,F(xiàn)PGA的加載速度緩慢、效率較低。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提供一種基于復(fù)雜可編程邏輯器件Complex Programmable LogicDevice,簡稱CPLD)的FPGA加載系統(tǒng),用于解決現(xiàn)有技術(shù)中,F(xiàn)PGA加載速度緩慢,效率較低的問題。
[0006]本發(fā)明提供一種基于CPLD的FPGA加載系統(tǒng),包括:存儲器、中央處理機(CentralProcessing Unit,簡稱 CPU)、CPLD、FPGA 和晶體振蕩器;
[0007]所述存儲器,用于存儲待加載數(shù)據(jù);
[0008]所述CPU,與所述存儲器連接,用于將所述存儲器中存儲的數(shù)據(jù)輸出;
[0009]所述CPLD,與所述CPU和所述晶體振蕩器分別連接,用于根據(jù)所述晶體振蕩器輸出的時鐘信號將從所述CPU接收的數(shù)據(jù)發(fā)送給所述FPGA。
[0010]本發(fā)明提供的基于CPLD的FPGA加載系統(tǒng),利用CPLD作為加載橋梁,CPU將外部存儲器中存儲的數(shù)據(jù)發(fā)送給CPLD后,CPLD根據(jù)外接的高速時鐘信號,將收到的數(shù)據(jù)加載至FPGA中,系統(tǒng)結(jié)構(gòu)簡單,顯著減少了 FPGA的加載時間,提高了加載速度。
【專利附圖】
【附圖說明】
[0011]圖1為本發(fā)明提供的一種基于CPLD的FPGA加載系統(tǒng)實施例一的結(jié)構(gòu)不意圖;
[0012]圖2為本發(fā)明提供的一種基于CPLD的FPGA加載系統(tǒng)實施例二的結(jié)構(gòu)示意圖;
[0013]圖3為本發(fā)明提供的FPGA數(shù)據(jù)寄存器內(nèi)的數(shù)據(jù)轉(zhuǎn)換與時鐘信號的時序圖;
[0014]圖4為本發(fā)明提供的一種基于CPLD的FPGA加載系統(tǒng)實施例三的結(jié)構(gòu)不意圖。
【具體實施方式】
[0015]圖1為本發(fā)明提供的一種基于CPLD的FPGA加載系統(tǒng)實施例一的結(jié)構(gòu)不意圖。如圖1所示,該系統(tǒng)包括:存儲器100、CPU110、CPLD120、FPGA130和晶體振蕩器140。
[0016]其中,存儲器100用于存儲待加載數(shù)據(jù);CPU110與存儲器100連接,用于將存儲器100中存儲的數(shù)據(jù)輸出;CPLD120與CPUllO和晶體振蕩器140分別連接,用于根據(jù)晶體振蕩器140輸出的時鐘信號將從CPUllO接收的數(shù)據(jù)發(fā)送給FPGA130。
[0017]具體的,CPLD通常以電可編程序只讀存儲器(Electrically ProgrammableRead-Only-Memory,簡稱EPROM)或閃存(FLASH)存儲器的編程方式,編程次數(shù)可達I萬次以上,該編程方式的優(yōu)點是系統(tǒng)斷電后編程信息不會丟失,所以CPLD啟動速度非常快,基本上上電就可以工作。且CPLD可以利用外部晶振產(chǎn)生的高速時鐘作為加載參考時鐘,其控制簡單、擴展方便,故本發(fā)明用CPLD作為加載橋梁,在CPU和FPGA間建立快速加載的通道。
[0018]其中,晶體振蕩器的頻率可根據(jù)FPGA的實際加載可接受頻率設(shè)置,比如為33兆赫茲(MHZ)或66MHZ等等,存儲器可以為只讀存儲器(Read Only Memory,簡稱ROM),還可以為EPROM或FLASH等,本實施對此不做限定。進一步地,在對FPGA進行在線升級時,為了盡量縮短CPU與CPLD間數(shù)據(jù)傳輸?shù)臅r間,CPU與CPLD可以通過本地總線(Local Bus)連接,常用的CPU Local Bus參考時鐘為66MHz,加載10兆比特(MB)的數(shù)據(jù)需要約200ns,時間非常短,可忽略。
[0019]本實施例提供的基于CPLD的FPGA加載系統(tǒng),利用CPLD作為加載橋梁,CPU將外部存儲器中存儲的數(shù)據(jù)發(fā)送給CPLD后,CPLD根據(jù)外接的高速時鐘信號,將收到的數(shù)據(jù)加載至FPGA中,該系統(tǒng)實現(xiàn)結(jié)構(gòu)簡單,顯著減少了 FPGA的加載時間,提高了加載速度。
[0020]圖2為本發(fā)明提供的基于CPLD的FPGA加載系統(tǒng)實施例二的結(jié)構(gòu)示意圖。如圖2所示,上述CPLD120包括FPGA數(shù)據(jù)寄存器121和控制邏輯寄存器122。
[0021]其中,F(xiàn)PGA數(shù)據(jù)寄存器121用于存儲FPGA的待加載數(shù)據(jù);控制邏輯寄存器122用于存儲控制信號的狀態(tài),控制信號的狀態(tài)包括信號有效或無效。
[0022]進一步地,控制信號包括:允許加載信號、清除數(shù)據(jù)信號、時鐘信號及加載完成信號。
[0023]具體的,上述各控制信號可以是CPU向CPLD發(fā)送FPGA的待加載數(shù)據(jù)時,同時傳送給CPLD的,也可以提前加載至CPLD中。其中,允許加載信號,是指允許加載被選中的FPGA,只有該信號有效時,才可將CPLD中的FPGA數(shù)據(jù)寄存器中的數(shù)據(jù)加載至FPGA中;清除數(shù)據(jù)信號,是指清除選中的FPGA中的數(shù)據(jù),對FPGA進行在線升級時,可通過控制該信號,先控制FPGA清除現(xiàn)有的程序后再進入待加載狀態(tài);時鐘信號,CPLD根據(jù)該加載時鐘信號向FPGA發(fā)送待加載數(shù)據(jù);加載完成信號,用于指示FPGA已加載完成,該信號可以是由FPGA返回給CPLD 的。
[0024]舉例來說,CPU通過CPLD對FPGA進行在線升級時,CPU加載軟件向CPLD發(fā)送加載開始命令,CPLD收到CPU發(fā)送的加載開始命令后,控制允許加載信號有效,在CPLD每收到一個8位寬的數(shù)據(jù)后,晶體振蕩器隨即會產(chǎn)生一個帶缺口的加載時鐘信號,與此同時,CPLD中的FPGA數(shù)據(jù)寄存器內(nèi)的并行模式數(shù)據(jù)會由該時鐘信號轉(zhuǎn)換成串行模式數(shù)據(jù)。圖3所示為本發(fā)明提供的FPGA數(shù)據(jù)寄存器內(nèi)的數(shù)據(jù)轉(zhuǎn)換與時鐘信號的時序圖。其中,3a為FPGA數(shù)據(jù)寄存器被寫入數(shù)據(jù)的時序,3b為進行并串轉(zhuǎn)換后的數(shù)據(jù)時序,3c為時鐘信號時序。
[0025]由圖3可知,并串轉(zhuǎn)換后的數(shù)據(jù)時序與時鐘信號時序同步,且需滿足FPGA的加載時序要求,比如FPGA加載最大可接受的頻率為33MHz,則該串轉(zhuǎn)換后的數(shù)據(jù)與時鐘信號的頻率即可設(shè)為33MHz。需要注意的是,為防止引起數(shù)據(jù)阻塞,CPU每次寫一次FPGA寄存器動作后的空閑周期要滿足一次并串轉(zhuǎn)換的時鐘周期,而在該時鐘周期上升沿結(jié)束前CPU不能向FPGA寄存器進行新的寫操作。舉例來說,可以在CPU每寫一次8比特(b)的數(shù)據(jù)后,在下一周期將Local Bus的標(biāo)準(zhǔn)位進行取反操作,CPLD通過檢測該標(biāo)志位的沿(上升沿或下降沿),當(dāng)CPLD檢測到該沿后,即可認(rèn)為CPU已經(jīng)完成了數(shù)據(jù)寫入,則CPLD可產(chǎn)生加載時鐘,并根據(jù)該加載時鐘信號將FPGA數(shù)據(jù)寄存器內(nèi)的數(shù)據(jù)發(fā)送給FPGA。
[0026]圖4為本發(fā)明提供的一種基于CPLD的FPGA加載系統(tǒng)實施例三的結(jié)構(gòu)不意圖。如圖4所示,在圖1所示的基礎(chǔ)上,該系統(tǒng)還包括聯(lián)合測試行動組(Joint Test ActionGroup,簡稱 JTAG) 400,JTAG 與 CPU 和 CPLD 連接。
[0027]進一步地,CPU具體用于將存儲器存儲的CPLD的待加載數(shù)據(jù)經(jīng)過JTAG發(fā)送給CPLD。
[0028]具體的,由于CPU、CPLD等均含有JTAG芯片,所以CPU可通過JTAG方式對CPLD進行數(shù)據(jù)串行加載,提高對CPLD加載數(shù)據(jù)的速度。
[0029]JTAG通常包括測試數(shù)據(jù)輸入(Test Data Input,簡稱TDI)引腳、測試數(shù)據(jù)輸出(Test Data output,簡稱TD0)引腳、測試時鐘輸入(Test Clock,簡稱TCK)引腳、測試模式(Test Mode Select,簡稱TMS)引腳及復(fù)位(Reset,簡稱RST)引腳等。本實施例中,CPU向CPLD寫入數(shù)據(jù)時,為防止有不穩(wěn)定信號干擾JTAG的各引腳,可在JTAG的TD1、TMS及RET引腳處各接一上拉電阻,來使各引腳的信號狀態(tài)穩(wěn)定,另外,為濾去時鐘信號中的毛刺,防止時鐘信號完整性不佳,且使上電時時鐘信號穩(wěn)定,可在TCK引腳接一到地的電容和電阻。其中,各上拉電阻的值可根據(jù)實際需要選擇,比如都為4.7千歐姆,TCK引腳處的下拉電阻可以為I千歐姆,濾波電容可以為15皮法拉等。
[0030]另外,為保證信號的完整性,JTAG盡量離CPU的1/0近一些。且可在CPU到JTAG的各引腳的源端串入一電阻,用于保證CPU輸出信號的阻抗匹配。進一步地,在CPLD輸入到FPGA的各控制信號的回路上,也可以根據(jù)上述方式串入對應(yīng)的電阻,來保證阻抗匹配。
[0031]本實施例提供的基于CPLD的FPGA加載系統(tǒng),CPU利用JTAG將CPLD的待加載數(shù)據(jù)發(fā)送給CPLD,利用Local Bus總線將FPGA的待加載數(shù)據(jù)發(fā)送給CPLD內(nèi)的FPGA數(shù)據(jù)寄存器,CPLD在外部時鐘信號的控制下將FPGA的待加載數(shù)據(jù)發(fā)送給FPGA,實現(xiàn)結(jié)構(gòu)簡單,可同時實現(xiàn)CPLD和FPGA的在線升級,顯著提高了 FPGA的加載速度。
[0032]在本申請所提供的幾個實施例中,應(yīng)該理解到,所描述的系統(tǒng),可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅是示意性的,所述功能模塊的劃分,僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個模塊可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。
[0033]本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質(zhì)包括:R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0034]最后應(yīng)說明的是:以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換.,而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍。
【權(quán)利要求】
1.一種基于CPLD的FPGA加載系統(tǒng),其特征在于,包括:存儲器、中央處理器CPU、復(fù)雜可編程邏輯器件CPLD、現(xiàn)場可編程門陣列FPGA和晶體振蕩器; 所述存儲器,用于存儲待加載數(shù)據(jù); 所述CPU,與所述存儲器連接,用于將所述存儲器中存儲的數(shù)據(jù)輸出; 所述CPLD,與所述CPU和所述晶體振蕩器分別連接,用于根據(jù)所述晶體振蕩器輸出的時鐘信號將從所述CPU接收的數(shù)據(jù)發(fā)送給所述FPGA。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述CPU與所述CPLD通過本地總線LocalBus連接。
3.根據(jù)權(quán)利要求1或2所述的系統(tǒng),其特征在于,所述CPLD,包括:FPGA數(shù)據(jù)寄存器和控制邏輯寄存器; 所述FPGA數(shù)據(jù)寄存器,用于存儲FPGA的待加載數(shù)據(jù); 所述控制邏輯寄存器,用于存儲控制信號的狀態(tài),所述控制信號的狀態(tài)包括所述信號有效或無效。
4.根據(jù)權(quán)利要求3所述的系統(tǒng),其特征在于,所述控制信號包括:允許加載信號、清除數(shù)據(jù)信號、時鐘信號及加載完成信號。
5.根據(jù)權(quán)利要求1或2所述的系統(tǒng),其特征在于,還包括:聯(lián)合測試行動組JTAG,所述JTAG與所述CPU和CPLD連接; 所述CPU,具體用于將所述存儲器存儲的CPLD的待加載數(shù)據(jù)經(jīng)過所述JTAG發(fā)送給所述CPLD。
6.根據(jù)權(quán)利要求5所述的系統(tǒng),其特征在于,還包括:第一電阻、第二電阻、第三電阻、第四電阻和電容; 所述第一電阻與所述JTAG的測試數(shù)據(jù)輸入TDI引腳和電源連接; 所述第二電阻與所述JTAG的測試模式TMS引腳和電源連接; 所述第三電阻與所述JTAG的復(fù)位RST引腳和電源連接; 所述第四電阻和電容分別與所述JTAG的測試時鐘輸入TCK引腳和地連接。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述存儲器為只讀存儲器ROM、電可編程序只讀存儲器EPROM或閃存FLASH。
【文檔編號】G06F9/445GK103927210SQ201410163022
【公開日】2014年7月16日 申請日期:2014年4月22日 優(yōu)先權(quán)日:2014年4月22日
【發(fā)明者】劉宗祝, 帥園園, 張雷, 張 杰, 朱忠超 申請人:唐山軌道客車有限責(zé)任公司