VHDL语言教学的几个关键问题探讨

2019-06-13 版权声明 举报文章

VHDL语言教学的几个关键问题探讨

摘 要:针对在VHDL语言课程教学中的几个关键问题进行探讨,提出了硬件描述语言的特征、组合电路和时序电路描述方法的区别、信号和变量的合理运用及进程的作用等问题的重要性,通过举例的方法对这几个问题进行详细分析,达到直观易懂的效果。从多轮教学效果来看,所提出的方法对VHDL 语言教学,以及VHDL 语言的程序设计都具有一定的指导意义。

关键词:VHDL;教学;关键问题分析

The discussion of several key problems in VHDL language teaching

Zhao Hang1, Zhang Wenting2

1.Sanjiang university, Nanjing , 210012, China

2.Nanjing panneng technology development co., Nanjing , 210061, China

Abstract: This paper attempt to discuss several key problems in VHDL language teaching. On this basis, the author comes up with the importance of problems, which include the features of hardware description language, the description style distinction of the combinational circuit and sequential circuit, use in signal and variable. The author has carried on the detailed analysis to these problems by way of examples, so as to achieve an effect of visual and easily understand. Seeing from the several rounds of teaching effect, the proposed approach has a certain guidance meaning in VHDL language and VHDL language programming.

Key words: VHDL; teaching; key problem analysis

VHDL(Very high speed intergated circuit Hardware Description Language)是指超高速集成电路硬件描述语言。它用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式,与传统的门级方式相比,它更适合大规模系统的设计。因此很多高校的信息技术、计算机技术等专业都开出了VHDL设计课程[1]。笔者在教学过程中发现学生学习VHDL语言时会受到已经学习过的其他软件语言的影响,对VHDL语言作为硬件语言的一些特性和语法问题理解不够,往往会影响到对VHDL语言的灵活合理运用。本文结合多轮课程教学实践,针对学生最难掌握的几个问题做了深入探讨。

1 对VHDL作为硬件描述语言的特征的理解

学好VHDL的关键是充分理解VHDL语句和硬件电路的关系。 编写VHDL,就是在描述一个电路,我们写完一段程序后,应当对生成的电路有一些大体上的了解, 而不能用纯软件的设计思路来编写硬件描述语言[2]。

下面以四选一数据选择器的设计为例来加以说明。四选一数据选择器是一种常用的组合逻辑电路,用VHDL语言设计比较简单,可以用when_else语句实现,也可以用with_select语句实现,两者仿真结果相同,但综合的结果不同。具体情况如下:

【程序1】

library ieee;

use ieee.std_logic_1164.all;

entity mux41a is

port(a,b,c,d: in std_logic;

s: in std_logic_vector(1 downto 0);

y: out std_logic);

end;

architecture one of mux41a is

begin

y

b when (s = “01”) else

c when (s = “10”) else

d ;

end;

使用Quartus II软件对程序1进行编译仿真,仿真结果如图1所示。

将程序1中的when_else语句实现改成with_select语句实现,修改后的部分程序如下:

【程序2】

with s select

y

b when“01”,

c when“10”,

d when others;

同样使用Quartus II软件对程序2进行编译仿真,仿真结果与图1完全相同。说明程序1和程序2都能完成四选一数据选择器的功能,仿真结果一致。

但是如果对程序1和程序2进行综合,得出它们对应的RTL电路,分别如图2和图3所示。从图2和图3的比较看,电路差别比较大。根据四选一数据选择器的功能,应该是图3的电路更合适。

综合来看,虽然when_else语句和with_select_when语句都能实现四选一数据选择器功能,但是实现的硬件电路完全不同,这就告诉我们在设计某一功能的电路时要尽量使用合适的语句来表达,这样才能得到最优的结果,而不能仅仅满足于功能实现。因为这是硬件电路的设计,要考虑最后实现的电路的合理性。

2 组合电路和时序电路的区别

组合电路和时序电路是数字电路系统的两大种类,在设计中至少要用到它们中的一种或两种都会用到,这就要求正确掌握它们各自的设计要领。在VHDL语言中,组合电路和时序电路是以完整条件语句和不完整条件语句来区别的,如果在组合电路设计中使用了不完整条件语句,会使设计结果出现意想不到的问题,影响设计的正确性,设计时要加以注意[3]。比如程序3是一个数值比较器的设计,数值比较器属于组合电路,应该使用完整条件语句来描述,但是程序中if语句判断了a>b和a

