[FPGA]SiPeedの激安FPGAボード、Tang-NANOがSeeedで販売になってたのでいくつかまとめて購入しました。IDEツール意外と使いやすい。SynplifyProで論理合成から配置配線までやるので、IDEはほぼガワだけの存在。そのうちVScodeのプラグインが出てきそう。コンパイルはかなり高速だけどチューニング項目はあんまりない。タイミングを追い込んで使うようなヘビーな使い方を期待すると死ぬ。ハードマクロを使うIPジェネレータや、組み込みロジアナなんかも一通り揃っている。論理シミュレータがまったくないので、これだけで使おうとすると泥沼。Liteと併用してModelSimを使うのが吉。・Tang-NANOボード使われているFPGAはGW1Nシリーズの一番小さいやつ。1152LUT+864FFで乗算器はなし。メモリマクロは18kbitのブロックRAMが4個。コンフィグROMを内蔵しているので、MAX10の500~800LE相当な感じ。IDEのProgrammerからコンフィグレーションデータを書き込むことができる。それ以外には64MbitのQSPI-SRAMが載ってる。所謂IoT-RAMと呼ばれているグループで、小ピン(6本)でそこそこ高速な大容量メモリを扱える。ボード上には40ピンFPCも載っていて、4.3インチグラフィック液晶のデファクトスタンダード配置。いい、と思いきやLCDバックライト昇圧回路が問題でした。サンプルのコンフィグで指定のLCDを繋ぐとカラーバーは出る、しかしLCDを繋いでないときは点滅し続けるカラーLEDがLCDを繋いでいるときは途中で止まってしまう。ほっとくとまた点滅を始める。USBの電源供給の問題かと思ったので5V/2Aの充電器に繋いでみるも、やっぱり挙動は変わらない。個体の問題かと思って別のボードを繋いで見ても同じ症状がでる。いう不可解な挙動をする場合、かなり高い確率でFPGAの電源系に問題を抱えています。サージやドロップで部分的に内部ロジックの動作がおかしくなり、CRCチェックが回ってくると再コンフィグして復帰する、というパターン。それでパターンを追いかけてみると、1.2Vの電源が1本、昇圧DC/DCのインダクタのそばを通り、ICの下をくぐってバックライトLEDラインと並走して、かなり大回りしてFPGAに接続されているのがわかりました。LDOへの入力も昇圧用インダクタと十分なデカップリングがされていないので、1.2Vラインの電源品質はかなり悪いと考えられます。基板のアートワークレベルの問題で、部品の載せ替え程度では解決しそうにないので、LCDを使う場合はオンボードのバックライト昇圧回路は切り離して、外部にバックライト電源を接続する必要がありそうです。なんとか電源パターンのカット&ジャンパでどうにかできないか模索中。SiPeedからレスがあり、どうも出荷で書き込まれてるやつはタイミングmetに不具合があるようです。迅速にストレステストを実施してもらい、1.2Vの安定性を確認していただきました。s_osafuneSiPeedでも実測してワーストコンディションについても1.2V系の安定性に問題無いとのことです。23:10ただ、出力しかしないはずのLCDを接続するとおかしくなるのも、負荷のかかり方でシビアなタイミングの問題でてるとするならやはりボードなりデバイスなり電源まわりに弱い箇所があるのだろうとは思います。上限を見極めたいので、こちらでももうちょっと調べています。1.2Vラインをジャンパして昇圧DC/DCをカットしたものと、無改造のものを比較測定しました。接続したLCDは秋月のATM0430D5です。これに480x272のカラーパターンを表示させて電源ラインに重畳するノイズを見ました。s_osafune測定した。私感では「昇圧DC/DCの影響は無視して良いほど小さくなく、動くけど問題は潜在している」という結論。タイミングmetしてない部分や非同期部分にはクリティカルな影響があると思う。03:48昇圧DC/DCの1.5MHzのノイズが定常で±60mV以上重畳していて、動作マージンはかなり厳しいと考えられます。タイミングぎりぎりのデザインはやらない方がいいですね。03:41MakerFaire深圳と深圳見学会(その1)今年は11月9~10日の日程で行われたMakerFaire深圳を(ようやく)見に行ってきました。例年MakerFaire台北と時期が近く、なかなかスケジュールの都合が取れなかったのですがようやく行くことが出来ました。なにげに初の中国本土です。深圳への入国ルートはいくつかありますが、今回は香港空港→MRT上水駅まで高速バス、上水から落馬洲へMRTで移動して、福田口岸のイミグレを通るルートにしました。理由はいくつかありますが、落馬洲-福田は両方ともMRTの駅と直結なので迷わずに済みそうなのと、行きはMakerFaire会場へ直接行くので留仙洞駅への乗り換えが少ないのがいいのが主なところです。毎年会場が変わっていくMakerFaire深圳ですが、今年の会場はスタートアップ向けのオフィスを整備している区画に隣接した半地下の施設でした。雰囲気的にはMakerFaire京都の会場に近いですかね。会場の裏手ではがんがんビルが生えていってます。教育面の展示が多いのはアジア圏のMakerFairに共通してるシーンですね。日本出展勢のブースはNTと変わらない顔ぶれ。MakerFaire深圳はここ毎年のように開催地が変わっていて、少し前は大規模な開催で賑わっていましたが、今年の会場は比較的こぢんまりしていて、一頃のMakerムーブメントも落ち着いてきたのかなという印象を受けました。いえ、会場の裏手では大規模なMakerスタートアップ向けのオフィスビルが造成されている最中で、ビジネスとして広げていこうという気合いを感じます。そのままMakerFaire会場を後にして、華強北の電子部品ビルへ向かいます。当日は日曜だったので大半の店舗が閉まっていたのですが、行ってみて確信しました。ここ秋葉原じゃなくてデジットが無限に広がった五階百貨店だ!日が落ちると至る所でLEDディスプレイが輝き始めます。このシーンは我々が80年代に夢見たSFサイバーパンク!変わって二日目はスイッチサイエンスの高須さん(@tks)主催の東莞工場見学ツアーに行きました。00:23MakerFaire台北参加しました毎年10月下旬あたりに開催されるMakerFaire台北に今年もニコニコ技術部集合ブース(Nico-TECH)として参加してきました。まとめ海外MakerFaireへの合同ブース出展は、日本各地で開催されているNTイベントの一環として2015年からスタートしていて、その中でもNT台北は最古参で今年で5年目になります。最大規模での参加だった2017年と比べると、去年・今年と参加人数は減っているものの、目を引く展示は多かったように思います。MakerFaire全体としてもブース数はやはり減っていて、一頃のブームも一段落といった感じをうけます。そんななかでも出展常連のようなブースでは新しい作品がでていたり、域外からの出展があったりと変遷が感じられるのが楽しいですね。来年もNT台北(MakerFaire台北・ニコニコ技術部ブース出展)は行う予定です。会合的なところに招かれて出てきた蟹おこわがめっちゃ美味かったです。来年の打ち上げはここでやりたいと決意してますので美味しいもの食べたい人も是非。[FPGA]前回、間欠カオス法を整数化したので最低限度の18bit精度ででHDLしてみた(というか、正確にはHDL化を前提に必要ビット数を見積もっていたのだけども)。それで結論から先に言うと、どうやら18bit精度だと特定の値で繰り返しパターンに入ってしまうようだ。これが実際にHDL実装したもののSignalTapで観測した様子。綺麗に繰り返しパターンにはまってしまっててどうしたものかと考えていたところ、そもそもカオス系なんだから、フィードバックにちょっとだけノイズを混ぜてやれば安定系から崩れるのでは?と思い、2乗の値を加算する部分でLSBの1ビットだけランダムにひっくり返す処理を追加してみた。書くとややこしい処理をいれたなと思われそうだけども、やってることはXorshit32の適当なビット(今回はMSBを使った)でフィードバックのLSBにXORをかけただけ。綺麗にカオス挙動に戻った。ついでなので、乗算器を使ってないタイミングでランダム値の2乗計算を行って、rand値、rand^2値、1/f値を同時に取得できるように修正。これで実装ロジック数は120LE+2DSPとかなりコンパクトになっている。PWMでLEDをチカチカさせるとこんな感じs_osafunePWMでLチカさせてみた。23:531/fゆらぎの続き前回書いた1/fゆらぎのコードを使ってハードウェア化しようと整数化をしていたところ、この間欠カオス法に面白い特徴があることが分かった。真っ当に単精度浮動小数で実装した間欠カオス法で、1024個の値を生成してパワースペクトルを調べたのがこちら。FFTの窓関数を適用していないので、512以上の部分はイメージが出てスペクトルが強くなってたり、前回紹介した端っこの処理方法を変えているので低周波側でスペクトルが頭打ちになってたりしてるが、ざっくり1/fになっている。これをそのまま24bit固定小数で実装しなおしたものがこちら。floatの仮数部は24bit分なので、0.0~1.0区間では24bit固定小数と同じ精度になる。ここではほとんど同じパターンになる(カオス法なので細かい違いは出る)。次に16bit固定小数にしたものがこちら。1/fのパワースペクトルにならず、1/fっぽいグランドノイズと特定の周波数で強いピークの2つに分かれている。8bit固定小数にする。ピークそのもののスペクトルは1/fっぽく並んでいるものの、特定の周波数(ここでは49の倍数になっている)のみの成分だけになり、ほぼ周期性のあるパターンになってしまっている。いうパターンでたとえばロウソクの炎の模擬をすると、安いキャンドルICのような周期的な点滅が目立つ挙動になってしまう。そこで、どれぐらいの精度があれば1/fゆらぎが得られるかを調べたところ、18bit固定小数でピークが目立たないパターンになった。18bit長はハードウェア実装する場合に18bit×18bitの乗算器1個でカバーできるため都合が良い。実際これがギリギリ下限の精度だろう。MCUでソフト実装する場合は18bitに削るメリットは無いので、24bit固定小数を使う方がいいだろう。間欠カオス法には18bit以上の演算精度が必要である。DMまたはs.osafune@gmail.comまで。