VHDL的教案.docx
《VHDL的教案.docx》由会员分享,可在线阅读,更多相关《VHDL的教案.docx(41页珍藏版)》请在冰豆网上搜索。
VHDL的教案
VHDL硬件描述语言的教案
第一章概述
教学内容:
1、课程简介:
本门课的学习基础是建立在《数字电路与系统》这门课的基础上。
2、课程的学时分配:
理论教学:
16学时;实验教学:
16学时。
理论教学:
共分成为七个部分。
第一部分:
概述
介绍了VHDL硬件描述语言的发展过程,为什么要学习VHDL语言以及传统设计与VHDL设计的对照。
第二部分:
VHDL的模型结构
详细介绍了VHDL语言的实体和结构体。
第三部分:
基本词法元素、标识符、数据对象、属性及运算符。
第四部分:
VHDL的基本语句、子结构、包集合及配置
介绍了顺序语句和并发语句,在学生掌握了VHDL的基本语句基础上,再介绍它的包、库及配置。
第五部分:
组合逻辑电路设计
介绍了基本门、编码器、译码器、多路选择器、比较器、求补器、三态门及总线缓冲器。
第六部分:
时序逻辑电路设计
介绍了触发器、比较器、锁存器、计数器移位寄存器和状态机的设计;
第七部分:
数字系统的设计举例。
实验教学:
共分为十个实验,其中实验九和实验十为大型实验。
成绩评定标准:
本门课是实践性很强的课程,成绩评定是以完成的实验的情况来定。
完成六个实验以下为:
不及格。
完成六~七个实验为:
及格。
完成八个实验为:
中等。
完成九个实验为:
良好。
完成十个实验为:
优秀。
1.1VHDL的诞生
一、目的
二、DOD为什么会提出这个计划呢?
1、原因
2、问题的解决
1.2为什么要用VHDL语言
一、为什么要用VHDL语言
二、如何学习VHDL语言
1、介绍VHDL的参考书
2、注意学习方法
3、强调上机
强调:
编程实验是掌握VHDL最佳的途径。
三、VHDL的主要优点(4个优点)
四、VHDL的不足之处
五、用VHDL设计硬件电路的过程
详细介绍VHDL的一般设计流程
1.3传统设计与VHDL设计的对照
一、传统设计
二、VHDL语言的设计
三、传统设计与VHDL设计的对照
教学要求:
1、了解VHDL硬件描述语言的发展过程。
2、懂得为什么要学习VHDL语言重要性。
3、掌握传统设计和VHDL设计的对应关系,即:
VHDL的实体对应电路的符号,VHDL的结构体对应电路图(功能)。
教学重点:
1、让学生了解VHDL硬件描述语言的发展过程和应用前景。
2、让学生懂得学习VHDL语言的重要性以及学习的方法。
教学方法:
采用传统设计和VHDL设计的方法进行对比的方式来阐述第一章的内容。
教学手段:
采用多媒体PPT播放达到良好的教学目的。
第二章VHDL的模型结构
教学内容:
2.1VHDL语言设计的基本单元及其构成
2.1.1设计实体(Designentity)
实体的一般格式为:
ENTITY实体名IS
[GENERIC(类属表);]
PORT(端口表);
END实体名;
一、类属(GENERIC)
二、端口(PORT)
1、端口名
2、模式
3、数据类型(TYPES)
2.1.2结构体(ARCHITECTURE)
用VHDL语言描述结构体功能有三种方法:
(1)行为描述法:
以算法的形式来描述数据变换。
(2)数据流描述法:
是按照数据流动的方向来进行描述的。
(3)结构描述法:
是按照逻辑元件的连接进行描述的。
结构体的一般描述格式
ARCHITECTURE结构体OF实体名IS
[定义语句]
[信号定义];
[类型定义];
[元件定义];
[子程序定义];
BEGIN
[并行处理语句];
[并行信号赋值语句];
[进程语句];
[元件例化语句];
END[结构体名];
1、结构体名称的命名
2、定义语句
3、并行处理语句
2.2结构体的描述方式
一、行为描述
二、结构描述(structuraldescriptions)
三、数据流描述(DataflowDescriptions)
教学要求:
1、了解一个完整的VHDL语言程序通常包含五个部分:
实体(ENTITY)
结构体(ARCHITECTURE)
配置(CONFIGURATION)
包集合(PACKAGE)
库(LIBRARY)
其中,实体和结构体是构成一个系统或电路的最基本结构。
2、掌握VHDL语言描述结构体功能的三种设计和描述方法(即:
行为描述、结构描述、数据流描述)。
教学重点:
1、实体
(1)类属
强调:
类属在可编程器件的开发工具中一般都不支持,只有在EDA的工具中才支持。
如果支持也是有选择性的支持。
(2)端口
强调:
①端口组织结构必须是一个名字、一个通信模式、一个数据类型。
②端口名的命名要与惯例接轨。
③端口名一定要用英文字母打头。
(3)端口模式
强调:
正确使用端口模式。
掌握好:
OUT与BUFFER和BUFFER与INOUT它们之间的应用范围。
(4)数据类型
强调:
VHDL语言是一种强类型语言,数据类型定义严格。
使用时端口的数据类型一定要匹配,否则就会出错。
2、结构体
用VHDL语言描述结构体功能有三种方法:
(1)行为描述法:
以算法的形式来描述数据变换。
(2)数据流描述法:
是按照数据流动的方向来进行描述的。
(3)结构描述法:
是按照逻辑元件的连接进行描述的。
一、结构体的一般描述格式
ARCHITECTURE结构体OF实体名IS
[定义语句]
[信号定义];
[类型定义];
[元件定义];
[子程序定义];
BEGIN
[并行处理语句];
[并行信号赋值语句];
[进程语句];
[元件例化语句];
END[结构体名];
二、结构体的描述方式
结构体的三种描述方式采用举例(例如:
用四位等值比较器)来说明。
强调:
在三种描述方式中,特别要重点介绍结构描述法。
因为它不仅是一种设计方法,还是一种设计思想,是大型电子系统设计高层次主管人员必须掌握的设计方法。
教学方法:
1、大量采用举例。
2、通过实验的方法来验证理论课上讲的内容。
3、采用课堂提问的方式,一对一的进行交流。
教学手段:
采用多媒体PPT播放达到良好的教学目的。
作业:
(上机实验)
实验一:
1.fundation3.1和ISE5.2i开发软件的使用。
2.实验一:
四位等值比较器(结构化描述)(作业)。
第三章基本词法元素、标识符、数据对象、
数据类型及属性
教学内容:
3.1基本词法单元
一、注释
二、数的表示
三、字符
四、字符串
五、位串
3.2标识符(Identifiers)
VHDL的标识符和规则。
3.3数据对象(DataObjects新概念)
1、介绍常量(constant)、信号(signal)、变量(variable)的物理含义。
2、介绍常量(constant)、信号(signal)、变量(variable)的书写格式。
3、变量的使用规则和限制范围。
4、有关信号的使用规则说明。
5、信号与变量的区别
3.4数据类型(DataType)
VHDL的主要数据类型包含有:
标量类型、复合类型、存取类型和文件类型。
重点介绍:
标量类型、复合类型。
存取类型和文件类型不介绍。
一、标量类型(scalartypes)
1、介绍它的写格式为:
Type<标识符>is<类型定义>;
2、分别介绍
①整数类型(IntegerTypes)
②浮点类型(FloatingTypes)
③可枚举类型(EnumerationType)
④物理类型(PhysicalTypes)
二、复合类型(CompositeType)
1、介绍数组类型和记录类型的定义。
2、介绍数组类型(ArrayTypes)的书写格式。
3、介绍记录类型(RecordTypes)的书写格式。
三、子类型(subtype)
1、介绍子类型的书写格式。
2、介绍它的范围限制和下标限制。
四、数据类型的转换
分别介绍:
“std_logic_1164”、
“std_logic_arith”、
“std_logic_unsignend”
三个的包集合中提供的数据类型变换函数。
3.5属性(Attributes)
1、介绍属性的书写格式:
<项目名’属性标识符>
2、重点介绍属性在时钟上的应用。
3.6VHDL语言的运算操作符
1、介绍VHDL中有四类操作符:
逻辑运算符、关系运算符、算术运算符、并置运算符。
2、重点介绍并置运算符“&”的应用。
教学要求:
掌握基本词法元素、标识符、数据对象、数据类型及属性在编程中的规则、限制范
围以及应用。
教学重点:
1、重点介绍数据对象(DataObjects新概念)。
2、重点介绍数据类型的转换。
3、重点介绍属性在时钟上的应用。
教学方法:
1、大量采用举例。
2、通过实验的方法来验证理论课上讲的内容。
3、采用课堂提问的方式,一对一的进行交流。
教学手段:
采用多媒体PPT播放达到良好的教学目的。
第四章VHDL的基本语句
教学内容:
4.1进程语句(processstatements)
1、进程语句的书写格式
进程名:
-------名字标号,是可选项。
Process<敏感信号>
变量说明语句-----定义该进程所需的局部数据环境及类型。
……..
Begin
顺序说明语句------顺序程序,定义该进程的行为。
……..
Endprocess[进程名];
2、举例
4.2WAIT语句(等待语句)
一、WAIT使用的范围
二、WAIT语句可设置为四种不同的条件
WAIT--------无限等待;(死循环,不可用)
WAITON-------敏感信号量变化;
WAITUNTIL------条件满足;
WAITFOR------时间到。
1、WAITON
书写格式为:
WAITON信号[,信号]
2、WAITUNTIL
书写格式为:
WAITUNTIL表达式;
3、WAITFOR
书写格式为:
WAITFOR时间表达式;
4、多条件WAIT语句
5、超时等待
4.3断言语句
1、顺序断言语句-----只用于在进程、函数及过程之内。
2、并行断言语句------应用于进程、函数及过程之外。
4.4并发描述语句(concurrentstatement)
1、并发信号赋值语句
书写格式:
<对象><=<表达式>;
2、条件赋值语句(conditionsignalassignmentsstatement)
书写格式:
signal_name<=value_1whencondition1else
value_2whencondition2else
value_3whencondition3else
………
value_N;
3、选择信号赋值语句(selectionsignalassignmentsstatements)
书写格式:
withselection_signalselect
signal_name<=expression1whenvaluce1;
expression2whenvaluce2;
……….
ExpressionNwhenvaluceN;
Enddata_flow;
4.5顺序语句(sequentialstatements)
一、条件控制语句
条件控制语句有if和case语句。
1、if语句
书写格式有三种类型:
(1)if<条件>then
<语句>;
endif;------缺省的if语句。
(或者称为门闩控制的if语句)
(2)if<条件>then
<语句>;
else
<语句>;
endif;------称为if语句的二选一控制的if语句。
(3)if<条件>then
<语句>;
elsif
<语句>;
……..
elsif
<语句>;
endif;------多选择控制的if语句
强调:
IF语句都有一个‘X’状态传递问题:
2、case语句-----用于描述总线或编码、译码的行为及状态机。
①Case与if相同之处:
它们都根据某个条件在多个语句集中进行选择。
②Case与if不相同之处:
Case语句的一般书写格式:
case<表达式>is
when<值>=>
<语句>;
when<值>|<值>=>
<语句>;
when<离散范围>=>
<语句>;
whenothers=>
<语句>;
Endcase;
二、迭代控制语句(iterationscontrolstatements)
1、循环语句(loopstatements)
用途:
用于实现重复的操作。
(1)for循环语句的一般书写格式:
<循环标号>:
for<循环变量>in<范围>loop
<语句>;
endloop<循环标号>;
(2)While循环语句
一般书写格式为:
<循环标号>:
while<条件>loop
<语句>;
endloop<循环标号>;
2、条件性的迭代循环语句(conditionaliterationsstatements)
一般书写格式为:
next<循环标号>when<条件>;
4.6生成语句(generate)
一般书写格式为:
生成标号:
生成方案GENERATE
{生成语句};
ENDGENERATE[生成标号];
4.7COMPONENT语句
一般书写格式为:
COMPONENT元件名
GENERIC说明----参数说明
PORT说明----端口说明
ENDCOMPONENT;
4.8元件例化(COMPONENT_INSTANT)
一般书写格式为:
标号名:
元件名PORTMAP(信号,…..);
1、映射方法有两种:
位置映射和名称映射。
①位置映射方法
②名称映射方法
4.9延时语句
在VHDL语言中存在两种延时类型:
惯性延时和传输延时
1、惯性延时------器件延时
2、传输延时-----总线延时,连接线的延时及ASIC芯片中的路径延时。
4.10多驱动器描述语句
在VHDL语言中,创建一个驱动器可以由一条信号代入语句来实现。
当有多个信号并行输出时,在构造体内部必须利用代入语句,分别对每个信号创建一个驱动器。
例如:
b和d输出共同驱动信号a。
Architecturearchsampleofsampleis
Begin
a<=bafter5ns;
a<=daftre5ns;
Endarchsample;
4.11VHDL语言构造体的子结构描述
一、block语句结构描述
1、书写格式
块结构名:
block
begin
……..
endblock块结构名
2、block块和子原理图的关系
二、subprogram语句结构描述
在VHDL语言中子程序有两种类型:
过程(procedure)和函数(function)。
其中,
“过程”与其它高级语言中的子程序相当。
“函数”与其它高级语言中的函数相当。
1、过程——用于数值计算、类型转换、运算重载或设计元件的高层次设计结构之一
过程语句的结构
书写格式为:
procedure过程名(参数1,参数2,…)is
[定义语句];(变量等定义)
begin
[顺序处理语句];(过程的语句)
end过程名;
2、函数
函数语句的结构
在VHDL语言中,函数语句的书写格式为:
function函数名(参数1;参数2;…..)
return数据类型名is
[定义语句];
begin
[顺序处理语句];
return[返回变量名];
end[函数名];
3、过程与函数的差别
主要有两点:
1)过程可以具有多个返回值,如果过程的参数被定义为out或inout型,那么它可以用来传递过程的返回值,而函数的参数则只能为in型。
2)过程中可以有wait语句,而函数中则不能。
4.12包集合、库及配置
一、库(library)
库:
是经编译后的数据的集合,它存放包集合定义、实体定义、结构体定义和配置定义。
库的功能:
类似于UNIX和MS_DOS操作系统中的目录,库中存放的是设计数据。
1、库的种类
当前在VHDL语言中,存在的库大致可以归纳为五种:
2、库的使用
(1)库的说明
前面提到的5类库除WORK和STD库之外,其它3类库在使用前都首先要作说明,第一个语句是:
“LIBRARY库名”;
(2)库说明作用范围
库说明语句的作用范围:
从一个实体说明开始到它所属的结构体、配置为止。
当一个源程序中出现两个以上的实体时,两条作为使用库的说明语句应在每个实体说明语句前重复书写。
二、包集合(package)
包集合用来单纯地罗列VHDL语言中所要用到的信号定义、常数定义、数据类型、元件语句、函数定义和过程定义等,它是一个可编译的设计单元,也是库结构中的一个层次。
使用包集合时可以用use语句说明。
一个包集合由两大部分组成:
包集合标题和包集合体。
书写格式如下:
PACKAGE包集合名IS
[说明语句];
END包集合名;
PACKAGEBODY包集合名IS
[说明语句];
ENDBODY;
三、配置(configuration)
配置语句:
描述层与层之间的连接关系以及实体与结构之间的连接关系。
基本书写格式为:
configuration配置名of实体名is
[语句说明];
end配置名;
1、默认配置(配置指定)
最简单的缺省配置格式结构
configuration配置名of实体名is
for选配结构体名;
endfor;
end配置名;
2、元件配置
上机作业:
实验二:
1.分别用选择信号赋值语句和case语句实现3/8译码器。
2.包集合和配置
选做:
分别用选择信号赋值语句和case语句实现0~F译码器。
教学要求:
1、掌握process进程语句的书写格式和应用。
2、掌握VHDL语言的并发语句的书写格式和应用范围。
3、掌握VHDL语言的顺序语句的书写格式和应用范围(特别是if语句和case语句)。
4、掌握生成语句的书写格式和应用范围。
5、掌握VHDL语句构造体的子结构描述(block、过程和函数的描述)。
6、掌握包集合、库和配置。
教学重点:
1、重点介绍VHDL硬件描述语言的语法。
2、重点介绍VHDL语言的构造体的子结构描述(block、过程和函数的描述)。
3、重点介绍包集合的生成(分别用过程、函数和元件例化等方法)和包的调用。
教学方法:
1、大量采用举例。
2、通过实验的手段达到教学目的。
教学手段:
采用多媒体PPT播放达到良好的教学目的。
第五章组合逻辑电路设计(combinationlogicdesign)
教学内容:
组合逻辑电路设计的应用可简单地分成以下几个方面:
1、基本逻辑门;
2、编码器和译码器;
3、多路选择器;
4、比较器;
5、加法器和求补器;
6、三态门及总线缓冲器。
5.1基本逻辑门的描述
与门(AND)、或门(OR)、与非门(NAND)、或非门(NOR)、异或门(XOR)。
5.2编码器和译码器的描述
一、编码器(encoder)
二、优先编码器
三、七段显示译码器
七段显示译码器方框图
四、3/8译码器
3/8译码器的真值表
五、地址译码器
地址译码器是数字系统中最典型的PLD应用。
下面介绍M6809存储器的地址译码器的设计。
六、多路分配器
多路分配器的作用是为输入信号选择输出,在计算机和通信设备中往往用于信号的分配。
1~8多路分配器,它有一个输入信号DATA,3个选择信号S0、S1、S2,一个使能信号enable和8根输出端y0~y7。
5.3数据选择器设计
5.4、比较器
比较器对比两个输入信号值的大小,有3种基本的比较结果:
即大于、小于和等于。
而对于不大于、不小于、不等于的情况可分别由3种结果取反得到。
下面求两个四位二进制数A:
(A0~A3)和B:
(B0~B3)的比较器。
比较器的输出有3种结果:
(1)A>B;
(2)A
5.5、加法器和求补器
一、一位全加器电路的描述
二、八位加法器的描述
八位加法器的实现是通过全加器的进位位级联而实现的。
它的VHDL源文件描述是利用元件例化的方法来描述的。
三、求补器
八位求补器电路方框图
5.6、三态门及总线缓冲器
一、三态门电路
二、总线缓冲器
总线缓冲器分为:
单向缓冲器和双向缓冲器。
1、单向缓冲器(单向总线缓冲器)
在微型计算机的总线驱动中,经常要用单向总线缓冲器,他通常由多个三态门组成,用来驱动地址总线和控制总线。
一个八位的单向总线缓冲器如图所式:
2、双向总线缓冲器
双向总线缓冲器用于对数据总线的驱动和缓冲,典型的双向总线缓冲器的电路图和真值表如下所示:
作业:
(上机实验)
实验三:
4位宽多路选择器
3/8译码器
八位加法器
四位二进制数转换成两位BCD码(选做)
教学要求:
1、掌握基本逻辑门的描述方法。
2、掌握编码器和译码器的描述方法。
3、掌握多路选择器的描述方法
4、掌握比较器的描述方法。
5、掌握加法器和求补器的描述方法
6、掌握三态门及总线缓冲器的描述方法。
教学重点:
教会学生用不同的描述方法实现组合逻辑电路,并对不同描述方法所综合的结果进行评价的能力。
教学方法:
1、大量采用举例。
2、通过实验的手段达到教学目的。
教学手段:
采用多媒体PPT播放达到良好的教学目的。
第六章时序逻辑电路设计(sequentiallogicdesign)
教学内容:
6.1时钟信号的VHDL描述方法
一、时钟边沿的描述
1、时钟上升沿的描述
①时钟信号起始值为‘0’,故属性值: