如何在VHDL中确定向量的方向(downto与to)?

qua*_*231 0 vhdl

我需要编写一个函数将数据转移到输入向量中。输入的类型可以是有符号或无符号的。为了使函数更加稳健,我需要知道输入向量的方向,即使用 downto 与 to 声明的范围。此信息将用于确定哪个索引具有最低有效位。

如何查明范围是如何声明的,并根据该信息选择正确的最低有效位和最高有效位?

Tri*_*cky 5

数组类型具有默认属性'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)