论文部分内容阅读
摘要:VHDL作为电子工程领域的一种通用硬件描述语言,不仅是EDA的核心技术,同时也是数字系统设计的重要组成部分。通过多年的VHDL教学实践,提出了一套更有利于学生快速学习并掌握VHDL语言的模块化教学方法,即VDE介绍与VHDL程序入门、VHDL组合逻辑电路设计、VHDL时序逻辑电路设计、VHDL综合设计四个模块。通过教学实践取得了良好的教学效果。
关键词:VHDL;EDA;模块化;教学方法
作者简介:胡小玲(1971-),女,陕西镇安人,北京工业大学电控学院,讲师。(北京 100124)翟秀艳(1973-),女,天津人,天津石油职业技术学院资源勘查系,讲师。(天津 301607)
中图分类号:G642.0 文献标识码:A 文章编号:1007-0079(2013)02-0112-02
随着集成电路技术按照摩尔定律预测速度的快速发展,传统的芯片设计方法已远远不能满足当下设计要求,迫切需要提高设计效率。在这样的技术背景下,能大大提高设计速度的EDA技术正越来越广泛地被采用。在EDA的设计中,最具普遍性的设计表示方式就是文本表示方式,也就是利用硬件描述语言(HDL)通过软件编程的方式来描述电子系统的逻辑功能、电路结构和连接方式。[1,2]目前应用最为广泛并已成为IEEE标准的硬件描述语言是VHDL和Verilog HDL。有关专家认为,在新世纪中,VHDL与Verilog HDL语言将承担起几乎全部的数字系统设计任务。[3]
VHDL语言于1987年12月成为IEEE标准,1995年成为我国电子设计自动化硬件描述语言的国家标准。[4,5]自此,VHDL在我国迅速普及。北京工业大学从90年代初期开始为电类本科生开设“集成电路EDA”这门课程,其中对VHDL语言的学习就成为这门课程的基础,通过多年教学实践,笔者总结出了一套有利于学生学习并掌握VHDL语言的教学方法。
一、VHDL语言的模块化教学
VHDL语言语法严格,适于在本科阶段讲授,但在多年的教学实践中,笔者发现学生在短时间内接受大量的语法知识,很难充分地将其理解与掌握,这样在随后的编程过程中,非常容易犯错,并感觉难以入手,更不用说是形成良好的编程习惯和程序风格。针对这个普遍存在的问题,本校将VHDL语言教学过程与学生上机操作相结合,课程主要分为以下几个模块:VDE介绍与VHDL程序入门、VHDL组合逻辑电路设计、VHDL时序逻辑电路设计、VHDL综合设计四个模块。
下面就这四个模块的具体教学内容及学生在学习过程中经常遇到的问题进行分析和总结。
1.VDE介绍与VHDL程序入门
课程使用的EDA工具是中国华大集成电路设计公司开发的“九天”(Zeni)系统。该系统是一种面向全定制及半定制大规模集成电路设计的综合开发环境,其中包含VHDL语言顶层设计环境(VDE,VHDL/Verilog Design Environment)。
VDE是一个基于HDL文本的、图形化的设计输入环境。它采用以图形输入为主,文本输入为辅的输入方式。VDE典型的设计流程如图1所示。[6]
在这个模块的教学过程中主要介绍EDA工具的使用和VHDL语言的基本结构,要求学生通过一个二输入与门的设计,熟悉VDE中的多种编译器,掌握设计库的创建、相关编译器的使用以及设计的编译、仿真过程,同时学习一些VHDL语言的基本要素和结构,包括实体(ENTITY)、结构体(ARCHITECTURE)、配置(CONFIGURATION)、包(PACKAGE)和库(LIBRARY)等。
在这个模块内容的讲授与学习过程中,学生经常出现的问题就是在保存文件时用自己名字的拼音或学号进行命名,这不仅违反了命名规则,而且还会造成程序不能正常编译仿真,正确的文件名应与实体名“andgate”一致。
以二输入与门的实体定义为例:
ENTITY andgate is
Port(
inpa : in std_logci;
inpb : in std_logic;
outp: out std_logic);
end entity andgate;
此外,结构体的标准描述格式是,ARCHITECTURE 结构体名为OF,实体名为IS。学生在编程过程中经常忘记哪个地方应该写实体名,哪个地方应该写结构体名。为避免此类错误,笔者要求学生在编程过程中将结构体的命名与实体名一致(前提是该设计中只有一个结构体)。
2.VHDL组合逻辑电路设计
组合逻辑电路是指电路在任意时刻的输出仅仅取决于该时刻的输入信号,而与电路原来的状态无关的一种数字电路形式。一般来说,组合逻辑电路可以使用行为描述、数据流描述和结构描述中的一种或者几种描述模式进行结构体描述,同时,结构体描述既可以采用顺序语句也可以采用并行语句。因此,在这个模块的教学过程中,笔者主要增加对结构体的三种描述方式,及顺序语句和并行语句的讲授,要求学生分别用结构体的三种描述方式来完成一个四选一数据选择器的设计。通过这个练习学生对结构体的不同描述方式有了进一步的理解,并认识到在实际设计时,只要描述方便、易于理解、便于记忆,程序经编译、仿真、测试效果好的描述模式就是好的描述模式。同时加深了对顺序语句和并行语句的理解,包括条件信号赋值语句WHEN…ELSE和CASE语句。
在顺序语句与并行语句的问题上,教师要着重提醒学生的是顺序语句应在进程(PROCESS)中使用,而并行语句直接放在结构体中即可。PROCESS是最具VHDL语言特色的语句,它本身是并行语句,但内部却是顺序语句。这里要特别指出的一个问题是PROCESS的敏感信号表必须包括所有能够引起进程变化的参数,学生们经常犯的错误是敏感信号表表述不完整。如例: PROCESS(clk,D,clr)
Begin
IF clr =‘1’then
Q <= ‘0’;
ELSIF clk’event and clk = ‘1’ then
Q <= D;
END PROCESS;
在这个模块的学习中,学生经常混淆信号和变量的差异:信号应在结构体内进程外定义,而变量应在进程内定义;二者在程序中的赋值符号不同。此外,在编程过程中学生经常忘记只有并行语句可直接放在结构体中,而顺序语句应在进程(PROCESS)中使用。
3.VHDL时序逻辑电路设计
时序逻辑电路是指电路在任意时刻的输出不仅取决于该时刻的输入信号,而且还取决于电路原来状态的一种数字电路形式。由于时序逻辑电路具有“记忆”功能,因此它在数字系统中应用的十分广泛。时序电路一般有两大类:一类是同步时序逻辑电路;另一类是异步时序逻辑电路。在数字逻辑设计中,时钟应优先考虑同步时钟,即系统所有的时钟由同一个时钟产生。
通过同步计数器引入同步设计的概念。计数器是使用最为广泛的一种时序逻辑电路,它不仅能用于时钟脉冲计数,还可以用于分频、定时、产生脉冲序列以及进行数字运算等,是数字设备中的基本逻辑单元。因此,在这个模块的教学过程中,学生通过同步计数器的设计,不仅掌握时钟边沿的选择还应注意满足建立时间和保持时间的要求,并进一步加深对时序逻辑相关语句的理解,包括相关顺序语句如IF语句、CASE语句。IF语句会综合出优先编码器,而CASE语句将综合出多路选择器。IF更突出“优先级”的概念,而CASE语句中各个判断是平行的,没有优先级。因此,如果对速度要求很高时还是要使用IF语句。
在这个模块的教学过程中,还要指导学生调试测试程序,并对仿真波形进行讲解,增强学生对同步设计的认识。
4.VHDL综合设计
这个模块主要学习VHDL语言的层次化设计方法,要求学生掌握VHDL语言的层次化设计方法。通过用一位半加器完成一个一位全加器的设计实例使学生充分理解并掌握层次化设计方法,如图2所示。其中,图2(a)为全加器框图,X、Y、Cin 依次表示被加数、加数、进位输入;Sum 和 Cout 分别为和与进位输出,图2(b)为一种实现方案。
在这个设计过程中学生通过具体实例掌握元件的例化方法。元件例化描述方式包括端口映射方法和名称映射方法。学生通常喜欢采用描述简单的端口映射方法,但却忘记了端口映射表信号的顺序要与元件说明语句中信号的书写顺序一一对应,因此,学生经常出现的问题是在元件例化过程中端口映射的写法经常出现错误,不是书写顺序出问题,就是少写端口,或端口数据类型不匹配,更有甚者在同一语句中同时使用两种描述方法。为了解决这种问题,笔者要求学生在描述元件例化时一律采用名称映射的写法,不允许使用地址映射的方法,这样不仅有利于学生掌握元件例化的方法,而且有效地避免不应该出现的错误。如:
U0: andgate port map(ina=>inpa,inb=>inpb,outp);(不正确的用法)
U0: andgate port map(ina=>inpa,inb=>inpb,outp=>output);(正确的用法)
通过这个模块的学习,学生完全掌握了使用硬件描述语言进行数字逻辑设计的基本流程。
二、结束语
VHDL硬件描述语言的学习是一个系统过程,通过华大九天Zeni中VDE的介绍,学生更易理解并掌握VHDL语言的基本结构;根据组合逻辑电路和时序逻辑电路的各自特点分别学习并掌握相应的VHDL语言的语法及设计方法;在综合设计项目的学习过程中,学生需要将前面所学内容融会贯通,综合运用,最终达到掌握VHDL语言设计实际项目的目的。
通过几年的实践教学,笔者认为与常规教学方法相比,分模块学习VHDL语言效果显著,更有利于学生掌握VHDL语言。
参考文献:
[1]谭会生,瞿遂春.EDA技术综合应用实例与分析[M].西安:西安电子科技大学出版社,2004.
[2]赵鑫,蒋亮,等.VHDL与数字电路设计[M].北京:机械工业出版社,2005.
[3]江国强.EDA技术习题与实验[M].北京:电子工业出版社,2005.
[4]黄任.VHDL入门、解惑、经典实例、经验总结[M].北京:北京航空航天大学出版社,2007.
[5]潘松,黄继业.EDA 技术与VHDL[M].第2版.北京:清华大学出版社,2007.
[6]VDE实用设计指南[Z].中国华大集成电路设计公司,2003.
(责任编辑:李杰)
关键词:VHDL;EDA;模块化;教学方法
作者简介:胡小玲(1971-),女,陕西镇安人,北京工业大学电控学院,讲师。(北京 100124)翟秀艳(1973-),女,天津人,天津石油职业技术学院资源勘查系,讲师。(天津 301607)
中图分类号:G642.0 文献标识码:A 文章编号:1007-0079(2013)02-0112-02
随着集成电路技术按照摩尔定律预测速度的快速发展,传统的芯片设计方法已远远不能满足当下设计要求,迫切需要提高设计效率。在这样的技术背景下,能大大提高设计速度的EDA技术正越来越广泛地被采用。在EDA的设计中,最具普遍性的设计表示方式就是文本表示方式,也就是利用硬件描述语言(HDL)通过软件编程的方式来描述电子系统的逻辑功能、电路结构和连接方式。[1,2]目前应用最为广泛并已成为IEEE标准的硬件描述语言是VHDL和Verilog HDL。有关专家认为,在新世纪中,VHDL与Verilog HDL语言将承担起几乎全部的数字系统设计任务。[3]
VHDL语言于1987年12月成为IEEE标准,1995年成为我国电子设计自动化硬件描述语言的国家标准。[4,5]自此,VHDL在我国迅速普及。北京工业大学从90年代初期开始为电类本科生开设“集成电路EDA”这门课程,其中对VHDL语言的学习就成为这门课程的基础,通过多年教学实践,笔者总结出了一套有利于学生学习并掌握VHDL语言的教学方法。
一、VHDL语言的模块化教学
VHDL语言语法严格,适于在本科阶段讲授,但在多年的教学实践中,笔者发现学生在短时间内接受大量的语法知识,很难充分地将其理解与掌握,这样在随后的编程过程中,非常容易犯错,并感觉难以入手,更不用说是形成良好的编程习惯和程序风格。针对这个普遍存在的问题,本校将VHDL语言教学过程与学生上机操作相结合,课程主要分为以下几个模块:VDE介绍与VHDL程序入门、VHDL组合逻辑电路设计、VHDL时序逻辑电路设计、VHDL综合设计四个模块。
下面就这四个模块的具体教学内容及学生在学习过程中经常遇到的问题进行分析和总结。
1.VDE介绍与VHDL程序入门
课程使用的EDA工具是中国华大集成电路设计公司开发的“九天”(Zeni)系统。该系统是一种面向全定制及半定制大规模集成电路设计的综合开发环境,其中包含VHDL语言顶层设计环境(VDE,VHDL/Verilog Design Environment)。
VDE是一个基于HDL文本的、图形化的设计输入环境。它采用以图形输入为主,文本输入为辅的输入方式。VDE典型的设计流程如图1所示。[6]
在这个模块的教学过程中主要介绍EDA工具的使用和VHDL语言的基本结构,要求学生通过一个二输入与门的设计,熟悉VDE中的多种编译器,掌握设计库的创建、相关编译器的使用以及设计的编译、仿真过程,同时学习一些VHDL语言的基本要素和结构,包括实体(ENTITY)、结构体(ARCHITECTURE)、配置(CONFIGURATION)、包(PACKAGE)和库(LIBRARY)等。
在这个模块内容的讲授与学习过程中,学生经常出现的问题就是在保存文件时用自己名字的拼音或学号进行命名,这不仅违反了命名规则,而且还会造成程序不能正常编译仿真,正确的文件名应与实体名“andgate”一致。
以二输入与门的实体定义为例:
ENTITY andgate is
Port(
inpa : in std_logci;
inpb : in std_logic;
outp: out std_logic);
end entity andgate;
此外,结构体的标准描述格式是,ARCHITECTURE 结构体名为OF,实体名为IS。学生在编程过程中经常忘记哪个地方应该写实体名,哪个地方应该写结构体名。为避免此类错误,笔者要求学生在编程过程中将结构体的命名与实体名一致(前提是该设计中只有一个结构体)。
2.VHDL组合逻辑电路设计
组合逻辑电路是指电路在任意时刻的输出仅仅取决于该时刻的输入信号,而与电路原来的状态无关的一种数字电路形式。一般来说,组合逻辑电路可以使用行为描述、数据流描述和结构描述中的一种或者几种描述模式进行结构体描述,同时,结构体描述既可以采用顺序语句也可以采用并行语句。因此,在这个模块的教学过程中,笔者主要增加对结构体的三种描述方式,及顺序语句和并行语句的讲授,要求学生分别用结构体的三种描述方式来完成一个四选一数据选择器的设计。通过这个练习学生对结构体的不同描述方式有了进一步的理解,并认识到在实际设计时,只要描述方便、易于理解、便于记忆,程序经编译、仿真、测试效果好的描述模式就是好的描述模式。同时加深了对顺序语句和并行语句的理解,包括条件信号赋值语句WHEN…ELSE和CASE语句。
在顺序语句与并行语句的问题上,教师要着重提醒学生的是顺序语句应在进程(PROCESS)中使用,而并行语句直接放在结构体中即可。PROCESS是最具VHDL语言特色的语句,它本身是并行语句,但内部却是顺序语句。这里要特别指出的一个问题是PROCESS的敏感信号表必须包括所有能够引起进程变化的参数,学生们经常犯的错误是敏感信号表表述不完整。如例: PROCESS(clk,D,clr)
Begin
IF clr =‘1’then
Q <= ‘0’;
ELSIF clk’event and clk = ‘1’ then
Q <= D;
END PROCESS;
在这个模块的学习中,学生经常混淆信号和变量的差异:信号应在结构体内进程外定义,而变量应在进程内定义;二者在程序中的赋值符号不同。此外,在编程过程中学生经常忘记只有并行语句可直接放在结构体中,而顺序语句应在进程(PROCESS)中使用。
3.VHDL时序逻辑电路设计
时序逻辑电路是指电路在任意时刻的输出不仅取决于该时刻的输入信号,而且还取决于电路原来状态的一种数字电路形式。由于时序逻辑电路具有“记忆”功能,因此它在数字系统中应用的十分广泛。时序电路一般有两大类:一类是同步时序逻辑电路;另一类是异步时序逻辑电路。在数字逻辑设计中,时钟应优先考虑同步时钟,即系统所有的时钟由同一个时钟产生。
通过同步计数器引入同步设计的概念。计数器是使用最为广泛的一种时序逻辑电路,它不仅能用于时钟脉冲计数,还可以用于分频、定时、产生脉冲序列以及进行数字运算等,是数字设备中的基本逻辑单元。因此,在这个模块的教学过程中,学生通过同步计数器的设计,不仅掌握时钟边沿的选择还应注意满足建立时间和保持时间的要求,并进一步加深对时序逻辑相关语句的理解,包括相关顺序语句如IF语句、CASE语句。IF语句会综合出优先编码器,而CASE语句将综合出多路选择器。IF更突出“优先级”的概念,而CASE语句中各个判断是平行的,没有优先级。因此,如果对速度要求很高时还是要使用IF语句。
在这个模块的教学过程中,还要指导学生调试测试程序,并对仿真波形进行讲解,增强学生对同步设计的认识。
4.VHDL综合设计
这个模块主要学习VHDL语言的层次化设计方法,要求学生掌握VHDL语言的层次化设计方法。通过用一位半加器完成一个一位全加器的设计实例使学生充分理解并掌握层次化设计方法,如图2所示。其中,图2(a)为全加器框图,X、Y、Cin 依次表示被加数、加数、进位输入;Sum 和 Cout 分别为和与进位输出,图2(b)为一种实现方案。
在这个设计过程中学生通过具体实例掌握元件的例化方法。元件例化描述方式包括端口映射方法和名称映射方法。学生通常喜欢采用描述简单的端口映射方法,但却忘记了端口映射表信号的顺序要与元件说明语句中信号的书写顺序一一对应,因此,学生经常出现的问题是在元件例化过程中端口映射的写法经常出现错误,不是书写顺序出问题,就是少写端口,或端口数据类型不匹配,更有甚者在同一语句中同时使用两种描述方法。为了解决这种问题,笔者要求学生在描述元件例化时一律采用名称映射的写法,不允许使用地址映射的方法,这样不仅有利于学生掌握元件例化的方法,而且有效地避免不应该出现的错误。如:
U0: andgate port map(ina=>inpa,inb=>inpb,outp);(不正确的用法)
U0: andgate port map(ina=>inpa,inb=>inpb,outp=>output);(正确的用法)
通过这个模块的学习,学生完全掌握了使用硬件描述语言进行数字逻辑设计的基本流程。
二、结束语
VHDL硬件描述语言的学习是一个系统过程,通过华大九天Zeni中VDE的介绍,学生更易理解并掌握VHDL语言的基本结构;根据组合逻辑电路和时序逻辑电路的各自特点分别学习并掌握相应的VHDL语言的语法及设计方法;在综合设计项目的学习过程中,学生需要将前面所学内容融会贯通,综合运用,最终达到掌握VHDL语言设计实际项目的目的。
通过几年的实践教学,笔者认为与常规教学方法相比,分模块学习VHDL语言效果显著,更有利于学生掌握VHDL语言。
参考文献:
[1]谭会生,瞿遂春.EDA技术综合应用实例与分析[M].西安:西安电子科技大学出版社,2004.
[2]赵鑫,蒋亮,等.VHDL与数字电路设计[M].北京:机械工业出版社,2005.
[3]江国强.EDA技术习题与实验[M].北京:电子工业出版社,2005.
[4]黄任.VHDL入门、解惑、经典实例、经验总结[M].北京:北京航空航天大学出版社,2007.
[5]潘松,黄继业.EDA 技术与VHDL[M].第2版.北京:清华大学出版社,2007.
[6]VDE实用设计指南[Z].中国华大集成电路设计公司,2003.
(责任编辑:李杰)