Vizitator sorinietc Postat Martie 3, 2014 Partajează Postat Martie 3, 2014 Buna ziua, Vreau sa fac un sintetizator audio cu FPGA. Am scris codul pentru fiecare nota muzicala in parte in Matlab si vreau sa convertesc codul matlab in verilog sau vhdl. Am incercat direct din matlab si m-a batut.. nu reusesc.. imi tot cere ceva de functii.. Intreb aici poate stie cineva o metoda mai simpla, sau cineva care poate explica mai precis pasii care trebuiesc facuti. Multumesc ! Link spre comentariu
belasajgo Postat Martie 3, 2014 Partajează Postat Martie 3, 2014 Ce functii iti cere Matlab-ul la conversie? Link spre comentariu
Vizitator sorinietc Postat Martie 12, 2014 Partajează Postat Martie 12, 2014 Liniile de cod de mai sus le-am scris in matlab cu scopul obtinerii unui sunet la frecventa de 329.6 Hertz, frecventa ce corespunde notei muzicale "Mi". Vreau sa il convertesc in cod verilog pentru a realiza o aplicatie cu fpga. Am scris codul in matlab pentru ca este mai usor si am vazut ca se poate converti. Intampin greutati deoarece pentru a-l converti in verilog, programul trebuie sa fie functie si nu script. Am urmat pasii pentru a realiza o functie cu acel program: function [y,Fs]=MI(T,f,a) %[parametrii de iesire : y,Fs] = numele functiei (Parametrii de intrare :T,f,a) asa imi arata modelul functieiFs = 8000;T =2;t = 0:(1/Fs):T;f = 329.6;a = 0.5;y = a*sin(2*pi*f*t); sound(y, Fs);end programul in matalab imi reda sunetul exact ca si in varianta de mai sus, dar ma atentioneaza in legatura cu parametrii de intrare. Am facut un print in care se vede atentionarea si cum ma sfatuiesc sa inlocuiesc. Inlocuiesc si cand optez pentru obtiunea de a verifica "Check Code Generation Readiness" se opreste la pasul 4 dupa cum se vede in cel de-al doilea print. La acelasi pas 4 si cu aceeasi mentiune se opreste si daca incerc "Check Code Generation Readiness" pentru primul program unde nici macar nu am functie, e script. Link spre comentariu
Vizitator sorinietc Postat Martie 12, 2014 Partajează Postat Martie 12, 2014 aici sunt pozele ce si cum imi spune Adresa mea de email este [email protected] Daca este cu putinta un raspuns pe mail caci intru mai des pe mail, dar si aici, doar sa mearga. Multumesc ! Link spre comentariu
cirip Postat Martie 14, 2014 Partajează Postat Martie 14, 2014 Salut, Intai si intai, uite ce am gasit in situl matlab: http://www.mathworks.com/help/simulink/ ... eener.html Desi nu am facut niciodata conversie din Matlab in Verilog, am oarece cunostinte despre ambele si nu cred ca orice functie matlab se poate transpune in cod verilog. Cred ca asta e problema. In situl de mai sus arata cum se depaneaza, dar daca functia nu poate fi convertita, asta e. Pe de alta parte, functia sinus este extrem de costisitoare ptr a fi implementata in hardware. Cel mai simplu in cazul tau este sa folosesti o ecuatie recursiva de gradul 2 ptr oscilator. Nu ai nevoie decat de 2 inmultiri si o adunare. Pot sa iti dau ecuatia exacta, daca esti interesat. Inca ceva. Scopul forumului este ca informatia sa fie publica. De aceea discutiia "la umbra" pe e-mail este nepotrivita. Aboneaza-te la subiect si vei primi un mail cand se mai posteaza ceva. Link spre comentariu
Ionut Pavel Postat Martie 14, 2014 Partajează Postat Martie 14, 2014 Trebuie sa fie neaparat matlab->verilog?Tie de fapt iti trebuie un modul DDS (google verilog DDS, gasesti ceva pe fpga4fun).Daca folosesti ceva de pe la xilinx vezi ca iti genereaza ISE un DDS de toata frumuseatea, pe ce rezolutie si frecevente vrei tu. Eu l-am folosit la sinteza RF si functioneaza de minune.apropo, asta nu prea e functie e mai mult programul principalFunction [y,Fs]=MI(T,f,a) %[parametrii de iesire : y,Fs] = numele functiei (Parametrii de intrare :T,f,a) asa imi arata modelul functieiFs = 8000;T =2; //vine din afarat = 0:(1/Fs):T; f = 329.6; //vine din afaraa = 0.5; //vine din afaray = a*sin(2*pi*f*t);sound(y, Fs);end Variabilele vin din parametri de intrare, degeaba ai parametri de intrare daca ii schimbi in functie.Deci daca vrei sa modularizezi programul folosesti functii. Programul ar trebui sa arate cam asa:function y = MI(Fs,T,f,a) %functiile sunt module cu intrari si iesirit = 0:(1/Fs):T;y = a*sin(2*pi*f*t);end%mainFs = 8000;T =2; f = 329.6; a = 0.5;sound(MI(Fs,T,f,a), Fs);Oricum slabe sanse ca functia sa fie implementabila in verilog prin transformare directa (valori in floating point, variabile de tip vector, fpga-ul nu stie ce e aia sound(y,Fs)) Link spre comentariu
Vizitator sorinietc Postat Martie 19, 2014 Partajează Postat Martie 19, 2014 Multumesc pentru sfaturi si pareri.Imi cer scuze pentru intentia de discutie la "umbra", nu a fost cu intentie. Cu matlabul am lasat-o moarta pana la urma..mi-am intrebat si o serie de profi si majoritatea mi-au spus ca nu stiu, ca nu au facut niciodata si alte lucruri de genul.Mi-am bagat un pic urechile in limbajul verilog si teoretic am facut cam tot ce trebuie. Am facut cu divizori de frecvente pana la o frecventa apropiata.Am facut si legaturile, mai trebuie sa implementez pe placuta, dar saptamana viitoare de acum cand o sa ajung la laborator. Stima! Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum