雑多な趣味の記録帳

tom01h.exblog.jp

<   2018年 03月 ( 19 )   > この月の画像一覧

信長の忍び

13巻が出ました。DVD がなかなか追いついてきませんねぇ。4月からアニメ3期やるみたいです。
f0054075_19153635.jpg

[PR]
by tom01h | 2018-03-30 20:14 | 本・映画など | Trackback | Comments(0)

zero-riscy シミュレータにファイルアクセス機能を追加したい

FPGA で SD カードを読めるようになったので、シミュレータにもファイルアクセス機能を追加したいと思います。
UART のエミュレーションでは、IP のレジスタレベルのエミュレーションでした(FPGA で 使う UART IP を変えちゃったので今は互換性ないですが)。
このときは CPU 自体が信用できなかったのでそうしましたが、今回はすでに FPGA でファイルアクセスが出来ているっぽいので、FatFs 関数レベルの互換にします。サポートするのは f_mount, f_open, f_read, f_lseek があれば、まずはよいですかね。いずれはディレクトリの読み出しもしたいですが。
そんな訳で、ダミーモジュールにはファイル名や読み出しサイズなどを設定するためのレジスタインタのフェースだけを設けて、テストベンチから無理やり FatFs の機能を実現したいと思っています。f_read なんかは、転送サイズにかかわらず 0 サイクルでファイルの中身がメモリにコピーされちゃう優れものです。
ごく普通にホスト OS のファイルアクセス機能を使うだけなので、FAT じゃなくても動きます。

[PR]
by tom01h | 2018-03-28 21:28 | PCとか | Trackback | Comments(0)

CPU レスで SD カードアクセス

数日前の途方に暮れていた時に、藁にも縋るつもりでぽちった FPGA マガジンが届きました。
やっぱり特集じゃないと頁少なくてわからない人にはわからない感じですねぇ。
時間が出来たら、VivadoHLS の勉強でもしよう…
f0054075_17023036.jpg

[PR]
by tom01h | 2018-03-26 00:00 | 本・映画など | Trackback | Comments(0)

zero-riscy から SD カードのファイルを読む

昨日はちゃんと読めているかと思った SD カードコントローラですが、FatFs 対応をしようとしていたらエラーで落ちました。
ここ を参考に正常な動作とどう違うかを予想してみます。とにかく、期待値が分からないのがきついです。
まずは、シミュレーションで見えていた読み出しがずれる問題 は別の形だけどやっぱりあるようで、上位の4ビットと下位の4ビットが入れ替わっていました。
それから、場合によって全然読めないこともあるようです。これは、いろいろ試しているうちに、fifo empty がネゲートされてすぐに読んではいけないらしいことが分かりました。デバッグ中は、無駄にいろいろ文字を表示していたので…
この2つをひとまずソフトウェアで対策すると、ファイル名決め打ちで開いたファイルの hexdump が出来ました。
で、今日は予定があるので本対策が出来ない… → 早く帰ってこれました。
[追記]
ビットの入れ替えは、理由は分からないけど上下を反転しました。
すぐに読んではいけない理由は、待ち時間が足りないだけではなくて、前のリードの残骸が残っているのも原因みたいでした。
CRC も FIFO に積んじゃっているのでしょうかね?
ほかに、CPUが遅いから見えてこないと思うけど、FIFO が空の時は RVALID を待たせる論理も追加しました。
ちなみにブロックデザインはこんな感じ。
SD コントローラは RTL モジュールなるもので作っています。
ここ を見て知ったのですが、入門書にはなんでこういう大事なことが書いていないのかな?
[追記 RTLモジュールはなんかいちいち Critical warning 出ますね。]
f0054075_00552307.png
[追記 CD端子繋ぎました 初期化が済んだ状態から、カード取り出し→再挿入→初期化 です]
> status
4a
> status
7a
> status
5a
> open
OK: f_open
> status
4a


[PR]
by tom01h | 2018-03-25 00:02 | PCとか | Trackback | Comments(0)

zero-riscy からなんでも良いので SD カードをアクセスしたい 4

SD カードの情報はなかなかまとまったのがないんだけど、Kingston の ここ からダウンロードできる仕様シートが参考になりました。
ほかには、FatFS の ChaN さんの ここ も参考になります。

では本題で、昨日の続き。
SPI モードで起動しているわけじゃないので、ACMD41 を BUSY がネゲートされるまで投げ続けると、CCS ビットが返事で返ってきます。
今どきは、デフォルトが Block Address ですよね。
CMD2, CMD3, CMD7, ACMD6 の順に投げると初期化完了です。
で、リードは CMD17。シミュレーションで読出しがずれる現象はカードのモデルが問題だったのかな?512バイトの最後2バイトが 55AA なら FAT の証拠らしいので、たぶん正しく読めていると思います。[追記 1バイトの中で上位4ビットと下位4ビットが入れ替わっていました。]
f0054075_13494735.png

