Chargement…
Chargement…
Le module implémente un maître SPI configurable supportant les 4 modes SPI (0 à 3) via les paramètres CPOL et CPHA dérivés du generic g_MODE_SPI.
Une transaction est déclenchée par i_spi_com_rqst. Le module gère la sérialisation TX (MSB first), la désérialisation RX, la génération d'horloge SPI et la sélection d'esclave. Les tailles TX et RX sont indépendantes et configurables par transaction.
Génériques :
| Generic | Type | Défaut | Description |
|---|---|---|---|
g_MODE_SPI | natural | 3 | Mode SPI (0 à 3). Les bits (1) et (0) de sa conversion 2 bits donnent CPOL et CPHA |
g_CK_PER_HF_SPI | positive | 3 | Nombre de coups d'horloge système par demi-période d'horloge SPI |
g_SHIFT_SPI_CLK | positive | 2 | Décalage de o_sck par rapport à l'horloge interne (en ticks). Doit être < g_CK_PER_HF_SPI - 1 |
g_NB_SLAVE | positive | 1 | Nombre d'esclaves SPI |
g_DATA_2RC_SIZE | positive | 32 | Taille max des données à recevoir (bits) |
g_DATA_2SD_SIZE | positive | 32 | Taille max des données à émettre (bits) |
L'horloge SPI est dérivée de l'horloge système par division, avec une demi-période de g_CK_PER_HF_SPI cycles. Le mode SPI détermine la polarité et la phase de l'horloge. L'horloge de sortie o_sck est décalée de g_SHIFT_SPI_CLK cycles par rapport à l'horloge interne.
La transaction démarre sur i_spi_com_rqst. Le module sélectionne l'esclave, sérialise les données TX, désérialise les données RX et signale la fin par o_data_rec_valid. Il n'expose pas de sortie busy : une transaction est visible par la sélection active dans o_ss_n.
i_clki_rsto_sckg_SHIFT_SPI_CLK ticks)o_ss_ng_NB_SLAVEi_misoo_mosio_data_rec_valido_data_receivedg_DATA_2RC_SIZEo_frame_full_oki_spi_com_rqstg_NB_SLAVEi_data_2sendg_DATA_2SD_SIZEi_data_2send_sizef_log2(g_DATA_2SD_SIZE)i_data_2rec_sizef_log2(g_DATA_2RC_SIZE)