差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
次のリビジョン 両方とも次のリビジョン
testbench:introduction_to_verilog_hdl:vme_encoder [2015/05/21 19:02]
kyotoatlas
testbench:introduction_to_verilog_hdl:vme_encoder [2015/05/21 19:50]
kyotoatlas [PT6 の VME 操作]
行 92: 行 92:
 では、実際に先ほど作った Prescaler ロジックのファクターを VME から操作してみましょう。 では、実際に先ほど作った Prescaler ロジックのファクターを VME から操作してみましょう。
  
-先ほどのファームウェアでは Prescaler ロジック一つでしたが、そこに VME Read/Write 操作を司る VME_RW ロックというのを追加してみましょう。 +先ほどのファームウェアでは Prescaler ロジック一つでしたが、そこに VME Read/Write 操作を司る VMEEncoder モュールというのを追加してみましょう。 
-追加後のブロック図は次のような感じです。+追加後のブロック図は次のような感じです。// 
 +{{testbench:introduction_to_verilog_hdl:vmeencoder_block.png?600}} // 
 + 
 +VMEEncoder モジュールを追加し、VMEEncoder モジュールと Prescaler ロジックとの間で fact という値を受渡しています。 
 +こうすることで、いちいち bitfile を作り直す必要がなくなり、VME から ( 実際に操作するのは PC ) Prescale factor を変更することが可能です。 
 +ここでは VME から操作するのは 1 つの値だけですが、通常複数(数十、数百)の値を設定出来るようなデザインが普通です。 
  
 <note> <note>
行 99: 行 105:
 CPLD は不揮発性(電源を切った後も書き込んだファームウェアが残る)ので、通信制御などを行うためにボードに載せています。 CPLD は不揮発性(電源を切った後も書き込んだファームウェアが残る)ので、通信制御などを行うためにボードに載せています。
 </note> </note>
 +
 +
 +
 +必要なコードはここにあります。[[https://svnweb.cern.ch/cern/wsvn/atlas-tkunigo/tkunigo/software/testbench/Bit3/pt6/FPGA/PT6_VMEEncoder/?|svn url]] もしくは svn からとってくるには
 +   svn co svn+ssh://$USERNAME@svn.cern.ch/reps/atlas-tkunigo/tkunigo/software/testbench/Bit3/pt6/FPGA/PT6_VMEEncoder
 +です。
 +
 +コードの基本的な見方は最初に詳しく説明したので、今は省略します。(あまりにも分からないようなら、後に追記します。)
 +VMEEncoder モジュールでは、上で示したタイミングチャートに合わせて、VME のアドレスを見て、 Prescale factor レジスターの値の読み書きを行っています。
 +
 +出来上がる bitfile を FPGA に書き込み、その後実際に fact を読み書きしてみましょう。
 +どこのアドレスに書き込めばいいのかを知るには PT6 のアドレス空間を知る必要があります。
 +
testbench/introduction_to_verilog_hdl/vme_encoder.txt · 最終更新: 2019/02/15 09:07 (外部編集)
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0