我正在尝试在FPGA上实现遗传算法。为了生成算法的初始填充量,我想用用户通过开关输入一个2D数组。但是,每次编译时都表示信号不是恒定的。我尝试使用无效的整数和参数。我使用状态机来获取用户输入,然后计划将代码的遗传算法部分实例化到该模块中。以下是GA所在的模块。
module your_exam_module(clk, rst, a, b, c, d,e, start, done);
input clk, rst;
input [7:0]a;
input [7:0]b;
input [7:0]c;
input [7:0]d;
input [7:0]e;
input start;
output done;
reg done;
always @(posedge clk or negedge rst)
if (rst == 1'b0)
begin
done <= 1'b0;
end
else
begin
if (start == 1'b1)
begin
reg [e-1:0]population[b-1:0]; // generates an E by B register (matrix) that will serve as the initial population
done <= 1'b1;
end
end
endmodule
答案 0 :(得分:3)
您没有成功,因为它无法完成。
您正在使用HDL(一种硬件描述语言)进行工作。没有硬件可以动态缩放其大小。这就像要求内存芯片动态更改其可以存储的位数。
您能做的最好的事情就是定义您认为需要的最大,最坏情况的2D阵列。然后,您可以使用部分或全部。
替代方法是使用参数,但是每次需要新的大小时,您都必须编译程序。实际上,FPGA所能容纳的最大2D阵列(以及所有其他代码)也限制了您。