亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種基于fpga的亂序內(nèi)存控制器及其實現(xiàn)方法

文檔序號:6377590閱讀:307來源:國知局
專利名稱:一種基于fpga的亂序內(nèi)存控制器及其實現(xiàn)方法
技術(shù)領(lǐng)域
本發(fā)明涉及計算機內(nèi)存控制器技術(shù)領(lǐng)域,具體地,涉及一種基于FPGA的亂序內(nèi)存控制器及其實現(xiàn)方法。
背景技術(shù)
在過去的數(shù)十年中,隨機存儲器(random access memory,簡稱RAM)—直是計算機系統(tǒng)的基本組成部分,一般用于系統(tǒng)處理中的中間存儲。在帶寬方面,根據(jù)帶寬、功能消耗和制造成本等不同的要求,有不同類型的RAM。例如,有兩個通用的RAM類型,一個是具有靜止存取功能的內(nèi)存(Static RAM,簡稱SRAM),一個是動態(tài)隨機存取存儲器(Dynamic Random Access Memory,S卩Dynamic RAM,簡稱DRAM)。SRAM由1970年推出,通常用于快速片上的內(nèi)存,可以低延遲訪問,所以SRAM經(jīng)常被使用的內(nèi)存結(jié)構(gòu)中較高層次中的高速緩沖存儲器和便簽存儲器中用以提高性能。DRAM是IBM的Robert Dennard在1968年發(fā)明的,價格要遠遠低于SRAM,DRAM在制造中優(yōu)化過程工藝技術(shù),使其能夠達到很高的密度和速度。
在近十年內(nèi),DRAM的設(shè)計一直在不斷地改進,一個時鐘周期添加到之前的異步 DRAM接口減少在突發(fā)傳輸中的內(nèi)存控制的同步的開銷,這種類型的內(nèi)存被稱為同步DRAM, 也就是同步動態(tài)隨機存儲器(Synchronous Dynamic Random Access Me mory,簡稱SDRAM)。 在2001年,一種新一代的SDRAM面世,帶寬有了顯著的提高,這些內(nèi)存同時在時鐘上升沿和下降沿時傳輸數(shù)據(jù),所以被稱為雙倍速率同步動態(tài)隨機存儲器(Double Data Rate SDRAM, 簡稱DDR SDRAM)的縮寫,第二代和第三代分別被稱為四倍資料率同步動態(tài)隨機存取內(nèi)存 (Double Data Rate 2,簡稱DDR2)和八倍資料率同步動態(tài)隨機存取內(nèi)存(DDR3 SDRAM,簡稱 DDR3,是DDR2 SDRAM的后繼者)雖然設(shè)計非常類似,但是分別擴展到更高的時鐘周期和帶寬。
對SDRAM內(nèi)存控制器接口的實現(xiàn),是通過SDRAM協(xié)議來實現(xiàn)的,這個協(xié)議包括 6個命令,分別是無操作命令(No operation)、激活操作命令(Activate)、寫操作命令 (Write)、讀操作命令(Read)、預(yù)讀取操作命令(Precharge)和刷新操作命令(Refresh)。
其中,No operation命令是表示沒有操作命令,防止不需要的命令在空閑或者等待時注冊。
Active命令是打開內(nèi)存隊列中的一行和保存這個行到行緩存中。一旦行請求被打開,讀和寫命令可以在行緩存發(fā)出請求訪問列,這些突發(fā)長度都是4個或8個字。當內(nèi)存初始化的時候DDR2內(nèi)存的突發(fā)長度就開始運作,DDR3則允許在每次訪問的時候突發(fā)長度發(fā)生改變。一個突發(fā)長度為4則僅支持DDR3設(shè)備上的突發(fā)突變機制,比如一個突發(fā)突變的請求在同一時間作為一個8個字的突發(fā),但是只能在一半的時間內(nèi)傳輸數(shù)據(jù)。
Read命令通常用來初始一個突發(fā)的讀訪問一個有效的行。讀命令可以發(fā)出一個自動預(yù)充電表不,在傳輸完成后自動預(yù)充電。
Write命令通常用來初始一個突發(fā)的寫訪問一個有效的行。寫命令可以發(fā)出一個自動預(yù)充電表不,在傳輸完成后自動預(yù)充電。
Precharge命令正好與Activate命令相反,它復(fù)制了在內(nèi)存隊列中行緩存的內(nèi)容回到它所在的地方。
Refresh命令為了防止由于泄漏的數(shù)據(jù)丟失,必須經(jīng)常給電容器充電。多刷新命令時要刷新整個存儲陣列,每個命令只刷新電容器的一小部分。所有的bank都必須預(yù)充電在刷新命令發(fā)出之前。
內(nèi)存控制器是計算機系統(tǒng)內(nèi)部控制內(nèi)存并且通過內(nèi)存控制器使內(nèi)存與CPU之間交換數(shù)據(jù)的重要組成部分。內(nèi)存控制器決定了計算機系統(tǒng)所能使用的最大內(nèi)存容量、內(nèi)存 BANK數(shù)、內(nèi)存類型和速度、內(nèi)存顆粒數(shù)據(jù)深度和數(shù)據(jù)寬度等等重要參數(shù),也就是說決定了計算機系統(tǒng)的內(nèi)存性能,從而也對計算機系統(tǒng)的整體性能產(chǎn)生較大影響。
隨著計算機技術(shù)發(fā)展,內(nèi)存控制器分為傳統(tǒng)型和整合型兩種。傳統(tǒng)的計算機系統(tǒng) (PU要和內(nèi)存進行數(shù)據(jù)交換,需要經(jīng)過多級傳輸,數(shù)據(jù)延遲比較大而影響計算機系統(tǒng)的整體性能;整合型內(nèi)存控制器直接與CPU進行數(shù)據(jù)傳輸,提高計算機系統(tǒng)的整體性能,整合型內(nèi)存控制器是今后的發(fā)展方向,而且其技術(shù)也越來越完善,內(nèi)存控制器的工作方式和實現(xiàn)將決定計算機系統(tǒng)的整體性能。
大多數(shù)內(nèi)存控制器的工作方式包括三個主要模塊接口控制,命令發(fā)生器和數(shù)據(jù)通路。各種不同的內(nèi)存控制器根本的不同在于其內(nèi)部的邏輯功能設(shè)計,大多數(shù)內(nèi)存控制器的內(nèi)部邏輯功能設(shè)計都是順序執(zhí)行請求命令來對其bank的讀寫和突發(fā)操作,在非連續(xù)讀寫操作中每次都需要激活行地址,增加了空操作指令延時,從而影響系統(tǒng)的整體性能。
大多數(shù)內(nèi)存控制器的內(nèi)部邏輯的功能設(shè)計都是按順序執(zhí)行請求命令,對bank進行讀寫和突發(fā)操作,這樣就在非連續(xù)性的讀寫操作中每次都必須激活行地址,從而增加了空操作指令的延時,造成了數(shù)據(jù)延遲比較大,最終影響了計算機系統(tǒng)的整體性能。發(fā)明內(nèi)容
本發(fā)明的目的在于,針對上述問題,提出一種基于FPGA的亂序內(nèi)存控制器,以實現(xiàn)操作過程靈活、空操作指令少、延遲周期短和工作效率高的優(yōu)點。
本發(fā)明的第二目的在于,提出一種基于FPGA的亂序內(nèi)存控制器的實現(xiàn)方法。
為實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案是一種基于FPGA的亂序內(nèi)存控制器, 主要包括前端部分用于基于系統(tǒng)的讀寫內(nèi)存請求命令,主要負責系統(tǒng)的總線請求和仲裁,并向后端部分發(fā)送發(fā)送讀寫請求命令、數(shù)據(jù)和地址信息等;后端部分用于負責實現(xiàn)基于FPGA的亂序內(nèi)存控制器的包括內(nèi)存映射邏輯、標簽管理邏輯和內(nèi)存命令生成器邏輯的硬件控制邏輯;在后端部分中,內(nèi)存命令生成器輸出的命令行信號接口,直接與SDRAM器件的輸入接口連接,用于實現(xiàn)對SDRAM的讀寫控制;以及, 數(shù)據(jù)路徑穿過所述前端部分和后端部分,用于提供單獨的讀通道和寫通道,實現(xiàn)讀寫數(shù)據(jù)在系統(tǒng)端和內(nèi)存之間的數(shù)據(jù)通路。
進一步地,所述后端部分也就是內(nèi)存控制讀寫硬件邏輯,包括內(nèi)存映射邏輯模塊、 標簽管理邏輯模塊、和內(nèi)存命令生成器;所述亂序內(nèi)存控制器邏輯模塊接收前端部分的系統(tǒng)請求和仲裁信息,通過內(nèi)存控制邏輯模塊實現(xiàn)邏輯地址到內(nèi)存物理地址的映射,通過標簽管理邏輯模塊和統(tǒng)一的調(diào)度機制實現(xiàn)對內(nèi)存控制命令的產(chǎn)生和管理內(nèi)存的讀寫;所述亂序內(nèi)存控制器的命令生成器模塊的下端,與內(nèi)存硬件接口相連。
進一步地,所述內(nèi)存命令生成器的SDRAM內(nèi)存控制命令的產(chǎn)生,符合SDRAM協(xié)議規(guī)定的讀寫時序要求,主要是基于內(nèi)存命令生成器亂序內(nèi)存控制邏輯的時序狀態(tài)機模塊和時序狀態(tài)緩存模塊,時序狀態(tài)機模塊實現(xiàn)命令控制狀態(tài)的跳轉(zhuǎn)和時序要求,時序狀態(tài)緩存模塊實現(xiàn)對命令信號的緩存控制;所述內(nèi)存命令生成器模塊的上端,連接亂序內(nèi)存控制器的內(nèi)存控制讀寫硬件邏輯。
進一步地,所述內(nèi)存控制器讀寫模塊,用于實現(xiàn)內(nèi)存控制器主要讀寫邏輯;內(nèi)存控制讀寫硬件邏輯,由Bank狀態(tài)機模塊來實現(xiàn)統(tǒng)一的讀寫調(diào)度和亂序控制,亂序邏輯控制通過標簽管理邏輯模塊的硬件邏輯實現(xiàn)。
進一步地,所述后端部分的內(nèi)存控制讀寫硬件邏輯模塊,處理總線請求和仲裁信息包括系統(tǒng)請求緩存模塊(mib_req_fifo)、bank緩存模塊(bank_fifo)、bank狀態(tài)機模塊 (bank_machine)和命令時序發(fā)生器模塊(sequece_machine),以及讀緩存控制模塊(mib_ rbuffer_fsm)和寫緩存控制模塊(wbuffer_ctrl)。
上述bank狀態(tài)機模塊,包括空閑狀態(tài)(S_IDLE )、寫狀態(tài)(S_WRITE )、讀狀態(tài)(S_ READ)、刷新狀態(tài)(S_REFRESH)和完成狀態(tài)(S_D0NE);上述sequence狀態(tài)機模塊,包括空閑狀態(tài)(S_IDLE)、激活狀態(tài)(S_ACT)、自動刷新狀態(tài) (S_AREF)、執(zhí)行刷新狀態(tài)(S_TREF)和等待刷新時間完成狀態(tài)(S_WREF);同時,本發(fā)明采用的另一技術(shù)方案是一種基于FPGA的亂序內(nèi)存控制器的實現(xiàn)方法, 包括在亂序內(nèi)存控制器的后端部分的邏輯控制中,標簽管理邏輯模塊處理內(nèi)存控制器模塊解析總線請求和仲裁的地址和數(shù)據(jù)信息,對映射邏輯地址到內(nèi)存地址的讀寫請求分別做一個讀寫的標簽管理,對每次讀寫的標簽信息通過標簽寄存器來寄存。讀寫標簽代表每一次請求讀寫突發(fā)數(shù)據(jù)操作;當一次讀突發(fā)數(shù)據(jù)沒有完成而有寫內(nèi)存請求時,可以通過寫標簽來判斷寫內(nèi)存的地址進行對內(nèi)存的寫操作;當一次寫突發(fā)數(shù)據(jù)沒有完成而有讀內(nèi)存請求時,可以通過讀標簽來判斷讀內(nèi)存的地址進行對內(nèi)存的讀操作。
本發(fā)明各實施例的基于FPGA的亂序內(nèi)存控制器,由于主要包括前端部分和后端部分,前端部分主要用于負責處理系統(tǒng)總線請求和仲裁、并負責負責將讀寫請求信息傳遞給后端和對數(shù)據(jù)通路的傳輸實現(xiàn);后端部分主要用于實現(xiàn)基于亂序內(nèi)存控制器與內(nèi)存讀寫協(xié)議的硬件控制邏輯,包括內(nèi)存映射邏輯,標簽管理邏輯和內(nèi)存控制命令生成邏輯等;還包括穿過前端部分和后端部分、且用于提供單獨的讀通道和寫通道的數(shù)據(jù)路徑;通過后端部分的亂序邏輯控制,對內(nèi)存bank進行統(tǒng)一管理和調(diào)度,可以實現(xiàn)對用戶與SDRAM之間的讀/ 寫命令進行亂序邏輯控制,減小延遲時間,提高工作效率;以實現(xiàn)操作過程靈活、空操作指令少、延遲周期短和工作效率高的優(yōu)點。
本發(fā)明的其它特征和優(yōu)點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發(fā)明而了解。
下面通過附圖和實施例,對本發(fā)明的技術(shù)方案做進一步的詳細描述。


附圖用來提供對本發(fā)明的進一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明的實施例一起用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的限制。在附圖中圖I為SDRAM的內(nèi)部結(jié)構(gòu)框圖;圖2為本發(fā)明基于FPGA的亂序內(nèi)存控制器的內(nèi)部結(jié)構(gòu)框圖;圖3為本發(fā)明基于FPGA的亂序內(nèi)存控制器的后端部分的控制流程示意圖;圖4為本發(fā)明基于FPGA的亂序內(nèi)存控制器中sequence狀態(tài)機模塊的狀態(tài)流程示意圖;圖5為本發(fā)明基于FPGA的亂序內(nèi)存控制器中bank狀態(tài)機模塊的狀態(tài)流程圖;圖6為本發(fā)明基于FPGA的亂序內(nèi)存控制器的讀寫請求的標簽管理實現(xiàn)過程圖。
結(jié)合附圖,本發(fā)明實施例中附圖標記如下10-總線和仲裁器;11_內(nèi)存命令生成器;12-標簽管理邏輯模塊13-內(nèi)存映射邏輯模塊;14_數(shù)據(jù)路徑;15_總線數(shù)據(jù)和地址請求輸入(mib_req_fifo)模塊;16_內(nèi)存塊緩存模塊(bank_fifo) ; 17-寫數(shù)據(jù)緩存控制(wBuffer_ctrl)模塊;18-讀數(shù)據(jù)緩存(mib_ rBuffer)模塊;19_bank狀態(tài)機模塊;20_sequence狀態(tài)機模塊。
具體實施方式
以下結(jié)合附圖對本發(fā)明的優(yōu)選實施例進行說明,應(yīng)當理解,此處所描述的優(yōu)選實施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。
控制器實施例根據(jù)本發(fā)明實施例,如圖I-圖6所示,提供了一種基于FPGA的亂序內(nèi)存控制器。
參見圖2,本實施例的基于FPGA的亂序內(nèi)存控制器,主要包括前端部分用于基于系統(tǒng)的讀寫內(nèi)存請求命令,主要負責系統(tǒng)總線請求和仲裁,并向后端部分發(fā)送讀寫請求命令、數(shù)據(jù)和地址信息;后端部分用于負責實現(xiàn)基于亂序內(nèi)存控制器與內(nèi)存讀寫協(xié)議的包括內(nèi)存映射邏輯、 標簽管理邏輯和內(nèi)存控制讀寫邏輯以及內(nèi)存內(nèi)存命令生成器邏輯的硬件控制邏輯;在后端部分中,內(nèi)存內(nèi)存命令生成器輸出的命令行信號接口直接與SDRAM器件的輸入接口連接, 用于實現(xiàn)對SDRAM的讀寫控制;以及,數(shù)據(jù)路徑(如數(shù)據(jù)路徑14):穿過前端部分和后端部分,用于提供單獨的讀通道和寫通道,實現(xiàn)讀寫數(shù)據(jù)在系統(tǒng)端和內(nèi)存之間的數(shù)據(jù)通路。
這里,前端部分主要負責系統(tǒng)總線請求和仲裁,后端部分主要負責邏輯實現(xiàn)內(nèi)存映射和SDRAM控制命令的生成;在后端部分可實現(xiàn)亂序內(nèi)存控制器邏輯功能。參見圖1,SDRAM的內(nèi)存結(jié)構(gòu)包括許多bank,一個bank是以位元為單位寫入一個矩陣中,由行 (column)和列(row)組成。首先輸入隊列信號包括bank的行和列,標簽,命令和清空,寄存器中用來存放這些輸出信號。本質(zhì)上,bank是獨立的內(nèi)存,但是他們共享數(shù)據(jù)總線,地址總線和命令總線以減少芯片的數(shù)量。每個bank都有一個行緩存用來存儲或者打開一個行,只有這些開放的元素才能被讀和寫訪問。
其中,上述前端部分,包括與后端部分連接、并通過數(shù)據(jù)路徑與SDRAM的數(shù)據(jù)接口連接的總線和仲裁器(如總線和仲裁器10)和讀寫請求模塊(如Read Req)發(fā)送總線計劃請求和邏輯地址到后端部分。后端部分,包括用于對前端部分發(fā)送的邏輯地址進行邏輯地址到物理地址內(nèi)存映射的內(nèi)存映射邏輯模塊(如內(nèi)存映射邏輯模塊13),用于基于前端部分發(fā)送的計劃請求進行分析并邏輯控制SDRAM命令的內(nèi)存命令生成器模塊。(如內(nèi)存命令生成器11),命令生成器模塊輸出SDRAM的命令基于ACT模塊對SDRAM的行地址進行激活處理, 以及用于后端亂序邏輯控制的內(nèi)存映射邏輯模塊、內(nèi)存命令生成器和內(nèi)存讀寫請求的標簽管理模塊(如標簽管理邏輯模塊12);后端部分中各模塊的具體說明如下總線和仲裁器位于控制器前端部分,負責完成系統(tǒng)的請求和仲裁;內(nèi)存命令生成器位于控制器后端部分,負責產(chǎn)生符合SDRAM時序要求的命令控制信號;標簽管理邏輯模塊是該基于FPGA的亂序內(nèi)存控制器的重點,在整個基于FPGA的亂序內(nèi)存控制器的狀態(tài)控制過程中跳變,讀寫先入先出隊列(First Input First Output,簡稱 FIFO)和讀寫隨機存取存儲器(random access memory,簡稱ram)的時候,都涉及到了對標簽信號的輸入和輸出。標簽管理邏輯模塊實現(xiàn)了讀寫標簽信息到ram地址的映射,通過標簽可以管理數(shù)據(jù)和地址的一致性,每次讀寫fifo的時候,都分別由對應(yīng)的讀和寫的標簽值與其讀和寫ram的數(shù)據(jù)相對應(yīng),讀和寫ram的地址也加入標簽值作為讀和寫ram的標記,這樣保證了每次讀和寫ram的正確性。以下是讀和寫ram數(shù)據(jù)的具體操作流程(I)寫ram數(shù)據(jù)時比如發(fā)生寫請求16次,每寫數(shù)據(jù)一次就加一,每次寫請求突發(fā)完成后,都會對相應(yīng)的寫標簽值{map[wtag]}置I, map的寬度為16位,第17次寫請求時wtag 的值為O ;在其中發(fā)生兩次讀請求,然后把讀標簽值{map[rtag]}清O,讀請求和寫請求不同時發(fā)生,這樣就造成map [tag]的16位(每一位代表其中的讀或?qū)懻埱?會中出現(xiàn)讀和寫的請求狀態(tài)同時存在,而且讀和寫的請求狀態(tài)會在map的16位狀態(tài)中輪換,這樣只要對讀寫的標簽映射的ram地址進行數(shù)據(jù)操作,就能正確讀出或?qū)懭胗杏玫男畔⒘?。這里,map是預(yù)定義的一個用于在映射的16位的寄存器,每一位代表一次寫或者讀的操作,wtag代表當前寫標簽的值。
⑵讀ram數(shù)據(jù)時比如發(fā)生讀請求16次,每次讀數(shù)據(jù)一次就加一,每次讀請求突發(fā)完成后,都會對相應(yīng)的map [wtag]置I,map的寬度為16位,第17次寫請求時標簽的值為 O ;在其中發(fā)生兩次讀請求,然后把寫map[rtag]清O,讀請求和寫請求不同時發(fā)生,這樣就造成map[rtag]的16位(每一位代表其中的讀或?qū)懻埱?中會出現(xiàn)讀和寫的請求狀態(tài)同時存在,而且讀和寫的請求狀態(tài)會在map的16位狀態(tài)中輪換,這樣我們就只要對讀寫的標簽映射的ram地址進行數(shù)據(jù)操作,就能正確讀出或?qū)懭胗杏玫男畔⒘恕tag代表當前讀標簽的值。
內(nèi)存映射邏輯模塊位于后端部分,后端內(nèi)存邏輯實現(xiàn)了對總線請求和仲裁的邏輯地址到物理地址的映射。
數(shù)據(jù)路徑穿過前端部分和后端部分,用于提供單獨的讀通道和寫通道,實現(xiàn)讀寫數(shù)據(jù)在系統(tǒng)端和內(nèi)存的數(shù)據(jù)通路。
參見圖3,上述后端部分的控制流程示意圖,包括依次連接的總線數(shù)據(jù)和地址請求輸入模塊(如mib_req_fifo模塊15)、內(nèi)存塊緩存模塊(如bank_fifo模塊16)、bank狀態(tài)機模塊(如bank狀態(tài)機模塊19)和sequence狀態(tài)機模塊(如sequence狀態(tài)機模塊20),以及分別與mib_req_fifo模塊連接的寫數(shù)據(jù)緩存控制模塊(如wBuffer_ctrl模塊17)和讀數(shù)據(jù)緩存模塊(如mib_rbufTer模塊18)。各個模塊的主要功能描述如下mib_req_fifo模塊實現(xiàn)了對系統(tǒng)仲裁請求的數(shù)據(jù)和地址的緩存(S卩,實現(xiàn)了對前端部分過來的系統(tǒng)請求的數(shù)據(jù)和地址的緩存)。通過例化兩個fifo來分別對輸入數(shù)據(jù)和地址進行緩存,按照寫數(shù)據(jù)和地址的空滿標志來讀取fifo的數(shù)據(jù)和地址輸出。在寫請求時,把輸入的效地址和數(shù)據(jù)寫入fifo ;當寫入fifo的數(shù)據(jù)和地址滿狀態(tài)時停止寫入數(shù)據(jù)和地址, 同時輸出讀fifo請求信號給系統(tǒng)。在讀fifo數(shù)據(jù)和地址時,根據(jù)數(shù)據(jù)fifo和地址fifo 的空狀態(tài)和讀地址和數(shù)據(jù)的使能信號讀fifo中數(shù)據(jù)和地址的讀出。
bank_fifo模塊首先對請求的地址信息進行解析(主要是對緩存addfifo中的地址信息進行解析),從地址緩存(addfifo)信息中解析出時序發(fā)生器所需要的行、列和bank 信息,然后對每個bank都分配一個bank_f ifo來進行讀寫存儲行、列、讀、寫和標簽信息,通過bank狀態(tài)機模塊來管理bank_fifo的輸出,包括時序發(fā)生器所需要的行、列和bank信息,同時發(fā)送控制SDRAM所需的命令,包括讀、寫、刷新等控制信息和標簽信息給時序發(fā)生器。主要實現(xiàn)以下功能①輸入地址的解析從輸入地址中解析出行地址(row)列地址(column)以及bank的大小,并按輸入信息對寫緩存標簽和讀緩存標簽進行緩存,重新再對行列地址,讀寫狀態(tài)和標簽信息封裝成一個規(guī)定寬度的數(shù)據(jù)bfifo_din。
②讀寫bfifo :讀bfifo時根據(jù)bank狀態(tài)機模塊的輸出bfifo_pop信號對每一個 bank進行讀操作,讀操作數(shù)據(jù)(讀數(shù)據(jù),讀有效和標志信息)在根據(jù)bfifo的空滿狀態(tài)輸出給bank狀態(tài)機模塊。寫bfifo時判斷bfifo和輸入有效信息把封裝的數(shù)據(jù)bfifo_din寫入至Ij bfifo。
③輸出讀寫控制sequence狀態(tài)信息從讀出bfifo的數(shù)據(jù)中解析出行列和標簽信息)輸出給sequence_fifo模塊;同時輸出sequence的bank,命令等信息給sequence_ fifo模塊。sequence_fifo模塊實現(xiàn)對寫控制信息和讀控制信息進行緩存。
wBuffer_ctrl模塊實現(xiàn)對讀寫數(shù)據(jù)按照bank大小分配ram地址。寫數(shù)據(jù)有效時,先對寫數(shù)據(jù)和字節(jié)使能長度分配相應(yīng)的ram地址,然后遍歷地對每一個bank進行數(shù)據(jù)寫入。讀數(shù)據(jù)使能時,把ram地址對應(yīng)的數(shù)據(jù)依次從bank中讀出(與寫bank過程一致), 讀出數(shù)據(jù)信息輸出。即,實現(xiàn)前端總線寫數(shù)據(jù)信息的緩存和釋放數(shù)據(jù)到前端總線,映射緩存數(shù)據(jù)每次burst數(shù)據(jù)長度的塊地址,映射緩存讀寫的塊地址通過標簽管理邏輯模塊。
mib_rbuffer模塊通過標簽管理邏輯模塊,判斷數(shù)據(jù)和地址的一致性,即每一次讀使能fifo和請求對應(yīng)一個rtag值,而每一次寫數(shù)據(jù)地址的對應(yīng)一個wtag值。rtag值和 wtag值對應(yīng)數(shù)據(jù)和地址是一一對應(yīng)的關(guān)系。即,實現(xiàn)前端總線地址信息和讀數(shù)據(jù)信息的緩存和釋放數(shù)據(jù)到前端總線,映射緩存讀數(shù)據(jù)每次burst數(shù)據(jù)長度的塊地址,映射緩存讀寫的塊地址通過標簽管理邏輯模塊的管理。
bank狀態(tài)機模塊首先對請求信息進行解析(主要是對地址fifo中的地址信息進行解析),從addfifo信息中解析出時序發(fā)生器所需要的行、列和bank信息,然后對每個 bank都分配一個bank_fifo來進行讀寫存儲行、列、讀、寫和標簽信息,通過bank狀態(tài)機模塊來管理bank_fifo的輸出,包括時序發(fā)生器所需要的行、列和bank信息,同時發(fā)送控制 SDRAM所需的命令,包括讀、寫、刷新等控制信息和標簽信息給時序發(fā)生器。
bank狀態(tài)機模塊首先處理來自bank_f ifo的讀寫請求,所有的請求信息通過一個輪叫調(diào)度機制來進行管理,通過調(diào)度機制處理后的請求狀態(tài)來對每一個bank進行讀操作或?qū)懖僮?,只有調(diào)度的當前bank會被執(zhí)行對應(yīng)的讀寫請求。bank狀態(tài)機模塊還輸出滿足 SDRAM時序要求的控制信號。bank狀態(tài)機模塊輸出信號包括bf ifo_pop、bf ifo_refresh和 ctrl_ref_flag三個控制信號。bfifo_pop信號,用于通過輪叫調(diào)度機制激活對應(yīng)的bank, 并對其進行讀或?qū)?;bfifo_refresh信號,是bank狀態(tài)機模塊處于刷新狀態(tài)標志位;ctrl_ ref_flag信號,是SDRAM刷新間隔時間標志位。
sequence狀態(tài)機模塊是接收到來自bank狀態(tài)機模塊處理bank_fifo輸出的命令信息,把接收的信息緩存在序列fifo中,通過對sequence_fifo的空滿狀態(tài)和讀寫請求順序的輸出給時序發(fā)生器進行處理。Sequence狀態(tài)機模塊處理讀寫請求和標簽信息輸出滿足符合SDRAM時序(如tRFC,tRP等)要求的控制命令(行命令選擇命令ras、列命令選擇命令cas、使能位we和片選位Cs等)。sequence狀態(tài)機模塊,是負責實現(xiàn)對SDRAM命令控制輸出。sequence狀態(tài)機模塊在執(zhí)行讀或?qū)懨畹恼埱髸r,首先在bank為0,時鐘周期為 O的時候激活一個bank,完成bank的激活后,間隔兩個時鐘周期后,就是時鐘周期3進行讀或?qū)懖僮鳎粋€讀或?qū)懖僮靼?個bursts/banks。完成讀或?qū)懖僮髦?進行bankl的激活。在時鐘周期2的時候激活bankl,然后繼續(xù)間隔兩個時鐘周期繼續(xù)進行讀或?qū)懙牟僮鳎?之后的操作都是如此執(zhí)行。如此執(zhí)行的話,就只有一個NOP操作,其余都是在執(zhí)行其他的操作過程中,這樣減少了延遲周期,充分利用每個時鐘周期,提高了狀態(tài)機執(zhí)行的效率。
上述實施例基于FPGA的亂序內(nèi)存控制器的時序參數(shù)列表
權(quán)利要求
1.一種基于FPGA的亂序內(nèi)存控制器,其特征在于,主要包括前端部分用于基于系統(tǒng)的讀寫內(nèi)存請求命令,主要負責系統(tǒng)總線請求和仲裁,并向后端部分發(fā)送讀寫請求命令、數(shù)據(jù)和地址信息;后端部分用于負責實現(xiàn)基于FPGA的亂序內(nèi)存控制器的包括內(nèi)存映射邏輯、標簽管理邏輯和內(nèi)存控制讀寫邏輯以及內(nèi)存命令生成器邏輯的硬件控制邏輯;在后端部分中,內(nèi)存命令生成器輸出的命令行信號接口,直接與SDRAM器件的輸入接口連接,用于實現(xiàn)對SDRAM 的讀寫控制;數(shù)據(jù)路徑穿過所述前端部分和后端部分,用于提供單獨的讀通道和寫通道,實現(xiàn)讀寫數(shù)據(jù)在系統(tǒng)端和內(nèi)存之間的數(shù)據(jù)通路。
2.根據(jù)權(quán)利要求I所述的基于FPGA的亂序內(nèi)存控制器,其特征在于,所述后端部分也就是內(nèi)存控制讀寫硬件邏輯,包括內(nèi)存映射邏輯模塊、標簽管理邏輯模塊和內(nèi)存命令生成器;所述亂序內(nèi)存控制器邏輯模塊接收前端部分的系統(tǒng)請求和仲裁信息,通過內(nèi)存控制邏輯模塊實現(xiàn)邏輯地址到內(nèi)存物理地址的映射,通過標簽管理邏輯模塊和統(tǒng)一的調(diào)度機制實現(xiàn)對內(nèi)存控制命令的產(chǎn)生和管理內(nèi)存的讀寫;所述亂序內(nèi)存控制器的內(nèi)存命令生成器模塊的下端,與內(nèi)存硬件接口相連。
3.根據(jù)權(quán)利要求2所述的基于FPGA的亂序內(nèi)存控制器,其特征在于,所述內(nèi)存命令生成器的SDRAM內(nèi)存控制命令的產(chǎn)生,符合SDRAM協(xié)議規(guī)定的讀寫時序要求,主要是基于內(nèi)存命令生成器亂序內(nèi)存控制邏輯的時序狀態(tài)機模塊和時序狀態(tài)緩存模塊,時序狀態(tài)機模塊實現(xiàn)命令控制狀態(tài)的跳轉(zhuǎn)和時序要求,時序狀態(tài)緩存模塊實現(xiàn)對命令信號的緩存控制;所述內(nèi)存命令生成器的上端,連接亂序內(nèi)存控制器的內(nèi)存控制讀寫硬件邏輯。
4.根據(jù)權(quán)利要求3所述的基于FPGA的亂序內(nèi)存控制器,其特征在于,所述內(nèi)存控制器讀寫模塊,用于實現(xiàn)內(nèi)存控制器主要讀寫邏輯;內(nèi)存控制讀寫硬件邏輯,由Bank狀態(tài)機模塊來實現(xiàn)統(tǒng)一的讀寫調(diào)度和亂序控制,亂序邏輯控制通過標簽管理邏輯模塊的硬件邏輯實現(xiàn)。
5.根據(jù)權(quán)利要求3所述的基于FPGA的亂序內(nèi)存控制器,其特征在于,所述后端部分的內(nèi)存控制讀寫硬件邏輯,處理總線請求和仲裁信息包括系統(tǒng)請求緩存模塊、bank緩存模塊、 bank狀態(tài)機模塊和命令時序發(fā)生器模塊,以及讀緩存控制模塊和寫緩存控制模塊。
6.一種根據(jù)權(quán)利要求I所述的基于FPGA的亂序內(nèi)存控制器的實現(xiàn)方法,其特征在于, 包括在亂序內(nèi)存控制器的后端部分的邏輯控制中,標簽管理邏輯模塊處理內(nèi)存控制器模塊解析總線請求和仲裁的地址和數(shù)據(jù)信息,對映射邏輯地址到內(nèi)存地址的讀寫請求分別做一個讀寫的標簽管理,對每次讀寫的標簽信息通過標簽寄存器來寄存;讀寫標簽代表每一次請求讀寫突發(fā)數(shù)據(jù)操作;當一次讀突發(fā)數(shù)據(jù)沒有完成而有寫內(nèi)存請求時,可以通過寫標簽來判斷寫內(nèi)存的地址進行對內(nèi)存的寫操作;當一次寫突發(fā)數(shù)據(jù)沒有完成而有讀內(nèi)存請求時,可以通過讀標簽來判斷讀內(nèi)存的地址進行對內(nèi)存的讀操作。
全文摘要
本發(fā)明公開了一種基于FPGA的亂序內(nèi)存控制器及其實現(xiàn)方法,主要包括前端部分和后端部分,前端部分主要用于負責處理系統(tǒng)總線請求和仲裁、并負責將讀寫請求信息傳遞給后端和對數(shù)據(jù)通路的傳輸實現(xiàn);后端部分主要用于實現(xiàn)基于亂序內(nèi)存控制器的硬件控制邏輯,包括內(nèi)存映射邏輯,標簽管理邏輯和內(nèi)存控制命令生成邏輯等;還包括穿過前端部分和后端部分、且用于提供單獨的讀通道和寫通道的數(shù)據(jù)路徑。該基于FPGA的亂序內(nèi)存控制器及其實現(xiàn)方法,可以實現(xiàn)操作過程靈活、空操作指令少、延遲周期短和工作效率高的優(yōu)點。
文檔編號G06F13/16GK102945213SQ201210357658
公開日2013年2月27日 申請日期2012年9月24日 優(yōu)先權(quán)日2012年9月24日
發(fā)明者張慶敏, 張衡, 胡剛 申請人:無錫眾志和達存儲技術(shù)股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1