国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

SDRAM控制器設(shè)計(jì)

2017-12-15 10:07:27惠為君沈兆軍
電腦知識(shí)與技術(shù) 2017年32期
關(guān)鍵詞:控制器

惠為君+沈兆軍

摘要:介紹了SDRAM的結(jié)構(gòu)、時(shí)序和有關(guān)概念。在該基礎(chǔ)上,基于自頂向下設(shè)計(jì)思想,把控制器模塊劃分為兩個(gè)部分:內(nèi)部命令產(chǎn)生、命令輸出。基于verilog實(shí)現(xiàn)這兩部分模塊電路,并完成頂層實(shí)體。測(cè)試表明,該控制器是有效的。

關(guān)鍵詞:Verilog;SDRAM;控制器

中圖分類號(hào):TN911 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2017)32-0236-03

VGA CONTROLER in Verilog

HUI Wei-jun

(Yancheng Institute of Technology, Yancheng 224051, China)

Abstract: The structure, timing and related concepts of SDRAM are introduced in this paper. After that, Based on the top-down design idea, the controller module is divided into two parts: the internal command generation、command output. The two module circuits as well as top layer entity are realized Based on verilog, The test shows that the controller is worked.

Key words: Verilog; SDRAM; controller

SDRAM即同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器,其容量大,存儲(chǔ)速度快。在設(shè)計(jì)一種視頻圖像系統(tǒng)時(shí),需要存儲(chǔ)的數(shù)據(jù)量大,采用SDRAM作為存儲(chǔ)器件。為此,需要設(shè)計(jì)SDRAM控制器。

1 SDRAM結(jié)構(gòu)及引腳

本系統(tǒng)采用hynix的SDRAM器件,型號(hào)為HY57V641620。

SDRAM為陣列結(jié)構(gòu),如同一張二維表格,如圖1所示。通過行列地址,存儲(chǔ)單元可以隨機(jī)訪問。存儲(chǔ)器行數(shù)為 2^12 = 4096,列數(shù)為 2^8 = 512,段數(shù)為 2 ^ 2 = 4。 其容量為 4096*512*4 = 8Mbit。

其主要引腳名稱及功能如下:

CKE:時(shí)鐘使能;CS_N: 片選;

WE_N:寫使能,低電平為寫,高電平為讀;

RAS_N: 行選通;CAS_N: 列選通;

BA[1:0] : 段選擇;

A[11:0] : 行、列復(fù)用地址。行地址12位,列地址取低8位。

D[15:0] 雙向數(shù)據(jù)端口。

2 SDRAM時(shí)序

SDRAM的操作時(shí)序分為三部分:初始化、寫、讀。控制器設(shè)計(jì)就是基于這三部分時(shí)序完成的。初始化完成之后,才可以實(shí)現(xiàn)對(duì)存儲(chǔ)器的讀寫操作。

初始化時(shí)序分為4個(gè)部分,如圖2所示。

1) 200us的輸入延時(shí)。用于穩(wěn)定電路各部分的狀態(tài)。

2) 所有段預(yù)充電。預(yù)充電是指關(guān)閉現(xiàn)有行,激活另一行。A10置位,對(duì)所有L_BANK預(yù)充電,A10位,對(duì)固定L_BANK預(yù)充電。

3) 8個(gè)刷新周期。SDRAM的數(shù)據(jù)保存在電容中。SDRAM的特征就是要定時(shí)刷新,給電容充電,來保證數(shù)據(jù)不丟失。電容中數(shù)據(jù)的有效保存期時(shí)間為64ms,器件存儲(chǔ)單元共有4096行,每行刷新時(shí)間為64ms/4096 = 15.625us。

4) 模式寄存器設(shè)置。通過對(duì)地址總線的賦值來進(jìn)行模式配置,用來控制器件的讀寫方式。

讀寫模式等具體內(nèi)容見附錄[1]。

本系統(tǒng)配置寄存器值為:000_011_0_111,即設(shè)置潛伏長(zhǎng)度為2個(gè)時(shí)鐘,頁模式突發(fā)讀寫,順序傳輸方式。

3 器件讀寫

模式寄存器配置完成之后,器件就可以正常讀寫了。

