当前课程知识点:EDA技术与应用 >  第四章 VHDL语言概述 >  4.10 CASE语句 >  4.10.2 CASE语句 教学视频

返回《EDA技术与应用》慕课在线视频课程列表

4.10.2 CASE语句 教学视频在线视频

下一节:4.10.4 CASE语句 讨论

返回《EDA技术与应用》慕课在线视频列表

4.10.2 CASE语句 教学视频课程教案、知识点、字幕

同学们,大家好

这一讲,我们来学习另外一种顺序语句

CASE语句

我们已经知道

IF语句和WAIT语句

是按条件来控制后续操作的语句

CASE语句是另一种条件控制语句

设计者经常会遇到

根据某个表达式的取值

来决定进行某项操作的情况

CASE语句就能够很好的完成这个任务

CASE语句的语法结构如下

当执行CASE语句时

首先会计算多值表达式的值

然后根据WHEN条件句中

与之相同的选择值

来选择执行对应的顺序语句

也就是要看哪一条WHEN子句当中的选择值

和当前多值表达式的值相等

就会执行哪条语句里面的顺序语句

最后结束CASE语句

需要注意的是

各条件句中由等号和大于号

构成的“=>”符号不是操作符

它的含义相当于THEN

CASE语句在使用的时候应该注意以下几点

首先,CASE语句是一种顺序执行的语句

因此它必须放在进程、函数或过程内部使用

第二点,每一个WHEN条件句中的选择值

都必须在多值表达式的取值范围内

第三条,WHEN条件句中选择值

必须完全覆盖表达式的全部取值

因此

我们通常要在最后一条WHEN条件句中

用关键字OTHERS

来代表所有未列出的可能的情况

与之相配合的另一个常用的关键字是NULL

NULL表示没有操作发生

例如:WHEN OTHERS=>NULL

第四点,在CASE语句中

每一个选择值只能出现一次

不允许有相同选择值的条件句出现

最后一点

除了WHEN OTHERS条件句

必须放在最后一条语句以外

其它WHEN条件句的次序并不重要

它的执行过程更接近于并行的方式

下面我们通过

一个8段数码管显示译码器电路的设计

来体会一下CASE语句的应用

数码管是一种半导体显示器件

其基本单元是发光二极管

数码管按段数

可以分为7段数码管和8段数码管

它们的主要差别

在于8段数码管多了一个

用来显示小数点的发光二极管单元

按照各发光二极管的连接方式

数码管可以分为共阴和共阳两种类型

共阴数码管是指:

将所有发光二极管的阴极接在一起

形成公共阴极的这样一种数码管

在使用时

应将共阴数码管的公共阴极接到地端

当某一字段发光二极管的阳极为高电平时

该字段就会点亮

如果某一字段发光二极管的阳极为低电平

那么,这个字段就不亮

下面我们用CASE语句来设计一个

能够驱动一位共阴数码管

显示0到9的BCD码显示译码器

这个显示译码器有四位BCD码输入端

分别为A3、A2、A1和A0

输出端为:

a、b、c、d、e、f、g、dp共八个输出端

分别对应连接数码管的八个段码控制端

通过分析BCD码和共阴数码管显示的特点

可以得到该电路的真值表,如图所示

首先是库声明和程序包声明

然后是实体说明,定义实体名为seg8

端口A3、A2、A1和A0

是四个std_logic类型的输入端口

用于输入四位BCD码

端口a、b、c、d、e、f、g、dp

是八个std_logic类型的输出端口

结构体采用行为描述方式

进程process的敏感信号为

A3、A2、A1和A0

当输入信号状态发生变化时

进程就会启动

进程开始先定义了

两个std_logic_vector类型的变量

datain和temp

datain的宽度为3到0

用于存放四位BCD码输入

temp的宽度为7到0

用于存放译码器需要输出的段码

首先 用并值运算符

把A3、A2、A1、和A0

拼接成一个4位宽度的数组

赋值给变量代datain

进程主要由CASE语句构成

执行时先判断datain的值

根据当前电路输入的状态

来选择下面哪一条WHEN条件句被执行

各条WHEN条件子句

都是根据真值表中BCD码输入

与数码管相应字形段码之间的关系写出来的

当输入超出“0000”到“1001” 这个范围

也就是字形超出0到9这十个数字时

所有的八个段码输出全为高阻态‘Z’

此时数码管所有字段都熄灭

