Я отослал «наиболее часто встречающийся элемент в массиве в C-коде» к решению с помощью verilog, но я не могу подтвердить, что это правильно, также немного запутался в C-коде. Пожалуйста, помогите мне.
пример для массива [1,2,1,3,1,5], 'arr [i] == arr [i - 1]' Этот синтаксис только что приведен для сравнения с равными ли соседние числа? так что я не могу понятькак получить результат.
код C
int max_count = 1, res = arr[0];
int curr_count = 1;
for (int i = 1; i < n; i++)
{
if (arr[i] == arr[i - 1])
curr_count++;
else
{
if (curr_count > max_count)
{
max_count = curr_count;
res = arr[i - 1];
}
curr_count = 1;
}
}
Я смоделировал код C и написал в коде Verilog
wire [21:0] A={Xc,Yc} [0:307200]; //image size 640X480
reg [16:0] curr_count=1;
reg [16:0] max_count=1;
reg [16:0] res= A[0];
//Most frequent element in an array
integer i;
always @ (posedge CLK )
begin
if (RST_X)
begin
for(i=0; i<307200; i=i+1)
begin
curr_count <= 0;
end
end
else if ( A[i]==A[i-1])
begin
curr_count <= curr_count+1;
end
else if ( curr_count> max_count)
begin
max_count <= curr_count;
res <= A[i - 1];
end
end