FPGAOL
注意
本小节的相关内容是基于 FPGAOL ZYNQ v2.0 版本编写的。我们也会根据平台的更新情况修改本教程的内容。大家也可以阅读平台的介绍手册了解相应内容。
注意
由于实验平台更新,vivado中创建项目时,需要选择的芯片型号变更为 xc7a35tfgg484-1,相应的,fpga平台应选择ZYNQ,约束文件应使用fpgaol_zynq.xdc。请大家注意!
1.1 简介
FPGAOL(FPGA Online)是中国科学技术大学计算机教学实验中心组织开发的、基于 Web 端的线上硬件实验平台。用户可以远程访问平台部署好的 FPGA(Nexys 4 DDR)集群,上传本地生成好的比特流文件,并交互地控制 FPGA,实时获得 FPGA 的输出。需要指出的是,该结果是基于 FPGA 实际运行而非仿真产生的,所以可以确保结果与线下操作 FPGA 开发板的结果相同。同时,由于线上设备具备出色的采样性能,平台能够精确发现人眼难以观察到的信号变化,从而为用户快速调试程序提供便利。
单击上面的链接后,用户即可进入登录界面。科大校内学生请选择统一身份认证登录。
登录完成后,我们将进入下图所示的操作界面。
操作界面上,最为常用的是便是设备请求功能了。由于硬件资源有限,平台采用了限时请求的方式满足各位同学的使用需要。每名同学一次可申请 20 分钟的节点使用资源,超过时间后资源将被自动释放,继续使用则需要重新申请资源。考虑到我们在 FPGAOL 平台上主要是进行功能验证,因此 20 分钟的使用限时并不会带来较大影响。
点击 acquire
后,平台便会自动分配一个可用节点,并返回使用链接。用户单击链接即可跳转到相应的操控界面。如果已经使用完成,可以点击 release
释放已申请的节点。
1.2 ★ 外设
外设,又称外部设备,是指连在计算机主机以外的硬件设备。外设对数据和信息起着传输、转送和存储的作用,是计算机系统中的重要组成部分。
我们的 FPGA 开发板也连接着一些外设资源。这些资源通过特定的端口与 FPGA 芯片连接,实现高效的数据传输。
申请好节点后,我们会进入下图所示的界面。这里是我们与外设直接交互的渠道,按照类别可以分为如下内容:按钮、开关、数码管、LED 灯以及串口。我们将一一进行介绍。
1.2.1 按钮
FPGAOL 平台提供了一个按钮。按钮按下时向 FPGA 芯片输入高电平信号,松开时输入低电平信号。默认情况下,按钮处于松开状态。
我们一般使用一个 1bit 位宽的信号 btn
代表按钮。因此,正常情况下 btn
的值为 0,当按钮按下时,btn
的值为 1。
Tips:虚拟的按钮
为了方便用户操作,这里的按钮实际上是虚拟的。用户在网页端按下按钮后,平台会产生相应的信号送入 FPGA,而不是按下对应开发板上真正的机械按钮。
1.2.2 开关
FPGAOL 提供了八个不同的拨码开关。当开关被拨上去时,对应的管脚输出高电平;开关被拨下来时,对应的管脚输出低电平。
其工作原理如下图所示:
我们一般使用一个 8bits 位宽的信号 sw
代表开关输入,其中 sw[i]
对应编号为 i 的开关。例如:下图状态下的开关对应 sw
的值为 8'b00100010。
1.2.3 七段数码管
七段数码管本质上是由 8 个 LED(发光二极管)构成,其中 7 个 LED 组成数字本身,1 个 LED 组成小数点。所有 LED 的阴极共同连接到一端并接地,而阳极分别由 FPGA 的 8 个输出管脚控制。当输出管脚为高电平时,对应的 LED 亮起。如下图所示,通过控制 8 个 LED 的亮灭情况,七段数码管便能显示出不同的字符,例如,当 A ∼ F 的 6 个 LED 亮起,而 G、DP 两个 LED 熄灭时,数码管显示的便是字符 "0"。
在有多个数码管的情况下,我们通常采用分时复用的方式轮流点亮每个数码管,并保证在同一时间只会有一个数码管被点亮。对于当前点亮的数码管,我们会只传输其应当显示的内容。分时复用的扫描显示利用了人眼的视觉暂留特性,如果公共端的控制信号刷新速度足够快,人眼就不会区分出 LED 的闪烁,从而认为这些数码管是同时点亮的。一般而言,我们建议数码管的扫描频率为 50Hz,也就是说,如果要驱动 8 个数码管,需要一个 400Hz 的时钟。
平台上共有 8 个数码管,最左侧的编号为 7,最右侧的编号为 0。由于实验平台上的管脚数量有限,我们对数码管的显示方式进行了一定的简化:在使能方面,仅使能由 AN[2:0]
所表示的二进制数对应的数码管;在显示的数字方面,直接显示 D[3:0]
对应的 16 进制数。例如,若 AN = 3'b010
,D = 4'b1010
,则数码管在下标为 2 的数码管上显示字符 "A"。
1.2.4 LED
除了上面提到的数码管,我们还提供了 8 个 独立的 LED 灯供用户使用。
这些 LED 灯可被独立控制。当对应的 FPGA 管脚为高电平时 LED 点亮,为低电平时则熄灭,其原理图如下图所示:
方便起见,我们通常使用统一的 8bits 信号 led
控制这些 LED,led
信号的每一位与对应编号的 LED 管脚相连。例如当 led=8'b0101_0101
时,编号为偶数的 LED 灯便会亮起。
1.2.5 串口界面
界面右侧的黑色屏幕为串口显示区域。若烧写的程序使用了串口功能,在下方 input
框的输入将作为 FPGA 串口的输入,单击 input
后就会发送;同时,此界面也将接收串口的输出数据,并将其显示在显示屏上。
FPGA 芯片上的两个 IO 端口直接与Zynq上的串口相连。如果在 FPGA 端编写程序,将 RXD 信号直接与 TXD 信号直连,然后在网页端的串口终端发送数据,便能够实时接收到从 FPGA 侧环回的数据了。串口通信的原理图如下:
目前的实验中我们不会使用到串口功能,关于串口通信的内容我们将在后面的实验中进行说明。
1.2.6 其他
除了上述外设,新版本的ZYNQ 2.0 还提供了帧缓冲显示器、鼠标、共享内存等,详细介绍见操作页面上的使用说明FPGAOL ZYNQ v2.0 manual。
休息一会儿!
本部分内容到此结束,你理解了多少呢?
FPGAOL 是我们重要的硬件实验平台,大家可以在这里检验自己设计的最终正确性。当然,平台还有一些隐藏玩法期待你的发掘......
参考资料
加入我们
想要实际接触大型项目的学习与构建吗?想要参与 FPGAOL 平台的开发与维护吗?想要提升自己的技术能力,积累经验吗?想要和助教们一起吃喝玩乐吗? 快来加入我们吧!
如果你对于硬件实验教学、实验平台维护、在线文档编写、硬件设计等领域感兴趣,或是想参与实际的项目开发,欢迎访问这里加入我们!