2

そのため、アルゴリズムを使用して、リンク ( http://ars.els-cdn.com/content/image/1-s2.0-S0140366499000031-gr1.gif ) のような構造を作成しています。そこで、次にジャンプする場所を決定する関数を作成しました。私の VHDL スイッチ アーキテクチャでは、generate ステートメントを使用してノードを定義し、それらのポートを適切にマップしようとしていますが、合成すると「「banyan」はこの式では使用できません」と表示されます (banyan はライブラリ内の関数です)。以下にコード例を示します。

INPUT: IF ( l = 1 ) GENERATE 
            NODE_Element : BN PORT MAP( 
                                                clk, reset, 
                                                Input((2*n)-1), 
                                                Input((2*n)), 
                                                SyncIn, 
                                                con(l+1,Banyan(l,n),BanyanPort(l,n)), 
                                                con(l+1,Banyan(l,n),BanyanPort(l,n)), 
                                                sync(l+1,n)
                                            ); --GENERIC MAP(...)
        END GENERATE INPUT;

これを解決する方法を知っている人はいますか...基本的なようですが、解決策を見つけることができました。

4

1 に答える 1

2

問題は生成ではなく、ポート マップにあるようです。ポート マップでできることにはいくつかの制限があり、多くのツール (これがどのシンセ ツールかはわかりません!) には、独自の厳しい制限があります。

関数の結果を一時的な信号に割り当て、その信号をポート マップで使用することをお勧めします。

INPUT: IF l = 1 GENERATE 
Banyan1     <= Banyan(l,n);
BanyanPort1 <= BanyanPort(l,n);
Con1        <= con(l+1,Banyan(l,n),BanyanPort(l,n)); 

 NODE_Element : BN PORT MAP( 
                              clk, reset, 
                              Con1, 
                           );
END GENERATE INPUT; 

これらの変更のすべてが必要なわけではありません。おそらく、ポートマップから con(...) を移動するだけで十分です。

于 2012-12-20T20:58:28.623 に答える