Как мне найти индекс массива с его наибольшим значением с помощью VHDL? - PullRequest
0 голосов
/ 05 апреля 2019

Я хотел бы найти индекс массива с его наибольшим значением.Можно ли просто использовать атрибут vhdl?Если да, то как?

TYPE x_Array IS ARRAY (0 TO 3) OF STD_LOGIC_VECTOR(2 DOWNTO 0);      
SIGNAL y : x_Array;

Пример:

x_Array(0) = "000"
x_Array(1) = "011"
x_Array(2) = "111"
x_Array(3) = "101"


index <= x_Array'high;    -- is this correct or..?

Вопрос: Как получить индекс 2 (x_Array (2) имеет наибольшее значение(7)) в vhdl?

1 Ответ

2 голосов
/ 05 апреля 2019

Как написано, ваш вопрос не имеет смысла: std_logic_vector нуждается в интерпретации, чтобы даже рассматривать ее как число.

Итак, давайте предположим, что вы это знали и написали разумное

library ieee;
use ieee.numeric_std.all;
use ieee.std_logic_1164.all;
type x_array is array(integer range <>) of unsigned(2 downto 0);      
signal y : x_array(0 to 3);

просто напишите функцию

function maxindex(a : x_array) return integer is
  variable index : integer := 0;
  unsigned foundmax : unsigned(2 downto 0) := (others => '0');
begin
  for i in 0 to a'high loop
    if a(i) > foundmax then
      index := i;
      foundmax := a(i);
    end if;
  end loop
  return index;
end function;

и примените при необходимости.

...