本發(fā)明涉及一種低功耗、高數(shù)據(jù)吞吐量的SDR SDRAM控制器及其工作方法,屬于FPGA IP核設(shè)計的技術(shù)領(lǐng)域。
背景技術(shù):
IP核全稱知識產(chǎn)權(quán)核(Intellectual Property Core),是指某一方提供的形式為邏輯單元、芯片設(shè)計的可重用模塊。設(shè)計人員能夠以IP核為基礎(chǔ)進(jìn)行專用集成電路或現(xiàn)場可編程邏輯門陣列的邏輯設(shè)計,以減少設(shè)計周期。
SDR SDRAM具有很好的性價比,在很多領(lǐng)域中得到廣泛應(yīng)用,但SDR SDRAM有比較嚴(yán)格的時序要求,邏輯控制比較復(fù)雜,需要有一個專門控制器來實(shí)現(xiàn)數(shù)據(jù)讀寫控制,該控制器可以使用Verilog HDL或VHDL語言來實(shí)現(xiàn)。
FPGA具有可重構(gòu)、邏輯資源豐富、I/O接口靈活等特點(diǎn),基于FPGA的SDR SDRAM控制器設(shè)計能夠在很大程度上簡化設(shè)計方法,縮短產(chǎn)品設(shè)計者開發(fā)周期。
目前常見SDR SDRAM控制器的內(nèi)部時鐘和端口I/O時鐘都工作在一個時鐘頻率上,而目前SDR SDRAM的工作時鐘頻率達(dá)到了200MHz,越高的內(nèi)部時鐘頻率意味著功耗的增加和器件性能要求的提高,隨之帶來成本的提升,對于消費(fèi)電子領(lǐng)域應(yīng)用,確實(shí)帶來了不小的挑戰(zhàn)。
技術(shù)實(shí)現(xiàn)要素:
針對現(xiàn)有技術(shù)的不足,本發(fā)明提供一種低功耗、高數(shù)據(jù)吞吐量的SDR SDRAM控制器。
本發(fā)明還提供一種上述控制器的工作方法。
本發(fā)明利用FPGA芯片I/O邏輯的速率專換PHY(OSER/IDES)資源,通過增加數(shù)據(jù)位寬的辦法將I/O時鐘速率進(jìn)一步提高,而控制器工作時鐘僅為I/O時鐘速率的一半,既增加了讀寫數(shù)據(jù)吞吐量,又降低了器件功耗和成本。
技術(shù)術(shù)語解釋:
PLL(Phase Locked Loop):為鎖相回路或鎖相環(huán)電路。
本發(fā)明的技術(shù)方案如下:
一種低功耗、高數(shù)據(jù)吞吐量的SDR SDRAM控制器,包括PLL、自動刷新模塊、用戶接口模塊、命令控制模塊和CLKDIV模塊、OSER/IDES接口模塊。本發(fā)明通過上述模塊間的相互協(xié)作實(shí)現(xiàn)對SDR SDRAM初始化、自動刷新和數(shù)據(jù)讀寫功能,所述SDR SDRAM指一種存儲類型的IC芯片,SDR SDRAM控制器為控制SDRAM工作的IP核。
所述PLL為FPGA芯片內(nèi)部自帶的鎖相環(huán)電路,通過PLL產(chǎn)生SDR SDRAM控制器所需的時鐘信號,包括CLKDIV時鐘和SDR SDRAM時鐘;所述CLKDIV時鐘為所述CLKDIV模塊提供時鐘源,與SDR SDRAM時鐘的頻率值相等;SDR SDRAM時鐘為SDR SDRAM提供工作時鐘。
所述自動刷新模塊為命令控制模塊提供自動刷新請求信號,用于SDR SDRAM刷新控制。保證數(shù)據(jù)存儲的有效性。
所述用戶接口模塊介于用戶接口與命令控制模塊中間,實(shí)現(xiàn)數(shù)據(jù)處理、地址處理和空閑指示處理;用戶接口模塊與用戶接口間的信號包括讀寫數(shù)據(jù)、讀寫地址、讀寫使能、讀寫長度、空閑指示、讀寫響應(yīng)、讀有效指示和時鐘。用戶接口模塊根據(jù)空閑指示和自身需求來決定是否進(jìn)行數(shù)據(jù)讀寫。
所述命令控制模塊的作用包括:完成初始化處理、自動刷新處理、控制器時序控制和命令數(shù)據(jù)收發(fā)處理;
所述命令控制模塊與用戶接口模塊間信號包括讀寫使能、讀寫地址、讀寫數(shù)據(jù)、空閑指示和讀有效指示;
所述命令控制模塊與自動刷新模塊間信號包括自動刷新請求、自動刷新響應(yīng);
所述命令控制模塊與存儲器接口間接口信號包括地址、數(shù)據(jù)、控制;上電后,命令控制模塊首先進(jìn)行初始化等待,然后對SDR SDRAM進(jìn)行初始化,完成后進(jìn)入空閑狀態(tài),根據(jù)自動刷新請求或讀寫請求進(jìn)行工作。
所述初始化處理用于進(jìn)行初始化等待,并初始化SDR SDRAM控制器;
所述自動刷新處理用于SDR SDRAM的刷新控制,保證數(shù)據(jù)存儲的有效性;
所述控制器時序控制用于產(chǎn)生SDR SDRAM控制器的初始化、刷新、讀寫操作的工作時序;
所述命令數(shù)據(jù)收發(fā)處理用于產(chǎn)生發(fā)送到SDR SDRAM的各種控制和讀寫命令。
所述CLKDIV模塊為FPGA芯片內(nèi)部資源,為OSER/IDES接口模塊提供數(shù)據(jù)時鐘:由CLKDIV模塊產(chǎn)生2分頻得到控制器工作時鐘,為自動刷新模塊、用戶接口模塊和命令控制模塊提供時鐘信號。
所述OSER/IDES接口模塊包括OSER接口模塊和IDES接口模塊;所述OSER/IDES接口模塊的鏈路時鐘來自CLKDIV時鐘,數(shù)據(jù)時鐘來自CLKDIV模塊的分頻時鐘。
優(yōu)選的,所述OSER/IDES接口模塊的速率比為1:4。
一種低功耗、高數(shù)據(jù)吞吐量的SDR SDRAM控制器的工作方法,包括初始化、自動刷新、數(shù)據(jù)地址處理、數(shù)據(jù)讀寫操作和預(yù)充電處理。
根據(jù)本發(fā)明優(yōu)選的,一種低功耗、高數(shù)據(jù)吞吐量的SDR SDRAM控制器的工作方法,具體步驟包括:
(1)命令控制模塊首先進(jìn)行初始化等待,待達(dá)到預(yù)設(shè)等待時間后,進(jìn)入步驟(2);
(2)然后命令控制模塊對SDR SDRAM進(jìn)行初始化;
(3)判斷初始化SDR SDRAM控制器是否完成,如果完成,進(jìn)入步驟(4),否則,返回步驟(2);
(4)SDR SDRAM控制器置于空閑狀態(tài);
(5)命令控制模塊判斷所述自動刷新模塊是否發(fā)出自動刷新請求,如果是,所述命令控制模塊開始對SDR SDRAM執(zhí)行自動刷新操作,刷新完成后返回步驟(4);否則,進(jìn)入步驟(6);
(6)用戶接口模塊判斷用戶接口是否有讀寫請求,如果有,用戶接口模塊對收到的數(shù)據(jù)、地址分別進(jìn)行緩存處理、地址映射,然后向命令控制模塊發(fā)送讀寫請求,進(jìn)入步驟(7);如果沒有,返回步驟(4);
(7)命令控制模塊根據(jù)用戶接口模塊的讀寫請求向SDR SDRAM發(fā)送激活、讀寫指令,并通過OSER/IDES接口模塊完成并串轉(zhuǎn)換后發(fā)給SDR SDRAM,進(jìn)入步驟(8);
(8)命令控制模塊根據(jù)用戶接口模塊發(fā)送來的數(shù)據(jù)長度進(jìn)行讀寫,同時讀寫數(shù)據(jù)通過OSER/IDES接口模塊完成并串/串并轉(zhuǎn)換;
(9)命令控制模塊判斷讀寫是否結(jié)束,如果是,進(jìn)入步驟(10);否則,返回步驟(9);
(10)命令控制模塊對SDR SDRAM進(jìn)行預(yù)充電,完成后進(jìn)入步驟(4)。
本發(fā)明的優(yōu)點(diǎn)在于:
本發(fā)明所述一種低功耗、高數(shù)據(jù)吞吐量的SDR SDRAM控制器及其工作方法,具有電路實(shí)現(xiàn)靈活、可移植性好等特點(diǎn);本發(fā)明利用了FPGA芯片I/O邏輯的速率專換PHY(OSER/IDES),通過增加數(shù)據(jù)位寬的辦法將I/O速率進(jìn)一步提高,而控制器工作時鐘僅為I/O時鐘速率的一半,既增加了讀寫數(shù)據(jù)吞吐量,又降低了器件功耗和成本,提升了消費(fèi)電子等領(lǐng)域產(chǎn)品的競爭力。
基于目前SDR SDRAM控制器的吞吐量、功耗和成本問題,通過FPGA芯片內(nèi)部豐富的邏輯、PLL和OSER/IDES資源實(shí)現(xiàn)一種低功耗、高數(shù)據(jù)吞吐量的SDRSDRAM控制器電路,實(shí)現(xiàn)了既提高讀寫數(shù)據(jù)吞吐量,又降低器件功耗和成本的目的。
本發(fā)明充分利用FPGA芯片資源豐富、電路實(shí)現(xiàn)靈活和代碼好移植等特點(diǎn),通過FPGA芯片內(nèi)部豐富的邏輯、PLL和OSER/IDES資源實(shí)現(xiàn)低功耗高數(shù)據(jù)吞吐量SDR SDRAM控制器。
附圖說明
圖1是本發(fā)明所述控制器的電路模塊連接示意圖;
圖2是本發(fā)明所述方法的流程圖。
具體實(shí)施方式
下面結(jié)合實(shí)施例和說明書附圖對本發(fā)明做詳細(xì)的說明,但不限于此。
如圖1、2所示。
實(shí)施例1、
一種低功耗、高數(shù)據(jù)吞吐量的SDR SDRAM控制器,包括PLL、自動刷新模塊、用戶接口模塊、命令控制模塊和CLKDIV模塊、OSER/IDES接口模塊。
所述PLL為FPGA芯片內(nèi)部自帶的鎖相環(huán)電路,通過PLL產(chǎn)生SDR SDRAM控制器所需的時鐘信號,包括CLKDIV時鐘和SDR SDRAM時鐘;所述CLKDIV時鐘為所述CLKDIV模塊提供時鐘源,與SDR SDRAM時鐘的頻率值相等;SDR SDRAM時鐘為SDR SDRAM提供工作時鐘。
所述自動刷新模塊為命令控制模塊提供自動刷新請求信號,用于SDR SDRAM刷新控制。
所述用戶接口模塊介于用戶接口與命令控制模塊中間,實(shí)現(xiàn)數(shù)據(jù)處理、地址處理和空閑指示處理;用戶接口模塊與用戶接口間的信號包括讀寫數(shù)據(jù)、讀寫地址、讀寫使能、讀寫長度、空閑指示、讀寫響應(yīng)、讀有效指示和時鐘。
所述命令控制模塊的作用包括:完成初始化處理、自動刷新處理、控制器時序控制和命令數(shù)據(jù)收發(fā)處理;
所述命令控制模塊與用戶接口模塊間信號包括讀寫使能、讀寫地址、讀寫數(shù)據(jù)、空閑指示和讀有效指示;
所述命令控制模塊與自動刷新模塊間信號包括自動刷新請求、自動刷新響應(yīng);
所述命令控制模塊與存儲器接口間接口信號包括地址、數(shù)據(jù)、控制;上電后,命令控制模塊首先進(jìn)行初始化等待,然后對SDR SDRAM進(jìn)行初始化,完成后進(jìn)入空閑狀態(tài),根據(jù)自動刷新請求或讀寫請求進(jìn)行工作。
所述初始化處理用于進(jìn)行初始化等待,并初始化SDR SDRAM控制器;
所述自動刷新處理用于SDR SDRAM的刷新控制,保證數(shù)據(jù)存儲的有效性;
所述控制器時序控制用于產(chǎn)生SDR SDRAM控制器的初始化、刷新、讀寫操作的工作時序;
所述命令數(shù)據(jù)收發(fā)處理用于產(chǎn)生發(fā)送到SDR SDRAM的各種控制和讀寫命令。
所述CLKDIV模塊為FPGA芯片內(nèi)部資源,為OSER/IDES接口模塊提供數(shù)據(jù)時鐘:由CLKDIV模塊產(chǎn)生2分頻得到控制器工作時鐘,為自動刷新模塊、用戶接口模塊和命令控制模塊提供時鐘信號。
所述OSER/IDES接口模塊包括OSER接口模塊和IDES接口模塊;所述OSER/IDES接口模塊的鏈路時鐘來自CLKDIV時鐘,數(shù)據(jù)時鐘來自CLKDIV模塊的分頻時鐘。
所述OSER/IDES接口模塊的速率比為1:4。
寫SDR SDRAM時,要通過OSER接口模塊對地址、控制和寫數(shù)據(jù)做并串轉(zhuǎn)換,把命令控制模塊發(fā)來的兩路并行地址、控制和寫數(shù)據(jù)進(jìn)行串行處理;一路信號送到OSER接口模塊的D0和D1端口,另一路送到OSER接口模塊的D2和D3端口。
讀SDR SDRAM時,要通過OSER接口模塊對地址、控制做并串轉(zhuǎn)換,把命令控制模塊發(fā)來的兩路并行地址、控制進(jìn)行串行處理;一路信號送到OSER接口模塊的D0和D1端口,另一路送到OSER接口模塊的D2和D3端口。同時對從SDRSDRAM來的串行讀數(shù)據(jù)通過IDES接口模塊進(jìn)行串并轉(zhuǎn)換,做數(shù)據(jù)對齊處理后,把從IDES接口模塊輸出端口Q0和Q2產(chǎn)生兩路數(shù)據(jù)送到命令控制模塊。
實(shí)施例2、
如實(shí)施例1所述的一種低功耗、高數(shù)據(jù)吞吐量的SDR SDRAM控制器的工作方法,具體步驟包括:
(1)命令控制模塊首先進(jìn)行初始化等待,待達(dá)到預(yù)設(shè)等待時間后,進(jìn)入步驟(2);
(2)然后命令控制模塊對SDR SDRAM進(jìn)行初始化;
(3)判斷初始化SDR SDRAM控制器是否完成,如果完成,進(jìn)入步驟(4),否則,返回步驟(2);
(4)SDR SDRAM控制器置于空閑狀態(tài);
(5)命令控制模塊判斷所述自動刷新模塊是否發(fā)出自動刷新請求,如果是,所述命令控制模塊開始對SDR SDRAM執(zhí)行自動刷新操作,刷新完成后返回步驟(4);否則,進(jìn)入步驟(6);
(6)用戶接口模塊判斷用戶接口是否有讀寫請求,如果有,用戶接口模塊對收到的數(shù)據(jù)、地址分別進(jìn)行緩存處理、地址映射,然后向命令控制模塊發(fā)送讀寫請求,進(jìn)入步驟(7);如果沒有,返回步驟(4);
(7)命令控制模塊根據(jù)用戶接口模塊的讀寫請求向SDR SDRAM發(fā)送激活、讀寫指令,并通過OSER/IDES接口模塊完成并串轉(zhuǎn)換后發(fā)給SDR SDRAM,進(jìn)入步驟(8);
(8)命令控制模塊根據(jù)用戶接口模塊發(fā)送來的數(shù)據(jù)長度進(jìn)行讀寫,同時讀寫數(shù)據(jù)通過OSER/IDES接口模塊完成并串/串并轉(zhuǎn)換;
(9)命令控制模塊判斷讀寫是否結(jié)束,如果是,進(jìn)入步驟(10);否則,返回步驟(9);
(10)命令控制模塊對SDR SDRAM進(jìn)行預(yù)充電,完成后進(jìn)入步驟(4)。