FC2カウンター FPGAの部屋 SOPC Builderを使ってみる1
fc2ブログ

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

FPGAの部屋

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

SOPC Builderを使ってみる1

日昇テクノロジーのMAX II/Cyclone IIボードのマニュアル2009/2/26を参考にして、SOPC Builder を試してみることにした。しかし、このマニュアルに載っているnios_led_sch というフォルダはサンプルをダウンロードした中にないし、このマニュアルもボードのマニュアルと銘打っている割にはQuartusⅡやSOPC Builder などツールの説明書だし、結局ボードのマニュアルはないんだよな~。回路図から読み解けといった感じ。回路図もCycloneⅡの乗ったボードと表示ボードの2つになっているので、コネクタを合わせて読み解く必要があるし。。。ちょっとマニュアルが不親切。FPGAも小さいし、もっとやりたくなったら、純正のボードを購入することにする。USB Blasterもどきは今回手に入ったし。。。

愚痴はこのくらいにして、SOPC Builder を試してみることにする。MAX II/Cyclone IIボードのマニュアル2009/2/26の53ページ、第五章 NIOSⅡシステム・モジュールの設計を参考に進めていく。
QuartusⅡを立ち上げてnois2_sdram_led プロジェクトを作る。ToolsメニューからSOPC Builder を立ち上げる。(この辺は日昇テクノロジーのマニュアルを参照しているので、適宜、画面を貼り付ける)
SOPC_Builder_1_090731.png

Verilogを選択して、NiosⅡプロセッサを追加する。その際にJTAG Debug Module のレベルも選択できるみたい。どのレベルのJTAG Debug をするかによってLEの数が違ってくる。これは当たり前か。。。MicroBlazeにはXMDがあるが、設定はなかったような?
SOPC_Builder_2_090731.png

次に行くと、Custom Instractions が設定できる。気軽にカスタム命令が設定できるのかな?あらかじめ使いそうな命令は左側に用意されているようだが、ハードウェアを追加した命令追加はImport... ボタンあたりから使うのかな?
SOPC_Builder_3_090731.png

これでNiosⅡプロセッサの設定は終わり、ちなみにNiosⅡはNiosⅡ/f という一番機能が充実しているもの。
つぎにSDRAMコントローラを追加する。Custom を指定して、データ幅を16bitsにする。次に行くとSDRAMのパラメータを指定するが、SDRAMのデータシートがないので、ネットで探してきた。型番はK4S640432HというサムソンのSDRAM。
まずは、リフレッシュコマンドの発行間隔だけど、64ms refresh period (4K cycle)なので、15.625usでOK。初期化についてはマニュアルに何も書いていないで、これで大丈夫でしょう?
後はデータシートに書いていないのでわからない。サンプルプロジェクトを立ち上げてみたらデフォルトだったので、そのままで行くことにする。
SOPC_Builder_4_090731.png

これでNiosⅡとSDRAMは作られたようだ。
次はインターフェース・ボードに8個付いているLEDを組み込む。左のペインのPeripherals -> Microcontroller Peripherals -> PIO(Parallel I/O)をダブルクリック、PIOを設定する。マニュアルと違って8ビット幅あるので、そのままFinishボタンをクリックした。
SOPC_Builder_5_090731.png

JTAG UARTを組み込む。JTAG UARTは、Interface Protocols -> Serial -> JTAG UART をダブルクリックして、JTAG UARTを設定する。これはマニュアルと同じくデフォルトのまま。
その後はPLLの設定。
Output Clocksのclk c2はSDRAM用の制御クロックだそうですが、Clock Phase Shiftを -63度にするとは、もしかして、READデータを受けるFPGAのセットアップ時間を確保するためなのかな?(2009/08/06 追記:そうとも言いますが、クロックを出力するときの出力の遅延をキャンセルするためですね。たぶん。。。)
SOPC_Builder_6_090731.png

PLLを設定し終わった。次は、Peripherals -> Debug and Performance -> System ID Peripheralをダブルクリックする。
現在のSOPC Builder の表示は下のようになっている。
SOPC_Builder_7_090731.png

ここからpio_0 をrename で名前を変えて、exboard_led_pio に変更した。
Clockフィールドでpllから出力されたpll_0.c0 に各モジュールのクロックを変更するようなのだが、SDRAM Controller だけは、わざわざ作ったpll_0.c1にするのではないだろうか?マニュアルみてもそのようには書いていないが、はたしてどうしたほうがいいか???サンプルとして出来ているsdram_testプロジェクトを見ると、PLLは使っていないし、SDRAM Controller もそのままのクロックを使っている。ここは、pll_0.c1 はせっかく作ったのだが、とりあえず、SDRAM Controller もpll_0.c0 を使うことにする。
(2009/8/2追加:ここでのクロックはあくまでもSDRAM Controller のクロックで、後でpll_0.c1をSDRAMのクロックとして出力していました)
SOPC_Builder_8_090731.png

(2009/08/10 追加:ここでWarning が出ていました。sysid_0 をsysidにRenameするとWarning が消えました。Warningを消しておかないと、後でNoisⅡ IDEでエラーが出ます。Warningを消した状態を下の図に示します。)
SOPC_Builder_24_090810.png

cpuをダブルクリックして、Reset VectorとException Vectorにsdram_0を指定する。Finishボタンで終了する。
SOPC_Builder_9_090731.png

SOPC Builder でGenerateボタンをクリックする。System generationが成功した。
(2009/08/10 追加:sysid_0をsysidにRenameした図に変更しました)
SOPC_Builder_25_090810.png

2009/08/02 追記: 日昇テクノロジーのFPGAボードは回路図だけでピンにどの素子がつながっているかのリストがありません。問い合わせてみたのですが、ないとのこと。仕方がないので、QuartusⅡでインプリメントする前に自分でリストを作ることにしました。まだ、1つの基板だけだったら良いのですが、上にインターフェース基板が載っているので、IOがコネクタ経由になるのでリストを作らないとわかりません。SUZAKUはリストがマニュアルに記載されているので良かったのですが。。。今度、購入するときにはAltera 純正のボードを購入することにします。サンプルプロジェクトのコメントはたぶん中国語で化けていますし、別にコメントを見なくてもVerilogコードは読めるのですけど、どうもいまいちです。。。
  1. 2009年08月01日 15:11 |
  2. SOPC Builder
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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