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