FC2カウンター FPGAの部屋 ISEのTest Bench Waveformでの複数クロックを使用するISEシミュレーション
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

ISEのTest Bench Waveformでの複数クロックを使用するISEシミュレーション

ISEでTest Bench Waveformをウイザードで生成する際に、複数のクロックを使用したい場合があるが、ISE9.1iではMultiple Clocksを使用出来るので、それを使用してISEシミュレーションをしてみた。
やってみたのはCore Generatorで作成したFWFTモードのデータ入力64bit幅、データ出力が128bit幅のDual ClockのFIFOである。このFIFOは非同期FIFOで書き込みクロックと読み出しクロックが異なっている。この上のテストベンチ(FIFO_test_tb)をウイザードで作成して、ISEシミュレータでシミュレーションを試みる。
今回はテスト用のFIFOのVHDLファイルにテストベンチを右クリックで出てくる"Now Source..."で追加するところから始める。
Dual_clk_sim_1_070412.png

例によって、"Test Bench WaveForm"を選択して、"File Name"テキストボックスに名前を入れて、"Next"ボタンをクリック。
Dual_clk_sim_2_070412.png

次のダイアログは、どのHDLファイルのテストベンチを作るかを選択するものだ。"Next"ボタンをクリック。
Dual_clk_sim_3_070412.png

これで設定は終了したので、"Finish"ボタンをクリック。
Dual_clk_sim_4_070412.png

クロックやタイミングを設定するダイアログが開く。ここで2つクロックを使用するので、"Multiple Clocks"をクリックする。
Dual_clk_sim_5_070412.png

すると、ダイアログが下のように変化する。"Time Scale"を ps にして、"Initial Length of Test Bench"も ps 単位の値に変更する。
Dual_clk_sim_6_070412.png

次にクロックを指定する。クロックとして使用する信号を全部選択する。複数選択する場合は、"Ctrl"キー+クリックで選択する。選択したのは"rd_clk"と"wr_clk"。非同期リセットの"rst"があるので、"Add Asynchronous Signal Support"をチェックする。
Dual_clk_sim_7_070412.png

次に、そのクロックでどの入出力信号を扱うかを指定する。
クロックから"rd_clk"を選んで、下の右側の"Unassigned Signals"内の信号から"rd_en","dout","empty"を選択して、"<-- Add"ボタンをクリックする。
Dual_clk_sim_8_070412.png

そうすると、下の右側の"Assigned Signals"に入る。
Dual_clk_sim_9_070412.png

今度は、"wr_clk"に関連する信号を選択する。同様に"din","wr_en","full"を選択して、"<-- Add"ボタンをクリックする。
Dual_clk_sim_10_070412.png

同様に、下の右側の"Assigned Signals"に入る。
Dual_clk_sim_11_070412.png

最後に、上の"Asynchronous Signals"をクリックしてから、下のウインドウの右側の"rst"をクリックし、"<-- Add"ボタンをクリックする。(下の写真はその結果を示す)
Dual_clk_sim_12_070412.png

"Next >"ボタンをクリックして、"rd_clk"と"wr_clk"を設定する。
最初に"rd_clk"を設定する。"rd_clk"をクリックして、下の写真のように設定した。このクロックは周期15ns、周波数66.667MHzのクロックだ。
Dual_clk_sim_13_070412.png

次に"wr_clk"を設定する。同様に、"wr_clk"をクリックして、下の写真のように設定した。このクロックは周期7.5ns、周波数133.333MHzのクロックだ。これで終了なので"Finish"ボタンをクリックする。
Dual_clk_sim_14_070412.png

"FIFO_test_tb.tbw"が表示されるので、テストパターンを設定する。下の写真のように設定した。ここで"rst"は非同期信号なので、どの位置でも信号値を変更できる。"rd_en"は"rd_clk"の間隔のセットアップ時間で、"wr_en"は"wr_clk"の間隔のセットアップ時間で設定ができる。
Dual_clk_sim_15_070412.png

ProcessesペインのProcessesタブに切り替えて、"Xilinx ISE Simulator"を展開して"Simulate Behavioral Model"をダブルクリックするとシミュレーション結果が表示される。
Dual_clk_sim_16_070412.png

  1. 2007年04月13日 12:15 |
  2. シミュレーション
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog.fc2.com/tb.php/462-c4d99233
この記事にトラックバックする(FC2ブログユーザー)