📄 sdram_initialization.asm
字号:
/******************************************************************************
* Setup for the SDRAM Controller for 21161 EZ-KIT Lite *
* *
* Assumes SDRAM part# Micron MT48LC16M16A1-7SE *
* SDCLK=100MHz *
* tCK=8ns min @ CL=2 -> SDCL=1 [CAS Latency] *
* tRAS=50ns min -> SDTRAS=3 [active command delay] *
* tRP=20ns min -> SDTRP=2 [precharge delay] *
* tRCD=20 ns min -> SDTRCD=2 [CAS-to-RAS delay] *
* tREF=64ms/4K rows -> SDRDIV=(2(30MHz)-CL-tRP-4)64ms/4096=937cycles *
* *
* 3 SDRAMs by 16 bits wide total = 16Mbit x 48 *
* Mapped to MS0 addresses 0x00200000-0x002fffff *
* *
*******************************************************************************/
#include "def21161.h"
#define sdram_size 0xfffff
.SECTION/DM/NO_INIT segsdram;
//.VAR sdram[sdram_size];
.SECTION/PM pm_code;
.GLOBAL init_21161_SDRAM_controller;
//.GLOBAL SDRAM_memory_pass_test;
init_21161_SDRAM_controller:
ustat1=dm(WAIT);
bit clr ustat1 0x000FFFFF; /*clear MSx waitstate and mode*/
dm(WAIT)=ustat1;
ustat1=0x1000; /*refresh rate*/
dm(SDRDIV)=ustat1;
ustat1=dm(SDCTL); /*mask in SDRAM settings*/
// SDCTL = 0x02014231;
// SDCLK0 @ CCLK freq., no SDRAM buffering option, 2 SDRAM banks
// SDRAM mapped to bank 0 only, no self-refresh, page size 256 words
// SDRAM powerup mode is prechrg, 8 CRB refs, and then mode reg set cmd
// tRCD = 2 cycles, tRP=2 cycles, tRAS=3 cycles, SDCL=1 cycle
// SDCLK0, SDCLK1, RAS, CAS and SDCLKE activated
bit set ustat1 SDTRCD2|SDBN2|SDEM0|SDPSS|SDPGS256|SDTRP2|SDTRAS3|SDCL1;
bit clr ustat1 SDBUF|SDCKR_DIV2|SDEM3|SDEM2|SDEM1|SDSRF|SDPM|DSDCK1|DSDCTL;
dm(SDCTL)=ustat1;
rts;
init_21161_SDRAM_controller.end:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -