下载此文档

VHDL主要描述语句顺序语句.ppt


文档分类:IT计算机 | 页数:约51页 举报非法文档有奖
1/51
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/51 下载此文档
文档列表 文档介绍
该【VHDL主要描述语句顺序语句 】是由【sanshenglu2】上传分享,文档一共【51】页,该文档可以免费在线阅读,需要了解更多关于【VHDL主要描述语句顺序语句 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。VHDL主要描述语句顺序语句
§
顺序语句(SequentialStatements)和并行语句(Concurrent[Parallel]Statements)是VHDL程序设计中两大基本描述语句系列。在逻辑系统的设计中,这些语句从多侧面完整地描述数字系统的硬件结构和基本逻辑功能,其中包括通信的方式、信号的赋值、多层次的元件例化以及系统行为等。
顺序语句是相对于并行语句而言的,其特点是每一条顺序语句的执行(指仿真执行)顺序是与它们的书写顺序基本一致的,但其相应的硬件逻辑工作方式未必如此,在理解过程中要注意区分VHDL语言的软件行为及描述综合后的硬件行为间的差异。
顺序语句只能出现在进程(Process)和子程序中。在VHDL中,一个进程是由一系列顺序语句构成的,而进程本身属并行语句,这就是说,在同一设计实体中,所有的进程是并行执行的。然而任一给定的时刻内,在每一个进程内,只能执行一条顺序语句。一个进程与其设计实体的其他部分进行数据交换的方式只能通过信号或端口。如果要在进程中完成某些特定的算法和逻辑操作,也可以通过依次调用子程序来实现,但子程序本身并无顺序和并行语句之分。利用顺序语句可以描述逻辑系统中的组合逻辑、时序逻辑或它们的综合体。
顺序语句包括:赋值语句、IF语句、CASE语句、LOOP语句、NEXT语句、EXIT语句、WAIT语句、过程调用语句、RETURN语句、NULL语句、断言语句、REPORT语句。
赋值语句的功能就是将一个值或一个表达式的运算结果传递给某一数据对象,如信号或变量,或由此组成的数组。VHDL设计实体内的数据传递以及对端口界面外部数据的读/写都必须通过赋值语句的运行来实现。
赋值语句有两种,即信号赋值语句和变量赋值语句。
变量赋值与信号赋值的区别在于,变量具有局部特征,它的有效只局限于所定义的一个进程中,或一个子程序中,它是一个局部的、暂时性数据对象(在某些情况下)。
§
变量赋值语句和信号赋值语句的语法格式如下:
变量赋值目标:=赋值源;
信号赋值目标<=赋值源;
在信号赋值中,需要注意的是,当在同一进程中,同一信号赋值目标有多个赋值源时,信号赋值目标获得的是最后一个赋值源的赋值,其前面相同的赋值目标则不作任何变化。

SIGNALs1,s2:STD_LOGIC;
SIGNALsvec:STD_LOGIC_VECTOR(0TO7);
...
PROCESS(s1,s2)IS
VARIABLEv1,v2:STD_LOGIC;
BEGIN
v1:=‘1’; --立即将v1置位为1
v2:=‘1’; --立即将Vv置位为1
s1<=‘1’; --s1被赋值为1
s2<=‘1’; --由于在本进程中,这里的s2不是最后一个赋值语句故
不作任何赋值操作
svec(0)<=v1; --将v1在上面的赋值1,赋给svec(0)
svec(1)<=v2; --将v2在上面的赋值1,赋给svec(1)
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最后一次赋值,赋值有效,此‘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; --将s2在上面的赋值0,赋给svec(7)
ENDPROCESS
赋值目标
赋值语句中的赋值目标有四种类型。
标识符赋值目标及数组单元素赋值目标
标识符赋值目标是以简单的标识符作为被赋值的信号或变量名。
数组单元素赋值目标的表达形式为:
数组类信号或变量名
下标名可以是一个具体的数字,也可以是一个文字表示的数字名,它的取值范围在该数组元素个数范围内。下标名若是未明确表示取值的文字(不可计算值),则在综合时,将耗用较多的硬件资源,且一般情况下不能被综合。(见上例)
段下标元素赋值目标及集合块赋值目标
段下标元素赋值目标可用以下方式表示:
数组类信号或变量名(下标1TO/DOWNTO下标2)
括号中的两个下标必须用具体数值表示,并且其数值范围必须在所定义的数组下标范围内,两个下标的排序方向要符合方向关键词TO或DOWNTO,具体用法如下例所示:
VARIABLEa,b:STD_LOGIC_VECTOR(1TO4);
a(1TO2):="10";--等效于A(1):=‘1’,A(2):=‘0’
a(4DOWNTO1):="1011";
集合块赋值目标
集合块赋值目标,是以一个集合的方式来赋值的。对目标中的每个元素进行赋值的方式有两种,即位置关联赋值方式和名字关联赋值方式,具体用法如下例所示:
SIGNALa,b,c,d:STD_LOGIC:
SIGNALs:STD_LOGIC_VECTOR(1TO4)
...
VARIABLEe,f:STD_LOGIC;
VARIABLEg:STD_LOGIC_VECTOR(1TO2);
VARIABLEh:STD_LOGIC_VECTOR(1TO4);
s<=(‘0’,‘1’,‘0’,‘0’);
(a,b,c,d)<=s; --位置关联方式赋值
... --其他语句
(3=>e,4=>f,2=>g(1),1=>g(2)):=h; --名字关联方式赋值
示例中的信号赋值语句属位置关联赋值方式,其赋值结果等效于:
a<=‘0’;b<=‘1’;c<=‘0’;d<=‘0’;
示例中的变量赋值语句属名字关联赋值方式,赋值结果等效于:
g(2):=h(1);g(1):=h(2);e:=h(3);f:=h(4);

VHDL主要描述语句顺序语句 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数51
  • 收藏数0 收藏
  • 顶次数0
  • 上传人sanshenglu2
  • 文件大小1.02 MB
  • 时间2022-12-05