Sdram控制方法及其系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及SDRAM領(lǐng)域,特別是一種SDRAM控制方法及其系統(tǒng)。
【背景技術(shù)】
[0002] SDRAM (Synchronous Dynamic Random Access Memory,同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器) 存儲(chǔ)空間由多個(gè)內(nèi)存庫(kù)(BANK)組成,一般內(nèi)存庫(kù)的數(shù)量為2、4、8個(gè)不等。
[0003] 目前的SDRAM控制方法都是對(duì)這些內(nèi)存庫(kù)進(jìn)行依次順序訪問(wèn),以寫(xiě)數(shù)據(jù)為例,依 次訪問(wèn)的情況就是,當(dāng)寫(xiě)滿第一塊內(nèi)存庫(kù)后,才會(huì)將地址跳變到第二塊內(nèi)存庫(kù)繼續(xù)進(jìn)行寫(xiě) 操作。而SDRAM自身的特性決定需要每64ms實(shí)現(xiàn)自身刷新一次,自刷新過(guò)程中禁止對(duì)SDRAM 進(jìn)行訪問(wèn),所以依次訪問(wèn)的控制方法,即使數(shù)據(jù)都在第一塊內(nèi)存庫(kù),也需要等待其它內(nèi)存庫(kù) 的刷新操作。
[0004] 而且,目前SDRAM的多次訪問(wèn)控制,無(wú)論是訪問(wèn)指令,還是地址數(shù)據(jù),都是按順序 依次進(jìn)行串行控制的。例如,連續(xù)兩次寫(xiě)入8位數(shù)據(jù),按如下順序進(jìn)行:發(fā)送寫(xiě)命令、第一次 發(fā)送8位數(shù)據(jù)起始地址、根據(jù)指定地址激活相應(yīng)行、寫(xiě)入數(shù)據(jù)、關(guān)閉行等待下一次操作、發(fā) 送寫(xiě)命令、第二次發(fā)送8位數(shù)據(jù)起始地址、根據(jù)指定地址激活相應(yīng)行、寫(xiě)入數(shù)據(jù)、關(guān)閉行等 待下一次操作??梢?jiàn),目前SDRAM多次訪問(wèn)的控制方法還存在較多的間隔時(shí)間。
[0005] 因此,目前SDRAM控制方法的消耗時(shí)間,很大程度上消耗于刷新等待時(shí)間和多次 訪問(wèn)之間的指令間隔時(shí)間,其效率非常低下。
【發(fā)明內(nèi)容】
[0006] 針對(duì)上述現(xiàn)有技術(shù)中存在的SDRAM控制效率低下的問(wèn)題,本發(fā)明的目的在于提供 一種SDRAM控制方法及其系統(tǒng),能夠提高SDRAM的控制效率。
[0007] -種SDRAM控制方法,包括:
[0008] 接收對(duì)SDRAM進(jìn)行數(shù)據(jù)讀寫(xiě)的各個(gè)指令,其中,所述SDRAM包含至少兩個(gè)預(yù)設(shè)的內(nèi) 存庫(kù),用于依次循環(huán)存儲(chǔ)各個(gè)指令對(duì)應(yīng)的數(shù)據(jù);
[0009] 根據(jù)各個(gè)指令執(zhí)行其對(duì)應(yīng)數(shù)據(jù)的讀寫(xiě)操作,其中,在當(dāng)前內(nèi)存庫(kù)進(jìn)行數(shù)據(jù)讀寫(xiě)操 作完成之前,進(jìn)行下一個(gè)內(nèi)存庫(kù)數(shù)據(jù)的激活操作,激活操作之后執(zhí)行下一個(gè)內(nèi)存庫(kù)數(shù)據(jù)讀 寫(xiě)。
[0010] 一種SDRAM控制系統(tǒng),包括:
[0011] 指令接收模塊,用于接收對(duì)SDRAM進(jìn)行數(shù)據(jù)讀寫(xiě)的各個(gè)指令,其中,所述SDRAM包 含至少兩個(gè)預(yù)設(shè)的內(nèi)存庫(kù),用于依次循環(huán)存儲(chǔ)各個(gè)指令對(duì)應(yīng)的數(shù)據(jù);
[0012] 數(shù)據(jù)執(zhí)行模塊,用于根據(jù)各個(gè)指令執(zhí)行其對(duì)應(yīng)數(shù)據(jù)的讀寫(xiě)操作,其中,在當(dāng)前內(nèi)存 庫(kù)進(jìn)行數(shù)據(jù)讀寫(xiě)操作完成之前,進(jìn)行下一個(gè)內(nèi)存庫(kù)數(shù)據(jù)的激活操作,激活操作之后執(zhí)行下 一個(gè)內(nèi)存庫(kù)數(shù)據(jù)讀寫(xiě)。
[0013] 本發(fā)明的SDRAM控制方法及其系統(tǒng),通過(guò)接收對(duì)SDRAM進(jìn)行數(shù)據(jù)讀寫(xiě)的各個(gè)指令, 至少兩個(gè)預(yù)設(shè)的內(nèi)存庫(kù)依次循環(huán)存儲(chǔ)各個(gè)指令對(duì)應(yīng)的數(shù)據(jù),并根據(jù)各個(gè)指令執(zhí)行其對(duì)應(yīng)數(shù) 據(jù)的讀寫(xiě)操作,其中,在當(dāng)前內(nèi)存庫(kù)進(jìn)行數(shù)據(jù)讀寫(xiě)操作完成之前,進(jìn)行下一個(gè)內(nèi)存庫(kù)數(shù)據(jù)的 激活操作,激活操作之后執(zhí)行下一個(gè)內(nèi)存庫(kù)數(shù)據(jù)讀寫(xiě),從而減少各個(gè)內(nèi)存庫(kù)之間訪問(wèn)的間 隔時(shí)間,提高SDRAM的控制效率。
【附圖說(shuō)明】
[0014] 圖1為一個(gè)實(shí)施例的SDRAM控制方法的流程示意圖;
[0015] 圖2為一個(gè)實(shí)施例的SDRAM初始化的流程示意圖;
[0016] 圖3為一個(gè)實(shí)施例的SDRAM控制系統(tǒng)的結(jié)構(gòu)示意圖;
[0017] 圖4為一個(gè)實(shí)施例的SDRAM控制系統(tǒng)接口模塊的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0018] 為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明作進(jìn) 一步地詳細(xì)描述。
[0019] 請(qǐng)參閱圖1中一個(gè)實(shí)施例的SDRAM控制方法的流程示意圖。
[0020] 一種SDRAM控制方法,包括:
[0021] S102,接收對(duì)SDRAM進(jìn)行數(shù)據(jù)讀寫(xiě)的各個(gè)指令。
[0022] 本步驟中,通過(guò)接收對(duì)SDRAM進(jìn)行數(shù)據(jù)讀寫(xiě)的各個(gè)指令,提高指令的接收效率。
[0023] S104,至少兩個(gè)預(yù)設(shè)的內(nèi)存庫(kù)依次循環(huán)存儲(chǔ)各個(gè)指令對(duì)應(yīng)的數(shù)據(jù)。
[0024] SDRAM各個(gè)內(nèi)存庫(kù)存儲(chǔ)數(shù)據(jù),傳統(tǒng)的方式是:第一個(gè)內(nèi)存庫(kù)先存儲(chǔ)數(shù)據(jù),當(dāng)?shù)谝粋€(gè) 內(nèi)存庫(kù)存滿空間后,第二個(gè)內(nèi)存庫(kù)緊接著存儲(chǔ)剩余的數(shù)據(jù),如此類(lèi)推,直至存儲(chǔ)所有數(shù)據(jù)。 由于SDRAM自身的特點(diǎn),需要不斷地在預(yù)設(shè)時(shí)間內(nèi)對(duì)所有內(nèi)存庫(kù)進(jìn)行預(yù)充電,預(yù)充電后進(jìn) 行刷新操作,刷新完成后才能保證內(nèi)存庫(kù)內(nèi)的數(shù)據(jù)不丟失,傳統(tǒng)的內(nèi)存庫(kù)存儲(chǔ)方式使得其 只能采用串行的方式對(duì)內(nèi)存庫(kù)進(jìn)行預(yù)充電,不能保證在所述預(yù)設(shè)時(shí)間內(nèi)能完成對(duì)所有內(nèi)存 庫(kù)的刷新操作,因此,需增加一個(gè)刷新模塊,通過(guò)刷新模塊自動(dòng)刷新所有內(nèi)存庫(kù),從而保存 數(shù)據(jù)。
[0025] 本步驟通過(guò)至少兩個(gè)預(yù)設(shè)的內(nèi)存庫(kù)依次循環(huán)存儲(chǔ)各個(gè)指令對(duì)應(yīng)的數(shù)據(jù),使得在后 續(xù)的數(shù)據(jù)讀寫(xiě)操作中,當(dāng)前的內(nèi)存庫(kù)執(zhí)行數(shù)據(jù)讀寫(xiě)操作時(shí),其他的內(nèi)存庫(kù)可以同時(shí)進(jìn)行預(yù) 充電操作,預(yù)充電操作完畢后進(jìn)而及時(shí)進(jìn)行刷新操作,因此,無(wú)需增加刷新模塊,亦能及時(shí) 在預(yù)設(shè)時(shí)間內(nèi)能完成對(duì)所有內(nèi)存庫(kù)的刷新操作,從而節(jié)省系統(tǒng)資源。
[0026] 進(jìn)一步地,所述依次循環(huán)存儲(chǔ)各個(gè)指令對(duì)應(yīng)的數(shù)據(jù),包括依次循環(huán)存儲(chǔ)各個(gè)指令 對(duì)應(yīng)的預(yù)設(shè)長(zhǎng)度的數(shù)據(jù),從而方便后續(xù)數(shù)據(jù)讀寫(xiě)操作的執(zhí)行。
[0027] 進(jìn)一步地,所述預(yù)設(shè)長(zhǎng)度的數(shù)據(jù)為32位,至少兩個(gè)所述內(nèi)存庫(kù)的數(shù)量為四個(gè)。
[0028] 內(nèi)存庫(kù)每次存儲(chǔ)32位長(zhǎng)度的數(shù)據(jù),使得SDRAM的每次讀寫(xiě)操作均要存取32位的 整數(shù)倍數(shù)據(jù),從而使得數(shù)據(jù)尋址簡(jiǎn)單,減少其占用資源;而四個(gè)數(shù)量的內(nèi)存庫(kù)在滿足緩存數(shù) 據(jù)存儲(chǔ)需求的同時(shí),較大限度地降低硬件成本。
[0029] 進(jìn)一步地,所述依次循環(huán)存儲(chǔ)各個(gè)指令對(duì)應(yīng)的數(shù)據(jù),還包括將各個(gè)指令對(duì)應(yīng)的數(shù) 據(jù)進(jìn)行數(shù)據(jù)包封裝,所述數(shù)據(jù)包包括采用四位獨(dú)熱編碼的包頭信息以及采用四位對(duì)應(yīng)的獨(dú) 熱編碼的包尾信息。
[0030] 對(duì)數(shù)據(jù)進(jìn)行數(shù)據(jù)包封裝,使得數(shù)據(jù)在傳輸過(guò)程中采用數(shù)據(jù)包的形式,提高數(shù)據(jù)傳 輸?shù)姆€(wěn)定性;所述數(shù)據(jù)包包括包頭信息以及包尾信息,保證數(shù)據(jù)包傳輸?shù)倪B續(xù)性;所述包 頭信息以及包尾信息分別采用四位對(duì)應(yīng)的獨(dú)熱編碼,例如,包頭信息為四位連續(xù)的二進(jìn)制 編碼,依次為:1〇〇〇、1100、1110、1111,包尾信息同樣為四位連續(xù)的對(duì)應(yīng)二進(jìn)制編碼,依次 為:0111、0011、0001、0000,數(shù)據(jù)包在傳輸過(guò)程中保持高電平,傳輸結(jié)束時(shí)為低電平,只需要 根據(jù)數(shù)據(jù)包二進(jìn)制編碼中的其中一位編碼,即可判斷數(shù)據(jù)的讀寫(xiě)狀態(tài),從而提高數(shù)據(jù)的抗 干擾性能。
[0031] S106,根據(jù)各個(gè)指令執(zhí)行其對(duì)應(yīng)數(shù)據(jù)的讀寫(xiě)操作,其中,在當(dāng)前內(nèi)存庫(kù)進(jìn)行數(shù)據(jù)讀 寫(xiě)操作完成之前,進(jìn)行下一個(gè)內(nèi)存庫(kù)數(shù)據(jù)的激活操作,激活操作之后執(zhí)行下一個(gè)內(nèi)存庫(kù)數(shù) 據(jù)讀寫(xiě)。
[0032] 通過(guò)該步驟,在當(dāng)前內(nèi)存庫(kù)執(zhí)行數(shù)據(jù)讀寫(xiě)操作期間,下一個(gè)內(nèi)存庫(kù)即可提前進(jìn)行 激活操作,從而減少各個(gè)內(nèi)存庫(kù)由于進(jìn)行激活操作而消耗的時(shí)間,進(jìn)一步提高數(shù)據(jù)的讀寫(xiě) 效率。
[0033] 進(jìn)一步地,所述根據(jù)各個(gè)指令執(zhí)行其對(duì)應(yīng)數(shù)據(jù)的讀寫(xiě)操作,包括將各個(gè)指令分別 賦予不同的優(yōu)先等級(jí),根據(jù)所述優(yōu)先等級(jí)對(duì)各個(gè)指令進(jìn)行排序;根據(jù)排序結(jié)果執(zhí)行各個(gè)指 令對(duì)應(yīng)數(shù)據(jù)的讀寫(xiě)操作。
[0034] 其中,所述排序包括對(duì)數(shù)據(jù)連續(xù)的指令進(jìn)行連續(xù)排序。通過(guò)對(duì)各個(gè)指令進(jìn)行優(yōu)先 等級(jí)排序,一方面可以對(duì)連續(xù)的數(shù)據(jù)順序排列,實(shí)現(xiàn)數(shù)據(jù)的連續(xù)讀寫(xiě);另一方面對(duì)于不連續(xù) 的數(shù)據(jù),可以控制其執(zhí)行讀寫(xiě)操作的順序,提高數(shù)據(jù)執(zhí)行的靈活性,增強(qiáng)用戶體驗(yàn)。
[0035] 進(jìn)一步地,所述根據(jù)排序結(jié)果執(zhí)行各個(gè)指令對(duì)應(yīng)數(shù)據(jù)的讀寫(xiě)操作,包括在當(dāng)前內(nèi) 存庫(kù)進(jìn)行數(shù)據(jù)讀寫(xiě)操作完成之時(shí),完成下一個(gè)內(nèi)存庫(kù)數(shù)據(jù)的激活操作,從而保證正在執(zhí)行 讀寫(xiě)操作的數(shù)據(jù)的完整性。
[0036] 進(jìn)一步地,所述在當(dāng)前內(nèi)存庫(kù)進(jìn)行數(shù)據(jù)讀寫(xiě)操作完成之前,進(jìn)行下一個(gè)內(nèi)存庫(kù)數(shù) 據(jù)的激活操作,包括在當(dāng)前內(nèi)存庫(kù)進(jìn)行數(shù)據(jù)讀寫(xiě)操作完成之時(shí),完成下一個(gè)內(nèi)存庫(kù)數(shù)據(jù)的 激活操作,激活操作之后執(zhí)行下一個(gè)內(nèi)存庫(kù)數(shù)據(jù)讀寫(xiě)。如此類(lèi)推,從而最大限度地減少各個(gè) 內(nèi)存庫(kù)由于進(jìn)行激活操作而消耗的時(shí)間,進(jìn)一步提高數(shù)據(jù)的讀寫(xiě)效率。
[0037] 本實(shí)施例中,通過(guò)接收對(duì)SDRAM進(jìn)行數(shù)據(jù)讀寫(xiě)的各個(gè)指令,至少兩個(gè)預(yù)設(shè)的內(nèi)存 庫(kù)依次循環(huán)存儲(chǔ)各個(gè)指令對(duì)應(yīng)的數(shù)據(jù),并根據(jù)各個(gè)指令執(zhí)行其對(duì)應(yīng)數(shù)據(jù)的讀寫(xiě)操作,其中, 在當(dāng)前內(nèi)存庫(kù)進(jìn)行數(shù)據(jù)讀寫(xiě)操作完成之前,進(jìn)行下一個(gè)內(nèi)存庫(kù)數(shù)據(jù)的激活操作,激活操作 之后執(zhí)行下一個(gè)內(nèi)存庫(kù)數(shù)據(jù)讀寫(xiě),從而減少各個(gè)內(nèi)存庫(kù)之間訪問(wèn)的間隔時(shí)間,提高SDRAM 的控制效率。
[0038] 請(qǐng)參閱圖2中一個(gè)實(shí)施例的SDRAM初始化的流程示意圖。
[0039] 在其中一個(gè)實(shí)施例中,所述接收對(duì)SDRAM進(jìn)行數(shù)據(jù)讀寫(xiě)的各個(gè)指令,之前還包括:
[0040] S202,接收到充電延時(shí)指令,根據(jù)所述充電延時(shí)指令,在到達(dá)預(yù)設(shè)延時(shí)時(shí)間時(shí),對(duì) SDRAM的內(nèi)存庫(kù)進(jìn)行一次預(yù)充電。
[0041] 進(jìn)一步地,所述預(yù)設(shè)延時(shí)時(shí)間為100微秒。
[0042] S204,在所述預(yù)充電完成時(shí),對(duì)所述內(nèi)存庫(kù)進(jìn)行兩次刷新;
[0043] S206,在第二次刷新完成時(shí),對(duì)SDRAM進(jìn)行初始化設(shè)置。
[0044] 本實(shí)施例中,在所述預(yù)充電完成時(shí),對(duì)各個(gè)所述內(nèi)存庫(kù)進(jìn)行兩次刷新,以保證內(nèi)存 庫(kù)刷新的完整性,并保證SDRAM能夠正確地初始化;對(duì)SDRAM進(jìn)行初始化設(shè)置,進(jìn)而降低 SDRAM過(guò)程中產(chǎn)生未定義錯(cuò)誤的幾率,提高SDRAM的效率。
[0045] 請(qǐng)參閱圖3中一個(gè)實(shí)施例的SDRAM控制系統(tǒng)的結(jié)構(gòu)