CQの本付録のボードには、Spartan3E100が実装されているので、容量的に、Apple-I互換機が載る。もちろん、IOはあまりないので、シリアルポート、7SEG, LED, SW程度で使うのだ。
拡張用に汎用IOポートのパターンがあり、これを使ってみよう。拡張ポートは16本しかないので、入出力の双方向ポートにする。方向レジスタと出力レジスタを定義し、双方向ポートを実装した。
XSTの合成レポートでは、スライス数60%程度とまずまずである。クロック周波数は少し落ちているが、これは、QFPと関係するのかな…
さて、プレース&マップしよう…として、GPIOの5ピンが実装できないエラー?
他のピンではエラーはないので、もしやと回路図確認。
このピンだけ、GPIO5ではなく、GPIN5と書かれている(!)。う~む、どうせなら全部のピンを入出力可能にしてほしかったぞ。まだFPGAには空いたピンも残っているんだから。
気を取りなおして、5番だけ入力専用に変更して、プレース&マップ。
あれ?再びエラー?DCMがどうのこうの言っている?
——————————————————–
この問題は、クロック配置ツールで各 DCM サイトのあるチップの辺が正しく識別されないことが原因で発生します。DCM を適切なサイトに制約すると、この問題を回避できます。
この問題は、Spartan-3 のすべてのファミリで発生する可能性があります。
この問題は、最新版の 10.1 サービス パックで修正されています。サービス パックは次のサイトから入手できます。
http://japan.xilinx.com/xlnx/xil_sw_updates_home.jsp
この修正は、10.1 サービス パック 1 以降に含まれます。
——————————————————–
おぃ…
追記:
長い時間をかけて、サービスパックをダウンロードしインストールしたけれど、結局、エラーは直らない。
しかたないので、次の行をUCFに挿入。
NET “m_clock” CLOCK_DEDICATED_ROUTE = FALSE;
PIN “dcm_2.CLKIN” CLOCK_DEDICATED_ROUTE = FALSE;
DCMを使わなければいいんだけれどね~
クロックが低く見えるのは、遅延のフォルトパスの問題だった。
とりあえず、これで合成できたが、残る問題は私はパラレルポートのあるPCを持っていないので、このボードにはダウンロードできない(;-p)