论文部分内容阅读
摘要:针对FPGA课程的特点,结合初学者没有基础的实际情况,阐述了FPGA入门级教材内容的设置原则和教学方法,进行了FPGA课程教材内容设置的探索与实践,使初学者能够轻松入门、快速领悟。教材的内容由浅入深、循序渐进和发散式渗透不仅适合高校教学使用,同时适合FPGA初学者自学。FPGA教材的改革已经应用于电子信息工程专业的教学中,并取得了一定的经验和良好的成效。
关键词:FPGA教学;FPGA教材;Verilog HDL;数字系统设计;电子设计自动化
中图分类号:G642.0 文献标识码:A 文章编号:1007-0079(2014)21-0113-02
FPGA(Field-Programmable Gate Array)即现场可编程门阵列,一种半定制的集成电路,主要用在航空航天等高端领域中。随着技术的进步和成本的降低,FPGA性价比越来越高、集成度越来越大,可编程性能方面呈现出快速构建系统(System-In-Weeks)的优势,逐步渗透至计算机、通信、控制、消费电子和汽车电子等民用领域中。尤其是在数据通信、无线通信、先进消费电子领域,FPGA更是已经取代了一些处理器,成为新一代的系统级的硬件开发平台,各高校也纷纷开设了FPGA课程。FPGA教学是电子信息类专业设置的必修课程之一,引导学生迅速掌握这门技术的方法和入门手段是高等学校需要研究的课题。FPGA的阵列式硬件特性和语言并行特性与传统的微机原理以及高级语言的思想是完全不同的,因此,需要科学的引导方式使学生进入FPGA的世界中。教材就是必备的手段之一,采用合适的教材是实现良好教学效果的基础。
一、现有教材的内容安排对比
从应用过程来看,市场上FPGA教材一般具有以下共性问题:
第一,冗余度高,有用知识点少。多数教材在讲述FPGA开发时,均从基本的Verilog HDL(或者是VHDL)语法讲起,当语法结束后再讲述相关的设计。实际上,语法内容在先修课程中已经完全(或者大部分)修读过,不用再学一遍类似或完全相同的内容。
第二,教材内容按照固定的顺序写,先语法,后基本组合电路设计,再基本时序设计等,不符合学生学习的规律,应该按照硬件描述语言所能表达的电路形式去讲解,而不局限于数字电路的知识点。
第三,部分教材动手实验的内容过于简单,且不具有实际应用价值。如一些自动售票器之类的实验。
第四,很多教材一开始给出了EDA领域中的很多新名词、新概念,让初学者陷入抽象的名词堆中,不能理解其内涵,不利于学习入门等。
由于这些原因限制了教师教学的主观能动性和学生学习的引导性,提出了一套新的教材教学内容的规划方法。
二、新教材的内容规划
教材内容应根据现有的培养方案结构和先修课程的关系有效地进行内容的选择,去冗留精,根据学生所能掌握知识的自然过程循序渐进并有机地结合工程应用等方面,才能达到学生学习上的“水到渠成”及学以致用的效果。
第一,合理规划培养方案中的教学内容大纲,去除已经学习过或者不需要讲述的内容。以教材中的HDL为例,现在很多高校电子信息类专业均以Verilog HDL为语言部分教学内容,Verilog HDL语言源自于C语言,C语言中的大部分語法和语句可以直接用于Verilog HDL中,这样语言部分就不需要单独花很多时间去讲授,只有部分语句和语法需要单独补充。例如块语句“begin end”、拼接符“{}”和缩位运算符等。条件语句和c语言中的语法也不尽相同,只需要指出不同点即可。在很多计算机类的专业中,HDL部分讲授的是VHDL语言。VHDL语言源自于PACAL,部分和PACAL语法相同,例如变量的赋值等可以省略。尤其是VHDL语言,语法内容较多,如果去除和PACAL语言相同的部分,可以省略很多课时用来讲解其他更为重要的知识点,有利于提高教学效果。
第二,遵循学习规律,教材内容应循序渐进给出新知识点。以学生为主体,强调“学习者取向”。[1]教学内容的安排应从最简单的数字电路设计和已经掌握的基本的语言语法开始,让初学者不知不觉中掌握了一种新技术,利用所学过的数字电路知识和C语言类似的基本Verilog语句就能实现。然后在此基础之上安排一些新的电路设计点和介入Verilog HDL语法。例如,在讲述半加器电路设计时可以采用数字电路中的设计方式,使用两个门(与门和或门)就可以实现半加器的设计。然后分析电路的行为,完全可以使用拼接符去实现,并重点从功能角度讲述。即:两个一位数相加,结果最多为两位,结果中高位即为进位位,低位则为和输出位。语法实现为assign {co,s}=a+b,一方面引入了新的语法(拼接符{}),另一方面从“行为”角度讲述了半加器的工作,避开了数字电路中的化简过程,且符合学生思考解决问题的思路,课堂教学效果很好。
第三,教学内容应尽可能结合应用或者结合应用的构成部分。FPGA是一项实用技术,在小的电路设计系统中经常作为外设的译码电路,可以结合多路译码器电路进行设计应用,在实验过程中尽可能采用此类内容作为实验;在较大型的设计中可能会涉及到DSP算法或者复杂的通信协议,结合学生已经掌握的知识点设计一些内容进行讲授。如:奇偶校验,在串行口的通信中校验是基本的功能之一,在Verilog HDL中使用一条简单的语句“assign P= ^D;”就可以实现。一方面实现了使用逻辑门电路很难实现的算法,另一方面也增加了新语法(“^”为缩位异或运算)的应用。再如:并串转换和串并转换,是现在串行通信中几乎不可缺少的组成部分,大多数教材讲述的方法不具有实用价值,应该结合应用时的通信握手,增加部分控制信号,使讲述的内容能够直接应用到系统中。
第四,入门知识点要尽可能简单,最好使用所学知识引导进入新的知识点,然后扩展至知识面,最后达到全面掌握本课程全部知识点的范畴。现有教学内容的入门教学方式不符合思维方式,它采用的方法为从抽象化到具体化的安排过程。现有的教材内容一般在第一章介绍EDA技术领域的一些新概念,发展过程和扩展至系统级中的一些内容,例如IP的概念、固核硬核软核等。这些内容在基础类教学中往往不会涉及,有些即使涉及了,学生也不明白和前面的概念之间的联系,不利于教学的开展。按照常规的思维方式,教学的入门可以从一个熟悉的知识点入手,进而辐射至其他的新知识点、新概念。在教学内容安排上,可以从与门电路设计开始,然后引入两个门电路同时实现,并给出HDL并行执行的概念,有利于重点突出HDL的特点,激发学生学习FPGA的积极性。 第五,简化逻辑产生过程,注重输入输出之间的行为关系。部分FPGA教学内容安排在数字电路设计之后。受数字电路设计思想的影响,很多学生认为HDL仅仅是用于描述门级电路的,而实际上HDL能够从更高的系统级角度描述电路行为。以N位全加器为例,不需要知道内部电路构成的细节,从行为级角度就可以直接描述出电路。再如:在教学内容的后期设计一个简单的CPU。CPU是复杂数字电路的代表,通过CPU的设计一方面可以使学生掌握CPU的基本原理和设计方法,另一方面可以让学生们了解,即使再复杂的电路都可以使用HDL描述,让学生们有系统级的概念,为今后进行更加复杂的系统设计打下思想基础。
6.语言方面要推陈出新,更新语言标准,注重实际综合效果
硬件描述语言是FPGA硬件电路设计的重要组成部分。以Verilog为例,市面上早期的教材均是以IEEE1364-1995为标准编写,而现在最新的Verilog标准为IEEE1364-2002。大多数教材仍然沿用IEEE1364-1995語法,这是不利于学习的。以存储器设计为例,旧标准中存储器空间的位初值无法直接给出,必须通过向量中间变量来实现,过程繁琐,不符合系统及描述的特点。而在新标准中,语法上可以直接实现对存储器空间的某个位进行操作,简化了设计过程和设计理念。再如:在向量的部分选择问题上,旧标准不能采用正向偏移或者反向偏移的方式实现部分向量的操作,不利于电路行为设计;而在新标准中,不仅能实现偏移,还可以动态更改索引表达式,使代码的编写更为灵活,更符合学习者的编写代码思维方式。
7.仿真要与物理综合结果相结合
从物理意义上讲解,注重设计综合细节的说明。EDA仿真工具一般有专用仿真工具和厂家软件自带的仿真工具两类。专业的仿真工具,如modelsim,严格遵守Verilog HDL仿真语法要求;而厂家的仿真一般会结合综合效果,不完全符合HDL语言本身的要求。例如,若有always@(a)c=a&b;在modelsim中进行仿真结果和QuartusII中的仿真结果不同。在modelsim中,若b信号发生了变化,仿真结果不会出现变化,而在QuartusII中若b变化了,c输出也会跟着变化的(规律是与门的规律)。从语法角度上讲,若b信号变化,但它不在敏感信号列表里,所以不会触发always块,因此modelsim仿真结果不变;而QuartuII认为,这个代码就是用来描述一组合电路-与门的,它会按照与门的输入输出关系变化仿真结果,实际教学中应注意两者仿真的不同,并对学生进行科学的解释。当然,教学过程中应尽可能引导学生把这类代码写成完整的形式:always@(a ,b)c=a&b,避免出现不必要的错误结果。
8.注意与其他相关课程的衔接
FPGA是硬件教学内容,与其他如单片机、ARM、微机原理与接口技术等课程会有一定的交叉和连接。
9.注重编程风格和编程思想
教材内容的附录部分增加了代码编写的常用习惯和可综合风格的书写,有利于培养学生良好的书写习惯,为语法检查和功能检查提供方便,为进一步编写大规模的代码奠定良好基础。
三、教学效果
通过优化教材内容、改革教学方法与教学手段,FPGA课程教学改革取得了较大的成效。具体表现为:第一,教材注重学生基础,以往基础差的学生也能入门,学生自主学习的兴趣浓厚。第二,教学内容的安排更加合理,结构更加完整,教师和学生使用更加方面,无需辅助参考书。第三,课程的教材注重实验环节,实验内容与理论知识结合紧密,学生的实验能力得到了进一步的提高,大部分学生能够独立完成基本实验,部分学生能自主完成部分创新实验项目。第四,教材从学生基础出发,符合学生实际,教学效果良好,学生的期末成绩取得了大幅度提高。第五,学生充分肯定了教师的教学水平,教学评估成绩优秀。
四、教材后续内容的完善和调整
本课程在大三上学期开设,侧重入门和基础教学。若学生在学习完本教材后需要继续在FPGA方向上深入学习,教师应结合学生所学和嵌入式方向的需要,讲授一些关于qsys和sopc的相关内容;若数字信号处理的内容已修,还可以结合dspbuilder等进行高层次的讲解教学;可以结合altium designer等对8051类的单片机软核进行完善修改,达到全面培养学生的FPGA系统设计和应用能力的目的。
参考文献:
[1]李旭琼,段吉海,韦保林.应用型本科模拟电子技术教材的建设与改革探索[J].中国电力教育,2014,(2).
(责任编辑:王祝萍)
关键词:FPGA教学;FPGA教材;Verilog HDL;数字系统设计;电子设计自动化
中图分类号:G642.0 文献标识码:A 文章编号:1007-0079(2014)21-0113-02
FPGA(Field-Programmable Gate Array)即现场可编程门阵列,一种半定制的集成电路,主要用在航空航天等高端领域中。随着技术的进步和成本的降低,FPGA性价比越来越高、集成度越来越大,可编程性能方面呈现出快速构建系统(System-In-Weeks)的优势,逐步渗透至计算机、通信、控制、消费电子和汽车电子等民用领域中。尤其是在数据通信、无线通信、先进消费电子领域,FPGA更是已经取代了一些处理器,成为新一代的系统级的硬件开发平台,各高校也纷纷开设了FPGA课程。FPGA教学是电子信息类专业设置的必修课程之一,引导学生迅速掌握这门技术的方法和入门手段是高等学校需要研究的课题。FPGA的阵列式硬件特性和语言并行特性与传统的微机原理以及高级语言的思想是完全不同的,因此,需要科学的引导方式使学生进入FPGA的世界中。教材就是必备的手段之一,采用合适的教材是实现良好教学效果的基础。
一、现有教材的内容安排对比
从应用过程来看,市场上FPGA教材一般具有以下共性问题:
第一,冗余度高,有用知识点少。多数教材在讲述FPGA开发时,均从基本的Verilog HDL(或者是VHDL)语法讲起,当语法结束后再讲述相关的设计。实际上,语法内容在先修课程中已经完全(或者大部分)修读过,不用再学一遍类似或完全相同的内容。
第二,教材内容按照固定的顺序写,先语法,后基本组合电路设计,再基本时序设计等,不符合学生学习的规律,应该按照硬件描述语言所能表达的电路形式去讲解,而不局限于数字电路的知识点。
第三,部分教材动手实验的内容过于简单,且不具有实际应用价值。如一些自动售票器之类的实验。
第四,很多教材一开始给出了EDA领域中的很多新名词、新概念,让初学者陷入抽象的名词堆中,不能理解其内涵,不利于学习入门等。
由于这些原因限制了教师教学的主观能动性和学生学习的引导性,提出了一套新的教材教学内容的规划方法。
二、新教材的内容规划
教材内容应根据现有的培养方案结构和先修课程的关系有效地进行内容的选择,去冗留精,根据学生所能掌握知识的自然过程循序渐进并有机地结合工程应用等方面,才能达到学生学习上的“水到渠成”及学以致用的效果。
第一,合理规划培养方案中的教学内容大纲,去除已经学习过或者不需要讲述的内容。以教材中的HDL为例,现在很多高校电子信息类专业均以Verilog HDL为语言部分教学内容,Verilog HDL语言源自于C语言,C语言中的大部分語法和语句可以直接用于Verilog HDL中,这样语言部分就不需要单独花很多时间去讲授,只有部分语句和语法需要单独补充。例如块语句“begin end”、拼接符“{}”和缩位运算符等。条件语句和c语言中的语法也不尽相同,只需要指出不同点即可。在很多计算机类的专业中,HDL部分讲授的是VHDL语言。VHDL语言源自于PACAL,部分和PACAL语法相同,例如变量的赋值等可以省略。尤其是VHDL语言,语法内容较多,如果去除和PACAL语言相同的部分,可以省略很多课时用来讲解其他更为重要的知识点,有利于提高教学效果。
第二,遵循学习规律,教材内容应循序渐进给出新知识点。以学生为主体,强调“学习者取向”。[1]教学内容的安排应从最简单的数字电路设计和已经掌握的基本的语言语法开始,让初学者不知不觉中掌握了一种新技术,利用所学过的数字电路知识和C语言类似的基本Verilog语句就能实现。然后在此基础之上安排一些新的电路设计点和介入Verilog HDL语法。例如,在讲述半加器电路设计时可以采用数字电路中的设计方式,使用两个门(与门和或门)就可以实现半加器的设计。然后分析电路的行为,完全可以使用拼接符去实现,并重点从功能角度讲述。即:两个一位数相加,结果最多为两位,结果中高位即为进位位,低位则为和输出位。语法实现为assign {co,s}=a+b,一方面引入了新的语法(拼接符{}),另一方面从“行为”角度讲述了半加器的工作,避开了数字电路中的化简过程,且符合学生思考解决问题的思路,课堂教学效果很好。
第三,教学内容应尽可能结合应用或者结合应用的构成部分。FPGA是一项实用技术,在小的电路设计系统中经常作为外设的译码电路,可以结合多路译码器电路进行设计应用,在实验过程中尽可能采用此类内容作为实验;在较大型的设计中可能会涉及到DSP算法或者复杂的通信协议,结合学生已经掌握的知识点设计一些内容进行讲授。如:奇偶校验,在串行口的通信中校验是基本的功能之一,在Verilog HDL中使用一条简单的语句“assign P= ^D;”就可以实现。一方面实现了使用逻辑门电路很难实现的算法,另一方面也增加了新语法(“^”为缩位异或运算)的应用。再如:并串转换和串并转换,是现在串行通信中几乎不可缺少的组成部分,大多数教材讲述的方法不具有实用价值,应该结合应用时的通信握手,增加部分控制信号,使讲述的内容能够直接应用到系统中。
第四,入门知识点要尽可能简单,最好使用所学知识引导进入新的知识点,然后扩展至知识面,最后达到全面掌握本课程全部知识点的范畴。现有教学内容的入门教学方式不符合思维方式,它采用的方法为从抽象化到具体化的安排过程。现有的教材内容一般在第一章介绍EDA技术领域的一些新概念,发展过程和扩展至系统级中的一些内容,例如IP的概念、固核硬核软核等。这些内容在基础类教学中往往不会涉及,有些即使涉及了,学生也不明白和前面的概念之间的联系,不利于教学的开展。按照常规的思维方式,教学的入门可以从一个熟悉的知识点入手,进而辐射至其他的新知识点、新概念。在教学内容安排上,可以从与门电路设计开始,然后引入两个门电路同时实现,并给出HDL并行执行的概念,有利于重点突出HDL的特点,激发学生学习FPGA的积极性。 第五,简化逻辑产生过程,注重输入输出之间的行为关系。部分FPGA教学内容安排在数字电路设计之后。受数字电路设计思想的影响,很多学生认为HDL仅仅是用于描述门级电路的,而实际上HDL能够从更高的系统级角度描述电路行为。以N位全加器为例,不需要知道内部电路构成的细节,从行为级角度就可以直接描述出电路。再如:在教学内容的后期设计一个简单的CPU。CPU是复杂数字电路的代表,通过CPU的设计一方面可以使学生掌握CPU的基本原理和设计方法,另一方面可以让学生们了解,即使再复杂的电路都可以使用HDL描述,让学生们有系统级的概念,为今后进行更加复杂的系统设计打下思想基础。
6.语言方面要推陈出新,更新语言标准,注重实际综合效果
硬件描述语言是FPGA硬件电路设计的重要组成部分。以Verilog为例,市面上早期的教材均是以IEEE1364-1995为标准编写,而现在最新的Verilog标准为IEEE1364-2002。大多数教材仍然沿用IEEE1364-1995語法,这是不利于学习的。以存储器设计为例,旧标准中存储器空间的位初值无法直接给出,必须通过向量中间变量来实现,过程繁琐,不符合系统及描述的特点。而在新标准中,语法上可以直接实现对存储器空间的某个位进行操作,简化了设计过程和设计理念。再如:在向量的部分选择问题上,旧标准不能采用正向偏移或者反向偏移的方式实现部分向量的操作,不利于电路行为设计;而在新标准中,不仅能实现偏移,还可以动态更改索引表达式,使代码的编写更为灵活,更符合学习者的编写代码思维方式。
7.仿真要与物理综合结果相结合
从物理意义上讲解,注重设计综合细节的说明。EDA仿真工具一般有专用仿真工具和厂家软件自带的仿真工具两类。专业的仿真工具,如modelsim,严格遵守Verilog HDL仿真语法要求;而厂家的仿真一般会结合综合效果,不完全符合HDL语言本身的要求。例如,若有always@(a)c=a&b;在modelsim中进行仿真结果和QuartusII中的仿真结果不同。在modelsim中,若b信号发生了变化,仿真结果不会出现变化,而在QuartusII中若b变化了,c输出也会跟着变化的(规律是与门的规律)。从语法角度上讲,若b信号变化,但它不在敏感信号列表里,所以不会触发always块,因此modelsim仿真结果不变;而QuartuII认为,这个代码就是用来描述一组合电路-与门的,它会按照与门的输入输出关系变化仿真结果,实际教学中应注意两者仿真的不同,并对学生进行科学的解释。当然,教学过程中应尽可能引导学生把这类代码写成完整的形式:always@(a ,b)c=a&b,避免出现不必要的错误结果。
8.注意与其他相关课程的衔接
FPGA是硬件教学内容,与其他如单片机、ARM、微机原理与接口技术等课程会有一定的交叉和连接。
9.注重编程风格和编程思想
教材内容的附录部分增加了代码编写的常用习惯和可综合风格的书写,有利于培养学生良好的书写习惯,为语法检查和功能检查提供方便,为进一步编写大规模的代码奠定良好基础。
三、教学效果
通过优化教材内容、改革教学方法与教学手段,FPGA课程教学改革取得了较大的成效。具体表现为:第一,教材注重学生基础,以往基础差的学生也能入门,学生自主学习的兴趣浓厚。第二,教学内容的安排更加合理,结构更加完整,教师和学生使用更加方面,无需辅助参考书。第三,课程的教材注重实验环节,实验内容与理论知识结合紧密,学生的实验能力得到了进一步的提高,大部分学生能够独立完成基本实验,部分学生能自主完成部分创新实验项目。第四,教材从学生基础出发,符合学生实际,教学效果良好,学生的期末成绩取得了大幅度提高。第五,学生充分肯定了教师的教学水平,教学评估成绩优秀。
四、教材后续内容的完善和调整
本课程在大三上学期开设,侧重入门和基础教学。若学生在学习完本教材后需要继续在FPGA方向上深入学习,教师应结合学生所学和嵌入式方向的需要,讲授一些关于qsys和sopc的相关内容;若数字信号处理的内容已修,还可以结合dspbuilder等进行高层次的讲解教学;可以结合altium designer等对8051类的单片机软核进行完善修改,达到全面培养学生的FPGA系统设计和应用能力的目的。
参考文献:
[1]李旭琼,段吉海,韦保林.应用型本科模拟电子技术教材的建设与改革探索[J].中国电力教育,2014,(2).
(责任编辑:王祝萍)