前回は第1層をアクセラレーション対象外にしたことで、推論アクセラレータの効果が面白くない結果に終わってしまいました。そんなわけで、第1層もアクセラレータに対応すべく、探りを入れてみます。
ハードウエア構成に関しては、あまり細かなところまでは考えていないのですが、32bit乗算器をちょっと改造することで、8bit乗算3個を足しこむ内積演算を2個並列実行できる予定です。
まぁ、zero-riscy は32bit乗算器を持っていない(16bit乗算器を4回使う)ので、まずはそこからの改造になるのですが、その前に第1層を8bit乗算としても精度を維持できるのかを探ってみました。
結果、認識精度は72.3%から71.8%へ低下しました。まあこの程度なら、このまま進めてみようかと思います。

[PR]
# by tom01h | 2018-02-19 23:20 | Trackback | Comments(0)

LED 蛍光灯

こっちは蛍光灯だけ交換するタイプ。点灯管を外します。安定器をバイパスするとより低消費電力になるらしいですが面倒なので…
f0054075_10355234.jpg
[追加 amazonを見ているとすごく明るくなったってコメントとあまり変わらないってコメントが両方あるけど、自分の感覚ではあまり変わらないように感じました。]

[PR]
# by tom01h | 2018-02-18 13:35 | Trackback | Comments(0)
zero-riscy の vivado ip 化が出来たので、今度は ARTY Z7 の Zynq の上で動くようにしたいと思います。
下の図のように、Zynq PS の UART を使います。なんでこんな面倒なことをするかというと、PL に作った UART からでは、MIO ポートに接続された ARTY Z7 ボード上の USB-UART を使えないためです。PMOD に USB-UART 拡張基板をつないで、PC とはプログラム用と UART 用の 2本の USB をつなぐなんてスマートじゃないですからね。まぁでも、Zynq で Arm を使わないっていうこと自体が…
f0054075_23472547.png
ブロックデザインは下みたいな感じ。この構成で DDR にアクセスできそうな気がしないでもないですが、まだ試していません。
f0054075_23501551.png
これですんなり動くと思ったのですが甘かった…
どうやら、PS の設定用のプログラムを自前で用意しないといけないらしいです。TRM を読みながら頑張ってみたけど無理でした。
で、一度 SDK で作った Hello World プロジェクトを実行後に、もう一度 Bitstream を書き込んであげる方法を試してみると動きました。
ps7_init.c を zero-riscy 上で実行すればこんな手順要らなくなるのかな?まぁ、ちょっと面倒だけど、まずはこのままでいい事にしておくか。

[PR]
# by tom01h | 2018-02-17 23:59 | PCとか | Trackback | Comments(0)
zero-riscy を ARTY 用に合成すると、100MHz ターゲットで 6ns 以上の違反が出ます。まぁ、実際は動いちゃうみたいですが、対策を考えてみました。
vivado のタイミングレポートはとっても見難いのですが、どうやら aluの加算器を除算の時にも使っているのが原因の模様。multdiv で作ったオペランドが alu に入って、(加算器を共有しているために)条件分岐の判定結果を経由して SRAM まで行きます。面積削減が目的なのでしょうが、ここをワーストにするのはちょっと格好悪い気がするので、multdiv の中に加算器を持ってしまうことにしました。
結果、乗算器を通るパスがぎりぎり 4ns を切れないくらいのワーストパスに。乗算器は BNN アクセラレータ命令のついでに全面見直しをしようと思います。

[PR]
# by tom01h | 2018-02-16 22:26 | PCとか | Trackback | Comments(0)
昨日の続き。
[ちょっと修正]
結局、vivado でバージョン管理が必要なファイルはちょっとだけしかありませんでした。
CPU の IP の方は、project_1/project_1.xpr と、なぜか zero-riscy-test 直下に出来た component.xml, xgui/zeroriscy_sim_top_v1_0.tcl。
チップは project_2/project_2.srcs/sources_1/bd/design_1/design_1.bd の中にブロックデザインの定義があって、
ほかには自動生成された最上位の project_2/project_2.srcs/sources_1/bd/design_1/hdl/design_1_wrapper.v と project_2/project_2.xpr だけかな?
これらのファイルを追加して、Githubを更新しました。
また、kozos を UART Lite 用に書き換えたのに合わせて、Verilator 用のダミーの uart と文字出力用のアドレスを変更しました。

[PR]
# by tom01h | 2018-02-15 23:59 | PCとか | Trackback | Comments(0)
include ファイルは IsInclude にチェックを付けると良いみたいです。
$readmemh は Type=mem にしてみました。なんか Warining 出ていますが、一応コンパイルできました。
f0054075_22314406.png
で、シミュレーションしてみるとリセットの極性が間違っていたので修正しました。
f0054075_22342117.png
さらに、kozos の serial.c を UART Lite 用に変更して、アドレスマップも変更すると FPGA ボード上でも動くことが確認できました。
あとは、どのファイルをバージョン管理する必要があるか調べないといけないけど、それは明日にするか…


[PR]
# by tom01h | 2018-02-14 23:29 | PCとか | Trackback | Comments(0)
zero-riscy のファイル構成が、include_dirs を指定しないと vivado がファイルのありかを見つけられないようになっているのですが、IP の場合はどうすればよいんだろうか?とりあえずこんなのを作りたいんだけど…
f0054075_00510462.png

[PR]
# by tom01h | 2018-02-13 23:48 | PCとか | Trackback | Comments(0)
昔の日記 を見ると、去年の11月ころから V-scale を vivado IP 化の構想が始まっているみたいです。
その後、やっぱり V-scale は何かと問題があるので zero-riscy に乗り換えて、他にも別の事やってたりして時間がかかりましたが、やっとここまで来ました。
AXI マスター用のブリッジは、 PULP プロジェクトから core2axi を流用させてもらいました。
f0054075_21242093.png
ダミー uart の接続はかなりいい加減です。
ブリッジはライトのアドレスリクエストとデータリクエストを同じタイミングで出すので、uart との接続もそれを頼りにしたさぼったインプリになっています。
また、今のところ xbar はウェイトに対応していないので、core から xbar とブリッジを通って uart まで、一切のリタイミング無しで作っています。
しかも… このブリッジは連続リクエストは受け付けられなさそうですねぇ。
シミュレーション上では、uart のリードライトが出来ているようです。
xbar が AXI のウェイトに対応できたら vivado IP 化が始められるかな?

[PR]
# by tom01h | 2018-02-07 21:56 | PCとか | Trackback | Comments(0)
やっと FPGA で動きました。
これで V-scale の到達地点まで来たかな。スラックは6ns超えですが…
f0054075_22424789.png

[PR]
# by tom01h | 2018-02-05 22:45 | PCとか | Trackback | Comments(0)

LED シーリングライト

昔見た時には余裕で1万円を超えていたと思うのですが、最近はずいぶんとお安くなっていますね。
まずは、最近チカチカが目立つ和室から交換してみました。
蛍光灯と点灯管をフルで交換すると1000円くらいするし、4回分くらいの値段で買えたのかな。
交換も簡単。
f0054075_17202161.jpg

[PR]
# by tom01h | 2018-02-04 18:17 | Trackback | Comments(0)