PsramSpikeBitbang
PSRAM spike 段1: bit-bang レジスタ読み出し (docs/psram.md「spikeの構成」)
PLL・DDR プリミティブを使わず 27 MHz ロジックのみで CK = 27/4 = 6.75 MHz を
生成し,ch0 の IR0/IR1/CR0 を読み出して結果を ASCII 1 行の stream として
送出する (PSRAM IR0=xxxx IR1=xxxx CR0=xxxx L=xx W=x).
CK 位相 (1 CK = 4 サイクル,phase 0..3).CK エッジがデータ遷移から 1 サイクル遅れ,構成的に 90° 相当の関係になる:
リード側は POR デフォルト (固定 2x レイテンシ) 前提で CR0 を書かず, RWDS のエッジ検出で自己同期してデータ語を取り込む (レイテンシ実測値は L=xx として報告し,L1 モデル/データシート解釈の照合に使う). 実機結果 (2026-07-22): IR0=005F / IR1=000F / CR0=8F1F / L=0B / W=1.
Parameters
| ResetPulseCycles | u32 | リセットパルス幅 [cyc] (tRP = 200 ns min → 27 MHz で 8 cyc = 296 ns) |
|---|---|---|
| TvcsCycles | u32 | RESET# 解除後の待機 [cyc] (tVCS = 150 µs min → 200 µs 相当を既定とする) |
Ports
| i_clk | input | clock | クロック (27 MHz) |
|---|---|---|---|
| i_rst | input | reset | リセット |
| o_ck | output | logic | CK 出力 (6.75 MHz) |
| o_cs_n | output | logic | CS# 出力 |
| o_reset_n | output | logic | RESET# 出力 |
| o_dq | output | logic<8> | DQ 出力 (CA) |
| o_dq_oe | output | logic | DQ 出力イネーブル |
| i_dq | input | logic<8> | DQ 入力 (リードデータ) |
| i_rwds | input | logic | RWDS 入力 (データ検出に使用) |
| msg | modport | stream_if source | 結果メッセージ (リセット毎に 1 行送出) |