如何使用vhdl查找具有最高值的数组索引?

时间:2019-04-05 09:56:41

标签: vhdl

我想找到具有最高值的数组索引。因此可以简单地使用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..?

问题: 如何在vhdl中获得索引2(x_Array(2)的最大值(7))?

1 个答案:

答案 0 :(得分:2)

按照书面规定,您的问题没有任何意义: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;

并根据需要申请。