Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

TfImageDemo

TF カード画像表示デモ (docs/tfcard.md「画像表示デモ仕様」,パッチ #8)

ルート直下の IMAGE.BMP (既定.ReqName で変更可) を Fat32Reader から読み, 無圧縮 24 bpp BMP を解析して RGB565 へ変換し, PSRAM のフレームバッファへ AXI4-Lite で書く. 結果は 1 行の ASCII で報告する.

報告行:

  • IMG OK : ロード成功 (以降 o_img_done=1.ImageScanout が表示を開始する)
  • TF ERR <d> : TF カード初期化失敗 (d は TfTypes::Error の値)
  • FS ERR <d> : FAT32 リーダのエラー (d は TfTypes::FsError の値)
  • IMG ERR <d> <hhhh> : BMP が受理条件を満たさない (1=BM シグネチャ不一致 / 2=24 bpp・無圧縮でない / 3=寸法が SrcW x SrcH と 不一致 / 4=画素データが途中で終了).hhhh は診断値で, d=1 ならファイル先頭 2 バイト,d=2 なら biBitCount, d=3 なら実際の幅と高さの下位バイト (幅:高さ)

v1 は寸法を SrcW x SrcH 固定で要求する (部分展開によるフレームバッファの 未定義領域を作らないため).ボトムアップ (biHeight > 0) は書き込み行を 反転して PSRAM 上は常に上から下の順に格納する.

Parameters


SrcW u32 ソース画像の幅 [px] (偶数.32 bit ワード = 2 px のため)
SrcH u32 ソース画像の高さ [px]
FbWordBase u32 フレームバッファ先頭のワード番号 (32 bit 単位)
MaxLen u32 ファイル読み出し要求長の上限 [byte]
ReqName logic<88> 対象ファイルの 8.3 名 11 バイト (既定 "IMAGE BMP"). ワイルドカード `'?'` (3Fh) も使えるが,拡張子だけの照合は 中身が BMP でない同名拡張子のファイルを拾いうるため既定では使わない

Ports


i_clk input clock クロック
i_rst input reset リセット
i_init_done input logic 初期化完了
i_init_err input TfTypes Error 初期化エラー
o_req_valid output logic ファイル読み出し要求
o_req_name output logic<88> 8.3 名
o_req_offset output logic<32> 開始オフセット
o_req_len output logic<32> 読み出し長
i_req_ready input logic 要求受付可能
i_done input logic 完了パルス
i_err input TfTypes FsError 完了時のエラー種別
fdat modport stream_if sink ファイル内容 (Fat32Reader から)
msg modport stream_if source 報告行 (TX アービタへ)
m_axi modport $std __axi4_lite_if__$std___axi4_lite_pkg__22__4__1 master PSRAM へのライト
o_img_done output logic フレームバッファ展開完了 (表示可)