修订历史

版本号 修订日期 修订的章节 修订的内容
1.0 2019/11/20 N/A 初始版本
2.0 2021/09/01 2、3 FPGA评估板适配为Nuclei MCU200T

1. N100内核配套SoC

对于N100系列处理器内核而言,还需要为其配备原型SoC才能展示一个典型SoC的功能。 Nuclei N100系列内核搭配完整的原型SoC平台,请参见《Nuclei_N100系列配套SoC介绍》了解更多SoC的介绍与信息。

2. FPGA评估板和JTAG调试器

2.1. 简介

芯来科技定制了专用的FPGA评估板(Nuclei MCU200T),本文中称为MCU200T FPGA评估板。上节描述的配套SoC原型(包含N100系列处理器内核)可以被整体实现在MCu200T上成为SoC的FPGA原型开发板。

芯来科技还定制了专用的JTAG调试器(HBird Debugger Kit),本文中称为蜂鸟调试器,用于在FPGA评估板上对N100系列进行调试。

有关FPGA评估板和专用JTAG调试器的总体介绍请参见芯来科技官网开发板页面:http://www.nucleisys.com/developboard.php

详细介绍请参见芯来科技官网开发板页面中的详细介绍文档链接:http://www.nucleisys.com/theme/package/Nuclei_FPGA_DebugKit_Intro.pdf

2.2. 连接蜂鸟调试器与FPGA评估板

关于如何将蜂鸟调试器与FPGA评估板进行连接,请参见芯来科技官网开发板页面中的详细介绍文档链接:http://www.nucleisys.com/theme/package/Nuclei_FPGA_DebugKit_Intro.pdf

2.3. 安装蜂鸟调试器的驱动

蜂鸟调试器是采用USB接口与主机PC连接,使用蜂鸟调试器时需要在PC上安装驱动,关于如何为蜂鸟调试器安装驱动,请参见芯来科技官网开发板页面中的详细介绍文档链接:http://www.nucleisys.com/theme/package/Nuclei_FPGA_DebugKit_Intro.pdf

3. 搭建FPGA原型平台

3.1. FPGA项目介绍

N100系列内核配套FPGA项目在n100_rls_pkg文件包的文件层次结构如下所示:


N100_rls_pkg
    |n100_cct
        |----fpga                           // 存放FPGA项目和脚本的目录
            |----mcu200t                // MCU200T FPGA评估板的项目文件夹
                |----constrs                // 存放约束文件的文件夹
                |---- nuclei-master.xdc     // 主约束文件
                |----Makefile               // Makefile脚本
                |----script             // 存放运行TCL脚本的文件夹
                |----src                    // 存放Verilog源代码的文件夹
                    |----system.org     // FPGA系统的顶层模块 
            |----Makefile                   // Makefile脚本

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

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

在FPGA的顶层模块(system.org)中除了例化SoC的顶层(n100_soc_top)之外,主要是使用Xilinx的I/O Pad单元例化顶层的Pad。另外使用Xilinx的MMCM单元生成时钟。注意:SoC的Main Domain使用的MMCM产生的高速时钟连接到SoC的hfextclk,Always-On Domain使用的是开发板上的低速实时时钟(32.768KHz)。

N100系列内核配套SoC的顶层I/O Pad经过FPGA的约束文件(nuclei-master.xdc)进行约束使之连接到FPGA芯片外部的引脚上面(譬如将JTAG I/O约束到开发板的MCU_JTAG插口引脚上)。

3.2. 生成mcs文件

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


// 步骤一:准备好自己的电脑环境,可以在公司的服务器环境中运行,如果是个人用户,推荐如下配置:
        (1)使用VMware虚拟机在个人电脑上安装虚拟的Linux操作系统。
        (2)由于Linux操作系统的版本众多,推荐使用Ubuntu 16.04版本的Linux操作系统
        有关如何安装VMware以及Ubuntu操作系统本文不做介绍,有关Linux的基本使用本文
        也不做介绍,请用户自行查阅资料学习。


// 步骤二:安装Xilinx Vivado软件(包括XILINX USB JTAG下载器驱动程序)至此虚拟机Linux操作系统中。有关如何安装Xilinx Vivado软件和下载器驱动本文不做介绍,请用户自行查阅资料了解。


// 步骤三:将n100_rls_pkg解压至本机Linux环境中。


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

cd n100_rls_pkg/n100_cct/fpga
        // 进入到n100_rls_pkg/n100_cct目录文件夹下面的fpga目录。

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


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

make bit
        // 运行该命令将调用Vivado软件对Verilog RTL进行编译生成bitstream文件
        // 生成的bitstream文件名和路径为
        // n100_rls_pkg/n100_cct/fpga/hbirdkit/obj/system.bit
        // 该bitstream文件则可以使用Vivado软件的Hardware Manager功能将
        // system.bit烧录至FPGA中去。

        // 熟悉Vivado和Xilinx FPGA使用的用户应该了解,bitstream文件烧录到FPGA中
        // 去之后FPGA不能掉电,因为一旦掉电之后FPGA烧录的内容即丢失,需要重新使用
        // Vivado的Hardware Manager进行烧录方能使用。
        // 为了方便用户使用,FPGA评估板可以将需要烧录的内容写入开发板上的
        // Flash中,然后在每次FPGA上电之后通过硬件电路自动将需要加载的内容从外部的
        // Flash中读出并加载到FPGA之中(该过程非常的快,不影响用户使用)。由于Flash
        // 是非易失性的内存,具有掉电后仍可保存的特性,因此意味着将需要载入的内容写入
        // Flash后,每次掉电后无需使用Hardware Manager人工重新烧录(而是硬件电路
        // 快速自动完成),即等效于,FPGA上电即可使用。


        // 为了能够将烧录FPGA的内容写入Flash中,需要生成mcs文件,使用如下命令:
make mcs
        // 运行该命令将调用Vivado软件对Verilog RTL进行编译生成mcs文件
        // 生成的mcs文件名和路径为
        // n100_rls_pkg/n100_cct/fpga/hbirdkit/obj/system.mcs
        // 该mcs文件则可以使用Vivado软件的Hardware Manager功能将
        // system.mcs烧录至FPGA评估板中的Flash中去。


3.3. 将mcs文件烧写入FPGA

关于如何将上节生成的mcs文件烧写入FPGA评估板,请参见芯来科技官网开发板页面中的详细介绍文档链接:http://www.nucleisys.com/theme/package/Nuclei_FPGA_DebugKit_Intro.pdf

4. 基于FPGA平台运行和调试软件示例

4.1. 配套基于Linux的SDK

基于配套的SoC,Nuclei N100系列处理器内核提供基于Linux的软件开发套件(SDK,Software Development Kit)。可以使用此SDK在FPGA原型平台上进行嵌入式软件的开发,详细介绍请参见参见单独文档《Nuclei_N100系列SDK使用说明》。

4.2. 配套基于Windows的IDE

基于配套的SoC,提供基于Windows的图形化集成开发环境(IDE,Integrated Development Environment)。可以使用此IDE在FPGA原型平台上进行嵌入式软件的开发,详细介绍请参见参见单独文档《Nuclei_N100系列IDE使用说明》。