蜂鸟FPGA开发板及蜂鸟JTAG下载器讲解说明

网友投稿 687 2022-11-16

蜂鸟FPGA开发板及蜂鸟JTAG下载器讲解说明

2 蜂鸟E203开源SoC

蜂鸟E203开源SoC的代码结构如下所示。

各个主要的代码模块简述如下:

fab目录主要实现SoC中ICB Bus Fabric模块的Verilog RTL代码。 sirv_icb1to4_bus.v, sirv_icb1to8_bus.v或者sirv_icb1to16_bus.v实际例化调用了sirv_icb_splt模块将一组ICB总线按照地址区间分发成为4组,8组或者16组ICB总线。

mems目录主要用于存放memory模块的Verilog RTL代码,由于Memory的具体实现依赖于芯片生产加工厂(foundry)譬如SIMC或者TSMC的Memory宏单元,因此本文件夹下的Verilog RTL代码仅仅是行为模型。

debug目录包含了SoC中有关debugger调试器模块的Verilog RTL代码。

3搭建FPGA原型平台

我们为蜂鸟E203开源SoC定制了专用的FPGA原型开发板和JTAG调试器, E203开源项目基于该FPGA开发板,使用蜂鸟E203开源SoC搭建完整的原型平台与示例。

FPGA原型主要分为两部分:FPGA开发板,和调试器。接下来章节分别予以介绍。完整的FPGA开发板原型(包括FPGA开发板和调试器)如图3-1所示。

图3-1 FPGA开发板原型(包括JTAG调试器)

3.1FPGA开发板和项目介绍

有关此FPGA开发板的详细介绍请参见《蜂鸟FPGA开发板和JTAG调试器介绍》。

图3-2 蜂鸟E203专用FPGA开发板

E203开源项目FPGA项目相关的代码结构如下所示。

FPGA项目通过Makefile(fpga/common.mk文件)将添加一个特殊的宏FPGA_SOURCE至Core的宏文件中,如图3-3所示。所以最终用于编译FPGA比特流的RTL源代码必须包含此宏(FPGA_SOURCE)。

图3-3 FPGA项目宏定义文件中添加FPGA_SOURCE

3.2生成mcs文件烧写FPGA

在前文中介绍了E203开源项目的SoC整体架构和Verilog RTL代码,为了使得该SoC能够真正运行在FPGA硬件上,需要将其编译成为bitstream文件然后烧录到FPGA中去。可以使用如下步骤进行编译和烧录。

//步骤一:准备好自己的电脑环境,可以在公司的服务器环境中运行,如果是个人用户,推荐如下配置:

//经过此步骤将项目克隆下来,本机上即可具有如前文所述完整的e200_opensource目录文件夹,假设该目录为,后文将使用该缩写指代。

//步骤四:设置需要编译的Core的具体型号,使用如下命令:

cd /fpga

//进入到e200_opensource目录文件夹下面的fpga目录。

make install CORE=e203

//运行该命令指明需要为e203内核进行编译,该命令会在fpga目录下生成一个install子文件夹,在其中放置Vivado所需的脚本,且将脚本中的关键字设置为e203。

//步骤五:生成bitstream文件或者mcs文件(推荐使用mcs文件),使用如下命令:

make bit

//运行该命令将调用Vivado软件对VerilogRTL进行编译生成bitstream文件生成的bitstream文件名和路径为

/fpga/nucleikit/obj/system.bit。该bitstream文件则可以使用Vivado软件的HardwareManager功能将system.bit烧录至FPGA中去。

//熟悉Vivado和Xilinx FPGA使用的用户应该了解,bitstream文件烧录到FPGA中去之后FPGA不能掉电,因为一旦掉电之后FPGA烧录的内容即丢失,需要重新使用Vivado的Hardware Manager进行烧录方能使用。

//为了方便用户使用,Xilinx的Arty开发板可以将需要烧录的内容写入开发板上的Flash中,然后在每次FPGA上电之后通过硬件电路自动将需要烧录的内容从外部的Flash中读出并烧录到FPGA之中(该过程非常的快,不影响用户使用)。由于Flash是非易失性的内存,具有掉电后仍可保存的特性,因此意味着将需要烧录的内容写入Flash后,每次掉电后无需使用Hardware Manager人工重新烧录(而是硬件电路快速自动完成),即等效于,FPGA上电即可使用。有关此特性的详细原理与描述,本文不做赘述,请用户自行参阅Arty开发板手册。

//为了能够将烧录FPGA的内容写入Flash中,需要生成mcs文件,使用如下命令:

make mcs

//运行该命令将调用Vivado软件对VerilogRTL进行编译生成mcs文件生成的mcs文件名和路径为/fpga/nucleikit/obj/system.mcs。该mcs文件则可以使用Vivado软件的HardwareManager功能将system.mcs烧录至FPGA开发板中的Flash中去。

如何使用Vivado的HardwareManager烧写mcs文件至FPGA开发板上的Flash中去,参考如下步骤。

//步骤一:打开Vivado软件。

//步骤二:打开Hardware Manager,会自动连接FPGA开发板(如果前提步骤1操作正确)。如图3-4和图3-5所示。

//步骤三:右键FPGA Device,选择“Add Configuration Memory Device”。如图3-6所示。

