Verilog测试模块的编写:语法进阶.ppt

  1. 1、本文档共124页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

if(ab)rega=c;elserega=0;y=rega;endendmodule在下面的例子中,rega只是有时被赋新值(没有else语句,rega在条件不符合时保持原值);因此综合出来的是一个以y作为输出的锁存器。语法详细讲解

寄存器mouduleex4reg(y,a,b,c);inputa,b,c;outputy;regy,rega;always@(aorborc)beginif(ab)rega=c;y=rega;endendmodule语法详细讲解

寄存器语法详细讲解

有限状态机(FSM)隐式FSM:不需要状态寄存器仿真更加有效只能很好地处理线性的状态改变大部分综合工具不支持隐式FSMstate1state2state3state4语法详细讲解

有限状态机(FSM)显式FSM:结构比较复杂可以很方便地用来处理默认状态能够处理复杂的状态改变所有的综合工具均支持显式FSM的综合stateAstateB1stateB2stateCstateD注意:在隐式状态机中,只要发生在一个时钟周期内写数据,在另一个时钟周期内读数据的情况,都会生成寄存器。任何状态机都必须有复位控制信号,状态的改变必需只与某单一时钟信号沿同步。一般情况下,如果状态改变比较简单,又定义得比较好,而且综合工具支持隐式状态机的综合,就可以使用隐式状态机。如果状态改变比较复杂,最好使用显式状态机,这样效果更好。隐式状态机属于行为级,不属于RTL级。代码中主要包含循环语句、嵌入的定时控制,有时也含有命名事件、wait和disable语句。一般情况下,常用的综合工具不支持隐式状态机的综合。语法详细讲解

有限状态机(FSMs)语法详细讲解

显式有限状态机moduleexp(out,datain,clk,rst);inputclk,rst,datain;outputout;regout;regstate;always@(posedgeclkorposedgerst)if(rst){state,out}=2’b00;elsecase(state)1’b0:beginout=1’b0;if(!datain)state=1’b0;elsestate=1’b1;end1’b1begin状态变量case语句01datain=0datain=1out=datain;state=1’b0;enddefault:{state,out}=2’b00;endcaseendmodule注:在过程块中可以使用一个时钟沿和case语句来描述一个显式状态机。必须指定一个状态变量,来记录状态机的状态。要改变当前的状态,必须改变状态变量的值,其改变要与时钟沿同步。写得比较好的状态机常为不应产生的条件规定一个默认动作。语法详细讲解

显式有限状态机转到下一个状态默认状态指针01101识别11序列clkrstoutbegin:seq_blockout=1’b0;if(!datain)//状态一:输出零disableseq_block;@(posedgeclk)//状态二:输出第二位out=datain;endendmodule语法详细讲解

隐式有限状态机01101识别11序列clkrstout注意:在过程块中可以使用多个时钟沿(即每次状态改变都用一个新的时钟沿)、条件语句、循环语句、disable语句来描述隐式FSM。隐式FSM往往是不可综合的。隐式FSM不必指定状态变量。当下一个激活时钟沿到达时,状态就有可能发生改变。下一个状态是否改变

文档评论(0)

胖鸥 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档