« Tang nanoのJTAGを調査 | トップページ | GOWINの書き込みケーブルと、TEC0117というボードを仕入 »

2019.12.02

Cosmo-Zのディスクリを正負両対応にしたのと、Vivadoにおけるスマートなパラメタライズ

Cosmo-Zは放射線を計測する際に、無信号時の信号レベルよりどれだけ下がったらトリガをかける、というトリガが使えます。これをディスクリと呼んでいます。

お客様からの要望で、(無信号時の信号レベル-設定値)ではなく、(無信号時の信号レベル+設定値)でもトリガを掛けられるようにしてほしいというのがあったので、対応しました。

Pos_discri

書くのは簡単なのですが、ここに至るまでに、いままでのぐちゃぐちゃになっていたソースを全面的に見直したり、ISEで書いたコードをVivadoに移植したりといろいろ大変でした。

このお客様はCosmo-Zに拡張ボードを2枚挿して24chにしているので、通常のお客様用の8chとは別にソースをつくらなければなりません。

お客様ごとにソースを作り分けていてはバージョン管理ができなくなるので、VivadoのTclのライブラリを作り、Block Designのコメントを利用してパラメタライズを行えるようなTclの関数を作りました。

 

デフォルトでは下の図のように「ADCのCH数は8、分解能は12」と書いておきます。

コメントにはFPGAのバージョンなんかも書けます。

Discri1

各IPのパラメータは↓のようにパラメタライズできるようになっていて、最初は12bitで8chになっています。

Discri2

ここでMAX_ADCCH=24に書き換えて論理合成を開始すると、

Discri3

TCLのコメントが、子IPの中にあるMAX_ADCCHというパラメータを書き換えてくれます。

Discri4

Discri5

そして、24ch、12bitのデザインが出来上がります。

これで、ユーザはソースを書き換えることなく、また、IPのパラメタライズダイアログを出すこともなく、コメント欄を書き換えることで自分用の設定に変更することができるようになりました。

 

 

|

« Tang nanoのJTAGを調査 | トップページ | GOWINの書き込みケーブルと、TEC0117というボードを仕入 »

コメント

コメントを書く



(ウェブ上には掲載しません)




« Tang nanoのJTAGを調査 | トップページ | GOWINの書き込みケーブルと、TEC0117というボードを仕入 »