2017-05-27 2 views
0

Je veux essayer d'utiliser Nexys 4 pour générer un son de voiture. Ai-je besoin de stocker le son dans la ROM? quelle est l'étape pour créer un son. J'utilise le verilog. MerciComment générer un son audio Sortie sur Nexys ddr 4 FPGA

+1

Je vote pour clore cette question hors-sujet parce qu'elle appartient à https://electronics.stackexchange.com/questions/tagged/verilog –

+0

@ dave_59 Verilog est malheureusement un sujet qui est à la fois présent sur "stackoverflow". com "et sur" electronics.stackexchange.com ". Sur les deux sites, les mêmes sujets sont discutés. –

+0

@MartinRosenau Le point est que les gens embrouillent le concept de la conception d'un FPGA avec codage dans un langage de programmation. Le dépassement de pile concerne les problèmes de code et de langue. L'électronique est pour les problèmes de matériel. Verilog chevauche les deux parce que c'est un langage pour décrire le matériel. Cette question n'a rien à voir avec le code lui-même –

Répondre

0

La carte Nexys 4 ne contient pas de codec audio mais elle contient un simple filtre passe-bas (ou passe-bande) créant une sortie sonore à partir d'un signal PWM. Votre défi de programmation consiste à créer un signal PWM dont le rapport cyclique représente le niveau actuel du signal de sortie audio.

Je pense sur le pseudo-code suivant (ici C-like, pas Verilog comme):

signed int levelAccu = 0; 

on_Every_Clock_Edge() 
{ 
    int level = getCurrentSoundLevel(); 
    levelAccu += level; 
    if(levelAccu > 0) 
    { 
     setOutputPin(HIGH); 
     levelAccu -= MAX_LEVEL; 
    } 
    else 
    { 
     setOutputPin(LOW); 
     levelAccu -= MIN_LEVEL; 
    } 
} 

Alors:

getSoundLevel() représente le choix actuel "niveau" de la sortie sonore. (La valeur de l'échantillon actuel si vous utilisez un son échantillonné.)

MAX_LEVEL et MIN_LEVEL sont les valeurs maximum et minimum du "niveau". Exemple: Si vous voulez lire un son qui est enregistré sous forme de valeurs signées sur 8 bits, vous avez MAX_LEVEL=127 et MIN_LEVEL=-128. Le registre levelAccu devrait avoir 1 ou 2 bits de plus que le level.

Notez que les bords de l'horloge doivent être beaucoup plus rapides que la fréquence d'échantillonnage de l'audio.

Ai-je besoin de stocker le son dans la ROM?

Dépend du type de son que vous voulez créer.

Si vous voulez lire des échantillons sonores enregistrés, vous devrez les stocker dans une certaine mémoire (RAM, ROM ...).

Si vous souhaitez générer du son par programme (comme les ondes sinusoïdales), vous n'avez pas besoin de les stocker.

Par ailleurs

Votre question est Verilog pas spécifique mais il est plus lié à FPGAs en commun et aux circuits proches du FPGA.

Pour cette raison, "electronics.stackexchange.com" devrait vraiment être le meilleur endroit pour de telles questions.

+0

merci beaucoup. Je vais essayer de le faire fonctionner !! –