【发布时间】:2011-10-28 05:06:54
【问题描述】:
我最近确实开始使用记录来定义我的端口,特别是如果我想对属于某个接口的信号进行分组。但是,我在这里面临的问题是我无法通过泛型将 std_logic_vector 的宽度传递给实体。所以我基本上想做的是以下几点:
library ieee;
use ieee.std_logic_1164.all;
use work.math_pkg.all;
package fifo_pkg is
type fifo_in_type is record
data_in : std_logic_vector(DATA_WIDTH_??- 1 downto 0);
rd : std_logic;
wr : std_logic;
end record;
type fifo_out_type is record
data_out : std_logic_vector(DATA_WIDTH_?? - 1 downto 0);
empty : std_logic;
full : std_logic;
end record;
component fifo is
generic
(
MIN_DEPTH : integer;
DATA_WIDTH : integer
);
port
(
clk : in std_logic;
res_n : in std_logic;
i : in fifo_in_type;
o : out fifo_out_type
);
end component fifo;
end fifo_pkg;
因此,理想的解决方案是当我可以在我的记录中使用与在实体中相同的泛型时。 (因此 DATA_WIDTH 与 DATA_WIDTH_ 相同??)。我知道这应该以某种方式与 vhdl 2008 一起工作,但是我的 quartus II 11sp1 不支持记录中的泛型。
有没有一种优雅的方式来实现那种可合成的“通用传递”?我知道可以只在包中存储一个常量,但是我不能使用同一个 fifo 包来实例化几个不同宽度的 fifo。
谢谢一百万, T
【问题讨论】:
标签: vhdl