我想找到具有最高值的数组索引。因此可以简单地使用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))?
答案 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;
并根据需要申请。