FC2カウンター FPGAの部屋 2005年12月16日
FC2ブログ

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

FPGAの部屋

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

ISEで任意のパスのディレイを見る方法2

今回はFPGA Editorを使ってみようと思ったが、とりあえずFloorplannerで見てみよう。ISEのProcess View - Implement Design - Place & Route - View/Edit Placed Design (Floorplanner)をダブルクリックして、Floorplannerを起動。
右側のPlacementウインドウを見てみよう。赤丸の中、チップの下のほうにCLKパッドがある。SW入力パッドは右真ん中のあたり。いくらもロジックが無いので、チップの右真ん中のあたりに固まっている。(下図参照)
Tech_Schma_10_051215.png

Inst_ssgdisp_FreqDivi_lcnt_12を表示してみよう。右上のHierarchyウインドウのdynadisp_test "Primitives"を展開すると、Inst_ssgdisp_FreqDivi_lcnt_12がある。クリックすると、Placementウインドウに斜線でハッチングされて表示される。(図は拡大している)
Tech_Schma_11_051215.png

同様にswl_3をクリックすると出てこない。FPGA Editorでみると、IOパッド内のInputレジスタを使用しているようだ。Floorplannerでも片鱗が見える。SW3パッドを見ると、IQ1としてswl<3>がマップされている。FloorplannerでのIOBレジスタのマップ状況の見方はいまいち良くわからない。
Tech_Schma_12_051215.png

次に、FPGAチップ内で、どの位クロックディレイに差があるか調べてみよう。いい加減な方法だが、適当にFloorplannerでFFの配置を移動して調べてみようと思う。やり方は以前このブログで紹介したので割愛するが、"Floorplannerの使い方覚書1"を見てほしい。(FloorplannerはTiming Analyzerからのクロスプローブで立ち上げないで、この前のように単体で立ち上げる)すべてのロジックをUCF Flowにコピーする。適当にInst_ssgdisp_FreqDivi_lcnt_11、Inst_ssgdisp_FreqDivi_lcnt_12を動かしてみた。
Tech_Schma_13_051215.png

これでセーブして、コンパイルし、クロックディレイを観察してみよう。
Timinig Analyzerを起動しよう。
例によって、Process View - Implement Design - Place & Route - Generate Post-Place & Route Static Timing - Analyze Post-Place & Route Static Timing(Timing Analyzer)をダブルクリックして、Timing Analyzerを起動。起動したら、ツールバーの右から5番目の砂時計マーク(Analyze against Users Paths by defining Endpoint)をクリックする。
下図のようなダイアログが開く。
Tech_Schma_7_051213.png

前回と同様にSourcesにclkを入れる。DestinationsにはInst_ssgdisp_FreqDivi_lcnt_10、Inst_ssgdisp_FreqDivi_lcnt_11、Inst_ssgdisp_FreqDivi_lcnt_12を入れよう。
それでOKボタンを押す。
Tech_Schma_14_051215.png

ディレイを計算して表示する。
Tech_Schma_15_051215.png

その結果、Inst_ssgdisp_FreqDivi_lcnt_10だけclkパッドからFFまでのディレイは2.952nsで、他のディレイは2.950nsだった。2psしか変わらない。
今まではxc3s200だったが、今度はxc3s1500と大きなFPGAにしてやってみよう。
さっきと同様にFloorplannerでInst_ssgdisp_FreqDivi_lcnt_11、Inst_ssgdisp_FreqDivi_lcnt_12を動かしてみた。下の図はその位置。
Tech_Schma_16_051215.png

さっきと同様に、clkパッドからInst_ssgdisp_FreqDivi_lcnt_10、Inst_ssgdisp_FreqDivi_lcnt_11、Inst_ssgdisp_FreqDivi_lcnt_12間での遅延を見てみる。
Tech_Schma_17_051215.png

