报名编号:CICC1764
团队名称:两年半IC练习生
使用的rtl官方源代码:e203_hbirdv2
使用的FPGA开发板:DDR200T
扩展原因:蜂鸟e203的内存ITCM和DTCM都是64k,太小,不能加载较大的程序(如:几M)
扩展方案:使用DDR200T上板载的DDR3对内存进行扩展
扩展方案结构图:
该方案中DDR3使用vivado提供的axi接口mig的IP核来进行控制,蜂鸟e203源代码中提供了icb2axi模块,可以使发出数据的从icb协议转到axi协议。axi_interconnect实现了数据的跨时钟域和位宽转换,并将转换后的数据传给mig模块进而实现对DDR3的控制。
简单阅读蜂鸟的代码发现,蜂鸟本身提供了外部存储器的访问接口,在e203_subsys_mems.v文件中可以找到:
同时在这个源文件中实现了一主多从的总线系统,可以看到sysmem被分配到0x80000000到0xFFFFFFFF的地址空间,共有2G。注意这里ITCM的起始地址为0x80000000,DTCM的起始地址为0x90000000,与sysmem地址空间重合,实际上在代码中判断了如果访存地址位于0x80000000和0x90000000起始的64k空间范围内时,内核会访问ITCM和DTCM;如果不在上述空间范围内,内核会通过sysmem接口访问外部存储器。这里通过sysmem接口扩展内存空间是简单方便的方法。