集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 2469|回复: 2

VHDL编写实现32位超前进位加法器

[复制链接]
ANG 发表于 2010-6-27 23:59:06 | 显示全部楼层 |阅读模式
本帖最后由 fpgaw 于 2010-7-7 05:22 编辑

VHDL编写实现32位超前进位加法器 具有8级流水线结构
usb 发表于 2010-6-28 01:18:17 | 显示全部楼层
本帖最后由 fpgaw 于 2010-7-7 05:23 编辑

这是我用verilog写的32位超前进位加法器,是基于树结构的.总共6层,如果想实现流水线,只需在
其中加入D触发器就可以了.
  你所说的8级流水未免太多了吧,其实这里的速度也是用面积换来的!
  流水太多未必是好事!


module cla32 (a,b,cin,sum,co);
input [31:0] a,b;
input cin;
output [31:0] sum;
output co;
reg [31:0] G1,P1,G2,P2,G3,P3,G4,P4,G5,P5;
reg [31:0] cout;
wire[31:0] sum,G0,P0;
assign P0=a^b;
assign G0=a&b;
assign sum=P0^{cout[31:0],cin};
assign co=cout[31];
always @(P0 or G0 or P1 or G1 or P2 or G2 or P3 or G3 or P4 or G4 or P5 or G5 )
begin
P1[31:1]=P0[31:1]&amp0[30:0];
G1[31:1]=G0[31:1]|P0[31:1]&G0[30:0];
G1[0]=G0[0];
P1[0]=P0[0];
P2[31:2]=P1[31:2]&amp1[29:0];
G2[31:2]=G1[31:2]|P1[31:2]&G1[29:0];
G2[1:0]=G1[1:0];
P2[1:0]=P1[1:0];
P3[31:4]=P2[31:4]&amp2[27:0];
G3[31:4]=G2[31:4]|P2[31:4]&G2[27:0];
G3[3:0]=G2[3:0];
P3[3:0]=P2[3:0];
P4[31:8]=P3[31:8]&amp3[23:0];
G4[31:8]=G3[31:8]|P3[31:8]&G3[23:0];
G4[7:0]=G3[7:0];
P4[7:0]=P3[7:0];
P5[31:16]=P4[31:16]&amp4[15:0];
G5[31:16]=G4[31:16]|P4[31:16]&G4[15:0];
G5[15:0]=G4[15:0];
P5[15:0]=P4[15:0];
cout=G5|P5&cin;
end
endmodule
Sunlife 发表于 2015-7-4 10:19:53 | 显示全部楼层
这是我用verilog写的32位超前进位加法器,是基于树结构的.总共6层,如果想实现流水线,只需在
其中加入D触发器就可以了.
  你所说的8级流水未免太多了吧,其实这里的速度也是用面积换来的!
  流水太多未必是好事!
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-5-6 11:53 , Processed in 0.057684 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表