ボードのバージョン管理

USBで気楽にコンフィグできるSmart-USB Sigma製品ですが、使用するコンフィグファイルがどの開発時点でコンパイルしたデータだったか、わからなくなることがあると思います。 または、制御アプリケーションからFPGA回路のバージョン管理をしたい場合もあると思います。
USBでレジスタを簡単に制御できるSmart-USB Sigma製品ならではの使い方を以下に紹介します。

FPGA回路にバージョン情報を埋め込む

VerilogHDLの場合、トップファイルの上部に以下の記述を追加します。

`define FPGA_VAR 32’h20240702   //2024年7月2日にコンパイルしたデータを指定

Smart-USB Sigma製品のサンプルプロジェクトでは、32bitのレジスタRD用回路(RegIn32.v)があるので、この回路のデータ入力に FPGA_VAR を入力しておくだけです。
このレジスタの番号を”3”にアサインすれば、PC制御アプリからレジスタNo.3(32bit幅)をRDすることで、0x20240702値が読み取れます。

※FPGA回路を変更したら、必ずトップファイルの`defineで定義した値を更新する必要があります。

バージョン以外の情報を埋め込んで、簡易の暗号化も可能です。1つのレジスタに最大512バイトのデータを埋め込み可能です。

PC制御アプリからバージョンのコントロールをする

FPGA回路コンパイル時にバージョンデータを埋め込まなくても、制御アプリからボードのバージョン管理や識別を行うことができます。 

Smart-USB SigmaボードにはSPIアクセスする不揮発性のメモリを搭載しているので、制御アプリからこのメモリに書き込み、読み出しを行うことでバージョン管理ができます。
ただし、FPGA回路にSPI制御回路の実装が必要です。