差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン 次のリビジョン 両方とも次のリビジョン | ||
testbench:introduction_to_verilog_hdl:vme_encoder [2015/05/21 18:57] kyotoatlas [VME を用いた読み書き] |
testbench:introduction_to_verilog_hdl:vme_encoder [2015/05/21 19:50] kyotoatlas [PT6 の VME 操作] |
||
---|---|---|---|
行 78: | 行 78: | ||
今は説明のために適当なアドレスを指定していますが、これを実際に読み書きしたいアドレスに置き換えれば実際に操作することができます。 | 今は説明のために適当なアドレスを指定していますが、これを実際に読み書きしたいアドレスに置き換えれば実際に操作することができます。 | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== PT6 の VME 操作 ===== | ||
+ | では、実際に先ほど作った Prescaler ロジックのファクターを VME から操作してみましょう。 | ||
+ | |||
+ | 先ほどのファームウェアでは Prescaler ロジック一つでしたが、そこに VME Read/Write 操作を司る VMEEncoder モジュールというのを追加してみましょう。 | ||
+ | 追加後のブロック図は次のような感じです。// | ||
+ | {{testbench: | ||
+ | |||
+ | VMEEncoder モジュールを追加し、VMEEncoder モジュールと Prescaler ロジックとの間で fact という値を受渡しています。 | ||
+ | こうすることで、いちいち bitfile を作り直す必要がなくなり、VME から ( 実際に操作するのは PC ) Prescale factor を変更することが可能です。 | ||
+ | ここでは VME から操作するのは 1 つの値だけですが、通常複数(数十、数百)の値を設定出来るようなデザインが普通です。 | ||
+ | |||
+ | |||
+ | < | ||
+ | VME プロトコルを判断し、FPGA に Chip Enable などの信号を送っているのは CPLD です。 | ||
+ | CPLD は不揮発性(電源を切った後も書き込んだファームウェアが残る)ので、通信制御などを行うためにボードに載せています。 | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | 必要なコードはここにあります。[[https:// | ||
+ | svn co svn+ssh:// | ||
+ | です。 | ||
+ | |||
+ | コードの基本的な見方は最初に詳しく説明したので、今は省略します。(あまりにも分からないようなら、後に追記します。) | ||
+ | VMEEncoder モジュールでは、上で示したタイミングチャートに合わせて、VME のアドレスを見て、 Prescale factor レジスターの値の読み書きを行っています。 | ||
+ | |||
+ | 出来上がる bitfile を FPGA に書き込み、その後実際に fact を読み書きしてみましょう。 | ||
+ | どこのアドレスに書き込めばいいのかを知るには PT6 のアドレス空間を知る必要があります。 | ||