Как сделать массив в 'verilog' (код внутри)

Я хочу сделать массив с именем "а" и заполнить его любыми двоичными числами

и это 1-D массив, мой код должен сделать как sw в mips (сохранить слово) 'm' значение, которое я хочу сохранить в 's'

Спасибо,

module ALU(m,s,control,out,zeroflag,array);

input [31:0] m,s;
input [7:0] control;
output reg [31:0] out;
output reg zeroflag;
reg a [0:2]; // this is the array

a[2] = 4'b0000; // filled it..
a[1] = 4'b1001;
a[0] = 4'b0110;

always @(m,s,control,out,zeroflag,array)
begin
case(control)
8'h2B :  if(s==8'h0) a[0] = m;
         out = a[0];
  else if(s==8'h1) a[1] = m;
         out = a[1];
  else             a[2] = m;
         out = a[2];

endcase
end

always @(out)
begin
if(out==0)
zeroflag <= 1;
else
zeroflag <= 0;
end
endmodule

//////////////////////////////////////////

module test;
reg [31:0] m,s;
reg [7:0] control;
wire [31:0] outpt;
wire zeroflag;

ALU rtypeoperations(m,s,control,outpt,zeroflag);
initial
begin
m=32'b0000; s=8'h0; control=8'h2B; //stores m value in array[0] if s=8'h0, stores m value in array[1] if s=8'h1, stores m value in array[2] if s=8'h2,
end

initial
begin
$monitor("At time = %0t ,result = %b, zero flag = %b ",$time ,outpt,zeroflag);
end
endmodule

1 ответ

Я вижу много проблем в вашем коде. Это даже компилируется?

Во-первых, ваши операции для заполнения массива должны быть внутри initial блок.

initial begin
  a[2] = 4'b0000; // filled it..
  a[1] = 4'b1001;
  a[0] = 4'b0110;
end

Обратите внимание, что initial блоки разрешены для FPGA rtl (FPGA могут включать начальные значения для регистров) и для поведенческого (тестового) кода, но не для ASIC.

Во-вторых, ваш always @(m,s,control,out,zeroflag,array) содержит выводы в списке чувствительности. Это должны быть только входы.

Третье - вам нужны часы в вашем коде. Прямо сейчас все это комбинационная логика, как она написана.

Наконец, научитесь правильно делать отступы в вашем коде. Вот одно предложение для рекомендаций по кодированию: https://github.com/NetFPGA/netfpga/wiki/VerilogCodingGuidelines

Другие вопросы по тегам