做FFT实现的时候多个相同模块并行调用运行怎么处理
本帖最后由 fpgaw 于 2010-7-12 17:18 编辑做FFT实现的时候,要用并行处理,16个蝶形单元并行运行,但是一直没有处理好。
大家帮帮忙,指点一下。
大体思路见下面的代码:
module bufly_array (clk, In, P, Out);
input clk;
//全部将寄存器值付给线值,一次性输入
input In;
input P;
output wire Out;
reg In_reg ;
reg alm, ahm, al, ah;
wire Out_wire ; //bufly输出赋值
always @ (posedge clk)
begin
In_reg<=In;
In_reg<=In;
...
In_reg<=In;
end
/*地址产生器,计算节点数据地址add_up,add_down
P为级数
al为地地址,ah为高地址
add_up_out为高节点地址
add_down_out为低节点地址
*/
add add_0 (.P(P), .al(al), .ah(ah), .add_up(add_up_out), .add_down(add_down_out));
always @ (p)
begin
alm<=4'b1<<(p-3'b1);
ahm<=4'b1<<(3'b100-p);
end
always @ (posedge clk)
begin
for (i=0;i<=5'h0f;i=i+5'b1)
begin
if(ah<ahm)
ah<=ah+4'b1;
else if (al<alm)
begin
ah<=4'b0;
al<=al+4'b1;
end
else
al<=4'b0;
//完成赋值
count<=count+4'b1;
//通过地址来选择操作数和旋转因子
add_up<=add_up_out;
add_down<=add_down_out;
end
// if (count<=9'h0ff) //通过count来依次选择蝶形单元
//else
//count<=9'b0;
end
bufly bufly_00 (.In_up(In_reg])
.In_down(In_reg])
.Out_up(Out_wire])
.Out_down(Out_wire])
);
...
bufly bufly_15 (.In_up(In_reg])
.In_down(In_reg])
.Out_up(Out_wire])
.Out_down(Out_wire])
);
assign Out={Out_wire,...,Out_wire};
endmodule
module bufly (In_up, In_down, Out_up, Out_down);
input In_up, In_down;
output Out_up, Out_down;
......
endmodule
module add (P, al, ah, add_up, add_down);
input P;
input al, ah;
output add_up, add_down;
......
endmodule 哎,怎么就没人理呢?
页:
[1]