專利名稱:基于burst和流水線的cpu和fpga接口方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于BURST和流水線的CPU和FPGA接口方法,能夠用于CPU和 FPGA需要有大量數(shù)據(jù)進(jìn)行交互的各種場合。
背景技術(shù):
隨著FPGA(Field Programmable Gate Array)的應(yīng)用日漸廣泛,很多系統(tǒng)采用了 CPU+FPGA的構(gòu)架方式。CPU和FPGA之間有大量的數(shù)據(jù)需要進(jìn)行交互,如何提高CPU讀寫 FPGA的效率已經(jīng)成為很多應(yīng)用中的一個(gè)瓶頸問題。目前,F(xiàn)PGA —般通過雙口 RAM和CPU進(jìn)行交互,通過雙口 RAM的緩沖以解決FPGA 和CPU的速度和并行性等問題。雙口 RAM可以采用專用的雙口 RAM芯片或者利用FPGA的邏輯模擬出來的雙口 RAM,前者由于成本高,容量小,所以一般更多的是采用后者的方式。為了便于說明,在下面的時(shí)序討論以某MPC8247應(yīng)用系統(tǒng)為例,CPU的讀寫頻率 100MHz,但是具體的原理可以適用于其他各種頻率的CPU。根據(jù)FPGA的編譯信息可以知道, FPGA的邏輯資源模擬出來雙口 RAM的輸出延時(shí)一般在12ns到17ns之間??紤]到地址的建立時(shí)間、數(shù)據(jù)的保持時(shí)間等因素,CPU每次讀取FPGA雙口 RAM應(yīng)該需要至少4個(gè)時(shí)鐘周期, 也就是40ns,才能夠?qū)PGA的雙口 RAM進(jìn)行正常讀寫。圖1是用傳統(tǒng)方式CPU對FPGA進(jìn)行讀寫的示意圖,CPU的每次讀寫都需要等待大約40ns的時(shí)間。整個(gè)FPGA的輸出過程沒有重疊,連續(xù)讀取8次所需要的時(shí)間至少為320ns。即使CPU讀取FPGA數(shù)據(jù)采用了 DMA方式,由于CPU對FPGA進(jìn)行讀寫的時(shí)候,地址數(shù)據(jù)總線已經(jīng)被DMA占用,CPU無法對SDRAM和FLASH等外設(shè)進(jìn)行操作,所以此時(shí)CPU已經(jīng)相當(dāng)于處于等待狀態(tài),所以此時(shí)CPU的效率仍然比較低。
發(fā)明內(nèi)容
為了解決現(xiàn)有技術(shù)中CPU和FPGA之間有大量的數(shù)據(jù)需要進(jìn)行交互,但是兩者之間的交換效率較低,不能滿足實(shí)際使用需要的問題。本發(fā)明提出了一種CPU采用BURST方式結(jié)合流水線技術(shù)對FPGA進(jìn)行讀寫的方法,在CPU和FPGA有大量數(shù)據(jù)進(jìn)行交互的場合,采用這種方式能夠大大的降低了 CPU讀寫FPGA所需要的時(shí)間,提高CPU讀寫FPGA的效率。為了解決上述問題,本發(fā)明所采取的技術(shù)方案是
一種基于BURST和流水線的CPU和FPGA接口方法,其特征在于包括以下步驟 (1 )、CPU對FPGA采用BURST的方式進(jìn)行讀寫,采用這種方式后,CPU能夠?qū)PGA進(jìn)行連續(xù)多次讀寫;
(2)、在FPGA內(nèi)部采用了內(nèi)部地址寄存器的方式,在CPU開始讀寫的時(shí)候,F(xiàn)PGA把當(dāng)前的讀寫地址鎖存到FPGA內(nèi)部的地址寄存器中;
(3)、對于讀操作,F(xiàn)PGA在當(dāng)前讀周期完成之前,自動(dòng)把地址寄存器的值加1,輸出下一個(gè)數(shù)據(jù);對于寫操作,則在當(dāng)前寫周期完成后,把地址寄存器的值加1 ;
(4)、在后面的過程中,每個(gè)時(shí)鐘周期,F(xiàn)PGA都把地址寄存器自動(dòng)加1。
前述的一種基于BURST和流水線的CPU和FPGA接口方法,其特征在于對于讀操作,CPU采用了 BURST方式能夠連續(xù)對FPGA進(jìn)行多次讀操作,CPU第一次讀數(shù)據(jù)的時(shí)候,整個(gè)周期需要40ns,F(xiàn)PGA在20ns的時(shí)候開始輸出數(shù)據(jù),由于FPGA的數(shù)據(jù)輸出延時(shí)為20ns,所以40ns的時(shí)候,CPU可以讀到第一個(gè)數(shù)據(jù);在FPGA的內(nèi)部,在30ns的時(shí)候設(shè)計(jì)邏輯自動(dòng)把當(dāng)前地址加1,開始輸出下一個(gè)地址的內(nèi)容,由于FPGA的數(shù)據(jù)輸出延時(shí)為20ns,在50ns的時(shí)候,CPU能夠讀到第二個(gè)數(shù)據(jù),在以后的時(shí)間內(nèi),依此類推,F(xiàn)PGA可以在每個(gè)時(shí)鐘周期內(nèi)輸出一個(gè)數(shù)據(jù)。前述的一種基于BURST和流水線的CPU和FPGA接口方法,其特征在于對于寫操作不需要考慮FPGA的數(shù)據(jù)輸出延時(shí)時(shí)間,F(xiàn)PGA內(nèi)部的地址寄存器的值只需要在本次寫周期完成后再加1。前述的一種基于BURST和流水線的CPU和FPGA接口方法,其特征在于對于連續(xù) 8次讀操作,CPU讀取FPGA數(shù)據(jù)所需要的時(shí)間為1 IOns。本發(fā)明的有益效果是BURST方式是CPU為了提高讀寫效率而采用的一種連續(xù)讀寫方式,一般根據(jù)CPU的不同,BURST的長度可以配置為4個(gè)或者8個(gè)。目前這種技術(shù)一般僅應(yīng)用于CPU和SDRAM的之間的讀寫,CPU采用BURST方式能夠?qū)DRAM的多個(gè)地址進(jìn)行讀寫,提高了 CPU對SDRAM的讀寫效率。本發(fā)明把BURST方式引入到了 CPU對FPGA的讀寫過程,在FPGA中采用了流水線技術(shù),大大提高了 CPU讀寫FPGA的速度。
圖1是采用傳統(tǒng)方式CPU對FPGA進(jìn)行讀寫的示意圖。圖2是FPGA采用流水線方式讀過程的示意圖。圖3是FPGA采用流水線方式寫過程的示意圖。
具體實(shí)施例方式下面結(jié)合附圖對本發(fā)明做進(jìn)一步的描述。本發(fā)明的實(shí)施包括兩個(gè)方面的設(shè)計(jì),第一部分是CPU按照BUSRT方式對FPGA進(jìn)行讀寫;第二部分是FPGA的采用流水線方式讀、寫操作的實(shí)現(xiàn)。CPU對FPGA按照類似BURST的方式進(jìn)行讀寫。采用這種方式后,CPU能夠?qū)PGA 進(jìn)行連續(xù)多次讀寫。在FPGA內(nèi)部采用了內(nèi)部地址寄存器的方式,在CPU開始讀寫的時(shí)候,F(xiàn)PGA把當(dāng)前的讀寫地址鎖存到FPGA內(nèi)部的地址寄存器中。對于讀操作,F(xiàn)PGA在當(dāng)前讀周期完成之前,把地址寄存器的值加1,輸出下一個(gè)數(shù)據(jù);對于寫操作,則在當(dāng)前寫周期完成后,把地址寄存器的值加1。在后面的過程中,每個(gè)時(shí)鐘周期,F(xiàn)PGA都把地址寄存器自動(dòng)加1。按照這樣的過程,CPU讀、寫取第一個(gè)數(shù)據(jù)時(shí)需要經(jīng)歷較長的等待時(shí)間,但是在后面的過程中,CPU可以在每個(gè)時(shí)鐘周期讀、寫一個(gè)數(shù)據(jù),大大提高了效率。圖2是采用BURST和流水線技術(shù)實(shí)現(xiàn)CPU對FPGA讀時(shí)序。下面以FPGA的讀過程為例,來說明FPGA的工作過程。由于CPU采用了 BURST方式,所以CPU能夠連續(xù)對FPGA進(jìn)行多次讀操作。CPU第一次讀數(shù)據(jù)的時(shí)候,整個(gè)周期大約需要40ns,F(xiàn)PGA大約在20ns左右的時(shí)候開始輸出數(shù)據(jù), 由于FPGA的數(shù)據(jù)輸出延時(shí)一般在IOns和16ns之間,所以40ns的時(shí)候,CPU可以讀到第一個(gè)數(shù)據(jù)。在FPGA的內(nèi)部,在30ns的時(shí)候設(shè)計(jì)邏輯自動(dòng)把當(dāng)前地址加1,開始輸出下一個(gè)地址的內(nèi)容,由于FPGA的數(shù)據(jù)輸出延時(shí)為20ns,這樣在50ns的時(shí)候,CPU能夠讀到第二個(gè)數(shù)據(jù),在以后的時(shí)間內(nèi),依此類推,F(xiàn)PGA可以在每個(gè)時(shí)鐘周期內(nèi)輸出一個(gè)數(shù)據(jù)。在整個(gè)過程中,F(xiàn)PGA輸出數(shù)據(jù)的延時(shí)相互重疊,類似流水線的方式進(jìn)行連續(xù)數(shù)據(jù)輸出,能夠大大提高了 FPGA的讀寫效率。采用這種方式后,對于連續(xù)8次讀操作,所需要的時(shí)間為IlOns左右。大大提高了 CPU讀寫的效率以及和FPGA間數(shù)據(jù)交互帶寬。圖3是采用BURST和流水線技術(shù)實(shí)現(xiàn)CPU對FPGA寫時(shí)序。和讀過程相比,主要的區(qū)別在于由于寫入過程不需要考慮FPGA的數(shù)據(jù)輸出延時(shí),所以FPGA內(nèi)部的地址只需要在本次讀寫完成后再加1。結(jié)合BURST方式,大大提高了數(shù)據(jù)的寫入速度。以上顯示和描述了本發(fā)明的基本原理、主要特征及優(yōu)點(diǎn)。本行業(yè)的技術(shù)人員應(yīng)該了解,本發(fā)明不受上述實(shí)施例的限制,上述實(shí)施例和說明書中描述的只是說明本發(fā)明的原理,在不脫離本發(fā)明精神和范圍的前提下,本發(fā)明還會(huì)有各種變化和改進(jìn),這些變化和改進(jìn)都落入要求保護(hù)的本發(fā)明范圍內(nèi)。本發(fā)明要求保護(hù)范圍由所附的權(quán)利要求書及其等效物界。
權(quán)利要求
1.一種基于BURST和流水線的CPU和FPGA接口方法,其特征在于包括以下步驟(1 )、CPU對FPGA采用BURST的方式進(jìn)行讀寫,采用這種方式后,CPU能夠?qū)PGA進(jìn)行連續(xù)多次讀寫;(2)、在FPGA內(nèi)部采用了內(nèi)部地址寄存器的方式,在CPU開始讀寫的時(shí)候,F(xiàn)PGA把當(dāng)前的讀寫地址鎖存到FPGA內(nèi)部的地址寄存器中;(3)、對于讀操作,F(xiàn)PGA在當(dāng)前讀周期完成之前,自動(dòng)把地址寄存器的值加1,輸出下一個(gè)數(shù)據(jù);對于寫操作,則在當(dāng)前寫周期完成后,把地址寄存器的值加1 ;(4)、在后面的過程中,每個(gè)時(shí)鐘周期,F(xiàn)PGA都把地址寄存器自動(dòng)加1。
2.根據(jù)權(quán)利要求1所述的一種基于BURST和流水線的CPU和FPGA接口方法,其特征在于對于讀操作,CPU采用了 BURST方式能夠連續(xù)對FPGA進(jìn)行多次讀操作,CPU第一次讀數(shù)據(jù)的時(shí)候,假設(shè)整個(gè)周期需要40ns,F(xiàn)PGA在20ns的時(shí)候開始輸出數(shù)據(jù),由于FPGA的數(shù)據(jù)輸出延時(shí)為20ns,所以40ns的時(shí)候,CPU可以讀到第一個(gè)數(shù)據(jù);在FPGA的內(nèi)部,在30ns的時(shí)候設(shè)計(jì)邏輯自動(dòng)把當(dāng)前地址加1,開始輸出下一個(gè)地址的內(nèi)容,由于FPGA的數(shù)據(jù)輸出延時(shí)為20ns,在50ns的時(shí)候,CPU能夠讀到第二個(gè)數(shù)據(jù),在以后的時(shí)間內(nèi),依此類推,F(xiàn)PGA可以在每個(gè)時(shí)鐘周期內(nèi)輸出一個(gè)數(shù)據(jù)。
3.根據(jù)權(quán)利要求2所述的一種基于BURST和流水線的CPU和FPGA接口方法,其特征在于對于寫操作不需要考慮FPGA的數(shù)據(jù)輸出延時(shí)時(shí)間,F(xiàn)PGA內(nèi)部的地址寄存器的值只需要在本次寫周期完成后再加1。
4.根據(jù)權(quán)利要求2或3所述的一種基于BURST和流水線的CPU和FPGA接口方法,其特征在于對于連續(xù)8次讀操作,CPU讀取FPGA數(shù)據(jù)所需要的時(shí)間為110ns。
全文摘要
本發(fā)明公開了一種基于BURST和流水線的CPU和FPGA接口方法,適合用于CPU和FPGA需要有大量數(shù)據(jù)進(jìn)行交互的各種場合。其特征在于主要是CPU采用了BUSRT方式對FPGA進(jìn)行讀寫,在FPGA采用了內(nèi)部地址寄存器的方式,實(shí)際的讀寫地址采用的是FPGA內(nèi)部地址寄存器。本發(fā)明解決了現(xiàn)有技術(shù)中CPU和FPGA之間有大量的數(shù)據(jù)需要進(jìn)行交互,但是兩者之間的交換效率較低,不能滿足實(shí)際使用需要的問題,提出了一種CPU采用BURST方式結(jié)合流水線技術(shù)對FPGA進(jìn)行讀寫的方法,采用這種方式能夠大大的降低了CPU讀寫FPGA所需要的時(shí)間,提高CPU讀寫FPGA的效率。
文檔編號G06F13/20GK102508798SQ201110315468
公開日2012年6月20日 申請日期2011年10月18日 優(yōu)先權(quán)日2011年10月18日
發(fā)明者余華武, 葉品勇, 陳慶旭, 魏建功 申請人:國電南京自動(dòng)化股份有限公司