FPGA条件语句循环语句块语句与生成语句重点.pptVIP

FPGA条件语句循环语句块语句与生成语句重点.ppt

  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.1 赋值语句和块语句;1它不会阻塞位于同一个顺序块中其后语句的执行。同一顺序块中的语句并发执行。 2?b的值并不是立刻就改变的,块结束后才完成赋值操作。 (2). 阻塞(Blocking)赋值方式 ( 如 b = a; ) 1) 顺序块中的阻塞赋值语句按顺序执行,它不会阻塞其后并行块中语句的执行。语句执行完后,块才结束。 2) b的值在赋值语句执行完后立刻就改变。 ; 非阻塞赋值方式和阻塞赋值方式的区别常给设计人员带来问题。问题主要是给“always”块内的reg型信号的赋值方式不易把握。一般情况下,如果用一个always块来描述时序电路,这个的“always”模块内的reg型信号都是采用下面的非阻塞赋值方式: b = a; ;[例1]: always @( posedge clk ) begin b=a; c=b; end ?[例1] 中的always块中用了非阻塞赋值方式,定义了两个reg型信号b和c,clk信号的上升沿到来时,b就等于a,c就等于b,这里应该用到了两个触发器。请注意:赋值是在always块结束后执行的,c应为原来b的值。这个always块实际描述的电路功能如下图所示:; ;[例2] always @(posedge clk) begin b=a; c=b; end [例2]中的 always块用了阻塞赋值方式。clk信号的上升沿到来时,将发生如下的变化:b马上取a的值,c马上取b的值(即等于a),生成的电路图如下所示只用了一个触发器来寄存器a的值,又输出给b和c。这大概不是设计者的初衷,如果采用[例1]所示的非阻塞赋值方式就可以避免这种错误。 ;;2 ?   块语句通常用来将两条或多条语句组合在一起,使其在格式上看更象一条语句。块语句有两种,一种是begin_end语句,通常用来标识顺序执行的语句,用它来标识的块称为顺序块。一种是fork_join语句,通常用来标识并行执行的语句,用它来标识的块称为并行块。下面进行详细的介绍。 ;顺序块 顺序块有以下特点 1)块内的语句是按顺序执行的,即只有上面一条语句执行完后下面的语句才能执行。 2)每条语句的延迟时间是相对于前一条语句的仿真时间而言的。 3)直到最后一条语句执行完,程序流程控制才跳出该语句块。 顺序块的格式如下: begin 语句1; 语句2; ...... 语句n; end;或 begin:块名 块内声明语句 语句1; 语句2; ...... 语句n; end? 其中: 块名即该块的名字,一个标识名。块内 声明语句可以是参数声明语句、reg型变量声明语句、integer型变量声明语句、real型变量声明语句。 ;下面举例说明 [例1]: begin areg = breg; creg = areg; //creg的值为breg的值。 end? 从该例可以看出,第一条赋值语句先执行,areg的值更新为breg的值,然后程序流程控制转到第二条赋值语句,creg的值更新为areg的值。因为这两条赋值语句之间没有任何延迟时间,creg的值实为breg的值。当然可以在顺序块里延迟控制时间来分开两个赋值语句的执行时间,见[例2]: ;[例2]: begin areg = breg; #10 creg = areg; //在两条赋值语句间延迟10个时间单位。 end ? ;[例3]: parameter d=50; //声明d是一个参数 reg [7:0] r; //声明r是一个8位的寄存器变量 begin //由一系列延迟产生的波形 #d r = h35; #d r = hE2; #d r = h00; #d r = hF7; end ?;并行块 并行块有以下四个特点: 块内语句是同时执行的,即程序流程控制一进入到该并行块,块内语句则开始同时并行地执行。 块内每条语句的延迟时间是相对于程序流程控制进入到块内时的仿真时间的。 延迟时间是用来给赋值语句提供执行时序的。 当按时间时序排序在最后的语句执行完后,程序流程控制跳出该程序块。?并行块的格式如下: fork 语句1; 语句2

文档评论(0)

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

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

1亿VIP精品文档

相关文档