第5 章 VHDL 顺序语句.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5 章 VHDL 顺序语句 顺序语句(Sequential Statements)和并行语句(Concurrent Statements)是 VHDL 程序设计中两大基本描述语句系列。在逻辑系统的设计中 ,这些语句从多侧面完整地描述了数字系统的硬件结构和基本逻辑功能,其中包括通信的方式、信号的赋值、多层次的元件例化以及系统行为等。顺序语句是相对于并行语句而言的,顺序语句的特点是,每一条顺序语句的执行(指仿真执行)顺序是与它们的书写顺序基本一致的。顺序语句只能出现在进程(Process)和子程序中,子程序包括函数(Function)和过程(Procedure)。 第5 章 VHDL 顺序语句 在 VHDL 中,一个进程是由一系列顺序语句构成的,而进程本身属并行语句,在同一设计实体中,所有的进程是并行执行的,一个进程与其设计实体的其它部分进行数据交换的方式只能通过信号或端口,如果要在进程中完成某些特定的算法和逻辑操作,也可以通过依次调用子程序来实现,但子程序本身并无顺序和并行语句之分,利用顺序语句可以描述逻辑系统中的组合逻辑、时序逻辑或它们的综合体。 第5 章 VHDL 顺序语句 VHDL有如下六类基本顺序语句: 赋值语句 流程控制语句 等待语句 子程序调用语句 返回语句 空操作语句 第5 章 VHDL 顺序语句 5.1 赋值语句 赋值语句的功能就是将一个值或一个表达式的运算结果传递给某一数据对象 如信号或变量,或由此组成的数组。VHDL 设计实体内的数据传递以及对端口界面外部数据的读写都必须通过赋值语句的运行来实现。 第5 章 VHDL 顺序语句 5.1.1 信号和变量赋值 赋值语句有两种 即信号赋值语句和变量赋值语句 每一种赋值语句都由三个基本部分组成,它们是赋值目标 赋值符号和赋值源 赋值目标是所赋值的受体 它的基本元素只能是信号或变量 但表现形式可以有多种,如文字、标识符、数组等。赋值符号只有两种,信号赋值符号是 = 变量赋值符号是:= 赋值源是赋值的主体。 它可以是一个数值,也可以是一个逻辑或运算表达式。VHDL 规定,赋值目标与赋值源的数据类型必须一致。 第5 章 VHDL 顺序语句 变量赋值与信号赋值的区别在于,变量具有局部特征,它的有效性只局限于所定义的一个进程中,或一个子程序中。它是一个局部的,暂时性数据对象(在某些情况下)。对于它的赋值是立即发生的(假设进程已启动) 即是一种时间延迟为零的赋值行为。 第5 章 VHDL 顺序语句 信号则不同,信号具有全局性特征。它不但可以作为一个设计实体内部各单元之间数据传送的载体,而且可通过信号与其它的实体进行通信(端口本质上也是一种信号),信号的赋值并不是立即发生的,它发生在一个进程结束时。赋值过程总是有某种延时的,它反映了硬件系统的重要特性。综合后可以找到与信号对应的硬件结构,如一根传输导线一个输入输出端口或一个D触发器等。 第5 章 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 ; -- 立即将v2置位为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 ;

文档评论(0)

love + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档