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