|
|
≪DCMのシリーズ接続≫ |
| DCMのシリーズ接続はできるんだけど、コツがあるらしい。 ALTERAのStratixUはPLLのシリーズが内部でできないらしいから、できるだけでも優位なんだけどね。 シリーズ接続すると、2段目のLOCKED信号が入力クロック3クロック以上必要なので、LOCKできないらしい。 2段目のリセットを遅らせれば解決するみたい。 |
|
≪DCMの位相≫ |
| シミュレーションだと、基本クロックとDCMの位相は合ってるんだけど、実機では合わないらしい。 元クロックと逓倍クロックのハイ・ローに依存する(つまり2つのクロックを使用)ロジック書いたら、位相がシミュレーションと違ってるらしくて動かなかった。 しょうがないので、クロック1つ使う様に変更したら、位相の問題はなくなるので動いた。 |
|
|
|
≪DDR(MIG)≫ |
| XilinxのMIGで生成されるDDRのコントローラ、ビヘイビアのシミュレーションしかできません。と書くと語弊がるかもしれない。 正確にはタイミングモデルをちゃんと作らないとダメらしい。 そんな事知らんからビヘイビアで動くのにポスト・トランスレートで動かなきゃ、何かのタイミングが悪いと思うでしょ。 結果的にはポスト・トランスレートで動かなくても、実機では問題なくDDRの読み書きができたのでした。 誰のせいよ?まったく。 |
|
|
|
≪I2C≫ |
| XilinxのXAPP333のI2CリファレンスデザインをVirtex4で使ってみた。 結果は惨敗で動かない。 シミュレーションは問題なく動く。もちろんPost-Place&Routeも。 でも実際の回路では動かない。中身見てみると、どうも作った人のレベル低そう。 結局、自前で作ったら問題なく動いた Xilinxのリファレンスデザインは信用できない。 シリアルもダメだった。 |
|
|
|
≪オンボード・スレーブ・シリアル≫ |
| Slave Serialコンフィグレーションをオンボードで行う場合、bitファイルからmcsファイルを作る必要がある。 このmcsファイルは、ROMライタ用のファイルなので、ASCIIフォーマットとなっている。 中身はインテル拡張HEXファイルである事が判る。 でもオンボードでコンフィグレーションを行う為には、バイナリでなければならないので変換が必要。 「ツールないかなぁ」とネットで調べるも中々ドンピシャのがない。というのも、mcsファイルは拡張リニアなるレコードタイプを使用しているので、対応していないものが多い。(というより見つけられなかった。) という訳で作りました、mcs→バイナリコンバータ。 もし、そんなピンポイントで困ってる人のために、公開。使い方は「勘」で。 どーしても判らなかったら掲示板にでも。 |
|
|
|
≪IP Update≫ |
| IP Updateを実行すると、Core Generatorで使用するIPがアップデートされ、FIFO Generatorとか3.3になる。 でもこれ、ModelSim XE Starter Editionとかにライブラリが無い。 結果シミュレーションが不可能になる。 FIFO Generatirを3.2で使用できればシミュレーションできる。 で、c:\xilinx\coregen\ip\xilinx\primaryというフォルダの中にある、update.xmlとprimary.mnfの中にあるFIFO Generator 3.3の記述を削除すると、Core GeneratorでFIFO Generator 3.2が使えるようになる。
fifo_generator_v3_3 とかで探せば見つかる。
じきにパッチがでると思われるので、ファイルの変更はバックアップを行ってからやった方が良い。
3月12日時点で、アップデータが公開されてます。 mxe6.2c_91i_ip1_xilinxcorelib.zip (52.4MB)を導入する事で解決します。 ModelSimPEを使ってる人は、6.2gで対応されてるので、アップデートする事。 |
|
≪Distributed Memory Generator≫ |
| Distributed Memory GeneratorでDepth=4096、Width=64とかやると、特に深さが4096とかだと、CoreGeneratorが生成できない事が判明。 CoreGeneratorってJavaで動作してるらしくって、あまり深いヤツだとメモリ不足で止まっちゃう。 あのねぇ、理論的に良いインプリメントが実際も通用するとは限らないのよね、ソフトって。その辺が判ってないXilinxでした。 |
|
≪DeleteInterpProc called with active evals≫ |
| 「DeleteInterpProc called with active evals」という表示で、Mapプロセスが停止する。 これってエラー内容が表示されないんで原因不明。 とりあえず、「Cleanup Project Files」を実行すると出なくなる場合もある。 実際、メモリ不足な感じ。 |
|
≪Xst:2117≫ |
| Xst:2117 - HDL ADVISOR - Mux Selector <xxxx> of Case statement line 0 was re-encoded using one-hot encoding. っていうワーニングが出る。これって一見判りにくいけど、if文の連続でもcase文として解釈されるみたい。 で、結局case文の外でも変数xxxxの変更が行われる為、「ダメダヨ」と言っているみたい。 |
|
≪ツールとしてのレベル≫ |
| Alteraに比べてかなり劣ってる様な気がする。 ロジック設計でツールの支援が信用できないのはツライ。 Xilinxを採用したのは失敗だったか。 |