Cosmo-Zのディスクリを正負両対応にしたのと、Vivadoにおけるスマートなパラメタライズ
Cosmo-Zは放射線を計測する際に、無信号時の信号レベルよりどれだけ下がったらトリガをかける、というトリガが使えます。これをディスクリと呼んでいます。
お客様からの要望で、(無信号時の信号レベル-設定値)ではなく、(無信号時の信号レベル+設定値)でもトリガを掛けられるようにしてほしいというのがあったので、対応しました。
書くのは簡単なのですが、ここに至るまでに、いままでのぐちゃぐちゃになっていたソースを全面的に見直したり、ISEで書いたコードをVivadoに移植したりといろいろ大変でした。
このお客様はCosmo-Zに拡張ボードを2枚挿して24chにしているので、通常のお客様用の8chとは別にソースをつくらなければなりません。
お客様ごとにソースを作り分けていてはバージョン管理ができなくなるので、VivadoのTclのライブラリを作り、Block Designのコメントを利用してパラメタライズを行えるようなTclの関数を作りました。
デフォルトでは下の図のように「ADCのCH数は8、分解能は12」と書いておきます。
コメントにはFPGAのバージョンなんかも書けます。
各IPのパラメータは↓のようにパラメタライズできるようになっていて、最初は12bitで8chになっています。
ここでMAX_ADCCH=24に書き換えて論理合成を開始すると、
TCLのコメントが、子IPの中にあるMAX_ADCCHというパラメータを書き換えてくれます。
そして、24ch、12bitのデザインが出来上がります。
これで、ユーザはソースを書き換えることなく、また、IPのパラメタライズダイアログを出すこともなく、コメント欄を書き換えることで自分用の設定に変更することができるようになりました。
| 固定リンク








コメント