【问题标题】:Signals and Variables in VHDL (order) - ProblemVHDL 中的信号和变量(顺序) - 问题
【发布时间】:2010-06-06 15:38:56
【问题描述】:

我有一个信号,这个信号是一个位向量 (Z)。位向量的长度取决于输入 n,它不是固定的。为了找到长度,我必须进行一些计算。我可以在定义变量后定义一个信号吗?当我这样做时,它给了我错误。它工作正常如果我在变量之前保留信号(如下所示)..但我不想要那个.. Z 的长度取决于变量的计算。解决办法是什么?

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;


entity BSD_Full_Comp is
        Generic (n:integer:=8);
        Port(X, Y : inout  std_logic_vector(n-1 downto 0);
             FZ : out std_logic_vector(1 downto 0));
end BSD_Full_Comp;

architecture struct of BSD_Full_Comp is


Component BSD_BitComparator
    Port ( Ai_1  : inout  STD_LOGIC; Ai_0  : inout  STD_LOGIC;
           Bi_1  : inout  STD_LOGIC; Bi_0  : inout  STD_LOGIC;
           S1 : out  STD_LOGIC; S0 : out  STD_LOGIC
      );
END Component;



Signal Z : std_logic_vector(2*n-3 downto 0);



begin

    ass : process

Variable length : integer := n;
Variable pow : integer :=0 ;
Variable ZS : integer :=0;
begin
while length /= 0 loop
length := length/2;
pow := pow+1;
end loop;
length := 2 ** pow;
ZS := length - n;

wait;

    end process;



end struct;

【问题讨论】:

    标签: vhdl fpga


    【解决方案1】:

    看起来您正试图根据计算结果更改硬件总线的大小?请记住,一旦您编译电路并将其烧录到 FGPA 上,您的所有总线尺寸都是固定的。 FPGA 可以即时更改其配置,但我想很多时候都没有必要。而且我猜这也很棘手。

    也许可以解释一下您要计算的确切内容,也许我们可以想出一种不同的方法。

    其他一些事情。我不是 100% 熟悉 VHDL,但您需要双向端口(@98​​7654321@s)吗?另外,您似乎没有使用BSD_BitComparator;或端口XYFZ;或在您的架构描述中发送信号Z

    【讨论】:

      【解决方案2】:

      位向量的长度取决于 输入n,它不是固定的。

      固定的,它是通用的。一旦您编译和详细说明(即构建)FPGA,n 就已修复。这很好,您可以使用它来定义架构中信号的长度。

      与其他受访者一样,我不确定您要对您的流程做什么。您是否尝试计算 Z 信号需要的长度?

      如果是这样,你可以把它放在一个函数中,并在Z的声明中使用该函数:

      signal Z:std_logic_vector(calc_z_high_bit(n) downto 0);

      【讨论】:

        【解决方案3】:

        泛型在编译/细化时固定。变量可以在运行时更改。因此,您的目标不可能以您尝试的方式直接实现。

        如果您想动态指定总线的某些位片,则需要将总线定义为最大的,然后使用您计算的 n 来复用您需要的总线片。

        【讨论】:

          猜你喜欢
          • 2013-03-07
          • 1970-01-01
          • 1970-01-01
          • 2011-10-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-02
          相关资源
          最近更新 更多