//步骤四:选择如下参数的Flash,如图3-7所示:

Part n25q128-3.3v

Manufacturer Micron

Family n25q

Type spi

Density 128

Width x1 x2 x4

//步骤六:在弹出的窗口中的对话框中选择添加

/fpga/nucleikit/system.mcs,然后选择OK,则开始烧写Flash,可能会花费几十秒的时间等待。

//步骤七:一旦烧写Flash成功,则可以通过按开发板上的“FPGA_PROG”按键触发硬件电路使用Flash中的内容对FPGA重新进行烧录。

注意:FPGA烧写成功之后,则可以无需再连接“FPGA JTAG接口”的USB连接线。

图3-4打开Vivado Hardware Manager

图3-5使用Vivado Hardware Manager连接Arty开发板

图3-6 FPGA Device选择AddConfiguration Memory Device

图3-7 选择Flash类型

3.3JTAG调试器

图3-8 蜂鸟E203专用FPGA开发板的MCU_JTAG插槽

为了支持使用GDB进行交互式调试或者通过GDB动态下载程序到处理器中运行,需要为FPGA原型平台配备一个JTAG调试器(JTAG Debugger),E203内核支持通过标准的JTAG接口对其进行调试,且SoC顶层JTAG的I/O Pad连接到了 FPGA芯片的pin脚上,而该组pin脚在E203专用FPGA开发板上实际被连接到MCU_JTAG插槽上,如图3-8中黄色圆圈所示。

我们为E203内核定制了专用的“JTAG调试器”,如图3-9中黄色圆圈所示。

图3-9 蜂鸟E203专用的JTAG调试器

有关此JTAG调试器的详细介绍请参见《蜂鸟FPGA开发板和JTAG调试器介绍》。

由于“JTAG调试器”将其与上游主机PC的USB接口连接,因此上游PC的USB端口需要正确的设置以保证其有正确的权限。以Ubuntu 16.04为例,可以使用如下步骤进行配置。

//步骤一:准备好自己的电脑环境,可以在公司的服务器环境中运行,如果是个人用户,推荐如下配置:

(1)使用VMware虚拟机在个人电脑上安装虚拟的Linux操作系统。

(2)由于Linux操作系统的版本众多,推荐使用Ubuntu16.04版本的Linux操作系统有关如何安装VMware以及Ubuntu操作系统本文不做介绍,有关Linux的基本使用本文也不做介绍,请用户自行查阅资料学习。

//步骤二:使用“JTAG调试器”将主机PC与FPGA开发板连接,如图4-9中圆圈所示。注意使该USB接口被虚拟机的Linux系统识别(而非被Windows识别),如图4-10中圆圈所示,若USB图标在虚拟机中显示为高亮,则表明USB被虚拟机中Linux系统正确识别(而非被Windows识别),将FPGA开发板通电。

//步骤三:使用如下命令查看USB设备的状态:

lsusb //运行该命令后会显示如下信息。

...

//步骤四:使用如下命令设置udev rules使得该USB设备能够被plugdev group所访问:

sudo vi /etc/udev/rules.d/99-openocd.rules

//用vi打开该文件,然后添加以下内容至该文件中,然后保存退出。

# These arefor the Olimex Debugger for use with Arty Dev Kit

SUBSYSTEM=="usb",ATTR{idVendor}=="15ba",

ATTR{idProduct}=="002a",MODE="664", GROUP="plugdev"

SUBSYSTEM=="tty",ATTRS{idVendor}=="15ba",

ATTRS{idProduct}=="002a",MODE="664", GROUP="plugdev"

//步骤五:使用如下命令查看该USB设备是否属于plugdev group:

ls /dev/ttyUSB* //运行该命令后会显示类似如下信息。

/dev/ttyUSB0/dev/ttyUSB1

ls -l/dev/ttyUSB1 //运行该命令后会显示类似如下信息。

crw-rw-r-- 1root plugdev 188, 1 Nov 28 12:53 /dev/ttyUSB1

//步骤六:将你自己的用户添加到plugdev group中:

whoami

//运行该命令能显示自己用户名,假设你的自己用户名显示为your_user_name。运行如下命令将your_user_name添加到plugdev group中sudo usermod -a -G plugdev your user name。

//步骤七:确认自己的用户是否属于plugdev group:

groups //运行该命令后会显示类似如下信息。

... plugdev...

//只要从显示的groups中看到plugdev则意味着自己的用户属于该组,表示设置成功 。

图3-10 虚拟机Linux系统识别USB图标

在下一章将介绍利用该JTAG调试器如何使用GDB软件对蜂鸟E203 SoC原型进行程序下载或远程调试。

至此,我们将以上论述的加以总结,为了能够搭建完整的FPGA原型平台,用户需要做如下硬件的准备:

购买一块蜂鸟E203专用FPGA开发板

购买一块蜂鸟E203专用JTAG调试器

用户需要做如下软件的准备:

推荐安装VMware虚拟机且安装Linux操作系统于虚拟机中

安装Xilinx的Vivado软件

在下一章将介绍如何使用烧录后的FPGA原型平台运行真正的软件示例。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【Hadoop】Hadoop体系架构详解
下一篇:JPA设置默认字段及其长度详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~