|
采用四级流水线的加法器设计综合后有问题(请教)
[复制链接]
如题,写了一段采用四级流水线的加法器,在对比几种设计方法的性能。但用Symply pro综合后RTL图有问题。。不知为什么综合后cout和前面的链接断开了。 特此请教。谢谢。
源码如下: `timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// // 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
[ 本帖最后由 苍穹的眼泪 于 2012-3-13 09:18 编辑 ]
|
|