跳转至

FPGAOL

注意

本小节的相关内容是基于 FPGAOL v2.1 版本编写的。我们也会根据平台的更新情况修改本教程的内容。大家也可以阅读平台的介绍手册了解相应内容。

Tips

据内部消息,最新版本的 FPGAOL 即将开发完成,有希望本学期与大家见面(还剩下亿点 Bug 就弄好了)。


1.1 简介

FPGAOL(FPGA Online)是中国科学技术大学计算机教学实验中心组织开发的、基于 Web 端的线上硬件实验平台。用户可以远程访问平台部署好的 FPGA(Nexys 4 DDR)集群,上传本地生成好的比特流文件,并交互地控制 FPGA,实时获得 FPGA 的输出。需要指出的是,该结果是基于 FPGA 实际运行而非仿真产生的,所以可以确保结果与线下操作 FPGA 开发板的结果相同。同时,由于线上设备具备出色的采样性能,平台能够精确发现人眼难以观察到的信号变化,从而为用户快速调试程序提供便利。

单击上面的链接后,用户即可进入登录界面。科大校内学生请选择统一身份认证登录。

Image title

登录完成后,我们将进入下图所示的操作界面。

Image title

操作界面上,最为常用的是便是设备请求功能了。由于硬件资源有限,平台采用了限时请求的方式满足各位同学的使用需要。每名同学一次可申请 20 分钟的节点使用资源,超过时间后资源将被自动释放,继续使用则需要重新申请资源。考虑到我们在 FPGAOL 平台上主要是进行功能验证,因此 20 分钟的使用限时并不会带来较大影响。

点击 acquire 后,平台便会自动分配一个可用节点,并返回使用链接。用户单击链接即可跳转到相应的操控界面。如果已经使用完成,可以点击 release 释放已申请的节点。

Image title

1.2 ★ 外设

外设,又称外部设备,是指连在计算机主机以外的硬件设备。外设对数据和信息起着传输、转送和存储的作用,是计算机系统中的重要组成部分。

我们的 FPGA 开发板也连接着一些外设资源。这些资源通过特定的端口与 FPGA 芯片连接,实现高效的数据传输。

Image title

申请好节点后,我们会进入下图所示的界面。这里是我们与外设直接交互的渠道,按照类别可以分为如下内容:按钮、开关、数码管、LED 灯以及串口。我们将一一进行介绍。

Image title

1.2.1 按钮

FPGAOL 平台提供了一个按钮。按钮按下时向 FPGA 芯片输入高电平信号,松开时输入低电平信号。默认情况下,按钮处于松开状态。

我们一般使用一个 1bit 位宽的信号 btn 代表按钮。因此,正常情况下 btn 的值为 0,当按钮按下时,btn 的值为 1。

Image title

Tips:虚拟的按钮

为了方便用户操作,这里的按钮实际上是虚拟的。用户在网页端按下按钮后,平台会产生相应的信号送入 FPGA,而不是按下对应开发板上真正的机械按钮。

1.2.2 开关

FPGAOL 提供了八个不同的拨码开关。当开关被拨上去时,对应的管脚输出高电平;开关被拨下来时,对应的管脚输出低电平。

Image title

其工作原理如下图所示:

Image title

我们一般使用一个 8bits 位宽的信号 sw 代表开关输入,其中 sw[i] 对应编号为 i 的开关。例如:下图状态下的开关对应 sw 的值为 8'b00100010。

Image title

1.2.3 七段数码管

七段数码管本质上是由 8 个 LED(发光二极管)构成,其中 7 个 LED 组成数字本身,1 个 LED 组成小数点。所有 LED 的阴极共同连接到一端并接地,而阳极分别由 FPGA 的 8 个输出管脚控制。当输出管脚为高电平时,对应的 LED 亮起。如下图所示,通过控制 8 个 LED 的亮灭情况,七段数码管便能显示出不同的字符,例如,当 A ∼ F 的 6 个 LED 亮起,而 G、DP 两个 LED 熄灭时,数码管显示的便是字符 "0"。

Image title

在有多个数码管的情况下,我们通常采用分时复用的方式轮流点亮每个数码管,并保证在同一时间只会有一个数码管被点亮。对于当前点亮的数码管,我们会只传输其应当显示的内容。分时复用的扫描显示利用了人眼的视觉暂留特性,如果公共端的控制信号刷新速度足够快,人眼就不会区分出 LED 的闪烁,从而认为这些数码管是同时点亮的。一般而言,我们建议数码管的扫描频率为 50Hz,也就是说,如果要驱动 8 个数码管,需要一个 400Hz 的时钟。

平台上共有 8 个数码管,最左侧的编号为 7,最右侧的编号为 0。由于实验平台上的管脚数量有限,我们对数码管的显示方式进行了一定的简化:在使能方面,仅使能由 AN[2:0] 所表示的二进制数对应的数码管;在显示的数字方面,直接显示 D[3:0] 对应的 16 进制数。例如,若 AN = 3'b010D = 4'b1010,则数码管在下标为 2 的数码管上显示字符 "A"。

Image title

1.2.4 LED

除了上面提到的数码管,我们还提供了 8 个 独立的 LED 灯供用户使用。

Image title

这些 LED 灯可被独立控制。当对应的 FPGA 管脚为高电平时 LED 点亮,为低电平时则熄灭,其原理图如下图所示:

Image title

方便起见,我们通常使用统一的 8bits 信号 led 控制这些 LED,led 信号的每一位与对应编号的 LED 管脚相连。例如当 led=8'b0101_0101 时,编号为偶数的 LED 灯便会亮起。

1.2.5 串口界面

界面右侧的黑色屏幕为串口显示区域。若烧写的程序使用了串口功能,在下方 input 框的输入将作为 FPGA 串口的输入,单击 input 后就会发送;同时,此界面也将接收串口的输出数据,并将其显示在显示屏上。

Image title

FPGA uart(ver 1.1)

FPGA 芯片上的两个 IO 端口直接与树莓派上的串口相连。如果在 FPGA 端编写程序,将 RXD 信号直接与 TXD 信号直连,然后在网页端的串口终端发送数据,便能够实时接收到从 FPGA 侧环回的数据了。串口通信的原理图如下:

Image title

目前的实验中我们不会使用到串口功能,关于串口通信的内容我们将在后面的实验中进行说明。


休息一会儿!

本部分内容到此结束,你理解了多少呢?

FPGAOL 是我们重要的硬件实验平台,大家可以在这里检验自己设计的最终正确性。当然,平台还有一些隐藏玩法期待你的发掘......

参考资料

加入我们

想要实际接触大型项目的学习与构建吗?想要参与 FPGAOL 平台的开发与维护吗?想要提升自己的技术能力,积累经验吗?想要和助教们一起吃喝玩乐吗? 快来加入我们吧!

如果你对于硬件实验教学、实验平台维护、在线文档编写、硬件设计等领域感兴趣,或是想参与实际的项目开发,欢迎访问这里加入我们!


最后更新: October 16, 2023

评论

Authors: wintermelon008