SpiMaster::<MODE>
SPI Master モジュール
startはidle中に1クロックだけHighにし、同じcycleのtx_dataを保持する。
受理後はbusyとcs_nをアサートし、全bitの転送とCS High保持時間が終わるとdoneを1クロックだけHighにする。
転送はMSB-first。
CPOLはidle level、CPHAは最初のedgeがshiftかsampleかを決める。 Mode 0/2はleading edgeでsample、Mode 1/3はleading edgeでshiftする。 MISOは2段シンクロナイザ経由で取り込み、Mode 1/3ではスレーブがSCLK立ち下がりで SDOを更新する前提(ADS8688等)で、立ち下がりから1クロック後の安定点でサンプルする。
Generic Parameters
| MODE | SpiMode |
|---|
Parameters
| DATA_WIDTH | u16 | 通信ビット数 (8, 16, 24, 32など) |
|---|---|---|
| CLK_DIV | u16 | 分周比 (50MHz入力で50なら1MHzのSCLK) |
Ports
| clk | input | clock | System Clock (50MHz) |
|---|---|---|---|
| rst | input | reset | Reset |
| start | input | logic | 通信開始トリガー (1パルス) |
| tx_data | input | logic<DATA_WIDTH> | 送信データ |
| rx_data | output | logic<DATA_WIDTH> | 受信データ |
| busy | output | logic | 通信中フラグ |
| done | output | logic | 完了フラグ (1パルス) |
| sclk | output | logic | SPIクロック |
| mosi | output | logic | SPI MOSI |
| miso | input | logic | SPI MISO |
| cs_n | output | logic | SPI Chip select (Active Low) |