[PR]
by tom01h | 2018-03-24 16:48 | PCとか | Trackback | Comments(0)

zero-riscy からなんでも良いので SD カードをアクセスしたい 3

3ステートバッファは自動に推論できなかったので IOBUF を手動で置いてみました。そして、IO にプルアップ属性を付けて、25MHz のクロックをつないで試してみます。SD カードクロックサイクルが4倍になるので、timeout も 4倍にします。
まずは、CMD0, CMD8 を入れてみます。Ver2 以上なら返事が返ってくるはずです。
ここで躓くようなら、今回の SD カードアクセス計画は失敗ってことで…
f0054075_02415746.png
長かった。やっとここまでできた…

[PR]
by tom01h | 2018-03-23 23:59 | PCとか | Trackback | Comments(0)

zero-riscy からなんでも良いので SD カードをアクセスしたい 2

とりあえず OpenCore の sd card controller の sdc_fifo を AXI Lite に変更したものと sdModel を zero-riscy のテストベンチにつないで、sdc_fifo/main.c の内容を実行してみました。
この組み合わせでは、カードの初期化(フォーマットじゃないよ)ではエラーは出ないみたい。でも、モデルは Ver2 のカードじゃないみたいなんだけど、実際に今どき手に入るカードって Ver2 以上ですよね?大丈夫かな?
初期化の後にカードを読み出すのですが、カードからはデータが出てきているみたいです。でも、コントローラが受け取るタイミングが変です。具体的には、最初にカードから0がたくさん出てきた後に所望のデータが出てくるのですが、コントローラは先行する0も受け取ってしまう模様。
これはコントローラとカードのモデルとどっちが悪いんだろうか??とりあえず、実物で試してみようかなぁ?
そのためには、3ステートバッファをどう割り当てるのか調べなきゃいけないし、クロックが 100MHz なのも問題ですよね。
そういえば、プルアップはどうするんだろうか?Arty Z7 のスケマを見るとコマンドだけについていますね。シミュレーション動作を見ると、データにも必要な気がします(データ0 が Hi-Z から 0 へ変化するタイミングで転送開始)。やっぱりコントローラがおかしいのかなぁ?
まぁ、Pmod MicroSD アダプタには両方ともつけるの忘れたのだけど…
[追記
hoge_i
hoge_o
hoge_t
にすると、3ステートのIOバッファが推論されるみたいですね。できませんでした。
IOバッファにはプルアップ付けることもできるみたいですね。]

[PR]
by tom01h | 2018-03-22 22:26 | PCとか | Trackback | Comments(0)

zero-riscy からなんでも良いので SD カードをアクセスしたい

以前、zero-riscy から ZYNQ PS の SD カードをアクセスしようと試みたのですが、初期設定がうまく出来ないのでとりあえずはあきらめた状態です。
でもやっぱり SD カードにアクセスしたいので、OpenCore の sd card controller を使ってみることにしました。Github にも同じものがあるみたいですね。
DMA を使うとややこしそうなので、本体は rtl/sdc_fifo/verilog 以下の物を使うことにしました。IF を WISHBONE から AXI Lite に変更します。
ところで AXI Lite って、リードリクエストとライトリクエストが同時に来ることってあるのでしょうか?とりあえずは無いことにして進めようと思います。
そして、制御ソフトのサンプルは sw/sdc_fifo/main.c があります。これは、全面的に逐語訳が必要に見えますが、やること自体はそのまま真似できそうです。
最後に、SD カードのモデル (master/bench/sdc_dma/verilog/sdModel.v) までそろっているようです。しかも、Github で最新のコミットログを見ると ”Ram image for the sd-card, contating part of a FAT16 filesystem. ” ってあるじゃないですか。
シミュレータだけでも結構楽しめそうですね。それが FPGA で動かなかった時のことを考えるとあれですが…

[PR]
by tom01h | 2018-03-20 23:07 | PCとか | Trackback | Comments(0)

メレル アウトライトエッジ

普段履きの靴を買い替えました。前の靴 は酷使し過ぎました。
メレルは雨の日に滑るくせに、ソールが減りやすいんですよね。
この靴はビブラムじゃないのですが、どうなんでしょうか?
アッパーも防水だけどゴアじゃなくって、その分お買い得です。
f0054075_11304152.jpg

[PR]
by tom01h | 2018-03-17 20:59 | Trackback | Comments(0)

Pmod MicroSD アダプタ

Zynq の PS の SD コントローラの使用は一旦諦めました。
そんなわけで、Pmod MicroSD アダプタを作ってみました。
相変わらず、残念なはんだ付けです。
f0054075_23083147.jpg
でも、コントローラIPの使い方がやっぱり良く分からないんですよねぇ。

[PR]
by tom01h | 2018-03-16 23:11 | Trackback | Comments(0)