第5 章 VHDL 顺序语句

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

-- 将s2在上面的赋值0 赋给svec(7)
END PROCESS ;
第5 章 VHDL 顺序语句
5.1.2 赋值目标 赋值语句中的赋值目标有四种类型。 1. 标识符赋值目标 以简单的标识符作为信号或变量名,这类名字可作为
标识符赋值目标。 VARIABLE a, b STD_LOGIC ; SIGNAL c1 : STD_LOGIC_VECTOR (1 TO 4); a := '1' ; b := '0' ; c1 <= "1100“; 其中a b c1都属标识符赋值目标。
第5 章 VHDL 顺序语句
VHDL有如下六类基本顺序语句: 赋值语句 流程控制语句 等待语句 子程序调用语句 返回语句 空操作语句
第5 章 VHDL 顺序语句
5.1 赋值语句 赋值语句的功能就是将一个值或一个表达式的
运算结果传递给某一数据对象 如信号或变量, 或由此组成的数组。VHDL 设计实体内的数据 传递以及对端口界面外部数据的读写都必须通 过赋值语句的运行来实现。
第5 章 VHDL 顺序语句
变量赋值语句和信号赋值语句的语法格式如下: 变量赋值目标 := 赋值源; 信号赋值目标 <= 赋值源; 注意! 当在同一进程中,同一信号赋值目标有多个赋值源时,
信号赋值目标获得的是最后一个赋值源的赋值,其前 面相同的赋值目标不作任何变化。 当同一赋值目标处于不同进程中时,其赋值结果就比 较复杂,这可以看成是多个信号驱动源连接在一起可 以发生线与、线或、或者三态等不同结果。
第5 章 VHDL 顺序语句
2. 数组元素赋值目标
数组元素赋值表达式的赋值目标可表达为:
标识符(下标名);
在这里标识符是数组类信号或变量的名字,下 标名可以是一个具体的数字,也可以是一个以
文字表示的数字名。它的取值范围在该数组元
素个数范围内。下标名若是未明确表示取wk.baidu.com的
文字(不可计算值) 则在综合时,将耗用较多的 硬件资源,且一般情况下不能被综合。
-- 此'0'将上面准备赋入的'1'覆盖掉
svec(4) <= v1;
-- 将v1在上面的赋值0 赋给svec(4)
svec(5) <= v2;
-- 将v2在上面的赋值0 赋给svec(5)
svec(6) <= s1;
-- 将s1在上面的赋值1 赋给svec(6)
svec(7) <= s2;
第5 章 VHDL 顺序语句
5.1.1 信号和变量赋值 赋值语句有两种 即信号赋值语句和变量赋值语句 每一
种赋值语句都由三个基本部分组成,它们是赋值目标 赋值符号和赋值源 赋值目标是所赋值的受体 它的基本 元素只能是信号或变量 但表现形式可以有多种,如文 字、标识符、数组等。赋值符号只有两种,信号赋值 符号是 <= 变量赋值符号是:= 赋值源是赋值的主体。 它可以是一个数值,也可以是一个逻辑或运算表达式。 VHDL 规定,赋值目标与赋值源的数据类型必须一致。
SIGNAL s1 ,s2 : STD_LOGIC;
SIGNAL svec : STD_LOGIC_VECTOR (0 TO 7);
...
PROCESS ( s1 ,s2 )
VARIABLE v1 ,v2 : STD_LOGIC
BEGIN
v1 := '1' ;
-- 立即将v1置位为1
v2 := '1' ;
第5 章 VHDL 顺序语句
变量赋值与信号赋值的区别在于,变量具有局 部特征,它的有效性只局限于所定义的一个进 程中,或一个子程序中。它是一个局部的,暂 时性数据对象(在某些情况下)。对于它的赋值 是立即发生的(假设进程已启动) 即是一种时间 延迟为零的赋值行为。
第5 章 VHDL 顺序语句
信号则不同,信号具有全局性特征。它不但可 以作为一个设计实体内部各单元之间数据传送 的载体,而且可通过信号与其它的实体进行通 信(端口本质上也是一种信号),信号的赋值并 不是立即发生的,它发生在一个进程结束时。 赋值过程总是有某种延时的,它反映了硬件系 统的重要特性。综合后可以找到与信号对应的 硬件结构,如一根传输导线一个输入输出端口 或一个D触发器等。
第5 章 VHDL 顺序语句
顺序语句(Sequential Statements)和并行语句 (Concurrent Statements)是 VHDL 程序设计中两大基 本描述语句系列。在逻辑系统的设计中 ,这些语句从 多侧面完整地描述了数字系统的硬件结构和基本逻辑 功能,其中包括通信的方式、信号的赋值、多层次的 元件例化以及系统行为等。顺序语句是相对于并行语 句而言的,顺序语句的特点是,每一条顺序语句的执 行(指仿真执行)顺序是与它们的书写顺序基本一致的。 顺序语句只能出现在进程(Process)和子程序中,子程 序包括函数(Function)和过程(Procedure)。
svec(2) <= s1;
-- 将s1在上面的赋值1 赋给svec(2)
svec(3) <= s2;
-- 将最下面的赋予 s2的值'0' 赋给svec(3)
v1 := '0' ;
-- 将v1置入新值0
v2 := '0' ;
-- 将v2置入新值0
s2 <= '0' ;
-- 由于这是s2最后一次赋值 赋值有效
第5 章 VHDL 顺序语句
在 VHDL 中,一个进程是由一系列顺序语句构 成的,而进程本身属并行语句,在同一设计实 体中,所有的进程是并行执行的,一个进程与 其设计实体的其它部分进行数据交换的方式只 能通过信号或端口,如果要在进程中完成某些 特定的算法和逻辑操作,也可以通过依次调用 子程序来实现,但子程序本身并无顺序和并行 语句之分,利用顺序语句可以描述逻辑系统中 的组合逻辑、时序逻辑或它们的综合体。
-- 立即将v2置位为1
s1 <= '1' ;
-- s1被赋值为1
s2 <= '1' ;
-- 由于在本进程中 这里的s2不是最后一个
-- 赋值语句 故不作任何赋值操作
svec(0) <= v1;
-- 将v1在上面的赋值1 赋给svec(0)
svec(1) <= v2;
-- 将v2在上面的赋值1 赋给svec(1)
相关文档
最新文档