本發(fā)明涉及FPGA(Field Programmable Gate Array,現(xiàn)場(chǎng)可編程門陣列)技術(shù)領(lǐng)域,特別是涉及一種基于FPGA的SDRAM控制系統(tǒng)。
背景技術(shù):
SDRAM:Synchronous Dynamic Random Access Memory,即同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器,其將CPU與RAM通過一個(gè)相同的時(shí)鐘鎖在一起,使RAM和CPU能夠共享一個(gè)時(shí)鐘周期,以相同的速度同步工作,與EDO內(nèi)存相比速度能提高50%。SDRAM基于雙存儲(chǔ)體結(jié)構(gòu),內(nèi)含兩個(gè)交錯(cuò)的存儲(chǔ)陣列,當(dāng)CPU從一個(gè)存儲(chǔ)體或陣列訪問數(shù)據(jù)時(shí),另一個(gè)就已為讀寫數(shù)據(jù)做好了準(zhǔn)備,通過這兩個(gè)存儲(chǔ)陣列的緊密切換,讀取效率就能得到成倍的提高。在圖像采集、數(shù)據(jù)分析等領(lǐng)域往往會(huì)使用FPGA加SDRAM的方式進(jìn)行大量數(shù)據(jù)的緩存和處理。
一般來(lái)說,在FPGA內(nèi)實(shí)現(xiàn)對(duì)SDRAM的控制有兩種方法:一種是利用FPGA資源自己設(shè)計(jì),另一種是調(diào)用FPGA廠商提供的SDRAM控制器IP(Intellectual Property,知識(shí)產(chǎn)權(quán))接口。雖然SDRAM接口有統(tǒng)一的標(biāo)準(zhǔn),但是每個(gè)FPGA廠商的SDRAM控制器IP接口卻各不相同。而在FPGA內(nèi)數(shù)據(jù)讀寫控制方式必須和SDRAM控制器IP接口的標(biāo)準(zhǔn)匹配才能完成正確的數(shù)據(jù)讀寫。因此,對(duì)FPGA和SDRAM的使用者來(lái)說,使用不同廠商的FPGA做SDRAM控制設(shè)計(jì)是一件極其不方便的事情,每換一次FPGA,就要重新設(shè)計(jì)一次數(shù)據(jù)讀寫控制程序,產(chǎn)品的可移植性差,導(dǎo)致浪費(fèi)大量的時(shí)間。
技術(shù)實(shí)現(xiàn)要素:
基于此,本發(fā)明實(shí)施例提供了基于FPGA的SDRAM控制系統(tǒng),能夠拓展FPGA對(duì)SDRAM進(jìn)行控制時(shí)的通用性。
本發(fā)明一方面提供基于FPGA的SDRAM控制系統(tǒng),包括RAM讀寫控制模塊、接口轉(zhuǎn)換模塊以及SDRAM控制器IP模塊;
所述接口轉(zhuǎn)換模塊包括一RAM讀寫控制接口、一選擇子模塊和至少兩個(gè)轉(zhuǎn)換子模塊,所述SDRAM控制器IP模塊包括至少兩個(gè)控制器IP子模塊;所述至少兩個(gè)控制器IP子模塊互不相同,所述至少兩個(gè)轉(zhuǎn)換子模塊分別用于實(shí)現(xiàn)RAM接口規(guī)范與不同類型的SDRAM控制器IP接口規(guī)范的轉(zhuǎn)換,所述至少兩個(gè)轉(zhuǎn)換子模塊與所述至少兩個(gè)控制器IP子模塊一一對(duì)應(yīng);
所述RAM讀寫控制模塊按照RAM接口規(guī)范發(fā)出控制指令至所述接口轉(zhuǎn)換模塊;
所述接口轉(zhuǎn)換模塊通過RAM讀寫控制接口接收所述控制指令,通過選擇子模塊為接收到的控制指令分配一對(duì)應(yīng)的轉(zhuǎn)換子模塊;通過該轉(zhuǎn)換子模塊將RAM接口規(guī)范的控制指令轉(zhuǎn)換為對(duì)應(yīng)的SDRAM控制器IP接口規(guī)范的控制指令,將所述SDRAM控制器IP接口規(guī)范的控制指令發(fā)送至SDRAM控制器IP模塊;
所述SDRAM控制器IP模塊中對(duì)應(yīng)的控制器IP子模塊根據(jù)所述SDRAM控制器IP接口規(guī)范的控制指令對(duì)SDRAM進(jìn)行讀寫操作。
基于上述實(shí)施例提供的基于FPGA的SDRAM控制系統(tǒng),通過一個(gè)接口轉(zhuǎn)換模塊實(shí)現(xiàn)了將不同F(xiàn)PGA廠商的不同SDRAM控制器IP接口轉(zhuǎn)換成一種通用的RAM(Random Access Memory,隨機(jī)存取存儲(chǔ)器)接口,從而實(shí)現(xiàn)在不同廠商的FPGA中都可以方便快捷地使用SDRAM存儲(chǔ)器,擴(kuò)展了FPGA的通用性。
附圖說明
圖1為一實(shí)施例的基于FPGA的SDRAM控制系統(tǒng)的示意圖;
圖2為RAM寫控制時(shí)序圖;
圖3為RAM讀控制時(shí)序圖;
圖4為一實(shí)施例的接口轉(zhuǎn)換模塊的示意圖;
圖5為一實(shí)施例的基于FPGA的SDRAM控制系統(tǒng)進(jìn)行SDRAM寫數(shù)據(jù)的示意流程圖;
圖6為一實(shí)施例的基于FPGA的SDRAM控制系統(tǒng)進(jìn)行SDRAM讀數(shù)據(jù)的示意流程圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
圖1為一實(shí)施例的基于FPGA的SDRAM控制系統(tǒng)的示意圖;如圖1所示,本實(shí)施例中的基于FPGA的SDRAM控制系統(tǒng)包括:RAM讀寫控制模塊、接口轉(zhuǎn)換模塊以及SDRAM控制器IP模塊。其中,所述接口轉(zhuǎn)換模塊包括一RAM讀寫控制接口、一選擇子模塊和至少兩個(gè)轉(zhuǎn)換子模塊,所述SDRAM控制器IP模塊包括至少兩個(gè)控制器IP子模塊;所述至少兩個(gè)控制器IP子模塊互不相同,所述至少兩個(gè)轉(zhuǎn)換子模塊分別用于實(shí)現(xiàn)RAM接口規(guī)范與不同類型的SDRAM控制器IP接口規(guī)范的轉(zhuǎn)換,所述至少兩個(gè)轉(zhuǎn)換子模塊與所述至少兩個(gè)控制器IP子模塊一一對(duì)應(yīng)。
本實(shí)施例的基于FPGA的SDRAM控制系統(tǒng)的原理為:所述RAM讀寫控制模塊按照RAM接口規(guī)范發(fā)出控制指令至所述接口轉(zhuǎn)換模塊;所述接口轉(zhuǎn)換模塊通過RAM讀寫控制接口接收所述控制指令,通過選擇子模塊為接收到的控制指令分配一對(duì)應(yīng)的轉(zhuǎn)換子模塊;通過該轉(zhuǎn)換子模塊將RAM接口規(guī)范的控制指令轉(zhuǎn)換為對(duì)應(yīng)的SDRAM控制器IP接口規(guī)范的控制指令,將所述SDRAM控制器IP接口規(guī)范的控制指令發(fā)送至SDRAM控制器IP模塊;所述SDRAM控制器IP模塊中對(duì)應(yīng)的控制器IP子模塊根據(jù)所述SDRAM控制器IP接口規(guī)范的控制指令對(duì)SDRAM進(jìn)行讀寫操作。
在一優(yōu)選實(shí)施例中,基于FPGA的SDRAM控制系統(tǒng)對(duì)SDRAM的操作包括寫操作和讀操作,對(duì)應(yīng)的,所述RAM讀寫控制模塊發(fā)出的所述控制指令可以為寫操作指令或者讀操作指令,讀操作指令中的信息包括:地址信息Addr和讀指令RD,寫操作指令中包括:地址信息Addr、寫指令WE以及寫數(shù)據(jù)WrData。
可以理解的,所述RAM讀寫控制模塊發(fā)出的所述控制指令中還可包括其他相關(guān)的信息,例如讀數(shù)據(jù)有效RdValid信號(hào)。
在一優(yōu)選實(shí)施例中,接口轉(zhuǎn)換模塊中的各個(gè)轉(zhuǎn)換子模塊中具體可包括:RAM地址及命令轉(zhuǎn)換單元和SDRAM控制器IP地址及命令接口。
各個(gè)轉(zhuǎn)換子模塊通過RAM地址及命令轉(zhuǎn)換單元將RAM接口規(guī)范的地址信息和讀/寫命令轉(zhuǎn)換成對(duì)應(yīng)的SDRAM控制器IP規(guī)范的地址和讀/寫命令;并通過SDRAM控制器IP地址及命令接口將所述SDRAM控制器IP規(guī)范的地址信息和讀/寫命令發(fā)送至SDRAM控制器IP模塊;
各個(gè)轉(zhuǎn)換子模塊還包括:RAM寫數(shù)據(jù)轉(zhuǎn)換單元和SDRAM控制器IP寫數(shù)據(jù)接口;
各個(gè)轉(zhuǎn)換子模塊通過RAM寫數(shù)據(jù)轉(zhuǎn)換單元將RAM接口規(guī)范的寫數(shù)據(jù)轉(zhuǎn)換為對(duì)應(yīng)的SDRAM控制器IP規(guī)范的寫數(shù)據(jù);并通過SDRAM控制器IP寫數(shù)據(jù)接口將所述SDRAM控制器IP規(guī)范的寫數(shù)據(jù)發(fā)送至所述SDRAM控制器IP模塊;
對(duì)于讀操作,所述SDRAM控制器IP模塊通過對(duì)應(yīng)的控制器IP子模塊接收所述SDRAM控制器IP規(guī)范的地址信息和讀命令,根據(jù)接收到的地址信息和讀命令對(duì)SDRAM進(jìn)行讀操作。或者,對(duì)于寫操作,所述SDRAM控制器IP模塊通過對(duì)應(yīng)的控制器IP子模塊接收所述SDRAM控制器IP規(guī)范的地址信息、寫命令和寫數(shù)據(jù),根據(jù)接收到的地址信息、寫命令和寫數(shù)據(jù)對(duì)SDRAM進(jìn)行寫操作。
在另一優(yōu)選實(shí)施例中,各個(gè)轉(zhuǎn)換子模塊還包括:地址及命令緩存和寫數(shù)據(jù)緩存。對(duì)應(yīng)的,各個(gè)轉(zhuǎn)換子模塊通過所述地址及命令緩存對(duì)所述RAM地址及命令轉(zhuǎn)換單元得到的SDRAM控制器IP規(guī)范的地址信息和讀/寫命令進(jìn)行緩存,通過所述SDRAM控制器IP地址及命令接口從所述地址及命令緩存中讀出所述SDRAM控制器IP規(guī)范的地址和讀/寫命令。各個(gè)轉(zhuǎn)換子模塊通過所述寫數(shù)據(jù)緩存對(duì)所述RAM寫數(shù)據(jù)轉(zhuǎn)換單元得到的SDRAM控制器IP規(guī)范的寫數(shù)據(jù)進(jìn)行緩存;通過所述SDRAM控制器IP寫數(shù)據(jù)接口從所述寫數(shù)據(jù)緩存中讀出SDRAM控制器IP規(guī)范的寫數(shù)據(jù)。其中,所述SDRAM控制器IP寫數(shù)據(jù)接口與所述SDRAM控制器IP地址及命令接口同步從對(duì)應(yīng)緩存中讀取數(shù)據(jù),將所述SDRAM控制器IP規(guī)范的地址、寫命令和寫數(shù)據(jù)一并發(fā)送至SDRAM控制器IP模塊。
在另一優(yōu)選實(shí)施例中,所述地址及命令緩存、所述寫數(shù)據(jù)緩存均為FIFO(First In First Out)緩存。
在另一優(yōu)選實(shí)施例中,各個(gè)轉(zhuǎn)換子模塊還包括:RAM讀數(shù)據(jù)轉(zhuǎn)換單元和SDRAM控制器IP讀數(shù)據(jù)接口。對(duì)應(yīng)的,所述SDRAM控制器IP模塊將從SDRAM讀取到的讀數(shù)據(jù)發(fā)送給所述接口轉(zhuǎn)換模塊。對(duì)應(yīng)的,接口轉(zhuǎn)換模塊中對(duì)應(yīng)的轉(zhuǎn)換子模塊通過所述SDRAM控制器IP讀數(shù)據(jù)接口接收所述讀數(shù)據(jù),通過所述RAM讀數(shù)據(jù)轉(zhuǎn)換單元將接收到的SDRAM控制器IP規(guī)范的讀數(shù)據(jù)轉(zhuǎn)換為RAM接口規(guī)范的讀數(shù)據(jù),并將所述RAM接口規(guī)范的讀數(shù)據(jù)通過RAM讀寫控制接口發(fā)送至RAM讀寫控制模塊。對(duì)應(yīng)的,RAM讀寫控制模塊接收RAM接口規(guī)范的讀數(shù)據(jù)并輸出。
在一優(yōu)選實(shí)施例中,所述SDRAM控制器IP模塊包括三個(gè)控制器IP子模塊,分別為:Xilinx SDRAM控制器IP子模塊、Altera SDRAM控制器IP子模塊以及Lattice SDRAM控制器IP子模塊。所述接口轉(zhuǎn)換模塊包括三個(gè)轉(zhuǎn)換子模塊,分別為:用于實(shí)現(xiàn)RAM接口規(guī)范與Xilinx SDRAM控制器IP接口規(guī)范轉(zhuǎn)換的第一轉(zhuǎn)換子模塊;用于實(shí)現(xiàn)RAM接口規(guī)范與Altera SDRAM控制器IP接口規(guī)范轉(zhuǎn)換的第二轉(zhuǎn)換子模塊;以及,用于實(shí)現(xiàn)RAM接口規(guī)范與Lattice SDRAM控制器IP接口規(guī)范轉(zhuǎn)換的第三轉(zhuǎn)換子模塊。
可以理解的,根據(jù)實(shí)際需要,還可設(shè)置其他轉(zhuǎn)換子模塊和控制器IP子模塊。
結(jié)合上述實(shí)施例,參考圖2~圖5,下面結(jié)合SDRAM寫操作流程和SDRAM讀操作流程,對(duì)本發(fā)明的基于FPGA的SDRAM控制系統(tǒng)做進(jìn)一步的說明。
RAM讀寫控制模塊負(fù)責(zé)按照通用的RAM接口規(guī)范發(fā)送讀寫命令和數(shù)據(jù)。RAM讀寫控制模塊發(fā)出的信息包括地址Addr、讀命令RD、寫命令WE、寫數(shù)據(jù)WrData、讀數(shù)據(jù)RdData以及讀數(shù)據(jù)有效RdValid等信號(hào)。RAM的讀寫時(shí)序也非常簡(jiǎn)單,分為寫控制時(shí)序和讀控制時(shí)序。圖2和圖3分別是RAM寫時(shí)序圖和RAM讀時(shí)序圖。要寫數(shù)據(jù)時(shí),把WE拉高,同時(shí)送地址Addr和寫數(shù)據(jù)WrData,就把寫數(shù)據(jù)寫入了相應(yīng)地址了。讀數(shù)據(jù)時(shí),把RD拉高,同時(shí)送地址Addr,然后延時(shí)TCL時(shí)間后就可以得到讀數(shù)據(jù)RdData。
進(jìn)一步的,接口轉(zhuǎn)換模塊用來(lái)實(shí)現(xiàn)從RAM讀寫控制接口到對(duì)應(yīng)的SDRAM控制器IP控制器接口的轉(zhuǎn)換。在內(nèi)部可通過FIFO緩存來(lái)完成兩類型接口時(shí)序的轉(zhuǎn)換。如圖4所示,在接口轉(zhuǎn)換模塊內(nèi)可進(jìn)一步分成地址及命令轉(zhuǎn)換、寫數(shù)據(jù)轉(zhuǎn)換、讀數(shù)據(jù)轉(zhuǎn)換三部分來(lái)處理。
參考圖5所示,當(dāng)寫數(shù)據(jù)時(shí),RAM地址及命令接口轉(zhuǎn)換單元把RAM地址和寫命令轉(zhuǎn)換成SDRAM控制器IP地址及命令格式,然后存入地址及命令FIFO。RAM寫數(shù)據(jù)接口轉(zhuǎn)換單元把RAM寫數(shù)據(jù)格式轉(zhuǎn)換成SDRAM控制器IP寫數(shù)據(jù)格式,然后存入寫數(shù)據(jù)FIFO。之后再一起從兩個(gè)FIFO中將地址、命令和寫數(shù)據(jù)讀出,送到SDRAM控制器IP接口模塊,然后由SDRAM控制器IP接口模塊將寫數(shù)據(jù)寫入SDRAM中。這樣完成了寫數(shù)據(jù)的操作。
參考圖6所示,當(dāng)讀數(shù)據(jù)時(shí),RAM地址及命令接口轉(zhuǎn)換單元把RAM地址和讀命令格式轉(zhuǎn)換成SDRAM控制器IP地址命令格式,然后存入地址及命令FIFO。之后從該FIFO中將地址命令讀出,送到SDRAM控制器IP接口模塊上,然后由SDRAM控制器IP模塊對(duì)SDRAM進(jìn)行讀操作。SDRAM接收到讀命令后,將數(shù)據(jù)輸出給SDRAM控制器IP接口模塊,最后由RAM讀數(shù)據(jù)接口轉(zhuǎn)換子模塊直接從SDRAM控制器IP接口上獲取讀數(shù)據(jù),然后轉(zhuǎn)換成RAM讀數(shù)據(jù)格式送到RAM讀寫控制接口。這樣完成了讀數(shù)據(jù)的操作。
通過上述實(shí)施例的基于FPGA的SDRAM控制系統(tǒng),通過設(shè)計(jì)一個(gè)接口轉(zhuǎn)換模塊,可將不同F(xiàn)PGA廠商的不同類型SDRAM控制器IP接口轉(zhuǎn)換成一通用的RAM接口,從而實(shí)現(xiàn)在不同廠商的FPGA中都可以方便快捷地使用SDRAM存儲(chǔ)器,克服了不同F(xiàn)PGA廠商SDRAM控制器IP接口不同,對(duì)SDRAM存儲(chǔ)器控制時(shí)通用性差的問題。
在上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其它實(shí)施例的相關(guān)描述。
以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,不能理解為對(duì)本發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù)人員來(lái)說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。