如何在Verilog中制作尺寸可变的2D寄存器/阵列

时间:2019-12-16 21:07:00

标签: arrays variables 2d verilog genetic-algorithm

我正在尝试在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

1 个答案:

答案 0 :(得分:3)

您没有成功,因为它无法完成。

您正在使用HDL(一种硬件描述语言)进行工作。没有硬件可以动态缩放其大小。这就像要求内存芯片动态更改其可以存储的位数。

您能做的最好的事情就是定义您认为需要的最大,最坏情况的2D阵列。然后,您可以使用部分或全部。

替代方法是使用参数,但是每次需要新的大小时,您都必须编译程序。实际上,FPGA所能容纳的最大2D阵列(以及所有其他代码)也限制了您。

相关问题