そうするとclkパッドからInst_ssgdisp_FreqDivi_lcnt_11が2.355ns、Inst_ssgdisp_FreqDivi_lcnt_10が2.189ns、Inst_ssgdisp_FreqDivi_lcnt_12が2.172nsとなった。Inst_ssgdisp_FreqDivi_lcnt_11とInst_ssgdisp_FreqDivi_lcnt_12間のクロックスキューは183psとなった。これは適当にFFを配置しているので、確かなことはいえないが、大きいFPGAはクロックスキューも大きくなる傾向のようだ。チップが大きいので当たり前だが。。。もっと大きくなると、もっと顕著になる。大きいFPGAを速く動かすのは難しいと言えよう。
  1. 2005年12月16日 23:00 |
  2. Timing Analyzerの使い方
  3. | トラックバック:0
  4. | コメント:0

ISE7.1iのアドバンテージ

うちはまだISE6.3iを使っているが、今日始めて?ISE7.1iを使ってよかったと思ったことがあった。
それは、ISEではHDLのテストベンチをタイミングチャートから生成できる。(~.tbwというファイル。New SourceからTest Bench Waveformで作るやつである)
ISE6.3iだと、VHDLのport宣言の部分に日本語でコメントを入れたり、パッケージをuseしてあって、std_logic_vectorビット幅の値をconstantで定義してあったりすると、Test Bench Waveformを作ることが出来ない。でもISE7.1iならばOKということがわかった。ラッキー。いままで使いたくてもなかなか使えなかった。一番下のVHDLファイルをささっとテストすることが出来るようになった。
VHDLファイルの最初のentityはこんな感じである。
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
library work;
use work.cmd_global_def_pack.all;
use work.cmd_sdram_def_pack.all;

entity sw2sdram_dma is
 port(
  clk : in std_logic;
  reset : in std_logic;
  DMAaccess0 : in std_logic;
  SDRAMaddr0set : in std_logic_vector(24 downto 0); -- SDRAMアドレスの設定値(Byte単位)
  SDRAMaddr0now : out std_logic_vector(24 downto 0); -- SDRAMアドレスの現在の値(Byte単位)
  SDRAMaddr0gnt : in std_logic; -- SDRAMアドレスの設定タイミング
  pfifo_data_count : in std_logic_vector(8 downto 0);
  pfifo_rd_en : out std_logic;
  pfifo_data : in std_logic_vector(63 downto 0);
  sdram_req : out std_logic; -- sdram使用要求
  sdram_gnt : in std_logic; -- sdram使用許可
  sdram_ready : in std_logic; -- SDRAMのready信号
  dma_ready_out : out std_logic;
  dma_dout : out std_logic_vector(31 downto 0);
  global_cmd : out std_logic_vector(GLOBAL_CMD_WIDTH-1 downto 0); -- グローバルコマンド領域
  local_cmd : out std_logic_vector(SDRAM_LOCAL_CMD_WIDTH-1 downto 0); -- ローカルコマンド領域
  cmd : out std_logic -- コマンドアサート
 );
end sw2sdram_dma;

いままでISE7.1iはだめなやつと思っていたけど、なかなかどうして良いとこあるじゃない。
  1. 2005年12月16日 16:23 |
  2. Xilinx ISEについて
  3. | トラックバック:0
  4. | コメント:0

プロセッサのパスコンについて

巷ではXbox360が発売になったようだ。PowerPCのコアが3つ載っているそうだ。Xbox360の箱を開けて、基板を見る企画がImpress Watchであって記事を見たが、すごい数のコンデンサだ。こんなにパスコンを付けなければ正常動作しないのだろうか? カルチャーショックぎみ。
今度、PowerPC搭載ボード作るときは、これほどじゃなくても、この1/3くらい載せなきゃいけないのだろうか?
結構ショッキングだった。記事はここにある。
  1. 2005年12月16日 09:21 |
  2. その他のFPGAの話題
  3. | トラックバック:0
  4. | コメント:3