用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;