2015年7月31日金曜日

ARM SoC ボード Helio で SDRAM アクセスが遅い問題の解決

もう二ヶ月くらい経ってしまいましたが、 Helio の SDRAM アクセスがやったら遅い問題は解決しておりました。
まとめる時間がなく今もないので軽く書き置きしておきます。

まずは Avalon 経由でアクセスしている FIFO 付き SDRAM インターフェイスですが、これに入れているクロック 50MHz がまずかったようです。
これはそのまま SDRAM のクロックとなるようですが、それ以外にも重要だったようで、これを 100MHz にしないとパフォーマンスが出ませんでした。
「いや、スループットが二倍になっても全然足りねーじゃん」と思ったのですが、これを 100MHz にしたところ 2 倍どころか 8 倍くらいになり、かなり納得のいくパフォーマンスになりました。
(ちょっと具体的なデータが今すぐ見られませんが)

以下の helio_ghrd_top モジュールに与えられている二種類のクロックのうち

input  wire        fpga_clk_50,
input  wire        fpga_clk_100

fpga_clk_100 のほうを、 export してあるインターフェイス(前回作った memwrite_master) を経由してコントローラに供給しましょう。

 memwrite_master m0(.clk(fpga_clk_100),


ただしこれでも理論値には微妙に届きません。
今は一回のストアに 4 ステートほどを経由する必要があり( Avalon MM の先のオービターで更にどれくらいのオーバーヘッドがあるかわかりませんが、少なくとも……)、このままでは理論値には届きません。
可能な限りコントローラの介入を避けられるよう、これ以上はバーストモードを使いましょう。

バーストモードでは最大 255 * 512bit のストアが可能です。
Avalon のインターフェイスには burstcount が出ています。ぱっと見、これを使えば簡単そうなのですが反面データシートの記述とは一致しないため不安があります。

実際やってみるとこれはまたハマりました。
詳しいことはまた後ほどまとめたいと思いますが、やっぱり Avalon のインターフェイスがデータシートと一致していないのが敗因で、バースト転送の開始を示す信号は、 burstlength の変化をトリガーにして暗黙に生成されているようでした。
つまり毎回同じ burstcount だからといって定数を出していると、他の信号を変化させてもたった一度しかストアが行われません。
また転送終了のシグナルも出ていないので、これの捕捉にも癖があり苦戦したように思います。

結果、 1 クロック余計なステートが増えましたが無事バーストアクセスできるようになり、(バースト長にもよりますが)理論値と比較してそれほど遜色のないパフォーマンスがでるようになりましたとさ。

2015年7月19日日曜日

ヘッドフォンを買う

えーと……なんでだっけ。なんで買おうと思ったんだっけ。
そうだ、思い出した。蛍光灯が壊れたからだ。
リビングが真っ暗になっちゃいましてね。
なくてもいいかなと思ったのですが暗いと以外と何もやる気出ない。条件反射のようにもう寝るしかねーかな見たいな気分になってしまって。
これはいかんなと思って照明を買いに行ったわけですが、11-2 畳くらいで使えるシーリングライトとなると、これが結構バカにならない値段がしてた記憶があるわけです。7万か8万か……安くてもそれくらい。
それまで使ってたシーリングライトも、あんまり高いので 10 畳くらいのやつを 5 万くらいで買って使っていたので微妙に暗かった。

あーもう急な出費がーと覚悟をキメてヨドバシ行ったらですね、ないんですよ。蛍光灯が。
全部 LED だけになってまして。
LED かー、あんまりいい印象ないなーとしぶしぶながら見てみると、これが安い。 3 万もしない。
12 畳用でさえ 2 万しないくらいからある。

パナの二色を調光できるタイプのやつを二万三千円くらいで買いました。

予想よりだいぶ安上がりについたな〜と帰ろうとしたとき、ふと足が止まったわけですよ。そこがヘッドフォン売り場でした。
怖いですね。
金色の四角の真ん中に HI-RES とか書いてあるんですよ。黒い文字で。
怖いめう。

買ってました。
そういやプレイヤーがハイレゾ対応になっていたのに対応のヘッドフォンもイヤフォンも持ってないから放置してたのですよ。

二万六千円くらい。
シーリングライトより高くついたじゃん。

MDR-1A というやつを買いました。
……これは! MDR-EX90 を越える自然さじゃないか!大人し過ぎてもっとドンシャリじゃないと物足りない感じもあります。イコライザーでカバーしましょう。
MDR-10R 系も試聴したのですけど、ドンシャリの派手さは好きだけど籠もりがひどくって 1A の魅力にはかないませんでした。安いけど、籠り方だけ聞くと 9000 円くらいのやつとあんまりかわらない感じするし、むしろ割高かも。

せっかくなのでハイレゾ用の音源も買いました。
mora であっという間にダウンロードできたので、「でかいと思ってたけど大したことねーな」と四曲くらい買ったところデータ転送しすぎ警告が来ました。
転送量見てみたら mora だけで 800MB 以上使ってました。一曲あたり 200MB 以上。
うわーでけぇ! 怖い!!

同じ曲のハイレゾ版と AAC 版を聞き比べてみるとまるで別の音源なのですけど、冷静に考えるとこれはそもそも別の音源であって、比較のしようがない。

もちろん AAC だって、いいんですよ。
ハイレゾ版はなんていうか、アレだ、スタジオで聞いてる音だ。ヘッドフォンから鳴ってる音じゃない。

ああ、これはいい買い物した。
ハイレゾ音源でなくとも、 MDR-EX90 くらいの仕事は余裕でこなしてくれます。
なんだかんだ文句いいつつ XBA-40 を気に入って使っていたわけですが、これが XBA-40と同じくらいの値段ですよ。
家用にもうひとつ欲しい。