Math N-1是VHDL中可用于泛型的最大术语吗
我是VHDL新手,我想问,如果我想编写任意大小的输入向量,我可以使用什么通用术语来开发Math N-1是VHDL中可用于泛型的最大术语吗,math,vhdl,fpga,intel-fpga,Math,Vhdl,Fpga,Intel Fpga,我是VHDL新手,我想问,如果我想编写任意大小的输入向量,我可以使用什么通用术语来开发 GENERIC (n1 : integer); x:IN BIT_VECTOR(n1-1 downto 0); 这是一个正确的例子吗?根据“Paebbels”的评论,我编辑了这个答案: 每次你想要合成你的代码,合成工具应该知道你使用的参数的大小,否则你到底想要合成什么?!!!(什么硬件?!) 如果要合成顶层模块代码(其自身实体中包含通用参数),可以为其指定默认值,如以下代码: ENTITY ... IS
GENERIC (n1 : integer);
x:IN BIT_VECTOR(n1-1 downto 0);
这是一个正确的例子吗?根据“Paebbels”的评论,我编辑了这个答案:
每次你想要合成你的代码,合成工具应该知道你使用的参数的大小,否则你到底想要合成什么?!!!(什么硬件?!)
如果要合成顶层模块代码(其自身实体中包含通用参数),可以为其指定默认值,如以下代码:
ENTITY ... IS
GENERIC(n1 : INTEGER := 8);
PORT(
-- use generic parameter
);
END ENTITY;
此外,您还可以在体系结构中使用通用参数(信号大小、环路索引等)。根据“Paebbels”注释,我编辑此答案:
每次你想要合成你的代码,合成工具应该知道你使用的参数的大小,否则你到底想要合成什么?!!!(什么硬件?!)
如果要合成顶层模块代码(其自身实体中包含通用参数),可以为其指定默认值,如以下代码:
ENTITY ... IS
GENERIC(n1 : INTEGER := 8);
PORT(
-- use generic parameter
);
END ENTITY;
此外,您还可以在体系结构中使用通用参数(信号大小、环路索引等)。根据“Paebbels”注释,我编辑此答案:
每次你想要合成你的代码,合成工具应该知道你使用的参数的大小,否则你到底想要合成什么?!!!(什么硬件?!)
如果要合成顶层模块代码(其自身实体中包含通用参数),可以为其指定默认值,如以下代码:
ENTITY ... IS
GENERIC(n1 : INTEGER := 8);
PORT(
-- use generic parameter
);
END ENTITY;
此外,您还可以在体系结构中使用通用参数(信号大小、环路索引等)。根据“Paebbels”注释,我编辑此答案:
每次你想要合成你的代码,合成工具应该知道你使用的参数的大小,否则你到底想要合成什么?!!!(什么硬件?!)
如果要合成顶层模块代码(其自身实体中包含通用参数),可以为其指定默认值,如以下代码:
ENTITY ... IS
GENERIC(n1 : INTEGER := 8);
PORT(
-- use generic parameter
);
END ENTITY;
您还可以在体系结构中使用通用参数(信号大小、循环索引等)。您的通用参数没有可见的默认值 您对
x
的声明不完整。它似乎是一个带有模式的实体声明项,而您没有端口声明
此VHDL代码在语法和语义上有效:
entity foo is
generic ( n1: integer);
port (
x: in bit_vector(n1-1 downto 0)
);
end entity;
architecture fum of foo is
begin
end architecture;
它将进行分析。如果不知道n1
的值,就无法详细说明:
entity foo_tb is
constant N_1: integer := 4;
end entity;
architecture fum of foo_tb is
signal x: bit_vector (N_1-1 downto 0);
begin
DUT:
entity work.foo
generic map (n1 => N_1)
port map ( x => x);
end architecture;
实体foo
本身不能是精化模型的顶层,因为没有为精化定义n1
实体foo_tb
可以细化,它使用常量N_1
为n1
提供一个值
foo_tb
甚至可以模拟,但它将立即退出,因为初始化后没有挂起的信号分配
既不能合成foo
也不能合成foo\u tb
foo_tb
,因为它没有端口,而且它的设计层次结构中的任何逻辑都会被优化为未使用foo
,因为它只有一个输出,充其量是一个常量
如果foo
有多个端口,其输出取决于输入,则只要定义了用于细化的通用端口,就可以进行合成或模拟
(这里的寓意是使用a,这样人们就不必对它的缺点挥手)。您的泛型没有可见的默认值 您对
x
的声明不完整。它似乎是一个带有模式的实体声明项,而您没有端口声明
此VHDL代码在语法和语义上有效:
entity foo is
generic ( n1: integer);
port (
x: in bit_vector(n1-1 downto 0)
);
end entity;
architecture fum of foo is
begin
end architecture;
它将进行分析。如果不知道n1
的值,就无法详细说明:
entity foo_tb is
constant N_1: integer := 4;
end entity;
architecture fum of foo_tb is
signal x: bit_vector (N_1-1 downto 0);
begin
DUT:
entity work.foo
generic map (n1 => N_1)
port map ( x => x);
end architecture;
实体foo
本身不能是精化模型的顶层,因为没有为精化定义n1
实体foo_tb
可以细化,它使用常量N_1
为n1
提供一个值
foo_tb
甚至可以模拟,但它将立即退出,因为初始化后没有挂起的信号分配
既不能合成foo
也不能合成foo\u tb
foo_tb
,因为它没有端口,而且它的设计层次结构中的任何逻辑都会被优化为未使用foo
,因为它只有一个输出,充其量是一个常量
如果foo
有多个端口,其输出取决于输入,则只要定义了用于细化的通用端口,就可以进行合成或模拟
(这里的寓意是使用a,这样人们就不必对它的缺点挥手)。您的泛型没有可见的默认值 您对
x
的声明不完整。它似乎是一个带有模式的实体声明项,而您没有端口声明
此VHDL代码在语法和语义上有效:
entity foo is
generic ( n1: integer);
port (
x: in bit_vector(n1-1 downto 0)
);
end entity;
architecture fum of foo is
begin
end architecture;
它将进行分析。如果不知道n1
的值,就无法详细说明:
entity foo_tb is
constant N_1: integer := 4;
end entity;
architecture fum of foo_tb is
signal x: bit_vector (N_1-1 downto 0);
begin
DUT:
entity work.foo
generic map (n1 => N_1)
port map ( x => x);
end architecture;
实体foo
本身不能是精化模型的顶层,因为没有为精化定义n1
实体foo_tb
可以细化,它使用常量N_1
为n1
提供一个值
foo_tb
甚至可以模拟,但它将立即退出,因为初始化后没有挂起的信号分配
既不能合成foo
也不能合成foo\u tb
foo_tb
,因为它没有端口和