Поиск массива для 1 и 0 - PullRequest
       111

Поиск массива для 1 и 0

0 голосов
/ 09 октября 2019

Я хочу пройти логический вектор из 32 битов и найти индексы, которые имеют значения 1 и 0, и сохранить их в двух отдельных массивах.

Я буду знать через вход, который скажет число единицв массиве.

Массив индексов будет двухмерным.

Также я хочу, чтобы это было реализовано с использованием комбинированной логики и синтезируемости.

Я не могу придумать ни одной логики без вывода защелки.

logic [31:0] data ; // Array to be traversed
logic [31:0] [ONES_NUM-1:0]    one_index;// One's indices in array
logic [31:0] [32-ONES_NUM-1:0]   zero_index;//Zeros indices in array

always @(*)
   while(j < ONES_NUM)
      while ( i < 32)
      if(data[i]==1) begin
         one_index[j][31:0] = i;
         j++;
         i++;
         end
      else
         i++; //Here prob is no else statement so latch inferred.

Аналогично всегда @ (*) и для нулевого индекса.

Также у меня есть сомнения, является ли цикл while синтезируемым.

Пожалуйста, помогите с логикой.

1 Ответ

0 голосов
/ 18 октября 2019
`logic [31:0] data ;
   logic  [31:0][(ONES_NUM-1):0] one_index; // One's indices in array
   logic  [31:0][(32-ONES_NUM-1):0] zero_index; // Zeros indices in array
   bit clk;
   int j,k;
   always@(posedge clk)
    for(i=0;i<32;i++)
      begin
        if(data[i]==1)
          begin
            one_index[j]=i;
            j++;
          end
        else
          begin
            zero_index[k]=i;
            k++;
          end
      end`

Вы должны использовать часы, чтобы избежать защелок.

Вы можете обратиться к этой ссылке https://www.edaplayground.com/x/kZ6 для лучшего понимания.

...