文档详情

第七八讲VHDL语句并行语句.ppt

发布:2016-12-28约8.55千字共42页下载文档
文本预览下载声明
第七讲(2) VHDL并行语句 并行语句论述 VHDL并行语句结构最具硬件描述语言特色 并行语句具有如下多种语句格式: 进程语句 块语句 并行信号赋值语句 条件信号赋值语句 元件例化语句 生成语句 并行过程调用语句 以上各并行语句在结构体中是同步执行的,其执行方式与书写顺序无关。 并行语句之间可以有信息往来,也可以是互为独立、互不相关、异步运行的(如多时钟情况)。 上图所示的是在一个结构体中各种并行语句运行的示意图。这些语句不必同时存在,在每一语句模块都可以独立异步运行,模块之间并行运行,并通过信号来交换信息。 每一并行语句内部的语句运行方式: 并行语句在结构体中的使用格式: ARCHITECTURE 结构体名 OF 实体名 IS 说明语句; BEGIN 并行语句; END 结构体名; 并行语句与顺序语句并不是相互对立的,它们往往相互包含,互为依存,他们是一个矛盾的统一体。严格说来,VHDL中不存在纯粹的并行行为和顺序行为的语言。 7.2.1 并行信号赋值语句 并行信号赋值语句有三种形式 简单信号赋值语句 条件信号赋值语句 选择信号赋值语句。 这三种信号赋值语句的共同点: 赋值目标必须都是信号 所有赋值语句与其他并行语句一样,在结构体内的执行是同时发生的,与书写顺序是否在块语句中没有关系。 1. 简单信号赋值语句 并行简单信号赋值语句是VHDL并行语句结构的最基本的单元,它的语句格式如下: 信号赋值目标=表达式; 式中,信号赋值目标的数据类型必须与赋值符号右边表达式的数据类型一致。 【例】 ARCHITECTURE ART OF XHFZ IS SIGNAL S1: STD_LOGIC; BEGIN OUTPUT 1= A AND B; OUTPUT 2= C+D; B1:BLOCK IS SIGNAL E, F, G, H: STD_LOGIC; BEGIN G=E OR F; H=E XOR F; END BLOCK B1; S1=G; END ART; 在结构体中的条件信号赋值语句的功能与在进程中的IF语句相同。在执行条件信号赋值语句时,每一赋值条件是按书写的先后关系逐项测定的,一旦发现赋值条件为TRUE,立即将表达式的值赋给赋值目标; 条件赋值语句将第一个满足关键字WHEN后的赋值条件所对应的表达式中的值,赋给赋值目标信号。 最后一项表达式可以不跟条件子句,用于表示以上各条件都不满足时,则将此表达式赋予赋值目标信号。允许条件重叠 【例】 … Z= A WHEN P1=‘1’ ELSE B WHEN P2=‘0’ ELSE C; … 由于条件测试的顺序性,第一子句具有最高赋值优先级,第二子句其次,第三子句最后。即:若p1和p2同时为1时,z获得的值是a。 3.选择信号赋值语句 选择信号赋值语句格式如下: WITH 选择表达式SELECT 赋值目标信号=表达式WHEN选择值, 表达式WHEN选择值, …, 表达式WHEN选择值; 选择信号赋值语句本身不能在进程中应用,但其功能却与进程中的case语句功能相似。Case语句的执行依赖于进城中敏感信号的改变而启动进程,而且要求case语句中各子句的条件不能有重叠,必须包容所有的条件; 选择信号语句中也有敏感量,即关键词WITH旁的选择表达式,每当选择表达式的值发生变化时,就将启动此语句对各子句的选择值进行测试对比,当发现有满足条件的子句时,就将此子句表达式中的值赋给赋值目标信号; 选择信号赋值语句不允许有条件重叠的现象,也不允许条件涵盖不全的情况。 【例7-17】 下面是一个简化的指令译码器(如下图所示)。对应于由A、B、C三个位构成的不同指令码,由DATA1和DATA2输入的两个值将进行不同的逻辑操作,并将结果从DATAOUT输出。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DECODER IS PORT(A,B,C:IN STD_LOGIC; DATA1,DATA2:IN STD_LOGIC; DATAOUT: OUT STD_LOGIC); END DECODER; ARCHITECTURE ART OF DECODER IS B
显示全部
相似文档