RISC-V技术论坛
登录
直播中
一曲作罢
10年用户
979经验值
擅长:可编程逻辑 电源/新能源 MEMS/传感技术
私信
关注
[经验]
E203分享之DDR扩展方案实施流程(下)
E203
DDR
vivado
仿真
:(仿200us以上,100us左右mig才完成初始化)
(1)测试代码
define DDR_BASE 0xA0000000
unsigned int ddr_offset = 0x00000000;
for(int i=0;i<50;i++)
{
(unsigned int )(DDR_BASE+ddr_offset) = ddr_offset;
ddr_offset += 0x00000004;
}
int rd_data;
ddr_offset = 0x00000000;
for(int i=0;i<50;i++)
{
rd_data =
(unsigned int )(DDR_BASE+ddr_offset);
if(rd_data==ddr_offset)
printf(“memory [%d] correct : %drn”,i,rd_data);
ddr_offset += 0x00000004;
}
(2)测试效果,读数正确
vivado综合:
注意:(1)综合不需要例化ddr3模型,将soc_top层的ddr3的接口引出到最顶层system,mig的ddr3管脚约束在配置mig核的时候已经完成,不用再考虑。
(2)综合时需要把ui_clk和clk_16M间的时序路径设成false_path,因为mig产生的用户时钟ui_clk和系统顶层时钟clk_16M是异步的,故综合时不分析这段时序路径,否则会时序违约。
若出现异步时钟造成的时序违约如:
新建一个.xdc文件,打开综合下的
ti
ming summary,然后右键点击违约的时序路径,选择set false path,然后将约束写入新建的.xdc文件中,时序违约便可消除。
FPGA
开发板
下载程序:(想要用到扩展好的DDR3下载程序,需要修改链接文件)
该扩展方案支持程序的下载方式两种:
(1)ILM下载方式,程序先下载到ITCM中,溢出的部分则下载到DDR3里头。
在链接文件gcc_hbirdv2_ilm.ld中ITCM的基地址为0x80000000,寻址空间为64k。
程序从ITCM的基地址开始下载,当存满0x80000000以后的64k空间时,剩余的程序会下载到DDR3的存储空间。
将源链接文件gcc_hbirdv2_ilm.ld中:
修改为:
(2)FLASH下载方式,程序先下载到flash里头,再加载到ITCM和DDR3里头,然后运行。
将源链接文件gcc_hbirdv2_flash.ld中:
修改为:
扩展后FPGA开发板代码运行效果图:
在程序中加载了142KB的图像数据,并进行读出,依次比对,读出结果正确。
更多回帖
rotate(-90deg);
回复
相关帖子
E203
DDR
E203
分
享
之
DDR
扩展
方案
实施
流程
(中)
112
E203
分
享
之
DDR
扩展
方案
实施
流程
(上)
124
e203
DDR
扩展
功能验证
118
基于
E203
的
DDR
内存
扩展
开发
99
基于
DDR
200T开发板的
e203
进行
DDR
3
扩展
124
蜂鸟
e203
分
享
(二):printf无法输出浮点数问题解决
62
利用蜂鸟
E203
搭建SoC【4】——
DDR
200T内存
扩展
140
请问
E203
怎么
扩展
协处理器?
1437
e203
进行F指令
扩展
的具体实现
94
AXI GPIO
扩展
e203
IO口简介
148
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分