1. 引言
在不断加速推进的信息化时代背景下,为主动应对新一轮科技革命与产业变革,支撑服务创新驱动发展、“中国制造2025”等一系列国家战略,教育部于2017年2月以来积极推进新工科建设,并发布了开展新工科研究与实践等方面的指导性通知 [1] ,奋力探索形成领跑世界的中国模式型工程教育,助力科技强国战略。“新工科”(Emerging Engineering Education,简称3E) [2] 是为了适应工业4.0时代和互联网2.0新阶段的需求而进行的工科教育体系改革,针对包括人工智能、大数据、云计算、物联网、区块链、虚拟现实、智能驾驶等新兴学科与产业方向,目的在于培养具有跨学科合作能力、综合素质、实践导向和创新精神的复合型工科人才,以适应未来快速变化的科技和产业发展 [3] 。新型科技与产业对高校工科类学生在走向工作岗位前提出了新的要求,科技公司在发布招聘信息中已经将具备一定的软硬件开发基础作为衡量学生综合能力的一项关键指标,结合中国知网对硕士论文中关键词的信息统计,也可发现,FPGA、STM32、DSP、LabView等软硬件设计已经成为硕士研究生在完成课题研究、项目攻关等过程中的基本技能 [4] 。然而,由于高校在本科阶段的培养目标差异,只有少数院校在集成电路等专业本科生中开设有相关课程,普及面较窄,为此,本文以学校为光电类研究生开设的FPGA设计开发实验课为例,结合高校工科类研究生的专业基础特点,以开发案例的方式引入,探索理论 + 实践教学策略对新工科学生的培养效果。
2. 课程内容及难点剖析
FPGA (Field Programmable Gate Array)即“现场可编程门阵列”,是一种可以重复擦写的数字逻辑处理器。自20世纪90年代以来FPGA获得了突飞猛进的发展,随着大规模集成电路技术的发展,在数字系统中所扮演的角色也从逻辑胶合者提升到处理核心,已成为数字系统实现的主流平台之一。以FPGA为代表的高速数字处理器件,其高速、低功耗、可编程、易开发等特点使其在各种实时数字处理系统中发挥了非常重要的作用,已经广泛应用于高速信号采集、实时信息处理、大数据、人工智能等各种工程技术领域 [5] 。
2.1. 实验教学环境
课程依托Digilent公司Nexys 4开发套件,开发板如图1所示。Nexys 4是针对学生和初学者的一款高性能FPGA开发板 [6] ,板载Xilinx公司最新系列的Artix-7 FPGA芯片XC7A100T-1CSG324C。

Figure 1. The Digilent Nesys 4 development board of FPGA
图1. Digilent Nesys 4 FPGA开发板
Artix-7是7系列中低成本系列芯片采用了28 nm工艺,与上一代45 nm器件相比功耗降低了一半,面向成本敏感型应用,特别适用于消费类电子以及手持和便携设备。Artix-7 FPGA资源非常丰富,包括15,850个逻辑单元,4860 Kbits快速块RAM,6个时钟管理单元,240个DSP单元,片上集成模数转化器,片上资源如表1所示。同时,开发板集成了拨码开关、按钮、七段数码管等基本外设,USB、以太网口、VGA接口等常用外设,以及一些常用的扩展功能如温度传感器、加速度计、数字麦克风等,这样无需添加扩展模块直接利用Nexys 4开发板就能开发更广泛的应用,完全能满足初学者的学习要求。

Table 1. The list of resource on Artix-7 FPGA
表1. Artix-7 FPGA片上资源
实验基于赛灵思(Xilinx)公司的Vivado集成开发环境,采用Verilog硬件描述语言。Xilinx公司作为可编程器件(PLD)的领导厂商,占有超过50%的市场份额,为客户提供可编程逻辑芯片(CPLD、FPGA和PROM)、软件设计工具、不同等级的知识产权核(IP Core)以及系统级的完整软件解决方案。Vivado软件是Xilinx公司推出的FPGA集成开发环境,不仅包括逻辑设计所需的一切,还具有大量简便易用的内置式工具和向导,使得设计输入、功耗分析、时序驱动设计、HDL仿真等关键步骤变得容易而直观。Vivado具有界面友好、操作简单的特点,再加上Xilinx的FPGA芯片占有很大的市场,使其成为非常通用的FPGA工具软件。Verilog语言与C语言很相似,由于其语法简单,易于掌握,支持的EDA工具多,生态良好,因此获得广大工程师的青睐 [7] 。
2.2. 课程内容简介
FPGA设计开发主要包括侧重于硬件的电路设计和侧重于软件的编程实现两部分,针对前者,器件开发商通常提供成熟的设计实例,后者包括了逻辑设计、EDK嵌入式系统设计、System Generator DSP系统设计、IP核设计等 [8] ,是本实验课成设计的重点。针对硕士研究生在电子技术工程实践能力方面的培养需求,结合光电技术综合实验的实际情况,课程主要锻炼学生较为基础的FPGA逻辑编程实践能力,运用理论 + 实践的授课策略,着力解决学生“眼高手低”的学习现状。首先通过FPGA开发实例让学员熟悉Xilinx FPGA开发环境和基本设计流程,然后通过自选开发实验加深FPGA设计的理解,初步具备编程思想。
2.3. 课程实施重难点
通过调研发现,高校在光电工程专业学生的培养体系中多数会开设电子电路类相关课程,该门课融合了电路分析基础、模拟电路和数字电路等相关课程内容,因此该专业学生在研究生阶段通常具备相对薄弱的数字电路分析基础,而FPGA开发是一种建立在数字电路基础上的编程工具。因而,针对光电类研究生开设的FPGA设计开发实验课在实施过程中具有以下难点:1) 未系统学习相关编程语言,同样未接触过FPGA软件开发工具;2) 学生的电路分析能力相对薄弱,难以看懂复杂的开发板电路;3) FPGA程序的算法实现具有并行执行特点,与本科阶段学习的顺序执行语言在实现过程中具有非常大的区别;4) FPGA程序与数字电路之间具有紧密的联系,学会FPGA开发需要掌握软硬件之间的映射关系。鉴于此,本实验课的重点在于重实践而弱理论,让学生通过实验锻炼初步掌握FPGA高速数字设计的基础知识和基本技能,为以后的课题研究和工程应用奠定基础。
3. FPGA实验课程设计方案
3.1. 课程结构设计
针对光电类学生的专业基础现状和FPGA设计开发实验课的难点,设计了如图2所示的课程结构,包括了复现开发示例、自主开发实验和结题考试三个环节。