【程序3】

library ieee;

use ieee.std_logic_1164.all;

entity comp is

port(a,b:in std_logic;

y:out std_logic);

end;

architecture one of comp is

begin

process (a,b)

begin

if a>b then y

else if a

end if;

end process;

end;

【程序4】

if a>b then y

else y

end if;

图5 程序4的RTL电路

3 信号和变量的区别

在VHDL中,数据对象(Data objects)有3类:信号(signal)、变量(variable)和常量(constant)。变量和常量与软件语言中的变量和常量的含义相似,而信号则具有更多的硬件特征,是硬件描述语言所特有的数据对象。由于信号和变量在使用上有很多相似的地方,但又存在本质的区别,学生比较容易混淆,在设计中常常不注意区分它们的区别,造成错误[4]。在变量和信号的使用过程中,有时可以互换,有时候又不能互换。两者从形式上差别并不大,所以学生在没弄清其本质区别前往往按照例子生搬硬套,这样做有时候系统也能正常运转,但是在系统需要利用到变量和信号的根本特性时,错误地使用数据对象往往会导致系统的逻辑错误,使设计结果与预期有很大差距,而学生很难发现其中的错误。所以,如何使学生分清两者,并正确的使用,成为影响VHDL语言教学的关键问题之一。

为了更好地区分信号和变量,需要通过一定数量的实例分析,通过对比,使学生对两者之间的物理含义、使用范围及值代入的区别有较明确的认识。下面给出用中间变量和信号表达四选一数据选择器的VHDL源程序,从中可以看出信号、变量的定义和使用方法之间的不同以及它们对系统的影响。

【程序5】

library ieee;

use ieee.std_logic_1164.all;

entity mux41a is

port(i0,i1,i2,i3,a,b:in std_logic;

q:out std_logic);

end;

architecture one of mux41a is

signal muxval: integer range 3 downto 0;

begin

process (i0,i1,i2,i3,a,b)

begin

muxval

if a='1' then muxval

if b='1' then muxval

case muxval is

when 0 => q

when 1 => q

when 2 => q

when 3 => q

when others => null;

end case;

end process;

end;

程序5的仿真结果如图6所示。从图6中可以看出,输出信号q并没有得到预想的波形,而是未知数据,这是因为muxval在程序中被定义为信号,而信号的含义是电路的实际硬件连接,因此对信号赋值存在延时[5]。故此在case语句中根据muxval值去选择不同的信号进行输出时,muxval的值还没有产生,因此结果不对。为了产生正确的结果,对本程序,只需要把muxval的定义改为变量,其他地方做适当修改,则可得到如图7所示的正确仿真结果。

4 结束语

在VHDL设计课程教学中,笔者特别注意上述几个问题的讲解和举例说明,力求使学生对这些问题理解透彻,让学生真正认识到运用VHDL语言进行电路设计,不仅要熟悉VHDL语言的基本语法和常用语句,还要对硬件描述语言的本质有深刻的认识,对所设计的电路有深刻理解,在此基础上才能更好地使用掌握这门硬件描述语言进行电路设计。

参考文献

[1] 朱奕丹.VHDL设计课程教学改革实践[J].电气电子教学学报,2007,29(2):22-23

[2] 潘松,黄继业.EDA技术与VHDL[M].北京:清华大学出版社,2009

[3] 夏炎,师卫.硬件描述语言与数字电路设计[J].电力学报,2009,24(2):156-158

[4] 杨丹,树林.VHDL中信号与变量的教学体会[J].电气电子教学学报,2006,28(3):30-35

[5] 龚兰芳. VHDL硬件描述语言教学探讨[J].广东水利电力职业技术学院学报,2009(4):29-32.

注:本文为网友上传,不代表本站观点,与本站立场无关。举报文章

上一篇:独立学院大学英语分层次教学模式初探 下一篇:韩红、董卿现场“对掐” 常石磊、平安表现抢眼

被举报文档标题:VHDL语言教学的几个关键问题探讨

验证码:

点击换图

举报理由:
   (必填)
紧急删除:

 13882551937、13808266089 服务时间:8:00~21:00 承诺一小时内删除

免责声明
发表评论  快捷匿名评论,或 登录 后评论
评论