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.
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.
g_MODE_SPInaturalDéfaut :3Description :Mode SPI (0 à 3). Les bits (1) et (0) de sa conversion 2 bits donnent CPOL et CPHAg_CK_PER_HF_SPIpositiveDéfaut :3Description :Nombre de coups d'horloge système par demi-période d'horloge SPIg_SHIFT_SPI_CLKpositiveDéfaut :2Description :Décalage de o_sck par rapport à l'horloge interne (en ticks). Doit être < g_CK_PER_HF_SPI - 1g_NB_SLAVEpositiveDéfaut :1Description :Nombre d'esclaves SPIg_DATA_2RC_SIZEpositiveDéfaut :32Description :Taille max des données à recevoir (bits)g_DATA_2SD_SIZEpositiveDéfaut :32Description :Taille max des données à émettre (bits)| Port | Direction | Largeur | Description |
|---|---|---|---|
i_clk | Entrée | 1 | Horloge système |
i_rst | Entrée | 1 | Reset actif haut : asynchrone pour la capture des paramètres, synchrone pour les autres registres |
o_sck | Sortie | 1 | Horloge SPI (décalée de g_SHIFT_SPI_CLK ticks) |
o_ss_n | Sortie | g_NB_SLAVE | Slave Select actif bas |
i_miso | Entrée | 1 | Master In Slave Out |
o_mosi | Sortie | 1 | Master Out Slave In ('Z' quand inactif) |
o_data_rec_valid | Sortie | 1 | Pulse 1 cycle : données reçues valides |
o_data_received | Sortie | g_DATA_2RC_SIZE | Données reçues |
o_frame_full_ok | Sortie | 1 | Pulse 1 cycle : trame complète |
i_spi_com_rqst | Entrée | g_NB_SLAVE | Requête de communication (1 bit par esclave, pulse 1 cycle) |
i_data_2send | Entrée | g_DATA_2SD_SIZE | Données à émettre |
i_data_2send_size | Entrée | f_log2(g_DATA_2SD_SIZE) | Nombre de bits à émettre |
i_data_2rec_size | Entrée | f_log2(g_DATA_2RC_SIZE) | Nombre de bits à recevoir |