tinyriscv/fpga/README.md

197 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 1.概述
介绍如何将tinyriscv移植到FPGA平台上和如何通过JTAG下载程序到FPGA。
1.软件xilinx vivado(以2018.1版本为例)开发环境。
2.FPGAxilinx Artix-7 35T。
3.调试器CMSIS-DAP或者DAPLink要带JTAG功能
这里只是以Xilinx平台为例实际上可以移植到任何FPGA平台只要资源足够
# 2.FPGA移植步骤
## 2.1创建工程
首先打开vivado软件新建工程方法如下图所示
![](./images/create_prj_1.png)
或者通过File菜单新建工程如下图所示
![](./images/create_prj_2.png)
然后进入下一步,如下图所示:
![](./images/create_prj_3.png)
直接点击Next按钮进入下一步如下图所示
![](./images/create_prj_4.png)
输入工程名字和工程路径勾选上Create project subdirectiry选项然后点击Next按钮如下图所示
![](./images/create_prj_5.png)
选择RTL Project并勾选上Do not specify sources at this time然后点击Next按钮如下图所示
![](./images/create_prj_6.png)
在Search框里输入256-1然后选中xc7a35tftg256-1这个型号然后点击Next按钮如下图所示
![](./images/create_prj_7.png)
直接点击Finish按钮。
至此,工程创建完成。
## 2.2添加RTL源文件
在工程主界面点击左侧的Add Sources按钮如下图所示
![](./images/add_src_1.png)
进入到如下图的界面:
![](./images/add_src_2.png)
选中第二项Add or create design sources然后点击Next按钮如下图所示
![](./images/add_src_3.png)
点击Add Directories按钮选择tinyriscv项目里的整个rtl文件夹如下图所示
![](./images/add_src_4.png)
勾选上红色框里那两项然后点击Finish按钮。
最后还要添加顶层文件即fpga/xilinx/perf-v/tinyriscv_soc_top.sv文件。
至此RTL源文件添加完成。
## 2.3添加约束文件
在工程主界面点击左侧的Add Sources按钮如下图所示
![](./images/add_src_1.png)
进入到如下图的界面:
![](./images/add_src_5.png)
选择第一项Add or create constraints然后点击Next按钮如下图所示
![](./images/add_src_6.png)
点击Add Files按钮选择tinyriscv项目里的fpga/xilinx/perf-v/constrs/tinyriscv.xdc文件如下图所示
![](./images/add_src_7.png)
勾选上Copy constraints files into project然后点击Finish按钮。
**注意:如果你的开发板和我的不一样,则需要将约束文件里的引脚配置改成你的开发板上对应的引脚**。
至此,约束文件添加完成。
## 2.4生成Bitstream文件
点击下图所示的Generate Bitstream按钮即可开始生成Bitstream文件。
这包括综合、实现(布局布线)等过程,因此时间会比较长。
![](./images/add_src_8.png)
## 2.5下载Bitstream文件到FPGA
连接好下载器和FPGA开发板将下载器插入PC然后给板子上电接着点击vivado主界面的左下角的Open Hardware Manager按钮如下图所示
![](./images/download_1.png)
接着点击Open target按钮然后选择Auto Connect如下图所示
![](./images/download_2.png)
连接成功后点击Program device按钮如下图所示
![](./images/download_3.png)
弹出如下界面然后直接点击Program按钮。
![](./images/download_4.png)
至此即可将Bitstream文件下载到FPGA。
## 2.6固化软核到FPGA
对于下载Bitstream文件到FPGA这种方式当断电后再上电就要重新下载因此可以将tinyriscv软核固化到FPGA这样每次上电后就不需要重新下载Bitstream文件了只需要下载bin文件就可以。
点击vivado工具栏的Tools-->Generate Memory Configuration File...选项后会出现以下界面:
![config_mcs](./images/config_mcs.png)
按照图中红色框来设置,然后点击确定。
然后点击Open Hardware Manager按下图选择
![add_mcs_device](./images/add_mcs_device.png)
然后按下图设置:
![select_spi](./images/select_spi.png)
弹出如下对话框,点击确定。
![mcs_ok](./images/mcs_ok.png)
最后按下图设置:
![mcs_prog](./images/mcs_prog.png)
点击确定后开始固化。固化过程比下载Bitstream文件的时间要长耐心等待一下即可。
# 3.下载程序到FPGA
## 3.1通过JTAG方式下载
将CMSIS-DAP调试器连接好FPGA板子和PC电脑。
打开一个CMD窗口然后cd进入到tinyriscv项目的tools/openocd目录执行命令
`openocd_win.exe -f tinyriscv_cmsisdap_jtag.cfg`
如果执行成功的话则会如下图所示(由于项目一直在更新,图片上的信息可能会跟实际的不一致,以文字描述为准):
![openocd](./images/openocd.png)
然后打开另一个CMD窗口执行以下命令来连接openocd注意电脑要启用telnet host服务。
`telnet localhost 4444`
然后在这个CMD窗口下使用load_bin命令将固件下载到FPGA的ROM里掉电会消失这里以freertos.bin文件为例如下所示
`load_bin D:/gitee/open/tinyriscv/tests/example/FreeRTOS/Demo/tinyriscv_GCC/freertos.bin 0x0 1`
load_bin命令用法
`load_bin file address verify[0|1]`
file表示要下载的bin文件
address表示要下载的地址
verify表示是否检验1校验0不校验
最后执行以下命令让程序跑起来:
`resume 0`
或者
`reset`
或者短按一下开发板上的复位按键。
**注意每次下载程序前记得先执行halt命令停住CPU。**