Я хочу найти наиболее частый элемент в массиве в Verilog, на самом деле, это о проблеме обработки изображений - PullRequest
0 голосов
/ 18 января 2019

Я отослал «наиболее часто встречающийся элемент в массиве в 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
...