AR# 3051

CPLD - Lattice LDF ファイルをザイリンクス XABEL フォーマットに変換する際のヒント

説明

キーワード : ABEL, translation, 変換

次に、Lattice LDF ファイルをザイリンクス ABEL フォーマットに変換する際のヒントを示します。

ソリューション

テクノロジの変換 : Lattice LDF ファイルをザイリンクス ABEL フォーマットに変換する際のヒント

このアンサーは、ABEL 言語の基礎知識があることを前提としています。

まず、LDF を XABEL に変換するのに不要な余分な行をすべて削除します。これは LDF ファイルの最初の数行のコードで、削除すると変換が簡潔になります。

次のような行を削除します。
"LDF 1.00.00 DESIGNLDF;"
"DESIGN CONT 1.00;"

PROJECTNAME で始まる行を削除します。
DECLARE 行を削除します。
END 行を削除します。

その後、SYM で始まる行および END 行をすべて削除します。変換中にモジュールが見やすいように、削除した行を空の行として残してください。

LDF ファイルの各 GLB モジュールには、GLB モジュールで生成さえる出力を記述した信号宣言があります。これらの信号には、物理ポートにマップされているものと、ほかの GLB モジュールに配線可能な内部ノードとして使用されるものがあります。
------------------------------------------------------------------------------

次に、一般的な LDFファイルとそれを XABEL に変換した例を示します。

次に、GLB モジュール内の出力信号宣言を 2 つ示します。

LDF ファイルのレジスタを介さない信号の宣言

SIGTYPE IRAM0 ASYNC OUT;

信号がピンの場合は、ABEL コードで信号宣言に次を追加します。
IRAM0 pin istype 'reg';

信号が内部信号の場合は、ABEL コードで信号宣言に次を追加します。
IRAM0 node istype 'reg';

------------------------------

JK フリップフロップの LDF ファイルの信号宣言

SIGTYPE ICAS3 REG OUT;
FJK11 (RCNTR ,JROW_COL,KROW_COL,ICLK);

信号が内部信号の場合は、ABEL コードで信号宣言に次を追加します。

ICAS3 node istype 'reg_jk';

信号が物理ピンにマップされている場合は、ABEL コードで信号宣言に次を追加します。

ICAS3 pin istype 'reg_jk';

ABEL コードで EQUATIONS 宣言に次を追加します。

ICAS3.J = JCAS3;
ICAS3.K = KCAS3;
ICAS3.CLK = ICLK;

ここで、JCAS3 は J 入力にマップされる信号、KCAS3 は K 入力にマップされる信号、 ICLK は CLK 入力にマップされる信号です。

----------------------------

フリップフロップの LDF ファイルの信号宣言

SIGTYPE XCRTS REG OUT;
XCRTS.CLK = IICLK;

ここで、IICLK はフリップフロップに接続されるクロック信号です。


フリップフロップが内部でのみ使用される場合は、ABEL コードでポート宣言に次を追加します。

XCRTS node istype 'reg';

フリップフロップが物理ピンとしても使用される場合は、ABEL コードでポート宣言に次を追加します。

XCRTS pin istype 'reg';

EQUATIONS 宣言に次を追加します。

XCRTS.CLK = IICLK;

ここで、IICLK はシステム クロック信号です。

GLB 宣言のレジスタ付き出力の 1 つのみをクロックに割り当てる必要があります。1 つのレジスタ付き出力が 1 つの GLB のクロックに接続された場合、ほかのレジスタも同じクロック信号に接続されるので、その他のレジスタ付き出力は明示的にクロックに接続する必要はありません。そのため、GLB モジュールに「SYGTYPE XXXX REG OUT」という宣言があり、XXXX のクロック割り当てが見つからない場合は、GLB モジュールの出力レジスタのいずれかを駆動するクロックを探します。

--------------------------------

信号がノードであるか出力ピンであるかを判断するにはどうしたらよいですか。
回答 :
信号がピンの場合、XPIN で開始する行の次の行にその信号名が含まれます。これは、信号が物理ピンに接続されていることを示します。

レジスタ付き信号が JK フリップフロップであるか D フリップフロップであるかを判断するにはどうしたらよいですか。
回答 :
レジスタ付き信号が JK フリップフロップである場合、次のように FJK11 で開始する行にこの信号が含まれます。

FJK11 (RCNTR ,JROW_COL,KROW_COL,ICLK);

ここで、RCNTR がこのレジスタからの信号です。

信号が D フリップフロップからのものである場合、この信号が次のような行に含まれます。


RQ0.CLK = ICLK;

ここで、ICLK がD フリップフロップのクロックを駆動する信号です。Lattice アーキテクチャを使用する場合、JK フリップフロップをインプリメントすると 2 つのレジスタが使用されます。

---------------------------------------------------------------------------

GLB 内の信号にコードで宣言されないものがあります。これらの信号は GLB 内のローカル信号であり、ABEL ではノードとして宣言する必要があります。

-----------------------------------------------------------------------------

次は、信号 IRAM0 を外部に取り出すレジスタが付いていない出力の例です。信号 XIRAM0 は、ピン フィードバックが必要な場合のみ使用されます。IRAM0 を物理出力ピンに接続するには、SIGTYPE として宣言する必要があります。

SYM IOC IO46 1 ;
XPIN IO IRAM0;
OB11 (XIRAM0, IRAM0);
END;

ABEL コードで信号宣言リストに次を追加します。
IRAM0 pin;
-----------------------------------------------------------------------------
This 次は、LDF ファイルで入力クロック信号がどのように宣言されているかの例を示します。CLK を使用すると、この信号にグローバル リソースが使用されます。

SYM IOC Y0 1 ;
XPIN CLK XSYS_CLK LOCK 20;
IB11 (ICLK,XSYS_CLK);
END;

ザイリンクスのソフトウェアでは、信号にグローバル リソースを使用することを指定する必要はないので、ABEL に変換すると次のようになります。

ICLK pin;
-----------------------------------------------------------------------------

次に、レジスタ付き入力ピンの例を示します。信号 IA13 がコードで使用される信号です。IICLK がこのレジスタ付きピンで使用されるクロックです。

SYM IOC IO17 1 ;
XPIN IO XA13;
ID11 (A13,XA13,IICLK);
END;

ABEL コードで信号宣言に次を追加します。

A13 pin istype 'reg';

ABEL コードで EQUATIONS 宣言に次を追加します。

A13.clk = IICLK;)

------------------------------------------------------------------------------


論理式の変換

論理式は XABEL と LDF フォーマットでほぼ同一ですが、LDF ファイルの $$ は ABEL では $ であり、XOR を示します。

------------------------------------------------------------------------------

マクロを変換する際のヒント

マクロは、LDF ファイルでは通常次のようなフォーマットです。

LDFMACRO(OUTPUT1, OUTPUT2, INPUT1, INPUT2);

マクロの出力は左側に記述され、入力は右側に記述されます。

このアンサーに項目の追加を希望される場合は、次のアドレスに電子メールを送付してください。
hotline@xilinx.com
AR# 3051
日付 07/28/2009
ステータス アーカイブ
種類 一般