FPGA验证流程(本地WeLab版)

实验目的

  1. 熟悉FPGA实验验证流程;

  2. 熟悉实验调试软件的使用方法;

  3. 熟悉实验板的输入输出元件。

实验设备

实验调试软件:Windows版WeLab实验软件。

实验板:以下任选一种,本文举例以Pocket口袋实验板为主。

  1. Pocket口袋实验板(内含调试适配器和FPGA编程器)

  2. DE2-115开发板和JUPOD调试适配器

  3. Nexys4 DDR开发板和JUPOD调试适配器

准备工作

安装软件

首先从openJURV开源项目的software文件夹下载welab.zip压缩包到本地硬盘,解压即可。

实验板硬件连接

实验软件可与多种硬件实验板配套,大致分为两种类型,一种是独立的调试适配器+实验/开发板,如DE2-115和Nexys4DDR;另一种是实验板内置调试适配器,如Pocket口袋板。下面分别介绍这三种实验板的连接。

Pocket口袋板

Pocket口袋板(图 1)和PC机通过USB电缆连接后,口袋板上的蓝色电源指示灯点亮,右侧16个红色灯和8个绿色灯也处于半亮状态。之后Windows系统开始识别设备,见驱动程序安装

IMG_9130_裁剪
图 1. Pocket口袋实验板

DE2-115 + JUPOD调试适配器

首先确保DE2-115开发板处于断电状态,将JUPOD调试适配器通过扁平电缆连接DE2-115开发板左侧红色电源开关下方的14脚扩展接口,如图 2所示。DE2-115开发板上电后,调试适配器的蓝色指示灯点亮。调试适配器通过USB电缆连接PC机之后,Windows系统开始识别设备,见驱动程序安装

IMG_6857 抠图.jpg
图 2. DE2-115 + JUPOD

Nexys4DDR + JUPOD调试适配器

首先确保Nexys4DDR开发板处于断电状态,将JUPOD调试适配器通过扁平电缆连接Nexys4DDR开发板右侧中部的JA连接器的下排插孔,如图 3所示。实验板上电后,调试适配器的蓝色指示灯点亮。调试适配器通过USB电缆连接PC机之后,Windows系统开始识别设备,见驱动程序安装

IMG_7725抠图
图 3. Nexys4DDR + JUPOD

驱动程序安装

有两种类型的调试适配器,一种需要手动安装驱动程序,另一种使用Windows自带的驱动。目前大部分调试适配器属于后一种,调试适配器或内置调试适配器的实验板通过USB电缆连接PC机后,Windows系统会自动识别并安装驱动程序。一般首次连接到的电脑需要的时间稍长,对于学校实验室机房有硬盘保护功能的电脑,每次开机后都相当于首次连接,请耐心等待。

调试适配器通过指示灯指示驱动是否安装成功。独立调试适配器是一个红绿双色指示灯,口袋实验板在USB接口附近有两个LED指示灯,分别是标注了DATA的红色指示灯和标注了LINK的绿色指示灯。在驱动安装完成之前,红色指示灯亮;驱动安装成功后,红色灯熄灭、绿色指示灯点亮。也可以通过实验软件检查驱动是否安装成功,见与调试适配器建立连接

如果调试适配器通过USB电缆连接电脑后弹出“安装驱动程序向导”窗口,或者在Windows设备管理器的USB设备列表中出现带感叹号的“JU-POD”,说明需要手动安装驱动程序,见附录A:安装USB驱动程序

关于指示灯的进一步说明:绿色指示灯一般保持常亮,表示与计算机的连接正常,但是对于使用Windows自带驱动的调试适配器,在大部分win10系统下,几秒钟后绿色指示灯会自动熄灭,当操作实验软件与实验板传送数据时绿色指示灯又会自动点亮,这是正常现象。红色指示灯仅在有数据传输时闪烁。

实验验证流程

打开虚拟实验板

启动WeLab软件后,点击“实验板 ➤ 打开虚拟面板”菜单项或工具条按钮,在打开的文件对话框中选择实验材料中虚拟实验板.jvp,打开后界面如图 4,这个虚拟面板以实验板的实物照片为背景,在开关、指示灯等输入输出元件位置上放置了虚拟元件。

将鼠标指针指向某个虚拟元件,会提示该元件的名称和序号,如最右边的开关提示“开关0”,这些虚拟元件的名称与设计模块端口名称相对应。如“开关7”~“开关0”,与Verilog代码中的S[7:0]对应;同样,虚拟面板中序号为“0”的数码管与代码中的“SD0”对应。

image
图 4. 虚拟实验板

与调试适配器建立连接

点击“实验板 ➤ 连接调试适配器”菜单项或工具条按钮,在弹出窗口中应已经列出发现的调试适配器,如图 5,点击“连接”按钮。根据调试适配器的驱动类型,列表中出现的名称可能是“JU-HID”或“JU-POD”。若列表中未出现调试适配器,请检查实验板与计算机的连接;如果连接正确,请检查Windows“设备管理器”的“通用串行总线控制器” 设备列表中是否出现“JU-HID”或“JU-POD”,如果未出现或者有感叹号,说明驱动未安装成功。

