喜欢0次
MIG7 series DDR控制器 例化可自行BING搜索
存储总线位于
挑选一个not used 接口 (我选择的是02)
DDR基地址为 0xA0000000,注意O2_BASE_REGION_LSB,我使用的为28,定位到
他表示icb总线匹配地址前缀低位,即如果[31:28]高四位为0xA,即为02端口地址,与02接口进行通信。
然后可查找icb2axi转接口:位于
可单独写一个.v文件,在block design 中例化,通过axi接口可直接接到axi ddr上,如位宽、时钟等不匹配可通过axi_interconnect进行转接。注意ddr 基地址要与之前配置icb端口基地址一致。
然后可以将存储总线时钟和复位以及该icb接口接入block design,实现DDR读写。
void read_ddr( int *startp, int range)
{
int *p = startp;
for(int i=0; i < range ; i++ )
{
printf(" %d ",*p);
delay_1ms(10);
p=p+1;
}
}
void write_ddr( int *startp, int range)
{
int *p = startp;
for(int i=0; i < range ; i++ )
{
*p = i;
p=p+1;
printf(".");
delay_1ms(1);
}
}
void ddr_test()
{
printf("\n/**********start ddr test *************/\n");
write_ddr(0xA0002000,10);
delay_1ms(1000);
read_ddr(0xA0002000,10);
printf("\n/********** end ddr test **************/\n");
}
结果为
综上,这是我们认为最简单的拓展方法。第一次做Soc赛道,欢迎各位大佬指正。