0

我是 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;
4

1 回答 1

0

您的生成语句需要一个标签:

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;           
于 2015-07-21T09:22:37.573 回答