|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 苍穹的眼泪 于 2012-3-13 09:18 编辑
如题,写了一段采用四级流水线的加法器,在对比几种设计方法的性能。但用Symply pro综合后RTL图有问题。不知为什么综合后cout和前面的链接断开了。特此请教。谢谢。
源码如下:
//////////////////////////////////////////////////////////////////////////////////
// Company: -------
// Engineer: -------
//
// Create Date: 17:29:02 03/12/2012
// Design Name: 流水线技术在加法器上的应用
// Module Name: adder_pipe4
// Project Name: 四级流水加法器
// Target Devices: XC3S500E-4PQ208
// Tool versions: ISE12.4
// Description:
//////////////////////////////////////////////////////////////////////////////////
module adder_pipe4(cout, sum, ina, inb, cin, clk);
//定义输入、输出变量
input [7:0] ina, inb;
input cin, clk;
output reg [7:0] sum;
output reg cout;
//定义中间变量
reg [7:0] tmp_a, tmp_b;
reg tmp_ci, first_co, second_co, third_co;
reg [1:0] first_sum, third_a, third_b;
reg [3:0] second_a, second_b, second_sum;
reg [5:0] first_a, first_b,third_sum;
//输入数据缓存
always @ (posedge clk)
begin
tmp_a = ina;
tmp_b = inb;
tmp_ci = cin;
end
//第一级流水
always @ (posedge clk)
begin
//第一级加(低两位)
{first_co, first_sum} = tmp_a[1:0] + tmp_b[1:0] + tmp_ci;
//未参加计算的数据缓存
first_a = tmp_a[7:2];
first_b = tmp_b[7:2];
end
//第二级流水
always @ (posedge clk)
begin
//第二级加(第2,3位)
{second_co, second_sum} = {first_a[1:0] + first_b[1:0] + first_co, first_sum};
//数据缓存
second_a = first_a[5:2];
second_b = first_b[5:2];
end
//第三级流水
always @ (posedge clk)
begin
//第三级加(第4,5位)
{third_co, third_sum} = {second_a[1:0] + second_b[1:0] + second_co,second_sum};
//数据缓存
third_a = second_a[3:2];
third_b = second_b[3:2];
end
//第四级流水
always @ (posedge clk)
begin
//第四级加(第7,8位)
{cout, sum} = {third_a[1:0] + third_b[1:0] + third_co, third_sum};
end
endmodule
Symplify pro综合后的RTL图
|
|