各条when子句执行后

所产生的段码临时存放在变量temp中

当CASE语句结束后

我们可以用对信号赋值的方式

把temp中的段码相应的位

输出到显示译码器的对应输出端

a、b、c、d、e、f、g和dp

此时必须要注意

对应的顺序和次序不要混淆!

这样就能使数码管

根据BCD码输入显示0-9这十个数字了

与IF语句相比

CASE语句的可读性比较好

并且没有像IF语句那样

逐项条件顺序比较的过程

其执行过程更类似并行方式

但是CASE语句还是属于顺序语句

因此只能在进程、函数或过程内部使用

在使用时

一定要注意

该语句的书写格式和一些注意事项

好,本讲到这里就结束了

同学们,再见

EDA技术与应用课程列表:

第一章 EDA技术概述

-1.1 EDA技术概述

--1.1.1 EDA技术概述 导学

--1.1.2 EDA技术概述 教学视频

--1.1.3 EDA技术概述 单元测验

--1.1.4 EDA技术概述 讨论

第二章 可编程逻辑器件概述

-2.1 可编程逻辑器件(PLD)概述

--2.1.1 可编程逻辑器件 导学

--2.1.2 可编程逻辑器件概述 教学视频

--2.1.3 可编程逻辑器件概述 单元测验

--2.1.4 可编程逻辑器件概述 讨论

-2.2 CPLD的结构和原理

--2.2.1 CPLD结构和原理 导学

--2.2.2 CPLD的结构和原理 教学视频

--2.2.3 CPLD的结构和原理 单元测验

--2.2.4 CPLD的结构和原理 讨论

-2.3 FPGA的结构和原理

--2.3.1 FPGA的结构和原理 导学

--2.3.2 FPGA的结构和原理 教学视频

--2.3.3 FPGA的结构和原理 单元测验

--2.3.4 FPGA的结构和原理 讨论

-2.4 FPGA和CPLD的选用

--2.4.1 FPGA和CPLD的选用 导学

--2.4.2 FPGA和CPLD的选用 教学视频

--2.4.3 FPGA和CPLD的选用 单元测验

--2.4.4 FPGA和CPLD的选用 讨论

-2.5 FPGA与CPLD的编程和配置

--2.5.1 FPGA与CPLD的编程与配置 导学

--2.5.2 FPGA与CPLD的编程与配置 教学视频

--2.5.3 FPGA与CPLD的编程与配置 单元测验

--2.5.4 FPGA与CPLD的编程与配置 讨论

第三章 EDA开发平台——QuartusII应用

-3.1 QuartusII概述

--3.1.1 Quartus Ⅱ概述 导学

--3.1.2 Quartus Ⅱ概述 教学视频

--3.1.3 Quartus Ⅱ概述 单元测验

--3.1.4 Quartus Ⅱ概述 讨论

-3.2 新建工程

--3.2.1 新建工程 导学

--3.2.2 新建工程 教学视频

--3.2.3 新建工程 单元测验

-3.3 设计输入

--3.3.1 设计输入 导学

--3.3.2 设计输入 教学视频

--3.3.3 设计输入 单元测验

--3.3.4 设计输入 讨论

-3.4 设计编译

--3.4.1 设计编译 导学

--3.4.2 设计编译 教学视频

--3.4.3 设计编译 单元测验

--3.4.4 设计编译 讨论

-3.5 仿真验证

--3.5.1 仿真验证 导学

--3.5.2 仿真验证 教学视频

--3.5.3 仿真验证 单元测验

--3.5.4 仿真验证 讨论

-3.6 器件编程

--3.6.1 器件编程 导学

--3.6.2 器件编程1 教学视频

--3.6.3 器件编程2 教学视频

--3.6.4 器件编程 单元测验

--3.6.5 器件编程 讨论

-3.7层次化设计

--3.7.1 层次化设计 导学

--3.7.2 层次化设计 教学视频

--3.7.3 层次化设计 单元测验

--3.7.4 层次化设计 讨论

-3.8 宏功能模块的使用

--3.8.1 宏功能模块的使用 导学

--3.8.2 宏功能模块的使用 教学视频

--3.8.3 宏功能模块的使用 单元测验

--3.8.4 宏功能模块的使用 讨论

第四章 VHDL语言概述

-4.1 VHDL语言概述

--4.1.1 VHDL概述 导学

--4.1.2 VHDL语言概述 教学视频

