集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 2532|回复: 3

一个四级流水的八位全加器verilog代码

[复制链接]
老怪甲 该用户已被删除
老怪甲 发表于 2010-4-13 11:28:53 | 显示全部楼层 |阅读模式
module pipeline(cout,sum,ina,inb,cin,clk);
output[7:0] sum;
output cout;
input[7:0] ina,inb;
input cin,clk;
reg[7:0] tempa,tempb,sum;
reg tempci,fir stco,secondco,thirdco,cout;
reg[1:0] firsts,thirda,thirdb;
reg[3:0] seconda,secondb,seconds;
reg[5:0] firsta,firstb,thirds;
always @(posedge clk)
begin
tempa=ina; tempb=inb; tempci=cin; // 输入数据缓存
end
always @(posedge clk)
begin
{firstco,firsts}=tempa[1:0]+tempb[1:0]+tempci;
//第一级加(低2 位)
firsta=tempa[7:2]; //未参加计算的数据缓存
firstb=tempb[7:2];
end
always @(posedge clk)
begin
{secondco,seconds}={firsta[1:0]+firstb[1:0]+firstco,firsts};
//第二级加(第2、3 位相加)
seconda=firsta[5:2]; //数据缓存
secondb=firstb[5:2];
end
always @(posedge clk)
begin
{thirdco,thirds}={seconda[1:0]+secondb[1:0]+secondco,seconds};
//第三 级加(第4、5 位相加)
thirda=seconda[3:2]; //数据缓存
thirdb=secondb[3:2];
end
always @(posedge clk)
begin
{cout,sum}={thirda[1:0]+thirdb[1:0]+thirdco,thirds};
//第四级加(高两位相加)
end
endmodule
老怪甲 该用户已被删除
 楼主| 老怪甲 发表于 2010-4-13 11:29:11 | 显示全部楼层
阁下的这些代码没有实际意义。 1、时序逻辑块中不能使用阻塞赋值; 2、电路中没有复位信号,不健壮; 3、加入流水是为了提高电路性能。但是区区一个8位全加器还不至于。因此设计这段电路的人不是为了炫耀,就是因为其确实有特殊的相位要求。
老怪甲 该用户已被删除
 楼主| 老怪甲 发表于 2010-4-13 11:29:16 | 显示全部楼层
阁下的这些代码没有实际意义。 1、时序逻辑块中不能使用阻塞赋值; 2、电路中没有复位信号,不健壮; 3、加入流水是为了提高电路性能。但是区区一个8位全加器还不至于。因此设计这段电路的人不是为了炫耀,就是因为其确实有特殊的相位要求。
Sunlife 发表于 2015-4-8 14:29:41 | 显示全部楼层

阁下的这些代码没有实际意义。 1、时序逻辑块中不能使用阻塞赋值; 2、电路中没有复位信号,不健壮; 3、加入流水是为了提高电路性能。但是区区一个8位全加器还不至于。因此设计这段电路的人不是为了炫耀,就是因为其确实有特殊的相位要求
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

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

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

GMT+8, 2025-5-6 23:06 , Processed in 0.058429 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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