Figure 2. The scheme design of FPGA experiment course
图2. FPGA实验课课程结构设计
示例复现部分要求学生自学Verilog语言,并将给定的代码按照讲义要求输入开发软件,并进行示例演示,该部分分布在2次课6个课时,在成绩评定中占20%的分值。自主开发实验是本实验课程的重点,包含若干个不同难度系数的课程实践题目,学生自主选题并利用12课时完成实验,在实验的最后一次课,学生对实验内容进行现场演示,同时简要介绍设计过程和设计思路,并撰写实验报告,在最终成绩评定中占比50%。最后则是结课考核部分,采用在规定时间内开卷机考的方式,在成绩评定中占30%的分值。
3.2. 课程内容设计
课程开发实例部分提供了完整的数码管点亮例程,其中也包括了工程建立、综合实现、下载调试等完整的软件操作流程,以图片加文字描述的方式逐步讲解操作步骤,让学生做一遍就会学一遍就懂,通过练习详细地了解设计输入、综合、实现、下载和调试的FPGA开发流程,最终实现在开发板的七段数码管滚动显示“HELLO FPGA”字样。
自主开发部分是课程的主要构成部分,由设定的12组难度不同的趣味开发小案例组成,要求学生根据自身水平和兴趣爱好,自由选择其中一个设计内容,难度系数较高的题目可由多个学生自发组成一个团队共同完成。自主开发实验在设定上兼顾考虑学生的不同专业知识基础,有可以通过脉冲宽度波形调制的三色LED彩灯点亮实验(如图3),也有能够体现FPGA模块化并行编程思想的数字秒表和数字时钟实验,还有具有较高复杂度的小球碰壁反弹趣味游戏实验(如图4)。该部分不拘泥限定实现过程与实现方式,学生可以参考相关书籍或者检索网络资源,也可以组队进行讨论并分工实现。

Figure 3. The experiment of lighting tri-color LED
图3. 三色LED彩灯点亮实验

Figure 4. The experiment of ball game bouncing against walls
图4. 小球碰壁反弹趣味游戏实验
3.3. 课程难点的解决方案
该课程的难点在于短时间内要求学生掌握理论结合实践的软硬件编程能力,且需要转换编程思想,因此在设计课程结构和课程内容时,需要二者兼而有之且突出重点。针对Verilog语法与Vavido语法的问题,学生在逐步复现开发示例的过程中即可逐渐掌握,并且提供了参考书目 [9] ,边做边学。另外,在每次课前半段,围绕Xilinx的FPGA芯片介绍、开发板资源简介、开发环境搭建、编程语言讲解与常用输入/输出设备浅析等部分组织理论讲解,结合开发板电路原理图与示例程序的核心部分,由浅入深加强学生对FPGA开发理论的理解,每次课讲解时间控制在30分钟内,留给学生大量的自主开发时间,并及时协助学生解决在开发过程中遇到的问题。
3.4. 课程考核方式
课程的重点在于动手实践,因而考核不设置理论考试内容,结课考核采用开卷上机考试的方式,在规定时间内完成简单开发实例并进行演示验证,比如跑马灯、表决器等,目的在于考察学生独立自主开发的能力以及并行编程思想的锻炼。
4. 结束语
为了适应新工科建设要求,学生在走向工作岗位前应当具备跨学科合作和实践创新等综合能力。FPGA课是工科学生非常重要的一门专业课,FGPA编程已经成为了硕士研究生在完成工程项目、课题研究和就职就业方面的一项基本技能,针对光电类研究生电路基础相对薄弱的特点,文章探索了理论 + 实践的FPGA实验课培养授课模式,理论授课涵盖数字电路分析、芯片与开发板介绍、重点语法与示例程序讲解等部分,可以让学生较好地掌握FPGA的设计方法与开发思路,而动手实践则采用开放的形式,让学生独立自主开发实现案例,加强其对理论知识的掌握,强化模块化、系统性并行编程思想的锤炼,通过理论联系实践,让学生深刻理解程序设计与硬件实现之间的对应关系,极大地提升其动手能力。实践发现,所有的学生在通过完整的学习后都可以较好地掌握FPGA设计基础,独立完成开放案例,少数学生利用课上课下的时间,能够较好地完成复杂的小球碰壁游戏实验,具备了较高的编程能力。
NOTES
*通讯作者Email: wanglinshanda@163.com