用dsp48生成语句
generate statement with dsp48
我是 VHDL 的新手,正在尝试创建一个项目,我需要在其中使用 dsp 块来更快地计算大数(256 位)。我使用 coreGenerator 创建了这个 DSP48macro,但是我收到生成语句的语法错误。如果有人可以帮助我,请问我哪里出错了。
注:第一部分是coregen生成的组件。另一部分是我试图实例化块的部分。单块工作正常。如果您需要其他信息,请帮助或告诉我。由于我在生成语句中遇到错误,如果你能告诉我哪里出错了,我将不胜感激。
A(i), B(i) 是 (47 downto 0) 和 cin, cout 都是 0 到 5 数组传播进位。
谢谢。
COMPONENT hfh
PORT (
clk : IN STD_LOGIC;
carryin : IN STD_LOGIC;
c : IN STD_LOGIC_VECTOR(47 DOWNTO 0);
concat : IN STD_LOGIC_VECTOR(47 DOWNTO 0);
carryout : OUT STD_LOGIC;
p : OUT STD_LOGIC_VECTOR(47 DOWNTO 0)
);
END COMPONENT;
begin
cin(0)<= carryin;
process(clk, Signal_A , Signal_B, cin )
begin
for i in 0 to 5 generate --error here
begin
blocks : hfh
PORT MAP ( -- error here
clk => clk,
carryin => cin(i),
c => Signal_A(i),
concat => Signal_B(i) ,
carryout => cout(i),
p => p
); -- error here
end generate;
end process;
您的生成语句需要一个标签:
for i in 0 to 5 generate
应该是这样的:
Multipliers : for i in 0 to 5 generate
根据评论,generate
语句也不能在进程内。
您还有一个额外的 begin
,如果您正确缩进代码,您会很容易看到它:
cin(0)<= carryin;
Multipliers : for i in 0 to 5 generate
begin -- Not required
blocks : hfh
PORT MAP (
clk => clk,
carryin => cin(i),
c => Signal_A(i),
concat => Signal_B(i) ,
carryout => cout(i),
p => p
);
end generate;
我是 VHDL 的新手,正在尝试创建一个项目,我需要在其中使用 dsp 块来更快地计算大数(256 位)。我使用 coreGenerator 创建了这个 DSP48macro,但是我收到生成语句的语法错误。如果有人可以帮助我,请问我哪里出错了。
注:第一部分是coregen生成的组件。另一部分是我试图实例化块的部分。单块工作正常。如果您需要其他信息,请帮助或告诉我。由于我在生成语句中遇到错误,如果你能告诉我哪里出错了,我将不胜感激。
A(i), B(i) 是 (47 downto 0) 和 cin, cout 都是 0 到 5 数组传播进位。
谢谢。
COMPONENT hfh
PORT (
clk : IN STD_LOGIC;
carryin : IN STD_LOGIC;
c : IN STD_LOGIC_VECTOR(47 DOWNTO 0);
concat : IN STD_LOGIC_VECTOR(47 DOWNTO 0);
carryout : OUT STD_LOGIC;
p : OUT STD_LOGIC_VECTOR(47 DOWNTO 0)
);
END COMPONENT;
begin
cin(0)<= carryin;
process(clk, Signal_A , Signal_B, cin )
begin
for i in 0 to 5 generate --error here
begin
blocks : hfh
PORT MAP ( -- error here
clk => clk,
carryin => cin(i),
c => Signal_A(i),
concat => Signal_B(i) ,
carryout => cout(i),
p => p
); -- error here
end generate;
end process;
您的生成语句需要一个标签:
for i in 0 to 5 generate
应该是这样的:
Multipliers : for i in 0 to 5 generate
根据评论,generate
语句也不能在进程内。
您还有一个额外的 begin
,如果您正确缩进代码,您会很容易看到它:
cin(0)<= carryin;
Multipliers : for i in 0 to 5 generate
begin -- Not required
blocks : hfh
PORT MAP (
clk => clk,
carryin => cin(i),
c => Signal_A(i),
concat => Signal_B(i) ,
carryout => cout(i),
p => p
);
end generate;