当前课程知识点:EDA技术与应用 > 第四章 VHDL语言概述 > 4.14 选择信号赋值语句 > 4.14.2 选择信号赋值语句 教学视频
同学们,大家好
这一讲
我们来学习另一种并行信号赋值语句
选择信号赋值语句
通过前面的学习
我们已经知道对信号的赋值可以是简单的
不附加任何条件的赋值
也可以是有条件的赋值
在VHDL语言中,对信号的赋值
还可以通过一个多值表达式的不同取值
来选择具体的赋值操作
这就是选择信号赋值语句的作用
下面我们来学习它的结构和功能
选择信号赋值语句的语法格式是这样的
在选择信号赋值语句中
选择表达式是该语句的敏感条件
每当选择表达式的值发生变化时
选择信号赋值语句就会被执行
执行的时候会用选择表达式的当前取值
和各条WHEN子句的选择值作比较
如果某一条子句的选择值
和选择表达式的当前值相等
那么
就会把这条WHEN子句中的表达式
赋值给目标信号
所以
我们看到选择信号赋值语句的执行方式
和CASE语句有点相似
的确如此
和CASE语句一样
选择信号赋值语句
也要求各选择值不能有重叠的现象
同时
各条HEN子句中选择值必须对选择表达式
所有可能出现的情况予以涵盖
不允许出现涵盖不全的情况
因此
我们经常用关键字OTHERS来做到这一点
但是CASE语句属于顺序语句
只能用在进程、函数或过程内部
而选择信号赋值语句是并行语句
它不能用在进程、函数或过程内部
每一条选择信号赋值语句
相当于一个进程
另外,我们还要注意一个细节
那就是在选择信号赋值语句中
除了最后一条WHEN子句用分号结束以外
其他各条WHEN子句的结尾都是逗号
而条件信号赋值语句的各条子句
结尾是没有标点符号的
只有最后一句是分号结束
下面我们用选择信号赋值语句来重新设计
上一讲中的4选1多路选择器
熟悉一下选择信号赋值语句的应用
也能体会到
选择信号赋值和条件信号赋值的联系和区别
电路的名称为mux4_1
d3、d2、d1、d0是四个数据输入端
s1和s0是两个地址端
q是数据输出端
电路的功能
是根据s1和s0这两个地址端的不同状态
从d3、d2、d1、d0中选择一个输出到q
当地址溢出的时候
电路的输出为高阻态
下面是用选择信号赋值语句完成的设计代码
代码开始
依然是必要的库声明和程序包声明
然后是实体说明
定义了实体名称和所有的电路端口
结构体采用了选择信号赋值语句
首先定义了一个信号temp
数据类型为STD_LOGIC_VECTOR
宽度是1 DOWNTO 0
把s1和s0并置后赋值给temp
这样temp就代表着选择的地址
当4选1多路选择器的地址发生变化的时候
选择信号赋值语句
就会读取当前temp的值
并且和各条WHEN子句的选择值进行比对
根据比中的结果决定d3、d2、d1和d0
哪一个信号被选中输出
如果地址信号不在上述四种情况之内
则输出为高阻态
和条件信号赋值语句相似
选择信号赋值也是一种并发执行的语句
它的功能是根据选择条件的不同取值
来选择对目标信号进行不同的赋值
选择信号赋值语句中的各条子句是并行的
没有优先等级之分
选择值不允许相互重叠
而条件信号赋值的各条子句
是有优先级别的
执行时会根据条件的先后顺序进行判断
所以这两种信号赋值还是有一些区别的
选择信号赋值和条件信号赋值
都是并行语句
不能用在进程的内部
只能在结构体部分来使用它们
好,本讲到这里就结束了
同学们,再见
-1.1 EDA技术概述
--1.1.3 EDA技术概述 单元测验
-2.1 可编程逻辑器件(PLD)概述
--2.1.3 可编程逻辑器件概述 单元测验
-2.2 CPLD的结构和原理
--2.2.3 CPLD的结构和原理 单元测验
-2.3 FPGA的结构和原理
--2.3.3 FPGA的结构和原理 单元测验
-2.4 FPGA和CPLD的选用
--2.4.3 FPGA和CPLD的选用 单元测验
-2.5 FPGA与CPLD的编程和配置
--2.5.3 FPGA与CPLD的编程与配置 单元测验
-3.1 QuartusII概述
--3.1.3 Quartus Ⅱ概述 单元测验
-3.2 新建工程
--3.2.3 新建工程 单元测验
-3.3 设计输入
--3.3.3 设计输入 单元测验
-3.4 设计编译
--3.4.3 设计编译 单元测验
-3.5 仿真验证
--3.5.3 仿真验证 单元测验
-3.6 器件编程
--3.6.4 器件编程 单元测验
-3.7层次化设计
--3.7.3 层次化设计 单元测验
-3.8 宏功能模块的使用
--3.8.3 宏功能模块的使用 单元测验
-4.1 VHDL语言概述
--4.1.3 VHDL语言概述 单元测验
-4.2 VHDL代码的结构
--4.2.3 VHDL代码的结构 单元测验
-4.3 库和库声明
--4.3.3 库和库声明 单元测验
-4.4 实体说明
--4.4.3 实体说明 单元测验
-4.5 结构体
--4.5.3 结构体 单元测验
-4.6 VHDL预定义数据类型
--4.6.3 VHDL预定义数据类型 单元测验
-4.7 常量、变量和信号
--4.7.3 常量、变量和信号 单元测验
-4.8 运算操作符和属性
--4.8.3 运算操作符和属性 单元测验
-4.9 IF语句和WAIT语句
--4.9.3 IF语句和WAIT语句 单元测验
-4.10 CASE语句
--4.10.3 CASE语句 单元测验
-4.11 LOOP循环语句
--4.11.3 LOOP循环语句 单元测验
-4.12 进程
--4.12.3 进程 单元测验
-4.13 条件信号赋值语句
--4.13.3 条件信号赋值语句 单元测验
-4.14 选择信号赋值语句
--4.14.3 选择信号赋值语句 单元测验
-4.15 元件例化语句
--4.15.3 元件例化语句 单元测验
-4.16 VHDL模块化设计
--4.16.3 VHDL模块化设计 单元测验
-5.1 设计方法概述
--5.1.3 设计方法概述 单元测验
-5.2 EDA综合设计案例(1)— 数字钟的设计
--5.2.2 EDA综合设计设计案例1— 数字钟的设计 教学视频
--5.2.3 EDA综合设计案例1 单元测验
-5.3 EDA综合设计案例(2)—16×16点阵控制器设计
--5.3.2 EDA综合设计案例2—16×16点阵控制器设计 教学视频
--5.3.3 EDA综合设计案例2 单元测验