Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Fat32Reader

FAT32 リーダ v2 (docs/tfcard.md「FAT32 リーダ仕様」)

TfCtrl (v1) のブロックリードを下位に使い,8.3 名で指定されたファイルを ルートディレクトリから探して内容を stream_if で送出する.リード専用.

  • MBR パーティション 1 (タイプ 0Bh/0Ch) と,スーパーフロッピー形式 (セクタ 0 が JMP + BytsPerSec=512 の BPB) の両方に対応
  • 8.3 名 11 バイト照合.要求名の '?' (3Fh) は任意 1 文字に一致
  • LFN (属性 0Fh)・削除済み (E5h)・ボリュームラベル・サブディレクトリはスキップ, 先頭バイト 00h で列挙終端
  • オフセット起点はクラスタチェーン追跡とセクタ内バイト破棄で実現し, 範囲外セクタの CMD17 は発行しない
  • FAT 参照はクラスタ遷移毎に該当 FAT セクタを 1 ブロックリードする (キャッシュなし)
  • マウント (MBR/BPB 解釈) は初回要求時に行い,以降の要求で再利用する

注意: 下位 TfCtrl の初期化失敗時は要求が受理されない (ブロック要求が 受け付けられないため停止する).利用側は TfCtrl の o_init_err を確認すること.

Ports


i_clk input clock クロック
i_rst input reset リセット
i_req_valid input logic ファイル読み出し要求
i_req_name input logic<88> 8.3 名 11 バイト ([87:80] が先頭文字,'?'=任意)
i_req_offset input logic<32> 開始バイトオフセット
i_req_len input logic<32> 読み出しバイト数 (ファイル末尾で打ち切り)
o_req_ready output logic 要求受付可能
o_done output logic 完了 (1 サイクルパルス)
o_err output TfTypes FsError 完了時のエラー種別
o_file_size output logic<32> 発見したファイルのサイズ (found 以降有効)
data modport stream_if source ファイル内容 (要求範囲のみ)
o_blk_valid output logic ブロックリード要求
o_blk_lba output logic<32> 要求 LBA
i_blk_ready input logic 要求受付可能
i_blk_done input logic ブロック完了 (1 サイクルパルス)
i_blk_err input TfTypes Error ブロック完了時のエラー種別
blk modport stream_if sink ブロックデータ (512 バイト/ブロック)