Darwin.Liang 发表于 2023-7-3 10:42:13

粒子群算法在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]
查看完整版本: 粒子群算法在FPGA上的实现