由于行列地址復(fù)用,不能同時(shí)傳送行列地址。讀寫時(shí)序如圖4所示,讀數(shù)據(jù)的時(shí)候,先發(fā)送行地址,使行有效。經(jīng)過時(shí)間Trcd以后,再發(fā)送列地址和讀寫有效信號(hào)。Trcd稱為行有效時(shí)間。由于列地址只有8位,所以[A11..A8]可以賦值為4b0000或4b0100。當(dāng)A10取值1時(shí),器件自動(dòng)預(yù)充電。

在發(fā)送列地址讀數(shù)據(jù)的時(shí)候,控制信號(hào)CKE、CS_N、WE_N要同時(shí)有效。讀命令有效后,數(shù)據(jù)要經(jīng)過放大,才可以輸出,這段時(shí)間稱為Tcl。Tcl一般為2~3個(gè)周期。

寫數(shù)據(jù)的時(shí)候,行列地址時(shí)序和讀數(shù)據(jù)相同。寫數(shù)據(jù)沒有潛伏時(shí)間,但是數(shù)據(jù)寫入器件還是需要時(shí)間,稱為寫回延時(shí)Twr。在Twr時(shí)間內(nèi),不可以預(yù)充電。

4 控制器編程實(shí)現(xiàn)

4.1 內(nèi)部命令產(chǎn)生模塊

該模塊產(chǎn)生產(chǎn)生初始化及刷新、讀寫等命令?;诔跏蓟瘯r(shí)序,在200us穩(wěn)定期過戶,依次生成預(yù)充電、8個(gè)刷新周期、模式寄存器設(shè)置命令。

parameter INIT_PER = 16'd25000;

reg [15:0] init_timer;

if(init_timer < (INIT_PER+201))

init_timer <= init_timer + 16'd1;

初始化常量取值25000,時(shí)鐘125Mhz,

if (init_timer < INIT_PER)

INIT_REQ <=1;

else if(init_timer == (INIT_PER+20)) PRECHARGE <=1;

else if( (init_timer == (INIT_PER+40)) ||endprint

……

(init_timer == (INIT_PER+180)) )

REFRESH <= 1;

定義init_timer為16位。定義INIT_PER大小為25000。滿足輸入穩(wěn)定期:

1/125 us * 25000 = 200us 。

然后是20個(gè)時(shí)鐘的預(yù)充電,及8個(gè)刷新周期,寄存器配置。

parameter REF_PER = 16'd1953;

reg [15:0] timer;

if (REF_ACK == 1)

begin timer <= REF_PER;

REF_REQ <= 0; end

else if (INIT_REQ == 1)

begin

timer <= REF_PER + 16'd200;

REF_REQ <=0; end

else timer <= timer - 1'b1;

if(timer == 0) REF_REQ <= 1;

定義常量 REF_PER大小為1953。滿足每行刷新時(shí)間間隔:

1/125us * 1953 = 15us

即過15us之后,刷新行,總刷新周期為64ms。如果INIT_REQ有效,需要多加200個(gè)時(shí)鐘,等待初始化完成之后,再生成刷新請(qǐng)求。

4.2 命令執(zhí)行模塊

該模塊把讀、寫、預(yù)充電、刷新等命令翻譯成正確的控制命令,連接到SDRAM的控制引腳:CKE、CS_N、RAS_N 、WE_N等,使SDRAM執(zhí)行的正確的動(dòng)作。

定義內(nèi)部命令變量和向量:

reg do_reada,do_writea,do_refresh;

reg do_precharge,do_load_mode,do_initial;

reg command_done,do_rw, rw_flag;

reg [7:0] command_delay;

reg [1:0] rw_shift;

其中,command_delay及command_d用于內(nèi)部延時(shí)。

模塊的功能描述內(nèi)容主要分為三個(gè)部分,如圖5所示。

4.3 內(nèi)部命令產(chǎn)生

部分核心程序如下:

if( INIT_REQ == 1 ) do_initial <= 1;

else

begin