--4.1.3 VHDL语言概述 单元测验

--4.1.4 VHDL概述 讨论

-4.2 VHDL代码的结构

--4.2.1 VHDL代码的结构 导学

--4.2.2 VHDL代码的结构 教学视频

--4.2.3 VHDL代码的结构 单元测验

--4.2.4 VHDL代码的结构 讨论

-4.3 库和库声明

--4.3.1 库和库声明 导学

--4.3.2 库和库声明 教学视频

--4.3.3 库和库声明 单元测验

--4.3.4库和库声明 讨论

-4.4 实体说明

--4.4.1 实体说明 导学

--4.4.2 实体说明 教学视频

--4.4.3 实体说明 单元测验

--4.4.4 实体说明 讨论

-4.5 结构体

--4.5.1 结构体 导学

--4.5.2 结构体 教学视频

--4.5.3 结构体 单元测验

--4.5.3 结构体 讨论

-4.6 VHDL预定义数据类型

--4.6.1 VHDL预定义数据类型 导学

--4.6.2 VHDL预定义数据类型 教学视频

--4.6.3 VHDL预定义数据类型 单元测验

--4.6.4 VHDL预定义数据类型 讨论

-4.7 常量、变量和信号

--4.7.1 常量、变量和信号 导学

--4.7.2 常量、变量和信号 教学视频

--4.7.3 常量、变量和信号 单元测验

--4.7.4 常量、变量和信号 讨论

-4.8 运算操作符和属性

--4.8.1 运算操作符和属性 导学

--4.8.2 运算操作符和属性 教学视频

--4.8.3 运算操作符和属性 单元测验

--4.8.4 运算操作符和属性 讨论

-4.9 IF语句和WAIT语句

--4.9.1 IF语句和WAIT语句 导学

--4.9.2 IF语句和WAIT语句 教学视频

--4.9.3 IF语句和WAIT语句 单元测验

--4.9.4 IF语句和WAIT语句 讨论

-4.10 CASE语句

--4.10.1 CASE语句 导学

--4.10.2 CASE语句 教学视频

--4.10.3 CASE语句 单元测验

--4.10.4 CASE语句 讨论

-4.11 LOOP循环语句

--4.11.1 LOOP循环语句 导学

--4.11.2 LOOP循环语句 教学视频

--4.11.3 LOOP循环语句 单元测验

--4.11.4 LOOP循环语句 讨论

-4.12 进程

--4.12.1 进程 导学

--4.12.2 进程 教学视频

--4.12.3 进程 单元测验

--4.12.4 进程 讨论

-4.13 条件信号赋值语句

--4.13.1 条件信号赋值语句 导学

--4.13.2 条件信号赋值语句 教学视频

--4.13.3 条件信号赋值语句 单元测验

-4.14 选择信号赋值语句

--4.14.1 选择信号赋值语句 导学

--4.14.2 选择信号赋值语句 教学视频

--4.14.3 选择信号赋值语句 单元测验

-4.15 元件例化语句

--4.15.1 元件例化语句 导学

--4.15.2 元件例化语句 教学视频

--4.15.3 元件例化语句 单元测验

--4.15.4 元件例化语句 讨论

-4.16 VHDL模块化设计

--4.16.1 VHDL模块化设计

--4.16.2 VHDL模块化设计 教学视频

--4.16.3 VHDL模块化设计 单元测验

--4.16.4 VHDL模块化设计 讨论

第五章 设计方法概述

-5.1 设计方法概述

--5.1.1 设计方法概述 导学

--5.1.2 设计方法概述 教学视频

--5.1.3 设计方法概述 单元测验

--5.1.4 设计方法概述 讨论

-5.2 EDA综合设计案例(1)— 数字钟的设计

--5.2.1 EDA综合设计案例1 导学

--5.2.2 EDA综合设计设计案例1— 数字钟的设计 教学视频

--5.2.3 EDA综合设计案例1 单元测验

--5.2.4 EDA综合设计案例1 讨论

-5.3 EDA综合设计案例(2)—16×16点阵控制器设计

--5.3.1 EDA综合设计案例2 导学

--5.3.2 EDA综合设计案例2—16×16点阵控制器设计 教学视频

--5.3.3 EDA综合设计案例2 单元测验

--5.3.4 EDA综合设计案例2 讨论

思政教育

-国产EDA技术如何突破?

4.10.2 CASE语句 教学视频笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。