SDRAM读写

仍然建立工程,在sopc builder里添加组件如图所示

 

其中SDRAM设置如下图所示

 CPU的reset和exception地址都选择SDRAM

由于SDRAM对时序的要求非常严格,所以它的时钟要有一定的相移来匹配其他的信号(如DRAM_CKE)经过nios所造成的延迟

在bdf文件中加入锁相环PLL,具体的相移参考芯片手册(话说我也没找到具体的相移是多少,只是看过书上别人都是按这么多相移来做的……)

 

 

 接着分配引脚,注意的是SDRAM的引脚在DE2给的手册里是按照DRAM_BA_0和DRAM_BA_1来的,而我们在nios设计里是按照DRAM_BA[1..0]来设计的,两者需要一致

同理,DRAM_UDQM和DRAM_LDQM。

 

在nios ide中编写代码。

 

 

主程序如下所示 

 

 

/* ---------------------------------------------------------------- 
* Include 
*----------------------------------------------------------------
*/  
#include 
< stdio.h >  
#include 
" ../inc/sopc.h "  
#include 
" system.h "  
#include 
" string.h "  
#include 
< unistd.h >
/* --------------------------------------------------------------- 
* Variable 
*---------------------------------------------------------------
*/  
unsigned 
short   *  ram  =  (unsigned  short   * )(SDRAM_BASE + 0x10000 );  // SDRAM地址,考虑到SDRAM存有其他内容,包括程序,所以偏移一定的地址,不固定
/*
 
* === FUNCTION ======================================== 
* Name: main 
* Description: 函数主程序 
* ===================================================== 
*/  
int  main( void
{
    
int  i; 
    memset(ram,
0 , 100 ); 
    
// 向ram中写数据,当ram写完以后,ram的地址已经变为(SDRAM_BASE+0x10100)
     
    
for (i = 0 ;i < 100 ;i ++ ){
        
* (ram ++ =  i;        
    }
    
    
// 逆向读取ram中的数据
     for (i = 0 ;i < 100 ;i ++ ){
        printf(
" %d\n " , * ( -- ram));
        usleep(
1000000 );
    }
    
    
return   0 ;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值