Modulateur et mélangeur

Principe de fonctionnement

Dans le vocodeur, le rôle du modulateur-mélangeur est double :

Si le vocodeur travaille sur BB bandes de fréquences, le modulateur-mélangeur reçoit BB signaux d’enveloppe eie_i, et BB porteuses cic_i. La sortie est calculée comme une somme de produits :

y(n)=i=0B1ei(n)×ci(n)y(n) = \sum_{i=0}^{B-1} e_i(n) \times c_i(n)

L’entité Mixer

Interface de l'entité Mixer

L’entité Mixer traite un flux de données en utilisant le protocole ready/valid. À la différence des autres entités du projet, les données d’entrées sont des vecteurs d’échantillons. Elle joue à la fois les rôles de consommateur et de producteur :

Port Direction Type Rôle
clk_i Entrée Logique Le signal d’horloge global du système
reset_i Entrée Logique La commande de réinitialisation du système
valid_i Entrée Logique Indique que de nouveaux vecteurs d’échantillons sont disponibles en entrée
ready_o Sortie Logique Indique que ce composant est prêt à recevoir de nouveaux vecteurs d’échantillons d’entrée
env_data_i Entrée Tableau de valeurs en virgule fixe (vocoder_data_vector_t) L’enveloppe du signal à générer pour chaque voie
carrier_data_i Entrée Tableau de valeurs en virgule fixe (vocoder_coef_vector_t) La porteuse du signal à générer pour chaque voie
valid_o Sortie Logique Indique qu’un nouvel échantillon est disponible en sortie
ready_i Entrée Logique Indique que le consommateur relié à ce filtre est prêt à recevoir un nouvel échantillon
data_o Sortie Virgule fixe (vocoder_data_t) La valeur d’un échantillon filtré

Architecture

La gestion du protocole ready/valid est assurée par une machine à trois états sur le modèle présenté dans la page Connecter producteurs et consommateurs.

Dans son état busy, le circuit traite les voies une par une. Il effectue une multiplication et une addition par cycle d’horloge, ce qui permet de n’utiliser qu’une cellule DSP48E1 dans le FPGA.

Nous ne vous demandons pas de réaliser l’architecture. Utilisez l’implémentation de référence fournie.

Implémentation de référence

Nous fournissons une version de cette entité prête à l’emploi dans le fichier src/Mixer/Mixer-ref.vhd. Le contenu de ce fichier a été volontairement rendu illisible. Nous vous conseillons de ne pas perdre de temps à essayer de le rendre lisible.