(北京航空航天大学 计算机学院,北京 100191)
在高校人才培养中,实验教学是不可或缺的重要教学环节之一,是培养学生创新意识、深化理论知识理解、形成专业工程素养、提升实践动手能力的重要途径[1]。
近年来随着科学技术的进步以及人工智能的普及,数字信号处理已经变得尤为重要。尤其以FPGA(Field Programmable Gate Array,现场可编程门阵列)为核心的数字信号处理电路,在不同的领域都发挥着重要的作用[2-3]。高校计算机专业的硬件类课程一般包括数字逻辑、计算机组成原理、计算机接口与通信、计算机体系结构、嵌入式系统等课程,这些课程都有配套的实验环节。为了将多门课程的知识点衔接贯通起来,现在国内外不少高校,都开发了基于FPGA的硬件实验平台。一方面,使实验平台具有通用性,能够将硬件类课程贯通,实现课程之间互用;另一方面,使各课程之间在实验项目的设计上具有延续性,能体现出课程之间的衔接[4]。然而,FPGA实验教学通常只能在实验室里开展,受实验时间、实验场地、设备数量和实验形式等的限制,实验教学的灵活性不足,实验的延续性得不到保证,硬件设备利用率不高。因此,迫切需要一种新型实验教学模式,使得学生可以“随时、随地”开展实验,同时使昂贵的实验设备能够被充分利用,最大程度地发挥硬件设备的价值。
近几年来,以开放性、互动性、个性化为特征的大规模开放在线课程(Massive Open Online Course,MOOC)在国内外得到快速发展,并引发了全球教育界对传统教育模式的反思和变革。但是,现有的MOOC平台提供的开放课程大多为理论课程,而涉及真实实验操作的实验类课程还很少。研究MOOC环境下开放共享的实验教学的解决方法,不仅对于实验教学本身在教育模式变革中的发展有重要的意义,对于辅助线上理论课程的教学也有着非常重要的作用[5]。
为此,一些高校和科研机构开始探索:如何将真实的硬件设备联入网络,同时利用MOOC的巨大优势,为广大学习者提供一个可以随时随地进行实验的开放式、真实的实验环境,从而实现真正的在线实验教学。近几年来,人们开发研制出各种FPGA在线实验系统[4,6-14],建立了FPGA远程实验室,使得FPGA在线实验成为可能,从而有效克服实验教学受场地和时间约束的缺陷,激励学生自主学习和自主研究。
然而,现有的FPGA在线实验平台通常只提供按键和拨码开关等常规的输入设备以及LED和数码管等常规的输出设备。由于结构和技术的局限性,并没有提供键盘鼠标接口和VGA(Video Graphics Array,视频图像阵列)接口,也没有考虑对键盘鼠标接口和VGA显示在线实验的支持。学生无法开展使用鼠标或键盘进行实验操作的在线实验,无法实时观看VGA显示,也就无法通过在线实验掌握键盘鼠标接口标准和VGA显示器标准的工作原理和设计方法;同时,这在很大程度上限制了在线实验项目的种类,降低了实验教学的多样性和趣味性。
北京航空航天大学计算机学院自2014年以来,以“任何人、任何时间、任何地点、多种设备”开展实践性学习为目标,积极探索MOOC在线教育在实验教学中的应用新模式,为学生提供不受时空限制的在线实验环境,自主研发了“基于FPGA的硬件类课程在线实验平台”(简称FPGA在线实验平台)。该平台支持以FPGA为核心的多门硬件类课程在线实验,能够提供实验目标文件的远程下载、硬件设备远程操控、实验设计在线调试、实验结果实时反馈和自动评测等功能。并在北航学堂上建设了《计算机组成实验》、《计算机EDA设计》等MOOC课程,将FPGA在线实验平台嵌入其中,使得学生可以随时随地进行在线实验,从而突破了传统硬件类实验课程在时间、空间和形式上的限制,将实验教学场所从象牙塔尖延伸到学生宿舍、图书馆乃至地球上网络能访问的任一地点。
FPGA在线实验平台的整体架构如图1所示。
图1 FPGA在线实验平台整体架构
整个平台由硬件系统和软件系统两部分组成。其中,硬件系统主要包括上位机和FPGA板。
上位机采用M58工控板,M58采用Intel低功耗Atom系列处理器。上位机主要有3个功能:① 接收实验者在客户端上传的目标文件;② 接收实验者在客户端发送的指令;③ 接收FPGA板上的LED、数码管等输出设备的信号状态。
FPGA板是实验的硬件载体,它包括实验FPGA和主控FPGA(分别采用Xilinx公司的Spartan6系列FPGA芯片XC6SLX100-2FGG676C和XC6SLX16-2FTG256C),还有输入设备(通用按键开关,拨码开关)和输出设备(LED,7段数码管),以及一些外设接口(如UART串口,VGA接口,PS/2接口,蜂鸣器等)。每个实验所生成的编程目标文件都下载到实验FPGA中运行。主控FPGA是上位机与实验FPGA之间的桥梁,一方面,模拟输入设备产生实际激励信号发送至实验FPGA;另一方面,实时采集FPGA板上所有输出设备和外设接口输出的信号,并传送至上位机。
软件系统提供在线实验服务和设备控制管理功能,包括在线实验管理系统和上位机控制软件。在线实验管理系统部署在MOOC服务器上,上位机控制软件部署于上位机中,它们协同完成实验者在MOOC平台上对实验设备的远端操控。
实验者所使用的终端称为用户前端。用户前端采用SaaS(Software-as-a-service,软件即服务)的软件应用模式,用户(实验者)无需安装客户端软件,即可通过Web界面使用在线实验管理系统。
2.1.1 键盘和鼠标接口简介
键盘和鼠标是实现人机交互的重要输入设备。键盘、鼠标的接口形式因主机而异,过去的计算机都采用PS/2接口,而现在的PC机、笔记本电脑大多已用USB接口替代了PS/2接口,目前普遍使用USB接口的键盘鼠标。但是,仍有一部分PS/2接口的设备在使用,尤其是在军用加固设备领域,可长距离传输数据的优势使得PS/2接口广泛应用于军用加固计算机、服务器等设备。
此外,由于PS/2通信协议简单、容易理解和实现,所以特别适于作为教学内容学习和掌握;而USB通信协议相对要复杂得多,并不适合开展教学。故在FPGA实验中,PS/2键盘鼠标接口实验常常被作为一类实验项目,通过此类实验,使学生了解双向同步串行通信协议的一般原理,进而掌握其设计方法。
PS/2通信协议是一种双向同步串行通信协议。PS/2键盘/鼠标可以发送数据到主机,而主机也可以发送数据到PS/2键盘/鼠标。主机一般指与PS/2设备相连的计算机。本文中,主机即实验FPGA,实验者将电路的目标文件下载到实验FPGA中,从而产生实验的控制逻辑。
2.1.2 键盘鼠标接口在线实验方法主要思路
为了利用客户端的通用键盘或鼠标(不限于PS/2键盘或鼠标)进行在线实验操作,笔者提出一种远程控制方法,实现基于FPGA在线实验平台的PS/2键盘鼠标接口在线实验。
简单来说,通用键盘或鼠标产生的数据经历了用户前端—服务器—上位机—主控FPGA—实验FPGA的通信过程,其中涉及了相应的编码转换和解码。该方法的基本思路如下:
(1) 用户前端捕获键盘事件或鼠标事件并进行编码转换。
实验者操作与终端相连的通用键盘或鼠标进行实验,用户前端实时捕捉键盘事件或鼠标事件,并进行编码转换,得到相应的PS/2键盘数据或PS/2鼠标数据(统称为PS/2数据)。
(2) 用户前端将PS/2数据打包后经服务器发送给上位机。
用户前端根据服务器与上位机之间的通信协议,对PS/2数据按照约定的格式打包得到PS/2数据包,并将PS/2数据包通过Websocket发送给MOOC服务器;MOOC服务器再转发给上位机。
(3) 上位机解析PS/2数据包,将PS/2数据发送给主控FPGA。
上位机接收到PS/2数据包后,根据预设通信协议对PS/2数据包进行解析,得到PS/2数据,并将PS/2数据通过串口发送给主控FPGA。
(4) 主控FPGA将PS/2键盘数据或鼠标数据发送给实验FPGA。
主控FPGA中的键盘接口控制模块和鼠标接口控制模块对PS/2数据进行识别,区分其到底是键盘数据还是鼠标数据,然后将相应的数据通过模拟PS/2键盘接口和PS/2鼠标接口的4个特定引脚(PS/2键盘的数据线和时钟线、PS/2鼠标的数据线和时钟线)分别发送至实验FPGA相应的4个特定引脚,从而使下载到实验FPGA中的目标文件产生相应的输出,完成实验。
2.2.1 VGA显示原理介绍
VGA是IBM在1987年推出的一种视频传输标准,其具有分辨率高、显示速率快、颜色丰富等优点,在彩色显示器领域得到了广泛的应用。VGA标准一直沿用至今,现在的液晶显示器也都兼容VGA标准。
采用VGA标准的显示器通过VGA接口与计算机内部的显卡相连。VGA接口通常为D形三排15针接口。显示器只接受模拟信号输入,其中最重要的信号包含R、G、B(红、绿、蓝)三原色信号和HSYNC(行同步信号)、VSYNC(场同步信号)控制信号。
VGA是一种使用模拟信号的视频传输标准,颜色信号R、G、B均为模拟信号,用红、绿、蓝这3种颜色可以随意配出自然界中的大部分颜色,因此采用VGA标准能够提供绚丽多彩的颜色。但在某些应用场合,并不需要显示彩色高分辨率的图像,如超市、车站、机场等公共场所的广告宣传和提示信息显示,工厂车间生产过程中的操作信息显示等。这时可以简单地采用数字量代替模拟量作为颜色信号R、G、B,则能够显示的最大颜色数只有23=8色,但8种颜色足矣。故在一些嵌入式系统中,广泛采用VGA进行图像显示,可以使得系统结构简单,降低成本,易于设计。
FPGA拥有丰富的硬件资源,可重配置能力强,保密性好,是嵌入式设计的主流平台之一[15]。故在嵌入式系统中,人们基于FPGA设计出各种图像采集与VGA显示系统[16],甚至是视频采集、实时视频跟踪系统[17]等。其中一个关键部分是设计VGA显示接口控制电路,产生相应的RGB信号和控制信号,然后通过VGA接口将这些信号传输到显示设备中,从而使显示器显示各种图像。在FPGA教学中,VGA显示接口控制电路设计往往是必不可少的重要内容之一。
2.2.2 VGA显示在线实验方法主要思路
在线下实验中,实验者可以通过VGA线缆直接将一个VGA显示器与FPGA板上的VGA接口相连,从而显示图像。但是,做在线实验时,实验者是无法看到远程VGA显示器上的画面的;而且,VGA显示器的输出信号并不是简单的电平或脉冲信号,而是具有一定时序关系的多个信号,数据量巨大,直接传输根本无法保证实时性。因此,需要考虑如何将VGA显示器的画面实时回传给客户端,借用实验者的显示器复现实验产生的图像画面。
为此,提出一种VGA远程显示控制方法,实现VGA信号采集和压缩、本地分发推流以及在线实时播放。VGA信号的转换和传送过程如图 2所示。
图2 VGA信号的转换和传送过程
该方法的关键是采用VGA2USB视频采集卡将VGA模拟信号转换为压缩的视频流,再通过网络进行传送。VGA2USB视频采集卡是外置VGA信号采集盒,它能够实时捕获计算机或嵌入式系统输出的VGA模拟信号;并将其转换成数字信号;再编码成视频流,通过USB2.0接口回传到计算机或嵌入式系统中。
VGA信号的转换和传送过程具体如下:
(1) VGA2USB视频采集卡对FPGA板输出的VGA模拟信号进行实时采集、压缩,转换成flv(FlashVideo)格式的视频流。
flv是现在非常流行的流媒体格式,由于其视频文件体积轻巧、封装播放简单等特点,使其很适合在网络上应用;此外,由于当前浏览器与Flash Player紧密结合,使得网页播放flv视频轻而易举,这也是flv流行的原因之一。flv视频格式是Adobe公司设计开发的,目前已经免费开放。
flv格式文件是一个二进制文件,包括文件头(Flv Header)和文件体(Flv Body)两部分,其中文件体由一系列的Tag及Tag Size对组成。Tag又可以分成3类:audio、video、script,分别代表音频流、视频流和脚本流(关键字或者文件信息之类)。
(2) 通过视频采集卡与上位机相连的USB线将flv视频流传送到上位机,上位机上运行的FFmpeg推流器接收视频流数据。
实时流媒体编码工具FFmpeg是一套可以用来记录、转换数字音频、视频,并将其转化为流的开源计算机程序。它提供了录制、转换以及流化音视频的完整解决方案。FFmpeg从视频采集卡处获取视频流数据,并设置相关参数(VGA2USB采集卡的设备ID,SRS服务器IP地址,上位机的ID)。
(3) FFmpeg推流器将视频数据以RTMP(Real Time Messaging Protocol,实时消息协议)流的形式推送到SRS(Simple-RTMP-Server)流媒体服务器端;SRS服务器搜集来自多个上位机推送的视频流,并根据用户请求提供正确的视频流供用户访问。
RTMP是一种进行实时数据通信的网络协议,主要用来在Flash/AIR(Adobe Integrated Runtime,Adobe集成运行环境)平台与支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。
RTMP协议规定,播放一个流媒体有两个步骤:① 建立一个网络连接(NetConnection);② 建立一个网络流(NetStream)。其中,网络连接代表服务器端应用程序和客户端之间基础的连通关系。网络流代表发送多媒体数据的通道。服务器与客户端之间只能建立一个网络连接,但是基于该连接可以创建很多网络流。
播放一个RTMP协议的流媒体具体需要以下几个环节:握手、建立连接、建立流、播放。RTMP连接都是以握手作为开始的。建立连接阶段用于建立客户端与服务器之间的“网络连接”;建立流阶段则用于建立客户端与服务器之间的“网络流”;播放阶段用于传输视音频数据。
(4) 当目标文件烧录到FPGA中后,实验者单击客户端实验界面上方的“VGA显示”按钮,实验界面将弹出一个显示器窗口,显示实验者所设计的VGA画面。
最终,客户端通过Internet访问流媒体服务器,使用基于Flash技术的播放器(如Adobe Flash Player)即可实时播放视频,从而实现FPGA在线实验平台的远程VGA显示。
基于FPGA在线实验平台可以支持多门课程。目前,FPGA在线实验平台配置了40套设备(系统规模还可以根据需要随时扩充),在各门课程运行期间,能够7×24 h为学生提供在线实验服务,部分实验环节还可通过互联网面向全球开放运行,以实现优质实验教学资源的开放共享。平台已多轮次在笔者所在学校的《计算机组成实验》、《计算机EDA设计》和《数字系统设计》课程中使用,实现了多门硬件课程的在线实验教学,与课内实验起到了很好的互补作用,形成了一种线下实验和线上实验相结合的实验教学新模式。
笔者开发了对抗性弹球游戏在线实验,该实验项目在《数字系统设计》课程中被作为大作业选题使用。学生在离开实验室后,在任何时候,可以在宿舍、图书馆或者有网络的任何地方,通过连接于终端上的通用键盘和鼠标,操纵显示在实验界面中的游戏界面上的挡板,远程进行实验,来验证设计的正确性,从而保证了实验的连贯性,显著提高了学生的学习效率。
为了验证所提出方法的有效性,结合对抗性弹球游戏在线实验,对在线实验平台的性能进行了测试。测试环境配置如表1所示。
表1 测试环境详细配置
使用JavaScript语言在Visual Studio Code平台上编写脚本,捕捉实验者的键盘/鼠标被触发的时间点以及客户端实验界面收到SRS服务器传回的视频图像的时间点。通过多次测试可以发现,从按下键盘/鼠标至实验界面的VGA画面发生响应的时间,即全过程时延,平均低于700 ms。
分析可知,当实验者希望通过键盘/鼠标控制游戏画面中的挡板,在键盘或鼠标按下时,键盘或鼠标产生的数据经历了用户前端—MOOC服务器—上位机—主控FPGA—实验FPGA的通信过程。由于字符指令所占带宽较小,故该传输过程对带宽没有限制,时延为毫秒级。
由于实验者的“对抗性弹球游戏在线实验”目标文件已经远程上传、下载到实验FPGA中,所以该目标文件会自动运行,产生预定的逻辑,随时响应键盘/鼠标操作,使游戏画面中的挡板上移或下移。则实验FPGA产生的VGA信号经历了实验FPGA—VGA2USB采集卡—上位机/FFmpeg推流器—SRS服务器—用户前端的通信过程。
上述数据回传过程的主要时延在于VGA2USB进行编码的过程,即由VGA信号转换为flv格式视频流的过程。最终,小巧的flv格式视频流传输到SRS服务器,服务器再传送给客户端界面进行播放。实验者只需单击客户端实验界面上方的“VGA显示”按钮,实验界面将弹出一个显示器窗口,刷新显示实验者所设计的VGA画面。
实验平台使用的VGA2USB采集卡为科伍KW520采集卡,其最大采样率为230 Mpixels/s。若适应640×480的视频模式,根据其官方数据,其刷新率在典型应用下为10次/s;而在640×480的分辨率下,WinXP的刷新率(每秒钟填充图像的帧数)为28.0 f/s,因此可以实现实时刷新。故整体时延在在线实验的过程中是可以接受的。
学生在完成“对抗性弹球游戏在线实验”时,充分发挥其想象力,对设计进行优化、改进和创新,有效提升了其系统设计能力和自主设计能力,培养了创新精神,取得了很好的教学效果。
由于在线实验打破时空限制,学生开展实验的方式更加灵活,投入实验的时间明显增加,实验学习效果有显著提升。
采用一体化设计的FPGA在线实验平台,保证了线上实验和线下实验的实验设备的一致性,能够显著提高学生的学习效率;平台同时具有一台多用、输入设备和输出设备丰富、普适性强等特点。所提出的实现键盘鼠标接口在线实验和VGA实时显示的远程控制方法,扩展了现有FPGA在线实验平台的功能,极大地丰富了实验的种类,增加了实验的趣味性。
笔者开发的在线实验平台和在线实验方法已被应用于实际教学中,并取得了很好的教学效果。实践表明,借助于这个平台,学生可以开发更多有趣的游戏或者复杂的系统,从而进一步激发学习兴趣,有利于学生开展自主学习、自主设计和创新。