[[SUZAKU]] ** EDKのUSER Interface [#la502695] EDKっていろんな設定変えたりパラメータの変更したりするのにGUIが出てきます。そこでの小ネタ - チェックボタンをつくる --mpdファイルで以下のように書く PARAMETER 信号名 = 0, DT = INTEGER, RANGE = (0,1) これで0,1のチェックぼたんに! - 選択式にする --mpdファイルで以下のように書く PARAMETER 信号名 = 0, DT = INTEGER, RANGE = (0,23) これで初期値0で0~23までの選択子がでてきます。 -もっともっとGUIを変える --GUIはたとえば D:\EDK\data\mdtgui\pcores\opb_sdram_v1_00_e\data とかに入ってるmuiファイルに書かれてます。 このxmlのファイルをいじれば自分カスタマイズな素敵なGUIが出来上がります。 ** TRI_STATEの信号の作り方 [#le8dcd14] - EDKでのTRI_STATEの信号の作り方 --pcoreの中のmpdファイルで以下のように書く PORT SDRAM_DQ_I = "", DIR = I, VEC = [0:(C_SDRAM_DWIDTH-1)] PORT SDRAM_DQ_O = "", DIR = O, VEC = [0:(C_SDRAM_DWIDTH-1)] PORT SDRAM_DQ_T = "", DIR = O, VEC = [0:(C_SDRAM_DWIDTH-1)] PORT SDRAM_DQ = "", DIR = IO, VEC = [0:(C_SDRAM_DWIDTH-1)], THREE_STATE =TRUE, ENABLE = MULTI, PERMIT = BASE_USER, DESC = SDRAM Data IO, IO_IF = sdram_0, IO_IS = sdram_data, TRI_I = SDRAM_DQ_I, TRI_O = SDRAM_DQ_O, TRI_T = SDRAM_DQ_T ** Spartan3E [#rec1c62f] - DCM : DCMにはDLL(Delay Lock Loop)とDFS(Digital Frequency Synthesizer)とPS(Phase shift)があり、DLLは入力18MHzの出力36MHz以上に使用できる。それ以下はDFSを使う。 ** ジッタ [#tf80cda2] - 27MHzのクロックがFPGA(Spartan3)をスルーしてでてきたらどれくらい波形が悪くなるか調査 -- 結果 : オシロで波形を見る分にはジッタがひどくなったとかそういうことはなさそう。ただ、Dutyが50%だったのが55%になったりとか、微妙な変化はあるけど。 -- 周期 ||ソース|スルー|h |MAX|36.85362s|36.87876s| |MIN|37.24325s|37.22210s| |差分|0.36409s|0.34334s| この結果を見る分には何も悪くなってない。 -- Delay : 4.1ns -- Drive電流による立ち上がり立下りの違い ||RISE|FALL|h |4mA|2.14ns|5.18ns| |8mA|1.14ns|3.32ns| |24mA|682ps|2.19ns| 4mAだと、ちょっと波形がなまり過ぎかも。27MHzだと、8mAが妥当な線か。ためしに24mAもやってみたら、オーバーシュートが1.5Vくらい出てかなり厳しかった。 - DCMでクロックを逓倍したりしたら、波形が悪くなるかチェック -- 特に見た感じそんな感じはなし。どこかで、ジッタがひどいとかいううわさが流れてたりしたけど、Spartan3に関してはそういうことはなさそう。 ** 古いバージョンのプロジェクトを8.2iにバージョンアップする方法&注意 [#cb7977dc] - コアジェネ(6.3i)で作ったソースコードがある場合はRegenerate Coreをしてからコンパイルかけないと、うんともすんとも動きません。 - 8.2iではEDKからISEにIOの信号をもってくると、inoutとしてコードが吐き出されるようになりました。昔はi,o,tの3つに分かれたのに。。 - plb_sdramでよんできているLibrary(proc_common_v2_00_a )に変更が入りました。paoファイルにfamily_supportとcounter_fの追加。 ** opb-spi [#m9b14011] opb-spi-1.00dを使ってるプロジェクトをEDK8.1iからEDK8.2iにバージョンアップしてビルドすると、ちゃんとSPIをしゃべってくれないことあり。どうもXilinx提供のSPIのコアは非同期でつくられてるらしい?要調査。ちょみっと変更履歴とかみてたら、BUFGをつかうのがもったいないから、bufferをつかってなんとかうまくやるようにしたとかいう記述あり。この辺が不具合の原因かも。UCFで制約かけたらうまくいく可能性あり? ** 全体を通しての注意 [#c6a2ea27] - Xilinxの提供するコアにはACTIVE、OBSOLETE、DEPRECATEDの3つの状態があります。以下のとおりらしいので、DEPRECATEDになったらせっせとPcoreにおいとく必要ありです。 -- ACTIVE --- 現在または新規プロジェクトで推奨される最新の IP が使用されていることを示しています。 通常、変更やアップデートはこの「active」の IP にのみ適用されます。 -- OBSOLETE --- IP はビルド プロセスから削除 -- DEPRECATED --- 新規バージョンのコアがリリースされると、古いバージョンのコアは「deprecated」と記されます。 この「deprecated」の IP を使用し続けることもできますが、プロセッサ プロジェクトを「active」な IP でアップグレードすることをお勧めします。 通常、変更やアップデートはこの「active」の IP にのみ適用されます。 「deprecated」 と記されている IP は、警告なしに今後のリリースから削除されることがあります。 この IP を「active」バージョンにアップデートしない場合は、この古い IP を Pcore ディレクトリにコピーしておいてください。 これで、古い IP を使用し続けることができます。