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