第5章 VHDL并行语句

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

其中 rest_period 是 Time 类型,信号 reset 初始值为 1(有效),经过一 个复位时长rest_period后变为0(无效),从而实现异步复位。
5.1 并行信号赋值语句
5.1.2.条件信号赋值语句
条件信号赋值语句的表达方式如下: 赋值目标 <= 表达式 WHEN 赋值条件 ELSE 表达式 WHEN 赋值条件 ELSE … 表达式; 在结构体中的条件信号赋值语句的功能与在进程中的IF语句 相同。在执行条件信号赋值语句时,每一赋值条件是按书写 的先后关系逐项测定的,一旦发现赋值条件=TRUE,立即将表 达式的值赋给赋值目标。
信号赋值操作:符号“<=”进行信号赋值操作 的,它可以用在顺序执行语句中,也可以用在 并行处理语句中 注意 1、用在并行处理语句中时,符号<=右边的值是 此条语句的敏感信号,即符号 <= 右边的值发生 变化就会重新激发此条赋值语句,也即符号 <= 右边的值不变化时,此条赋值语句就不会执行。 如果符号<=右边是常数则赋值语句一直执行。 2、用在顺序执行语句中时,没有以上说法。
接口说明部分类似于实体的定义 部分,它可包含由关键词PORT、 GENERIC 、 PORT MAP 和 GENERIC MAP 引导的接口说明等语句,对 BLOCK 的接口设置以及与外界信 号的连接状况加以说明。
块的类属说明部分和接口说明部分的适用范围仅限于当前BLOCK。所有这些 在BLOCK内部的说明对于这个块的外部来说是完全不透明的,即不能适用于外 部环境,但对于嵌套于内层的块却是透明的。块的说明部分可以定义的项目 主要有:USE语句、子程序、数据类型、子类型、常数、信号、元件。 块中的并行语句部分可包含结构体中的任何并行语句结构。BLOCK语句本 身属并行语句,BLOCK语句中所包含的语句也是并行语句。
5.1 并行信号赋值语句
5.1. 2.条件信号赋值语句
程序显示,由于条件测试的顺序性,第 一子句具有最高赋值优先级,第二子句 其次,第三句最后,也就是说,如果当 p1和p2同时为1时,z获得的赋值是a。
5.1 并行信号赋值语句
5.1.3.选择信号赋值语句
式中信号赋值目标的数据对象必须是信号, 它的数据类型必须与赋值符号右边表达式的 WITH 选择表达式 SELECT 数据类型一致。 赋值目标信号<=表达式WHEN选择值, 表达式WHEN选择值, 选择信号赋值语句本身不能在进程中应用,功 … 能与进程中的 CASE 语句的功能相似。 CASE 语句的
第5章 VHDL并行语句
并行语句结构是VHDL的特色。在VHDL中,并行语句具有多 种语句格式,各种并行语句在结构体中的执行是同步进行 的,或者说是并行运行的,其执行方式与书写的顺序无关。 每一并行语句内部的语句运行方式可以有两种不同的方式, 即并行执行方式(如块语句)和顺序执行方式(如进程语句)。
5.1 并行信号赋值语句
5.1.4 块语句
3、BLOCK语句在综合中的地位
块 (BLOCK) 语句是一种将结构体中的并行描述语句进行组合的方法,它的 主要目的是改善并行语句及其结构的可读性。
【例】 … B1:BLOCK SIGNAL S: BIT; BEGIN S<=A AND B; B2:BLOCK SIGNAL S: BIT; BEGIN S<=C AND D; B3 :BLOCK BEGIN Z<= S; END BLOCK B3; END BLOCK B2; Y<= S; END BLOCK B1;
选择信号赋值语句格式如下:
表达式WHEN选择值;
执行依赖于进程中敏感信号的改变而启动进程, 而且要求 CASE 语句中各子句的条件不能有重叠, 必须包容所有的条件。 选择信号语句中的敏感量为关键词 WITH旁的选 择表达式。当选择表达式的值发生变化时,就将 启动此语句对于各子句的选择值进行测试对比, 当发现有满足条件的子句的选择值时,就将此子 句表达式中的值赋给赋值目标信号。 与 CASE 语句相似,选择赋值语句对于子句条 件选择值的测试具有同期性,而条件信号赋值语 句是按照子句的书写顺序从上至下逐条测试的。 选择赋值语句不允许有条件重叠的现象,也 不允许存在条件涵盖不全情况。
元件例化就是将预先设计好的设计实体定义为一个元件, 然后利用特定的语句将此元件与当前的设计实体中的指定端 口相连接。元件例化语句由两部分组成,前一部分是将一个 现成的设计实体定义为一个元件的语句,第二部分则是此元 件与当前设计实体中的连接说明,
VHDL 中不存在纯粹的并行行为和顺 并行语句在结构体中的使用格式如下: 序行为的语句。例如,相对于其他 ARCHITECTURE 结构体名 OF 实体名 IS 的并行语句,进程属于并行语句, 而进程内部运行的都是顺序语句。 说明语句; PROCESS结构中的顺序语句,其顺序 BEGIN 执行过程只是相对于计算机中的软 并行语句; 件行为仿真的模拟过程而言的,这 END ARCHITECTURE 结构体名; 个过程与硬件结构中实现的对应的 逻辑行为是不相同的。
5.1 并行信号赋值语句
并行信号赋值语句
三种形式:简单信号赋值语句、条件信号赋值语句和选择信号赋值语句。 共同点是: 赋值目标必须都是信号,所有赋值语句在结构体内的执行是
同时发生的,与它们的书写顺序和是否在块语句中没有关系。
每一信号赋值语句都相当于一条缩写的进程语句,而这条语句的所有 输入(或读入)信号都被隐性地列入此过程的敏感信号表中。任何信号的
变化都将启动相关并行语句的赋值操作,而这种启动完全是独立于其他
语句的。
5.1 并行信号赋值语句
5.1.1.简单信号赋值语句
并行简单信号赋值语句是 VHDL并行语句结构的最基本的单元,它的语句 格式如下:
信号赋值目标<=表达式
式中信号赋值目标的数据对象必须是信号,它的数据类型必须与赋 值符号右边表达式的数据类型一致。
5.1 并行信号赋值语句
5.1.4 块语句
3、BLOCK语句在综合中的地位
BLOCK语句的应用,包括其中的类属说明和端口定义,都不会影响对原结构体 的逻辑功能的仿真结果。
【例】OUT1<=‘1’ AFTER 2 NS; BLK1: BLOCK BEGIN A2:OUT 2<=‘1’ AFTER 3 NS; A3:OUT 3<=‘0’ AFTER 2 NS; END BLOCK BLK1; 【例】A1:OUT1 <=‘1’ AFTER 2 NS; A2:OUT2<=‘1’ AFTER 3 NS; A3:OUT3<=‘0’ AFTER 2 NS;
5.1 并行信号赋值语句
5.1.5 元件例化语句
BLOCK语句的表达格式如下: COMPONENT 例化元件名 IS GENERIC (类属表) PORT(例化元件端口名表) END COMPONENT 例化元件名;--元件例化语句 元件例化名:例化元件名 PORT MAP( [例化元件端口名=>] 连接实体端口名,…);
5.1 并行信号赋值语句
2.BLOCK的应用
5.1.4
块语句
利用BLOCK语句可以将结构体中的并行语句划分成多个并列方式的 BLOCK,每一 个BLOCK都像一个独立的设计实体,具有自己的类属参数说明和界面端口,以及 与外部环境的衔接描述。具有块嵌套方式的BLOCK语句结构。
【例】…
ENTITY GAT IS GENERIC(L_TIME:TIME;S_TIME:TIME); --类属说明 PORT (B1,B2,B3:INOUT BIT); --结构体全局端口定义 END ENTITY GAT; ARCHITECTURE ART OF GAT IS SIGNAL A1:BIT; --结构体全局信号A1定义 BEGIN BLK1:BLOCK --块定义,块标号名是BLK1 GENERIC (GB1,GB2:TIME); --定义块中的局部类属参量 GENERIC MAP (GB1=>L-TIME,GB2=>S-TIME);--局部端口参量设定 PORT (PB1:IN BIT;PB2:INOUT BIT); --块结构中局部端口定义 POTR MAP(PB1=>B1,PB2=>A1); --块结构端口连接说明 CONSTANT DELAY:TIME:=1 MS; --局部常数定义 SIGNAL S1:BIT; --局部信号定义 BEGIN S1<=PB1 AFTER DELAY; PB2<=S1 AFTER GB1,B1 AFTER GB2; -- GB1、 GB2为时间量 END BLOCK BLK1; END ARCHITECTURE ART;
5.1 并行信号赋值语句
5.1.3.选择信号赋值语句
【例】LIBRARY IEEE; 简化的指令译码器,对应于由 A 、 B 、 C 三个 USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; 位构成的不同指令码,由 DATA1 和 DATA2 输入 ENTITY DECODER IS 的两个值将进行不同的逻辑操作 ,结果从 PORT(A,B,C: IN STD_LOGIC; DATAOUT输出。 DATA1,DATA2:IN STD_LOGIC; DATAOUT: OUT STD_LOGIC); END DECODER; ARCHITECTURE ART OF DECODER IS BEGIN SIGNAL INSTRUCTION:STD_LOGIC_VECTOR(2 DOWNTO 0); INSTRUCTION <=C & B & A; DECODER WITH INSTRUCTION SELECT A A DATAOUT <=DATA1 AND DATA2 WHEN "000", B B DATA1 OR DATA2 WHEN "001", C C D_OUT DATAOUT DATA1 NAND DATA2 WHEN "010", DATA1 D1 DATA1 NOR DATA2 WHEN "011", DATA2 D2 DATA1 XOR DATA2 WHEN "100", DATA1 NXOR DATA2 WHEN "101", 'Z' WHEN OTHERS; --当不满足条件时,输出呈高阻态 END ARCHITECTURE ART;
5.1 并行信号赋值语句
5.1.1.简单信号赋值语句
用于仿真的VHDL程序中,常用AFTER语句来描述延迟信息,因而常与 Time类型一起使用,于是,用AFTER语句描述其赋值延迟的赋值语句的 语法格式如下:
通过AFTER给信号赋值,可以描述信号在确定延迟时间后取值的变化。这种 适用于非循环的有限变化信号赋值。特别注意此语句中,对“赋值目标”进 行赋值的 v0、v1、v2 等是按顺序执行的,然而 AFTER 后指定的时间却是同时 开始计时的。例如对复位信号的描述可以表示为:
--定义块B1 --在B1块中定义S
--向B1中的S赋值 --定义块B2,套于B1块中 --定义B2块中的信号S --向B2中的S赋值
此例是对嵌套块的语法 现象作一些说明,它实 际描述的是如图所示的 两个相互独立的2输入 与门。
A Y
--此S来自B2块 --此S来自B1块
B C D ZHale Waihona Puke Baidu
两个2输入与门
两例的仿真结果是完全相同的。 基于实用的观点,结构体中功能 语句的划分最好使用元件例化 (COMPONENT INSTANTIATION) 的方式来完成。
块语句的并行工作方式更为明显, 块语句本身是并行语句结构,而且它 的内部也都是由并行语句构成的(包括 进程)。 需特别注意的是,块中定义的所 有的数据类型、数据对象(信号、变量、 常量)和子程序等都是局部的;对于多 层嵌套的块结构,这些局部定义量只 适用于当前块,以及嵌套于本层块的 所有层次的内部块,而对此块的外部 来说是不可见的。
5.1 并行信号赋值语句
5.1.4 块语句
1、块语句定义
块(BLOCK)语句是一种将结构体中的并行描述语句进行组合的方法, 它的主要目的是改善并行语句及其结构的可读性。
BLOCK语句的表达格式如下: 块标号:BLOCK[(块保护表达式)] 接口说明; 类属说明; BEGIN 并行语句; END BLOCK [块标号];
相关文档
最新文档