Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

RvTfIo

TF カードの byte-stream 入出力(RvCore の周辺機器. docs/riscv.md「TF カードからのブート」)

TfCtrl と MMIO の間に送受信それぞれ 1 byte のバッファを置く. ソフトウェアは TF_CTRL の rx_valid / tx_space をポーリングし, TF_DATA で 512 byte を直接受け渡す.TfCtrl は stream の handshake 待ちで SCK を停止するため,CPU に実時間制約はない.

セクタ全体の RAM と word/byte 変換を持たないため, RvTfSector より LUT と BSRAM の使用量が少ない.

Parameters


InitDivider u32 初期化クロック分周比(`TfCtrl` へそのまま渡す.テストで短縮する)

Ports


i_clk input clock クロック
i_rst input reset リセット
i_start input logic 1 サイクルパルス.セクタ入出力を開始する
i_wr input logic 0 = リード,1 = ライト(i_start と同時に見る)
i_lba input logic<32> 対象の論理ブロックアドレス
o_status output logic<32> bit0 busy / bit1 init_done / bit4:2 init_err / bit7:5 err / bit8 rx_valid / bit9 tx_space
i_rx_pop input logic 受信バイトを消費する(1 サイクルパルス)
o_rx_data output logic<8> 受信バイト
o_rx_valid output logic 受信バイトあり
i_tx_push input logic 送信バイトを追加する(1 サイクルパルス)
i_tx_data input logic<8> 送信バイト
o_tx_space output logic 送信バッファに空きがある
o_sclk output logic TF SCK
o_mosi output logic TF MOSI
o_cs_n output logic TF CS#
i_miso input logic TF MISO