童巧英
摘要:Verilog HDL是电子设计主流硬件的描述语言之一,在该硬件描述语言中存在大量类似语句。文章提出采用比较分析法对Verilog HDL进行教学,并以Verilog HDL中的两种条件语句:case语句和if语句为例,在语句格式、应用范围、占用资源三方面对两种语句进行对比分析。分析表明,case语句在可读性方面要优于if语句,if语句的使用范围要大于case语句,对于同样的设计,case语句占用逻辑资源要大于if语句。比较分析法可以帮助学员分清概念,提高分析水平,获得规律性认识,快速掌握Verilog HDL。
关键词:比较分析法;硬件描述语言;Verilog HDL
中图分类号:TP311.1 文献标识码:A 文章编号:1007-9416(2018)01-0121-03
硬件描述语言是EDA(Electronic Design Automation)技术的重要组成部分,常用的硬件描述语言主要有VHDL、Verilog HDL、SystemVerilog和System C等,Verilog HDL(hardware description language)以其简明扼要的代码、容易掌握的语法规定、很强的电路描述和建模能力,能从多个层次对数字系统进行描述,简化硬件设计任务,提高设计效率和可靠性,成为基层电路建模与设计中最流行的硬件描述语言[1],几乎所有的EDA设计平台均支持Verilog HDL语言。在美国和日本等先进电子工业国,Verilog HDL已成为设计数字系统的基础,作为新世纪的中国大学生和年轻的电子工程师应该尽早掌握这种新的设计方法,使我国在复杂数字电路及系统的设计竞争中逐步缩小与美国等先进的工业发达国家的差距[2]。
国内介绍Verilog HDL的书籍,对硬件描述语言的描述基本都是先介绍下结构与数据类型,然后对各种语句进行逐一说明[3-5]。国内也对Verilog HDL进行了教学改革方法的研究[6-8],但这些书籍或教学改革都未对类似语句进行比较,学生需要在后期的不断学习中自己去体会相似语句间的区别。因此,文章提出采用比较分析法对Verilog HDL进行教学。比较分析法的运用,有助于培养学员独自动手,独立思考的学习能力;有助于培养学员举一反三,触类旁通的推理能力;有助于培养学员从事物表面现象找出本质差异的分析能力。正确运用比较分析法,可以帮助学员分清概念,提高分析水平,获得规律性认识。比较分析法不仅为学员提供了课前思考,查找资料的机会,更给学员创造了参与讨论的学习条件,使学员在热烈、活泼的互动学习氛围中,轻松,愉快地掌握知识和技能,从而获得事半功倍的教学效果。
Verilog HDL中有各种类似语句,如两种条件语句:case语句和if语句;两种过程语句:always语句和initial语句;两种赋值语句:阻塞式赋值和非阻塞式赋值;四种循环语句:for语句,while语句,repeat语句和forever语句等等。这些类似语句都可以采用比较分析法进行教学。文章以两种条件语句:case语句和if语句为例,从语句格式、应用范围、占用资源三方面对两种语句进行对比分析,介绍语句间的区别,有助于学员的快速理解和掌握。
1 语句格式
case语句的一般格式如下:
case(表达式)
取值1:begin语句块1;end
取值2:begin语句块2;end
……
default:begin语句块n;……end
endcase
if语句的一般格式如下:
if(条件表达式1)begin语句块1;end
else if(條件表达式2)begin语句块2;end
……
else if(条件表达式m)begin语句块m;end
else begin语句块m+1;end
由case语句和if语句的格式可以看出,两种语句至少有以下几点不同:
1.1 可读性
case语句中,先获得或计算出“表达式”的值,然后根据以下条件句中找到第一个相同的值,直接执行后面的语句块,整个语句可读性好;if语句中,需要逐条对比各个“条件表达式”是否为真,当发现某个“条件表达式”返回的值为真,则执行后续的语句块,很明显与case语句相比,格式较乱,可读性较差。因此,case语句可读性要好于if语句。
1.2 case和if后括号中的表达式
case语句格式中,case后面是“表达式”,该表达式是一个随意值,如2b11、7d30等。而if语句格式中,if后面是“条件表达式”,“条件表达式”可以是一个标识符,如if(a),或者是一个判别表达式,如if(a<(b+1))等,标识符或判别表达式输出值为1时判断为真,输出值为0、x或z时判断为假,于是if语句根据判断结果有条件地选择执行其后的语句块。
1.3 结束语
case语句格式中,除非所有条件句中的选择取值能完整覆盖case语句中表达式的取值,否则最末一个条件句中的选择必须加上default语句。关键词default引导的语句表示本语句完成以上已列的所有条件句中未能列出的其他可能取值的逻辑操作,最后case语句以endcase作为结束语。
而if语句是没有结束语的,在判别到一个“条件表达式”为真后,执行后面的语句块,就跳出if语句。
2 应用范围
if语句的应用范围要大于case语句,这从两种语句的格式中就可以看出来,其实case语句都是可以用if语句进行改写的。case格式用if语句来实现可以表示为:
if(表达式==取值1)begin语句块1;end
else if(表达式==取值2)begin语句块2;end
……
else begin语句块n;end
而if语句因为各语句间有优先级,因此很多if语句无法用case语句来实现。下面分别用case语句和if语句实现的四选一多路选择器来看RTL图的区别,图1和图2分别为采用case语句的程序和采用if语句的程序。
采用case语句实现的四选一多路选择器RTL视图如图3所示,RTL视图显示的是编译后的结果显示的图形都是调用标准单元的结果。
采用if语句实现的四选一多路选择器RTL视图如图4所示。
从图3和图4的RTL视图中可以看出,if语句有明显的优先级,而case语句是并行执行的。虽然两种语句的RTL视图有较大差别,但是两种语句的Technology Map相同,如图5所示。Technology Map显示的是已经编译并映射到对应的FPGA器件中,是fitter(place&route;)后的结果。
因此,随着现在的仿真和综合工具已经足够强大,最后综合后的结果if语句与case语句其实是一样的,无非是两种不同的实现方式。
3 占用资源
由于许多电子设计既可以用case语句实现,也可以用if语句实现,在利用QuartusⅡ进行综合,两种语句的逻辑资源利用情况有很大不同,一般来讲,采用case语句的程序占用资源要比采用if语句的程序占用资源要多。显然,在进行程序设计时,if语句中各条件向上相与的功能大大简化了电路的结构,在设计时,如要考虑到采用资源,尽可能使用if语句。
4 结语
随着Verilog HDL在EDA技术上越来越广泛的应用,Verilog HDL在各高校的电子信息专业的普及率也越来越高,文章以Verilog HDL中两种条件语句case语句和if语句为例,采用比较分析法对两种语句进行了分析,使学员能更有深度地理解该语言各种语句的灵活运用,更快速掌握该硬件描述语言,同时锻炼了学生解决实际问题的能力,响应了各大电子企业对硬件描述语言人才的需求。
参考文献
[1]潘松,陈龙,黄继业.EDA技术与Verilog HDL(第2版)[M].清華大学出版社,2010.
[2]王鹏,陈新武,陈咏恩等.面向应用型本科教育的FPGA课程教学探讨[J].实验技术与管理,2016,33(3):185-188.
[3](美)巴斯克著.Verilog HDL入门(第3版)[M].夏宇闻等译.北京航空航天大学出版社,2008.
[4]李红革,李峭,何锋.VeriLog硬件描述语言与设计[M].北京航空航天大学出版社,2017.
[5](加)斯蒂芬·布朗(Stephen Brown),(加)斯万克·瓦拉纳西(Zvonko Vranesic)著.数字逻辑基础与Verilog设计[M].吴建辉等译.机械工业出版社,2016.
[6]赵天翔,何金枝.以Verilog HDL为重点的数字逻辑课程教学改革与实践[J].电脑知识与技术,2016,12(35):177-178.
[7]李俊一,牛萍娟.基于Verilog HDL设计的多功能数字钟[J].微计算机信息,2006,22(11):79-81.
[8]郭家荣.项目教学法在Verilog HDL程序设计教学中的应用[J].教育现代化,2016,10(30):226-227.