Month: November 2016

Wheeler’s Yardで折りたたみ自転車を買った – シンガポール日記 Day 253

今日は朝4時起きでシンガポールオフィス全員が参加するTeam-building event。お昼の12時まで6時間、Paya LebarとEunosの間にあるWillings Heartsというチャリティ施設のスープキッチン(Wikipedia参照; 炊き出し用のごはんをつくる、大きな調理場)でボランティアをしてきました。常時、会社や学校からボランティアを受け入れていて、複数のグループがいっしょに作業します。いろいろな作業がアドホックに発生して「次はこれをお願い」と頼まれます。ぼくは、生のチキンを50羽くらい包丁でスライスしたり、巨大な鉄板でスクランブルエッグを卵1000個分くらい作ったり、サテ(串焼きの総称。今回はチキン)の串を大量生産したりしました。普段はコンピュータの前に座って一日中作業しているので、いい刺激になる作業だったのですが、立ちっぱなしだったので腰が痛い。。。その後はToa PayoのSAFRAに移動してみんなでボーリング。全員が超久しぶりに投げるということで、結果はまぁまぁでしたが、楽しめました。 それで、せっかくToa Payoまで行ったので、帰りは歩いて10分くらいのところにある自転車屋+カフェの「Wheeler’s Yard」へ。ここ数ヶ月、運動不足解消のために買おう買おうと思ってなかなかいいものが見つからなくて保留になっていた、通勤用自転車を探します。家の中に保管する予定なので、折りたたみが前提。ネットで売っている安いものは、万が一、低品質の個体を掴んだときのフレーム破断→転倒が怖いので、現物を見てから買うことにします(日本で乗っていたシティバイクは通販でしたが)。 このお店には50台くらい展示品があるのですが、折りたたみは5-6種類。その中でも、Woop+というブランドの、なかなかかっこよくて軽い20インチのアルミフレームタイプが478ドルだったので、試乗させてもらって、ちょっと値段を交渉してから購入。日本ではかぶってませんでしたが、一応外国にいて怪我をすると面倒なので、ヘルメットも初めて購入。頭が大きいので、XLサイズ(出張でアメリカにいったときに何度か自転車屋でヘルメットを探したときもXLはなかなか見つからなかったけど、今回は10種類以上、XLサイズの在庫がありました)。自転車単体では20ドルくらい、ヘルメット(75ドル)と同時購入で、あともう数ドルおまけしてくれました。ネットだともっと安いのかもしれませんが(オフィシャルの通販では本体が499ドル)、聞いてみるものですね。店員のお姉さんは親切にいろいろ教えてくれました。Google Mapで自転車屋を検索すると、結構評判がひどいところもある中で、Wheeler’s Yardは対応はよいと思います(カフェの雰囲気からも感じられるように、値段は他よりちょっと高めかもしれませんが)。壊れたら修理するからもってきてね、と行ってくれるのも安心。 ということで、さっそくWheeler’s YardからSomersetまで4km弱の道のりをこいでみます。いやー、風がきもちい。道もきれいで、歩道も広いなので、走りやすいです。これから毎日、マリーナ・ベイ・サンズや高層ビル街、ショップハウスを眺めながら通勤するのは、いいリフレッシュになりそうです。休日の行動範囲も広がりそう。 【2016-12-15追記】 購入以降、通勤時間に雨が降っていない日は毎日自転車でSomersetからTanjong Pagarまで走っています。最初の数日は一方通行の道路の配置を覚えるために、いろいろなルートを試していたので時間がかかりましたが、ルートが決まると行きも帰りもdoor-to-doorで20分くらいで着きます。地下鉄も快適ですが、やっぱり好きな時間に、外の景色を見ながら走って移動するのはとても気持ちがいいです。ちなみに以下のようなルート。行きも帰りも3.3kmくらいですね。 Somerset → Red Dot Traffic Red Dot Traffic → Somerset この写真は、通り道のチャイナ・タウンにある「スリマリアマン寺院」というヒンドゥー教の寺院です。シンガポールに来たら立ち寄って、多民族国家を感じていた場所。このすぐ右隣にはモスクもあります。学生時代の11年前にバックパッカーとして東南アジアを巡ったときに最初に訪れて以来、多民族国家であること、ごはんが美味しいこと、街のデザインが洗練されていてどこもすごくおしゃれなところが好きになって、いつかシンガポールに住んでみたいと思っていたのですが、思っているうちに、毎日この前を通って通勤することになっていました。ラッキー。

Maxwell Food Centerの新しい日本食ストール – シンガポール日記 Day 239

いまのオフィスはRed Dot Trafficという、昔の交通警察の建物をリノベーションした真っ赤な建物にあります。 平日のお昼は、ほとんど毎日といっていいくらい、同僚のエンジニアとMaxwell Food Center(有名なホーカーセンターのひとつ)に通っているのですが、最近あたらしい日本食ストールがオープンしました。「くろ屋」という唐揚げ定食屋さん。#01-02という、ちょっと奥まった場所にあります。メニューは以下のようになっていて、 唐揚げセット(SGD 6.2 / 約465円) – 唐揚げ3個とサラダ、ごはん、お味噌汁 アラカルト唐揚げ (SGD 1.5/個) Take away set (SGD 6.5 / 約487円) 唐揚げは以下の6種類の味が選べます。 しょうゆ 塩麹(シンガポールにも日本のちょっと前の塩麹ブームが伝搬したのかな?) スパイシーチリ(結構ピリ辛でうまい) カレー レモンペッパー(この前行ったときは売り切れ。次回試します!)…

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でこのエラーになることは確認しました。新しいバージョンでは修正されているかもしれません。…

F1シンガポールグランプリをみた – シンガポール日記 Day 184

2016年9月16日のおはなし。 シンガポールに来てやりたいことのひとつに「F1シンガポールグランプリをみる」というのがあって、いよいよ待望の9月になったので行ってきました。予選・本戦はテレビのほうがよくみえるので、金曜の夜のフリー走行を見に行きました。 今回は、Raffles Placeにあるチケット売り場に直接行って、1-day Walkaboutの金曜日チケット(SGD 78 == 約5850円)を購入。FP1が始まったあたりの時間に着いたのですが、ほとんど並ばずに購入できました。 シンガポールに住んでいたり、ちょうど来年のこの時期に出張に来ていたりして、観に行こうと思っている人にはこのチケットはとてもおすすめ。以下のマップの緑色のエリアを歩きながら観戦することになるのですが、広々していて、コースにも(車にも)近くて、とても気持ちがよかったです。 それにしてもMclaren Hondaが(ホンダのエンジンのせいで)低迷しているのは本当に残念。シーズン中のエンジン開発の規制がゆるくなる来年に期待。 パダン(Padang)の特設会場。シートをもってきて、地面に寝ながらオーロラビジョンをみている人もいました。開放的! エスプラネードドライブ(Esplanade Drive)の観戦ステージからの眺め。高層ビルの背景がめちゃめちゃ都会的。 このチケットは基本的に立ち見ですが、よくみえるようにちょっとしたステージみたいのがところどころに用意されていて、思い思いのスタイルで観戦しています。

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モードで起動する。この状態で、何もしなくても非同期モードでの通信は可能。…