Category: FPGAPage 1 of 2

Zynqを使ったデータ取得(DAQ)ボード

大学の同期でいまはJAXAの石川くんの、Zynqを使ったデータ取得(DAQ)ボードが論文としてでていました。 High-speed X-ray imaging spectroscopy system with Zynq SoC for solar observations, Ishikawa et al. 2017 (arXiv) 豪華にZynq XC7Z045を載せたベースボードに、ドーターボードとして200Msps/12bitのADCを載せたりできるようです。石川くんの実験では太陽フレアのロケット観測向けにCMOSセンサを読み出すそうです。すごいね。消費電力は11Wということなので、やっぱり上のクラスのZynqは消費電力が大きいですね。  

Raspberry Pi 3 (Jessie)にroot 5.34.36をインストール

GROWTH実験で使用するFPGA/高速ADCボードと制御・読み出し用のDAQソフトウエアは、高エネルギー実験でよく使われるCERN/ROOTのROOTファイル形式で波形データを書き出す機能があるのですが、動作試験ができていなかったのでいくつかバグがありました。 Raspberry Piにrootをインストールして動作確認する必要があったので、以下の手順でインストールしました。 ssh -YでRaspberry Piにログインしている場合、rootだけで起動するとおなじみのスプラッシュスクリーンがでてきます。 インストールした環境は GROWTH-DAQのバグについては修正完了後、インストール方法や実行例の記事をアップロードします。 ちなみに、Raspberry Pi上でのコンパイルはmake -j4で1時間以上かかるので、近所にフードコートがある場合はThunder Tea Rice (擂茶饭; バジル・ミント・小豆・ピーナッツ・いんげん・揚げ豆腐やミートボール・ナスの肉詰めが載ったごはん。抹茶や豆が入ったスープと一緒にいただく)を食べて待ちましょう。 ぼくはいままでTanjong Pagar Plaza Food CenterとAmoy Food Centerで食べました(写真はTanjong Pagar Plazaのほう)。どちらもとても美味しい。Tanjong Pagar Plazaの2階のお店のほうが具の選択肢が多いです。 シンガポールのグルメサイトでは各地のThunder Tea…

GROWTH FPGA/ADCボードにGPS NMEA出力を追加

GROWTH FPGA/ADCボードのFPGAを改修して、ドーターカードのGPSが出力するNMEAデータを、Raspberry PiやMacで受信できるようにしました。NMEAデータはUARTでFPGAに入力され、FPGA内でもトリガ時刻の時刻補正に使用していますが、その信号をFT2232のBank B (FT232モード)に接続しました。 Raspberry PiやMacで/dev/ttyUSB1などにscreenで接続すると、以下のようにNMEAデータが出てきます。Rubyでこの情報を受信してNMEAデータをJSON形式で保存するスクリプトは、GROWTH-DAQにgrowth_gps_logger.rbとして追加しました(githubのpull request #8を参照)。 FPGAイメージ この昨日を追加したFPGAイメージはGROWTH-DAQ/fpga/growth_fy2016_fpga_20170129_1411_with_GPS_serial_data_ADC2ch.mcs.zipとしてアップロードしてあります。書き込み手順は「GROWTH FPGA/高速ADCボード – 3 – FPGA書き込み」にまとまっているので参照してください。

Vivado 2016.2をCent OS 5.5 (64bit) にインストール

Cent OS 5.5 64bitで動いているメニーコアマシンに、GROWTH FPGA/ADCボード(雷雲ガンマ線観測実験で使用中)のFPGA開発用のXilinx Vivado 2016.2をインストールしました。XilinxのサポートOS一覧には、Cent OS 6.7/7.1しか記載されていないのですが、結論だけ書くと、Cent OS 5.5でもとくに問題なくインストールできました。Webインストーラをダウンロードし、以下のようにして起動。 今回インストールしたエディションはWeb Pack版のVivadoだけ(SDKはインストールしていません)。ビルド対象のFPGAファミリはArtix-7だけを選びました。 【参考】Vivado 2016.2正式にサポートしているOS一覧 Vivado 2016.2 – Windows 7 and 7 SP1 Professional (64-bit), English/Japanese – Windows…

4. パルス計測プログラムのビルドと測定実行 – GROWTH FPGA/高速ADCボード

雷雲ガンマ線プロジェクト(GROWTH / Thundercloud Project)で開発したGROWTH FPGA/高速ADCボードに関する記事の第四回です。 GRWOTH FPGA/ADCボード関連の記事一覧 GROWTH FPGA/高速ADCボードの概要 GROWTH FPGA/高速ADCボードの拡張コネクタ GROWTH FPGA/高速ADCボードのFPGA書き込み パルス計測プログラムgrowth_daqのビルドと測定実行 GROWTH実験チームでは、GROWTH FPGA/ADCボード用のFPGAイメージに対応したパルス計測・波形取得用のDAQプログラム(growth_daq)をC++で開発して、オープンソースで公開しています。第三回の手順でFPGAを書き込んだボードをMacやRaspberry Piに接続して、growth_daqを実行すると、パルス信号をセルフトリガ方式でトリガしてFITSファイルやROOTファイルにデータを保存できます。なお、growth_daqはC++で記述されたスタンドアロンのプログラムですが、FPGAボードを制御したり取得したデータを伝送したりする機能はライブラリとして分離されています。このライブラリのクラスをユーザが自作したプログラムから利用すれば、実験ごとの要求に応じたデータ取得プログラムを開発することも可能です。 今回はこのgrowth_daqの入手方法、ビルド手順と実行方法を説明します。 この手順にそって作業していても、依存関係のエラーが出る場合があります。その場合はお手数ですが、このブログのコメント欄かgithubのIssueページで連絡してください。 GROWTH-DAQの入手とビルド gitレポジトリのクローン growth_daqは、githubで公開されているGROWTH-DAQというgitレポジトリに入っています。Mac/Raspberry Pi上のコマンドラインから以下のようにしてcloneしてください。gitが入っていない場合は、Homebrewやapt-getでインストールしてください。git submoduleコマンドは、GROWTH-DAQが依存しているライブラリのうち、githubからcloneできるものを自動的にcloneしてくるためのコマンドです。具体的には、GROWTH-DAQ/.gitmodulesに列挙されたライブラリがcloneされます。 なおGROWTH-DAQは、GROWTH実験で開発した検出器システムを雷雲ガンマ線の観測実験で屋外で自律運用するためのソフトウエア群をまとめたgitレポジトリなので、トップディレクトリのREADME.mdではGROWTH-FY2016(とそれ以降)の検出器を駆動する際の手順が説明されています。growth_daqはdaq/内に格納されており、対応するREADMEファイルはdaq/README.mdです。 依存関係のインストール Macでは、Homebrewをインストールしてから、以下の手順でgrowth_daqが依存しているライブラリをインストールしてください。 Raspberry…

Vivado HLSのメモ

最近Vivado HLSで高位合成を使い始めました。やっぱり、HDLを生で書くよりも圧倒的に早くコーディング・検証できるので、計算処理の記述ではとても助かっています。もしかすると、他の人の参考になるかもしれないので、作業していて気がついた点をまとめておきます。間違った記述があったらコメント欄で指摘してください。 Co-simulationでhandshake signals are not bundled to AXI_lite slaveというエラーが出る HLSでAXI-Liteで引数を渡す設定にしているときに、Co-simulationで というエラーが出ることがあります。たとえば、 これは、トップレベル関数の戻り値のdirectiveに を記述していないことが原因。void関数の場合でも、引数をAXI-Lite Slave指定にするときは、returnポートをAXI-Lite Slave指定にする必要があるようです。 AXI Masterポート指定のディレクティブのdepthの単位はバイト データの入出力をAXI Masterポートで行うときに、以下のようなdirectiveを指定しますが、この時のdepthはバイト単位。たとえば、uint32_t* buffer[32]のときは、depthは128(バイト)にします。これをワード単位で記述すると、Co-simulationのときにsegmentation faultでシミュレーションに失敗します。 トップレベル関数とC++のメソッド名が重複しているとCo-simulationが失敗する つまるところ、トップレベル関数名とstatic publicメソッド名を違うものにするとうまくいくようです。 Vivado HLS 2016.2でこのエラーになることは確認しました。新しいバージョンでは修正されているかもしれません。…

FT2232のFT245 FIFOモードを使うときの留意点

GRWOTH FPGA/ADCボードでは、USBインタフェースとしてFuture Technology社のFT2232Hを搭載しています。FT2232は、USB2の高速伝送(最高40MBytes/s)に対応したシリアル-USB変換とパラレル-USB変換を2ch搭載したインタフェース変換ICで、秋月ではUSBコネクタ付きのFT2232Dのモジュール版が1450円で販売されています。 チップ単体で720円(RS)と安価で、高速通信できる仮想COMポートが2ポート取れるので、自作FPGAボードを作るときにとても便利なチップです。 A側とB側の2つのChannelは、それぞれ独立した仮想COMポートとしてMacからは認識されます。デフォルトでは、FT232のようなRS232非同期シリアル-USB変換インタフェースとして動作します。外部に設定保存用のEEPROMを付けて、FTProgというWindows用の設定ソフトウエアから設定を書き込むと、Channel AはRS232非同期シリアルモード、Channel BはFT245 Asynchronous FIFOモードで動作させることができます。このモードだと、使用時に専用ドライバ(libftd2xx)からの設定は不要で、普通の仮想COMポートとして認識されつつも最大8MBytes/sくらいの伝送ができてとても便利です(Rubyのシリアル通信ライブラリやboostから使えるので、ポータビリティも高い)。 FT245 Synchronous FIFOモードでは、最大40 Mbytes/sという高速通信ができます。ただFT245 Synchronous FIFOモードを使うためには、EEPROMとFTProgからの設定に加えて、ソフトウエア側からのモード設定変更が必要なのと、Channel Bしか使えなくなる(Channel A側のバッファなどが内部的にChannel Bの通信用に使用されるため)、データ送受信もlibftd2xxの関数を用いて行う必要がある(i.e. 仮想COMポートとしては使えない)という点がややネックですが、これらの手間をおぎなってあまりある通信速度なのでしかたないですね。 FT245 FIFOモードを使うときの留意点 実際にFT245 FIFOモードのFPGA側のインタフェースを記述するときに設定内容で少し混乱したのでメモしておきます。 FT245-likeなFIFOモードとして使用するときは、外付けのEEPROMが必要。 FT245-likeなFIFOモードとして使用するときは、FTProg等の専用の設定ソフトで、EEPROMにモード設定を書き込んでおく必要がある。 FT245-likeなFIFOとして動作するモードはSynchronous FIFOとAsynchronous FIFOの2つのモードがある。 FT245 FIFOモードに設定してある場合、電源投入後はFT245 Asynchronous FIFOモードで起動する。この状態で、何もしなくても非同期モードでの通信は可能。…

GROWTH FPGA/高速ADCボード – 3 – FPGA書き込み

雷雲ガンマ線プロジェクト(GROWTH / Thundercloud Project)で開発したGROWTH FPGA/高速ADCボードに関する記事の第三回です。 GRWOTH FPGA/ADCボード関連の記事一覧 GROWTH FPGA/高速ADCボードの概要 GROWTH FPGA/高速ADCボードの拡張コネクタ GROWTH FPGA/高速ADCボードのFPGA書き込み パルス計測プログラムgrowth_daqのビルドと測定実行 購入直後のGROWTH FPGA/高速ADCボードは、シマフジ電機による試験用のFPGAイメージが書き込まれています。実験等でADCの波形データの取得をおこなうためには、以下のいずれかの方法でFPGAイメージを用意して、Xilinx社のUSBダウンロードケーブル(プラットフォームケーブルUSB II)を用いてボード(上のEEPROM)に書き込む必要があります。 GROWTH実験が公開している標準のFPGAイメージをダウンロードする 自分たちの実験で必要な機能を独自にVHDL / Verilog HDL等で実装する この記事では「1. GROWTH実験が公開している標準のイメージをダウンロードする」について説明します。独自にFPGAを実装したい場合は、シマフジ電機から提供される仕様書と回路図をもとに機能を開発してください。 FPGA書き込みに必要なもの 12V電源 (6W以上供給可能な2.1mmプラグのACアダプタもしくは、直流安定化電源) 例: 秋月電子で販売されているACアダプタの例…

GROWTH FPGA/高速ADCボード – 2 – 拡張コネクタ

GROWTH FPGA/高速ADCボードに関する記事の第二回です。 GRWOTH FPGA/ADCボード関連の記事一覧 GROWTH FPGA/高速ADCボードの概要 GROWTH FPGA/高速ADCボードの拡張コネクタ GROWTH FPGA/高速ADCボードのFPGA書き込み パルス計測プログラムgrowth_daqのビルドと測定実行 このボードは2×20ピンの拡張コネクタ(2.54mmのソケット)を2個備えています。CN4がドーターカード用、CN5がRaspberry Pi用のコネクタになっています。 Raspberry Piはオンボードコンピュータ(搭載計算機)として、計算機・ストレージストレージまでボードと一緒に組み込みたい場合に接続します。ドーターカードは、検出器固有のアンプ回路や高圧電源モジュールを搭載するために利用します。ドーターカード用拡張コネクタには、アンプ出力を高速ADCのアナログ入力に接続するためのピンが用意されているので、ドーターカード上で生成した信号をケーブルを介さずに高速ADCで読み込むことができます。(2.54mmのソケットを利用しているので、アナログ帯域は数十MHzが限度と思われますが、FPGA/ADCボード上のADC用のバッファアンプ周りは、シマフジ電機さんの技術力でもっと高速な信号まで処理できるようになっています。広帯域が必要な場合はLEMOコネクタから直接信号を入力してください) Raspberry PiのGPIOコネクタに出ているSPI/I2Cはそれぞれ以下のように配線されています(ドータカードのデバイス構成は和田くんのPMT用アンプ・高圧電源ボードを使った場合の例)。 バス接続先接続されているデバイス SPI FPGA/ADCボード Slow ADC (MCP3208) Slow DAC (MCP4822) I2C ドーターカード…

GROWTH FPGA/高速ADCボード – 1 – 概要など

昨年アカデミストを通じてクラウドファンディングにも挑戦した「雷雲ガンマ線実験(雷雲中の高電場での粒子加速に迫るための実験 = GROWTH実験)」の、2016-17年の冬シーズンの観測実験にむけて、ガンマ線検出器の小型化と多点観測にむけた量産を進めています。(ちなみに実験の初期の頃の信号処理システムは、大型のデスクトップマシンと「VME」や「NIM」という規格のこれまたデスクトップPCくらいのサイズのADC/アンプボードでした。これらを格納するために人が入って数日暮らせるくらいの大きさのアルミフレーム製の小屋を(榎戸さんが)作って観測場所に持って行きました。信号処理回路やPC、データ記録装置(SDカード)まで含めて10cm角サイズに収まるようになったことは感動的なエレクトロニクス技術の進歩です) 雷雲ガンマ線実験(GROWTH実験) – 京都大学の榎戸さん、原研の土屋さん、東京大学の中澤さん、和田さん、奥田さん、理研の中野さんなどと進めている楽しい基礎科学の観測実験プロジェクト。2015年度の観測結果のまとめは「冬季雷雲のガンマ線測定を狙う多地点観測システムの新規開発」(榎戸、湯浅、和田ほか 2016年5月)を参照してください。 先日、榎戸さんの研究費でシマフジ電機とともに開発したFPGA/高速ADCボードが届いたので、週末や夜の時間をつかってFPGAのコーディングを進めました。2015年度の観測装置のSpartan-6 FPGAボードで動いていたパルス計測用のVHDLコードが、今回のボードのArtix-7 FPGAとAD9231という50Mサンプル/秒のADCチップでも動作するようになりました(8月最終週)。また、9月3-4日の週末を使って、このFPGA/ADCボードに載せてあるSPIのSlow ADC/DACとLED、GPIOピンをRaspberry Piから制御することもできるようになりました。 今後何回かに分けて、このボードの試験の様子をレポートしていきます。このボードを使う実験メンバや、他の実験向けに利用してみたいという人の参考になれば幸いです。 【2016年12月28日追記】 GROWTH関連の成果物(ハードウエア/ソフトウエア)を利用する人が、使い方やコードの改良について質問・議論するためのGoogleグループ「GROWTH Users Group」を作成しました。Googleアカウントでログインすれば誰でも登録申請できるようにしているので、興味のある方は登録してみてください。 GRWOTH FPGA/ADCボード関連の記事一覧 GROWTH FPGA/高速ADCボードの概要 GROWTH FPGA/高速ADCボードの拡張コネクタ GROWTH FPGA/高速ADCボードのFPGA書き込み パルス計測プログラムgrowth_daqのビルドと測定実行 初回はボードの概要と仕様をまとめます。 GROWTH FPGA/ADCボードの概要…