同步有限状态机代码.docVIP

  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文档。上传文档
查看更多
同步有限状态机代码

//同步有限状态机代码 ----------------------? module?floatadder(clk,reset,ix,iy,oz,ofw);//定义模块端口;? input?clk,reset; //时钟、复位信号;?? input[31:0]ix,?iy; //输入信号;??????? output[31:0]oz; //输出信号;?? output?ofw;? //溢出位信号;? reg[31:0]oz;? reg[23:0]xm,ym,zm; //定义尾数;? reg[7:0]xe,ye,ze;? //定义阶码 reg zs; //定义输出信号符号位 reg?mc; //尾数相加溢出位 reg[2:0]?state,nextstate; //状态? parameter??start?=3b000,? zerock=3b001,? exequal=3b010,? addm?=3b011,? infifl=3b100,? zerofl=3b101,? over=3b110;? assign ofw=(state==over)?1:0;//判断溢出位 ?//每一个时钟产生一个可能的状态变化 always@(posedge clk)? if(!reset)?? state=start;? else? state=nextstate;?? //产生下一个状态的组合逻辑 always@(state)? case(state)? start:? begin? xe=ix[30:23];? xm={1b1,ix[22:0]};? ye=iy[30:23];? ym={1b1,iy[22:0]};? nextstate=?zerock;? end??? ?//操作数检查,判断操作数是否为0;? zerock:? ? ? begin? zm=ym;? ze=ye;? zs=iy[31];? oz={zs,ze,zm[23:1]};? nextstate=over;? end? else? nextstate=exequal;? end? end? //尾数求和运算;? addm:? begin? ze=xe;? if(iy[31])? {mc,zm}=xm+(~ym);? else? {mc,zm}=xm+ym;? if(zm==24b0)? nextstate=over;? else? nextstate=infifl;? end? //结果规格化操作;? infifl:? begin? if(mc)? begin? zm={mc,zm[23:1]};? ze=ze+1;? zs=ix[31];? oz={zs,ze,zm[22:0]};? if(ze==8b1111_1111)?//溢出 nextstate=over;? else? nextstate=zerofl;? if(xm==0)? begin? {ze,zm}={ye,ym};? nextstate=over;? end? else? if(ym==0)? begin? ?{ze,zm}={xe,xm};? nextstate=over;? end? else? nextstate=exequal;? end? ?//对阶操作,使阶码相等;? exequal:?? begin? if(xe==ye)? nextstate=addm;? else? if(xeye)? begin? ye=ye+1;?//阶码左移,阶码加1;? ym={1b0,ym[23:1]};? if(ym==0)? begin? zm=xm;? ze=xe;? zs=ix[31];? oz={zs,xe,zm[23:1]};? nextstate=over;? end? else? nextstate=exequal;? end? else? begin? xe=xe+1;?//阶码左移,阶码加1;? xm={1b0,xm[23:1]};? if(xm==0)? begin? end? else? nextstate=zerofl;? end? //结果做舍入处理;? zerofl:? begin? if(zm[23]==1b1)? begin? zm={1b0,zm[23:1]};//?向左移位;? ze=ze-1;? zs=ix[31];? oz={zs,ze,zm[22:0]};? nextstate=zerofl;? end? else? if(zm[23:22]==2b0)? begin? zm={zm[22:0],1b0};?//?向右移位;? ze=ze

文档评论(0)

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

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

1亿VIP精品文档

相关文档