ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

今日FPGAで学んだこと(9)自作周辺回路のQSys+NIOSによる開発

2013-09-24 17:34:20 | トピックス
ぜんぜん今日じゃないけど、この前書いたFPGAについて学んできたことの続き。

今日は、自作周辺回路を登録して使う方法について




■自作周辺回路の概要
 自作周辺回路を利用するには、
  ・まず、コンポーネントとして登録する
  ・そのコンポーネントをQsysで取り込み、
  ・NiosⅡEDSでプログラムを書く

●自作周辺回路を、コンポーネントとして登録する
 ・まず、HDL記述をする→バス信号をどう処理するか記述
  代表的な信号
    clk クロック
    reset リセット
    adress アドレス、ワード単位で増える
    byteenable
    read
    readdata
    write
    writedata
    irq 割り込み。後述

 ・自作周辺回路を登録する
  QSysのCompornentLibrary(左側)のNew Compornentをクリック
    →Compornentエディタが開く
      コンポーネント名設定
      FileでHDLを読み込み、Analyze synthesis filesしてチェック
      外部端子をNew Conduit... またはConduit_end
      InterfaceでAssociated resetの設定
      完了、保存
    →CompornentLibraryに登録される

●そのコンポーネントをQsysで取り込み
 QSysに戻って、CompornentLibraryに登録された回路を、
 普通に配置する

 そしたら、コンパイル

●NiosⅡEDSでプログラムを書く
 ふつうに、プロジェクトを作って(SOPC Informationファイルを指定し)
 プログラムを書く。
   →BASEは、system.hに定義されるので、
    IORD_8_DIRECT,IOWT_8_DIRECTを使って操作する


 あとは、普通の操作と変わらない

※まめちしき
・ダイナミックバスとネイティブバス(QSysはダイナミック)
・NIOSはリトルエンディアン
・Avalonバス(スイッチ・ファブリック)は3種類
  Avalon Memory Mapped Interface(MM)
  Avalon Memory Mapped Tristate Interface
   →SRAM,Flashメモリ使用時に利用
  Avalon Streming Interface(Avalon ST)




■タイマーの利用

●ハード部分(QSys)
・JTAGのところでつけている、割り込みラインに、
 timer_0もつける

●ソフト部分(Nios Ⅱ EDS)
方法は3種類!

(方法1)ポーリングする
・タイムアウト待ちする

(方法2)タイマー割り込みを使う
  alt_ic__isr_register
  alt_ic_irq_enable、alt_ic_irq_disable

(方法3)HAL APIを使う
 →割り込みを意識しないで出来る
・alt_alarm_startではじめの待ち時間設定
・次からは、コールバックの戻り値が、待ち時間となる
・BSPエディターでの修正必要
  sys_clk_timerとtimestamp_timerを
   timer_0にセット→system.hに反映される




■自作周辺回路の割り込み
・irqを割り込み信号とする
  →これをon,offすれば、割り込みになる

・割り込みIDの設定

・割り込みイネーブル、クリアを作る


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする