Я пытаюсь использовать цикл for с динамической переменной для хранения элементов в массиве. Но когда я синтезирую код, он дает мне ошибку для динамической переменной. Вот код, который отлично работает в modelsim. С его просто одновременным, но я хочу загрузить этот код на целевое устройство FPGA.Как использовать динамическую переменную в xilinx
`define LENGTH 16 //length of array elements
`define WIDTH 8 //width of element in array
module multi;
integer i,j,k,f,l,n=0;
integer r=0;
integer c;
reg [`WIDTH-1:0] reuse [0:(`LENGTH/2)-1];
reg [`WIDTH-1:0] local [0:`LENGTH-1];
reg [`WIDTH-1:0] arr [0:`LENGTH-1];
initial
begin
$readmemh("block.txt", arr);
for(i=0;i<`LENGTH;i=i+1)begin
c=0;
for(l=0;l<r;l=l+1)begin
if(reuse[l] ==arr[i])begin
c=c+1;
end
end
if(c==0)begin
f=0;
for(j=0;j<n;j=j+1)begin
if(local[j]==arr[i])begin
reuse[r]=arr[i];
r=r+1;
f=1;
for(k=j;k<n-1;k=k+1)begin
local[k]=local[k+1];
end
local[n-1]=4'hx;
n=n-1;
end
end
if(f==0)begin
local[n]=arr[i];
n=n+1;
end
end
end
$display("reuse:");
for (i=0; i < (`LENGTH/2); i=i+1)
$display("%d:%h",i,reuse[i]);
$display("local:");
for (i=0; i < `LENGTH; i=i+1)
$display("%d:%h",i,local[i]);
end
endmodule
Какое оборудование может быть создано, когда цикл for имеет переменное число итераций. – Morgan
Модуль не имеет входных и выходных портов, поэтому он будет синтезироваться ни к чему. Блоки 'initial' не описывают логику, они инициализируют ваши значения по умолчанию. Блоки 'always' описывают логику. – Greg
То, что я пытаюсь сделать в этом коде, состоит в том, чтобы выделить многократно повторяющиеся элементы в массиве 'reuse' из 'arr'. Для проверки того, присутствует ли элемент в повторном использовании или нет, я поставил этот цикл. Если я делаю это с фиксированной длиной, я теряю свои проверки в не существующих элементах массива, если они есть. –