我需要编写一个函数将数据转移到输入向量中。输入的类型可以是有符号或无符号的。为了使函数更加稳健,我需要知道输入向量的方向,即使用 downto 与 to 声明的范围。此信息将用于确定哪个索引具有最低有效位。
如何查明范围是如何声明的,并根据该信息选择正确的最低有效位和最高有效位?
数组类型具有默认属性'ascending,'descending它们都是true/false根据范围实际上是to(升序)还是downto(降序)返回的函数。因此,如果您明确需要调查方向,您可能需要采用以下编码风格:
if p'ascending then
-- do code for to direction
else
-- do code for downto direction
end if;
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用 analias来“标准化”函数内部的方向,这意味着根据方向不需要 if/else,因为您知道函数内部的方向:
function do_something( p : bit_vector ) return bit_vector is
alias p_a : bit_vector(p'length-1 downto 0) is p; -- normalise p
variable r : p_a'subtype;
begin
-- use p_a as a downto vector
return r;
end function;
Run Code Online (Sandbox Code Playgroud)