• 目次 -Page-
  • コンテンツ -Menu-
  • リンク -link-
  • Altera製FPGA搭載開発ボード 「DE0」を活用する
  • FPGAの勉強をするには開発ボードを購入するのが手っ取り早くてよいです。
    色々製品がありますが、機能とコストを考えると「DE0」が一番ではないでしょうか。
     
    Digi-keyで1,3000円程なのが特に魅力的です。
     
    ピンが引き出されただけの基板に数万出すならこのボードをお奨めします。
     

  • 問題回避
  • [-- 1 -----]
    DEOでVGAコネクタに接続されているK22ピンを使おうとするとエラーが出ます。
    理由はK22ピンに割り付けられている機能を使うように設定されている為に起こるようです。
    設定変更方法はQuartusIIで
     
    「Assignment->Device->DevicepinOptions->Dual-PurposePins」
     
    と進みます。。 ここでK22に割り当てられている「nCE0」を「use as regular I/O」に変更する事によりK22をI/Oピンとして利用出来るようになります。
     
    [-- 2 -----]
    バージョンSP1でNiosIIのTargetConnectionでIDエラーが消えませんでした。SP2になってからはSP1でエラーが出ていたものをそのまま使用してもエラーが出なくなりました。 こちらの環境だけかも知れませんが、うまくいかない場合はバージョンも疑ってみるのもいいかも知れません。
  • FPGA内にプロセッサを組む NiosII [1]
  • AlteraのFPGAの中にCPU(プロセッサ)を持たせると汎用性があがりとても便利になります。 QuartsuIIでSOPC Builderというアプリを用いてCPUを構成し、CPUの入出力とFPGAの入出力をコンポーネントみたいに宣言して結合します。 何が出来たとかはSOPCが吐くファイルを見ればサンプルが出力されるのでそれをコピペして考えます。 あとはNiosIIでプログラムを書き、FPGAへダウンロードすればプログラムを実行する事ができます。 もちろんCPUを組んでも空いているところにロジックを組む事も出来ますし、内部で信号を繋ぐ事も可能です。 今回Niosを使おうと思ったのはDE0に搭載されているSD-RAMを使いたいからです。 自分でリフレッシュさせたりするのを考えるよりCPUに勝手にやってもらった方が(組み込まれると思う)楽だなぁという考えです。
     
    CPUの構成方法ですが、既に絶版ですが「FPGA活用チュートリアル 2008/2009年版」をみて行いました。
     
    Googleで検索してみると「Sim's blog」というブログさんに詳しく載っています。
     
    記事はこちらの2つ
    http://blog.goo.ne.jp/sim00/e/8e1fc436d1e29a6decc20f8256adb914
    http://blog.goo.ne.jp/sim00/e/35fbcf1fc1bfe67255e371c1ca2c770f

    構成から動作確認までは行えると思います。
    QuartusIIとNiosIIのバージョンがSP1の時はうまくいきませんでした。SP2になってからうまく動くようになりました。 こちらの環境だけかも知れませんが、参考までに書いておきます。
     
    さて、DE0ボードに構築したCPUを書き込み動作チェックを行いました。LED0-9とSW0-2を使います。SW2をリセットスイッチとして、 SW1をプッシュスイッチ入力としています。今回はSW0は使っていません。SW1を押したらLEDが点灯し、話すと消えるというものを考えます。 またリセットスイッチ(SW2)を押すとNiosII上のコンソールに「Hello from Nios II!」と表示されます。 このコンソールへの表示は上で紹介した方法を一通り終えた後に消していない為に勝手に入っているものです。
     
    I/Oのサンプル「1」

     
    I/Oのサンプル「2」

    以上で動作確認は完了とします。
     
    Nios II エンベデッド・デザイン・スイートのサポート
  • 液晶モニターに何か表示してみる [1]
  • トランジスタ技術2009年11月号に画像表示に関して詳しく載っています。 マイコンを使う方法とCPLDを使う方法、その他いろいろ載っているので参考にして作業を進めました。
     
    今回はDE0に乗っている50MHzがそのまま使える800x600表示を行います。P92に信号について載っています。 横(HSYNC)は800ドットですが、ブランキングというものが足されるので1040パルス、縦(VSYNC)はブランキングが足されて666パルスで1画面となります。 1040カウントして一段下がってを繰り返します。HSYNCが1040、VSYNCが666になったらもう一度頭からという感じで永遠に信号を出し続けなければなりません。
    この辺りがマイコンよりPLDに向いているとろこではないでしょうか。

    さて、ブランキング期間に同期信号を出してあげる必要があります。800x600の場合はHにする正論理ということです。HSYNCは857〜976まで、VSYNCは638〜644までをHiにすればよいようです。
     
    そこで作成したブロックがこちら・・・(かっこよくないですが)

    ブランキング期間はRGB信号を出してはいけません。
    RGBがすべて0(Lo)では黒が出力されるので画面が真っ暗で何が表示されているかわかりません。
    なのでクロックをカウントしてブランキング期間はRGB信号をOFF(全て0)にし、それ以外の期間はどこかのビット(RGB)をHiにすると画面に変化がでます。
     
     
     
    結果はブログで。
  • DE0でSDRAMを使ってみる by NiosII Ver10.0
  • アルテラのFPGA内にCPUを組む場合、On-Chip Memoryで構成するサンプルが多くネットにありますが、 DE0にはSD-RAMが載っているのでこれを使って構成してみます。
     
    SOPCでCPUを構成する方法は同じですが、On-Chip Memoriを選択せずにSDRAM Controllerを選択します。
     
    Memories ans Memory Controllers -> SDRAM -> SDRAM Controller
     

     
    追加されたsdramをダブルクリックすると現れるウィンドウの設定項目は次の通りです。
     


     
    CPUの使用するメモリをSDRAMに設定します。
     

     
    出来たサンプルファイルを確認し、VHDLを書きます。
     

     
    最後の行はSDRAMへのクロック信号です。これがないと動きません。 ピンの設定はマニュアルを見ればわかりますが一応載せておきます。
     

     
    これでプログラムが動きます。
    Design & Programming - 天姫 -
    Copyright (c) 2007-2009 amahime All Rights Reserved.