RISC-V MCU中文社区

【分享】 为蜂鸟处理器添加DDR内存扩展

发表于 全国大学生集成电路创新创业大赛 2021-05-10 08:45:59
7
6413
14

本队伍编号CICC3042,本文介绍如何为蜂鸟添加DDR内存扩展。一些需要大存储空间的设计中经常需要使用DDR,这时我们希望蜂鸟可以访问DDR,以实现更好的软硬件协同。


简单阅读蜂鸟的代码发现,蜂鸟本身提供了外部存储器的访问接口,在e203_subsys_mems.v文件中可以找到:

同时在这个源文件中实现了一主多从的总线系统,可以看到sysmem被分配到0x800000000xFFFFFFFF的地址空间,共有2G。注意这里ITCM的起始地址为0x80000000DTCM的起始地址为0x90000000,与sysmem地址空间重合,实际上在代码中判断了如果访存地址位于0x800000000x90000000起始的64k空间范围内时,内核会访问ITCMDTCM;如果不在上述空间范围内,内核会通过sysmem接口访问外部存储器。这里通过sysmem接口扩展内存空间是简单方便的方法。

蜂鸟提供了icb2axi模块,为了方便在block design中使用,将其封装为IP,保留其可配置参数,如下所示:

为了方便多个设备访问DDR,这里采用axi接口的MIG控制器,可以方便地使用axi interconnectblock design结构如下,MIG控制器的使用这里不再展开。

随后需要分配地址空间,为了节省BRAM空间,我们去掉了ITCMDTCM,因此DDR的地址空间从0x80000000开始,这样蜂鸟可以访问完整的DDR空间。这里为了测试处理器访问0x40000000的地址空间,使用了两块BRAM,从0x40000000开始分别分配4k的地址空间(仅作测试用,可以正常访问)。


最后在顶层system.v文件中例化block design,并添加DDR访问接口:


添加DDR内存扩展前,原来的蜂鸟v2Nexys Video上的资源消耗如下:

添加DDR访问的部分,去掉ITCMDTCM后,蜂鸟v2Nexys Video上的资源消耗如下:

测试发现程序可以正常下载和运行。

喜欢14
用户评论 (7)
王翔

王翔 实名认证

懒的都不写签名

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板