蜂鸟e203,芯来n201处理器在FPGA上移植总结

2020-06-30 16:23:47 浏览数 (1)

本处理器本来是基于芯来科技自定制的FPGA上实现的,本次通过把其移植到ARTY和GENESYS2板子上,过程中走了一些弯路,因此总结一下:

1.处理器中有部分代码是只有通过FPGA才能实现的,因此其在代码中添加了ifdef。

2.首先把src中的system.org进行修改,使其满足板子的配置,例如芯来自定制的FPGA板子含有两个晶振时钟源,而一般的板子上都只有一个时钟源,因此需要修改。

2.1在ARTY板子上含有一个100MHz的时钟源,因此使用普通的clocking wizard IP,使其输入为100MHz,输出为一个8.388MHz,一个为16MHz。然后再利用时钟分频模块,把其分频为32.768KHz。约束文件中需要创建时钟,写上时钟频率,以及占空等。在ARTY板上不存在特定的RESET按钮,但是芯来自定制的板子是含有的,因此我们需要使用普通的按钮替代,请注意:普通的按钮一般是按下为高电平,不操作时为低电平,因此需要在system.org文件中对该引脚信号使用assign语句进行取反操作,否则该soc一直处于置位状态。

2.2在GENESYS2板子上含有一个300MHz的差分输入时钟源,因此使用的clocking wizard IP如下,此时在约束文件中并不需要写有关时钟配置的有关信息,只需要把引脚接上即可。本板子上含有一个cpu_reset按钮,可以使用,另外一个信号只能使用普通按钮,因此该按钮信号也得进行取反操作。

3.修改约束文件

3.1对于ARTY文件,我们只需要按照原理图把对应的引脚引到本板子上即可,因为基本是一样的,没什么特别点,只是有个信号qspi_sck在通用的xdc文件中并没有标明,因此我们需要去ARTY的原理图中找到该引脚,把信号固定到该port。如下所示,并且给与其一个50MHz的时钟频率。对于qspi的六个信号一定要配置好,因为它关乎是否能调用FLASHXIP模式,如果配置错误,会导致jtag调试时找不到FLASH,因此是工作不起来的,其中对于qspi_dq信号需要添加IO BUF和上拉操作,如下所示:

3.2对于GENESYS2板子的约束文件,其他GPIO信号我们还是和芯来自定制的板子差不多,我主要放在了PMOD上,但是对于qspi_sck一定要注意,只有ARTY的板子是存在引脚的,因此前面可以从原理图中找出引脚直接配置。但是,对于其他板子,都是不存在引脚的,这是特别要注意的!

因此在本板子上需要使用ATARTUPE2原语进行配置,因此qspi_sck不需要接出,把output wire qspi_sck给注释掉,大概原理图如下:

添加如下模块:

为了使其产生50MHz的时钟频率,需要在引脚文件中设置如下命令(第三条就是针对时钟频率的):

其他配置如下(不要乱写,qspi_sck引脚,所以我注释掉了):

4.脚本修改

为了能在vivado中跑起来,这两块板子都不是Xilinx自己家的,因此需要下载板级文件放到vivado的安装目录下。

特别是对于GENESYS2这块板子,放进去以后大概率跑起来还会存在licence问题,别着急,把以前的licence再次激活一下即可。

对于在外层,即FPGA目录下的Makefile,我们需要修改如下为我们需要跑的文件夹目录:

这个对于ARTY和GENESYS2的区别不大,然后把hbird中的script全部复制到genesys中的script中,因为大部分是一样的,不需要修改,只在board.tcl中修改如下:

在IP.tcl中修改如下:

因为本次是针对差分时钟输入,如果是ARTY则不需要修改,其他同理

对于sfgmem.tcl文件,因为GENEYS2的flash大小为256Mb,即32MB,因此修改如下:

5.mcs配置修改

ARTY和芯来自定制的板级中flash是同一型号,因此不需要修改,即n25q128-3.3vx1x2x4。

GENESYS2的flash是一个新的型号,其名称为S25FL256S后面***,其他一样。

6.调试器配置

大多数情况和指导手册一致,但是所在组不一样,如下:

因此,使用 sudo chgrp -R plugdev /dev/ttyUSB* 命令修改如下:

然后更改权限为664,如下:

其他和手册一致,最终结果如下:

End

0 人点赞