流水线加法器.docVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
流水线加法器

module add_line (a,b,clk,out); parameter width=16, width1=8, //lsb width2=8; //msb // r3 r1 input [width-1:0] a; //a00000001 input [width-1:0] b; //b00000000 output [width:0] out; // r4 r2 input clk; reg [width1-1:0] r1,r2,r5; reg [width2-1:0] r3,r4,r6; reg c1,c2; reg [width:0] sum; always @(posedge clk) //---first begin r1[width1-1:0]=a[width1-1:0]; // r2[width1-1:0]=b[width1-1:0]; // r3[width2-1:0]=a[width-1:width1]; r4[width2-1:0]=b[width-1:width1]; end always @(posedge clk) //---- second begin {c1,r5}=r1+r2; {c2,r6}=r3+r4+c1; sum={c2,r5,r6}; end assign out=sum; endmodule 图Ⅰ 图Ⅱ 上图Ⅱ是没有assign out=sum;时的rtl级仿真结果; 错误1:Warning (10034): Output port out[1] at add_line.v(9) has no driver 原因:out没有驱动,out根本就没有用; 错误2: 永远有多远(1057978105) 10:43:30 这样不好 有时序又有组合 永远有多远(1057978105) 10:46:04 最好把它都放在时序里面 width改成width0 ★(1003704680) 10:47:54 那个地方是时序,哪个地方是组合 永远有多远(1057978105) 10:48:17 always 时序 assign组合 module add_line (a,b,clk,out); parameter width=16, width1=8, //lsb width2=8; //msb // r3 r1 input [width-1:0] a; //a00000001 input [width-1:0] b; //b00000000 output [width:0] out; // r4 r2 input clk; reg [width1-1:0] r1,r2,r5; reg [width2-1:0] r3,r4,r6; reg c1,c2; reg [width:0] out; always @(posedge clk) //---first begin r1[width1-1:0]=a[width1-1:0]; // r2[width1-1:0]=b[width1-1:0]; // r3[width2-1:0]=a[width-1:width1]; r4[width2-1:0]=b[width-1:width1]; end always @(posedge clk) //---- second begin {c1,r5}=r1+r2; {c2,r6}=r3+r4+c1; out={c2,r5,r6}; end endmodule 图Ⅲ 上图用阻塞赋值的rtl; 图Ⅳ 上图是用非阻塞赋值的rtl; 下图是用非阻塞赋值运算结果:有两个地方进位错误!第一个进位推迟一个时钟; 图Ⅴ 下图是用阻塞赋值结果: 图Ⅵ 错误原因:非阻塞赋值语句中,数值的转移须等到下一个时钟周期; 与组合逻辑的比较: module add(a,b,sum); input [15:0] a,b; output [16:0] sum; assign sum=a+b; Endmodule 图Ⅶ 所谓流水线设计实际上就是把规模较大、

文档评论(0)

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

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

1亿VIP精品文档

相关文档