Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

CdcHandshake

非同期ハンドシェイク CDC (トグルハンドシェイク + 2FF 同期)

単一データのクロックドメイン間転送.src 側で valid/ready 成立時に データをラッチしてトグルを反転,dst 側は同期したトグルの変化で データを取り込み od_valid を立てる.dst の消費で dst 状態が反転し, src へ同期して ready が回復する(単一アウトスタンディング).

データレジスタは転送中不変(トグルハンドシェイクの保証)のため, ’d 側でのラッチは安全(unsafe (cdc) で明示).

注: std::async_handshake と同方式だが,同部品は内部で導出リセットを 用いるため veryl 0.20.2 のネイティブシミュレーションで初期化されず L1 検証不能だった(docs/psram.md「CDC」).本実装はリセットを各 ドメインの FF へ直結し,検証可能性を確保する.

Parameters


TYPE type 転送データ型

Clock Domains


'd
's

Ports


is_clk input 's clock src クロック
is_rst input 's reset src リセット
is_valid input 's logic src データ有効
os_ready output 's logic src 受理可能
is_data input 's TYPE src データ
id_clk input 'd clock dst クロック
id_rst input 'd reset dst リセット
od_valid output 'd logic dst データ有効
id_ready input 'd logic dst 受理可能
od_data output 'd TYPE dst データ