if ((PRECHARGE == 1) & (command_done == 0)

do_precharge <= 1;

if ((REF_REQ == 1 | REFRESH == 1) &(command_done == 0)

do_refresh <= 1;

……

if ((READA == 1) & (command_done == 0) begin do_reada <= 1;ex_read <= 1; end

……

end

當(dāng)輸入的初始化命令、與充電、刷新、讀寫命令有效且命令完成標(biāo)記為零時(shí)候,對(duì)應(yīng)的內(nèi)部命令置位。

4.4 延時(shí)

為保證命令的有效執(zhí)行,在生成一個(gè)內(nèi)部命令的時(shí)候,有必要執(zhí)行一段延時(shí)。為保證延時(shí)的精確性,延時(shí)電路用移位寄存器實(shí)現(xiàn)。

if ((do_refresh == 1) | (do_reada == 1) | (do_writea == 1) | (do_precharge == 1)

| (do_load_mode == 1))

begin

command_delay <= 8'b11111111;

command_done <= 1;

else

begin

command_done<=command_delay[0];

command_delay <= (command_delay>>1);

end

移位寄存器并入串出,延時(shí)8個(gè)時(shí)鐘之后,command_done復(fù)位,可以接受下一個(gè)命令。

4.5 SDRAM控制信號(hào)輸出

SDRAM動(dòng)作與輸入控制信號(hào)關(guān)系如表1所示。

其中,BTR是突發(fā)操作停止動(dòng)作。

if (do_initial ==1) begin

RAS_N <= 1;

CAS_N <= 1;

WE_N <= 1; end

……

else if (do_reada == 1 | do_writea == 1) begin

RAS_N <= 0;

CAS_N <= 1;

WE_N <= 1; end

else if (do_rw == 1) begin

RAS_N <= 1;

CAS_N <= 0;

WE_N <= rw_flag; end

……

當(dāng)內(nèi)部讀寫命令有效時(shí)候,首先行選通,也就是激活操作,然后在延時(shí)Trcd之后,標(biāo)記do_rw有效,執(zhí)行讀寫操作。

5 頂層實(shí)體

頂層實(shí)體電路如圖6所示。系統(tǒng)設(shè)置了頁模式控制命令pm_stop,如果pm_stop有效,則非頁模式下,需要額外延時(shí)。

在系統(tǒng)中,此控制器配合FIFO可以完成數(shù)據(jù)的存取工作。

參考文獻(xiàn):

[1] 李麗斯, 楊立杰, 殷曄, 等. 劉康麗基于FPGA的頁快速命中的SDRAM控制器的設(shè)計(jì)[J]. 2015(13).

[2] 郭柳柳, 甄國涌, 劉東海. 基于FPGA高速圖像數(shù)據(jù)的存儲(chǔ)及顯示設(shè)計(jì)[J]. 電子技術(shù)應(yīng)用, 2014(11).

[3] 鄧凱, 王永明. 一種簡(jiǎn)單的SDRAM控制器實(shí)現(xiàn)方法[J]. 國外電子測(cè)量技術(shù), 2011(09).

[4] 魯玲. 多時(shí)鐘域數(shù)據(jù)傳遞的FPGA實(shí)現(xiàn)[J]. 現(xiàn)代電子技術(shù), 2007(21).

[5] 楊會(huì)建, 田成軍, 楊志娟, 等. 基于FPGA的SDRAM乒乓讀寫操作設(shè)計(jì)[J]. 長(zhǎng)春理工大學(xué)學(xué)報(bào), 2015(2).

[6] 李麗斯, 楊立杰, 殷曄, 等. 基于SDRAM大容量緩存FIFO控制器的設(shè)計(jì)與實(shí)現(xiàn)[J]. 2015(13).endprint

猜你喜歡
控制器
工商業(yè)IC卡控制器改造為物聯(lián)網(wǎng)控制器實(shí)踐
現(xiàn)代有軌電車軌旁控制器的研究
基于DSP的復(fù)合跟蹤控制器的設(shè)計(jì)
基于FPGA的異步通信控制器設(shè)計(jì)與實(shí)現(xiàn)
基于自抗擾控制的VSC-HVDC控制器設(shè)計(jì)
基于FPGA的可控硅移相觸發(fā)控制器的實(shí)現(xiàn)
模糊PID控制器設(shè)計(jì)及MATLAB仿真
MOXA RTU控制器ioPAC 5542系列
倍福 CX8091嵌入式控制器
紅獅控制 PID控制器PXU系列
高陵县| 大新县| 错那县| 原平市| 梅州市| 兴仁县| 华宁县| 安岳县| 双牌县| 崇文区| 张家港市| 辽阳县| 苏尼特左旗| 元阳县| 贵港市| 甘谷县| 蕲春县| 深水埗区| 武穴市| 莱芜市| 新化县| 淮南市| 周宁县| 胶州市| 崇义县| 霍州市| 迭部县| 怀宁县| 裕民县| 日喀则市| 五大连池市| 新巴尔虎左旗| 临城县| 崇左市| 云南省| 盘锦市| 潍坊市| 休宁县| 吕梁市| 涟水县| 定襄县|