0

私は VHDL を初めて使用し、大きな数値 (256 ビット) の計算を高速化するために dsp ブロックを使用する必要があるプロジェクトを作成しようとしています。coreGenerator を使用してこの DSP48macro を作成しましたが、generate ステートメントで構文エラーが発生します。私が間違っているところを誰かが助けてくれたらお願いします。

注記: 最初の部分は、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

generate ステートメントにはラベルが必要です。

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 に答える