粒子群算法在FPGA上的实现
采用的板子为altera的EP4CE115F29C7,目前程序在modelsim仿真可以实现,但是上板后无法实现,初步认为是主程序出现了问题。求助大佬给点建议,感谢!!!(代码为引用,非原创)always @(posedge clk or negedge rst_n)begin
// 复位
if(rst_n == 1'b0)begin
for(j = 0; j < `D; j=j+1) begin // 位置空间的最优解初始化
gen_r(16'h0056, rand); // 生成随机数
xgbest <= `X_MIN + (rand*16'h100 + rand) % (`X_MAX - `X_MIN + 1);// 局部最优解的位置随机初始值
end
fgbest <= 32'hffff_ffff; // 32位全局最优解初始值
gbest <= 8'hff; // 8位全局最优解初始值
// 对位置和速度进行随机初始化赋值
for(i = 0; i < `N; i=i+1) begin
for(j = 0; j < `D; j=j+1) begin
gen_r(rand, rand);
x <= `X_MIN + (rand*16'h100 + rand) % (`X_MAX - `X_MIN + 1); // 随机的初始位置
gen_r(rand, rand);
v <= `V_MIN + (rand*16'h100 + rand) % (`V_MAX - `V_MIN + 1); // 随机的初始速度
xlbest <= x;
end
lbest <= 32'hffff_ffff; // 既不最优解初始值
end
end
else if(end_cnt) begin
for(i = 0; i < `N; i=i+1)begin
for(j = 0; j < `D; j=j+1) begin
// 生成随机数因子
gen_r(rand, r1) ;
gen_r(r1, r2) ;
gen_r(r2, rand) ;
// 加入混沌
gen_c(r1, r2, x, x, x, x);
// 生成速度
gen_v(v, xlbest, x, r1, r2, xgbest, v);
// 更新位置
gen_x(x, v, x);
end
// 更新自适应函数解
gen_f1(i, f);
// 比较并得到最优解
com_f(f, i, lbest, fgbest, gbest, lbest, fgbest);
/*$display("gbest = %0h", gbest);
$display("fgbest = %0h", fgbest);*/
end
end
end
页:
[1]