如何用嵌入信号实例化通用实体?

时间:2013-11-02 20:28:52

标签: vhdl

我使用了一个用于state_values的包:

library IEEE;
use IEEE.STD_LOGIC_1164.all;

package States is

   type state_values is (ST0,ST1,ST2,ST3,ST4,ST5,ST6,ST7,ST8,ST9,ST10,ST11,ST12,ST13,ST14,ST15,ST16);
   signal pres_state, next_state: state_values;


end States;

这是我的组件,具有通用实体:

component NextStateLogic
    generic (

                BLRH       : STD_LOGIC_VECTOR (3 downto 0); 
                pres_state : state_values := ST0;
                next_state : state_values := ST0);
        end component;

在代码中,有几个嵌入式信号用于组件之间的通信:

    signal LRH_int        : STD_LOGIC_VECTOR (3 downto 0);
    signal next_state_int : state_values := ST0;
    signal pres_state_int : state_values := ST0;
    signal Clk1Hz_int     : STD_LOGIC;

在instanciate向我显示下一个错误:

The actual value (Signal 'LRH_int') associated with a generic must be a globally static expression.

调查,我无法将信号连接到泛型,我可以使用constanst,但这些对代码的使用没有用。 有没有办法用通用组件和其他类型的嵌入信号实现通用组件?

1 个答案:

答案 0 :(得分:0)

泛型用于在合成代码之前配置组件的所有内容。例如,您可以使用通用配置输入和输出信号的宽度。

端口用于在运行时动态变化的所有内容,例如数据信号时钟等。

因此,让一个实体(或组件)只有一个通用映射是不明智的,因为它永远不会在硬件中做任何事情。使用端口定义。