Virtex5のお勉強としてPLLをCoreGenで作ってみた。どうせシビアなテストは出来ないが、どんなもんかだけでもやってみようと思った。
WebPACKで唯一出来る xc5vlx30 でプロジェクトを作った。最初にNew Source... で IP を選択して PLLtest1 という名前をつけて FPGA Features and Design -> Clocking -> Virtex-5 -> Choose wizard by component -> PLL ADV v9.1i を選択する。

PPL_ADVの選択ウイザードが走る。デフォルトでは CLKOUT0 にしかチェックがついていないので、 CLKOUT1 から CLKOUT5 までチェックをつけた。更に、Clock Jitterに100psを設定した。

wizardの次の画面に行くと、出力周波数と位相、デューテイ比を設定する。最初は全部のクロックが100MHzなので、CLKOUT_DIVIDE をいじって周波数を変えてみる。下の画面のように変えてみた。最初にやってみた時は、位相が-360になってしまったり、 デューティ比が中途半端のものがあったが、IPのアップデート (ISE 9.1i IP Update 1) をかけたら?直ったような気がする。

後はwizardを進めていってPLL_ADVを作った。その後、簡単なトップファイル (PLLtest_top.v) を作った。入力をそれぞれのクロックでシフトレジスタとして2つのDFFをカスケード接続した簡単な回路だ。なぜシフトレジスタとしたかというと、最大動作周波数を見るためだ。

UCFファイルは入力周波数を入れているだけだ。UCFにINPUT_JITERの設定項目が増えている。
NET "CLKIN1_IN" TNM_NET = CLKIN1_IN;
TIMESPEC TS_CLKIN1_IN = PERIOD "CLKIN1_IN" 10 ns INPUT_JITTER 100 ps;
これでインプリメントしてPARリポートを見てみると動作周波数ごとに Worst Case Slack、Best Case Achievable、Timing Errors が表示される。これは動作周波数というかクロック周期の制約をあたえたからだが。ISE9.1iから表示が変わって、 Worst Case Slackの値の意味が良くわからない。SETUPの方は Best Case Achievable(クリティカルパス)をクロック周期から引いた値みたいだが、(SETUPだからそうか?)HOLDの方が良くわからない。マニュアルやアンサー・サーチを見てみたが良くわからないし。今のところナゾである。わかる方は教えてください。

次はModelSimとVeritakでシミュレーションしてみようと思う。
- 2007年03月11日 07:55 |
- Virtex5のお勉強
-
| トラックバック:0
-
| コメント:0