image
图 5. 连接调试适配器
USB电缆也是造成连接失败的一个常见原因。可以换一根电缆试试。

加载FPGA电路

开始验证之前首先要将前面实验编译生成的FPGA电路文件加载到FPGA芯片中(也称配置、编程、下载)。

内置调试适配器的Pocket口袋板通过实验软件下载FPGA。点击“实验板 ➤ 下载FPGA”菜单项或工具条按钮,在打开的文件对话框中选择之前编译生成的xxx.rbf文件后开始编程,编程过程中会在菜单栏位置出现进度条,完成后会有提示“配置FPGA成功”。

无需安装驱动的口袋实验板的下载速度较慢,有时甚至出现进度条不动的假死现象,请耐心等待。无论下载是否成功,都会有提示窗弹出。

独立调试适配器不能通过实验软件配置FPGA,如DE2-115实验板需要使用Quartus软件下载,具体操作见附录B:使用Quartus软件下载sof文件。Nexys4DDR实验板需要使用Vivado软件下载,另文介绍。

操作虚拟面板

点击虚拟面板中的拨动开关S7~S0,观察数码管0显示内容的变化;点击虚拟开关S8~S11,相应的LED指示灯应该点亮;点击虚拟开关S8~S11,相应的L8~L11指示灯应该点亮。按下PB0,L18绿色指示灯点亮,松开后熄灭。如果与预期不同,检查前面的设计代码是否正确。

如果实际实验板有真实的指示灯和数码管,实际实验板上也会同步显示。Pocket实验板只有指示灯没有数码管,只能在虚拟实验板上观察虚拟数码管。

设计虚拟面板

下面从头设计一个全新的虚拟面板。点击“实验板 ➤ 新建虚拟面板”菜单项或工具条按钮,输入虚拟面板名称“认识虚拟元件”;点击“设计 ➤ 添加更换背景图”菜单项或工具条按钮,实验材料中提供了一个“虚拟面板背景图.png”文件,选择该图片作为虚拟面板背景图,如图 6

image
图 6. 添加虚拟面板背景图
可以自己绘制背景图,见绘制面板背景图

现在我们给虚拟面板添加虚拟元件。以虚拟开关为例,在设计工具箱中点击“开关”,点击“开关0”,将它们添加到虚拟面板上,然后将它拖到所希望的位置。用类似的方法添加需要的开关、数码管和指示灯。最终完成虚拟面板效果如图 7。点击“保存虚拟面板”菜单或工具按钮将面板设计保存到文件。

image
图 7. 设计完成的虚拟面板

上面介绍的是从空白开始设计一个全新的虚拟面板,实际上已有虚拟面板也可以修改,只要点击“模式 ➤ 虚拟面板设计”菜单项或笔形工具按钮,进入设计状态即可修改虚拟面板。

完成虚拟面板设计后,点击“模式 ➤ 虚拟面板设计”菜单项或工具按钮,从设计模式转换为实验模式。拨动虚拟开关,观察数码管和指示灯显示是否正确。如果不正确,检查verilog设计是否存在错误,改正错误后重新验证。

附录

A:安装USB驱动程序

有两种类型的调试适配器,一种需要安装驱动程序,另一种使用Windows自带的驱动。这里介绍32位Windows系统的USB驱动程序安装,64位Windows系统的USB驱动安装方法请自行百度。

调试适配器或内置调试适配器的实验板通过USB电缆连接PC机后,在弹出的“安装驱动程序向导”窗口中,选择“从列表或指定位置安装”,根据提示点击“下一步”,浏览到驱动程序在软件包中的位置,根据提示点击“下一步”,即可完成JUPOD驱动程序安装。

B:使用Quartus软件下载sof文件

DE2-115使用Quartus软件通过JTAG接口下载sof文件。首先需要将USB电缆连接到DE2-115开发板左上角的第一个USB接口。

点击菜单项Tool ➤ Programmer或工具栏按钮进入器件编程话框,如图 8

image
图 8. 器件编程窗口

点击 Hardware Setup 按钮或Edit ➤ Hardware Setup菜单项,在Currently selected hardware列表中选择USB-Blaster作为编程硬件,如图 9

image
图 9. 下载电缆设置

回到图 8编程界面,点击 Add File 按钮或Edit ➤ Add File菜单项,在工程目录的output文件夹下选择要下载的sof文件,如DE2-115.sof。 在Mode中选择JTAG模式。勾选Program/Configure选项框,点击 Start 按钮或Processing ➤ Start菜单项开始器件编程。在Process进度条中会显示编程进度。

完成后,在Quartus的信息显示区中,会报告成功或出错信息。注意,信息显示在Quartus主界面的信息显示区中,不在编程窗口中;为了方便看到提示信息,可以从Window菜单执行Attach Window,将编程窗口嵌入到QuartusII主界面中。

编程界面左侧的其它按钮分别表示停止编程;自动检测编程硬件是否连接;删除编程文件;更改选中的编程文件;保存文件;添加用户自定义的器件;更改编程文件的顺序。