Cómo hacer un reproductor de música programático
Usa IEEE. STD_LOGIC_1164. Todos;
La entidad de Songer es
Puerto (clk12mhz: en STD_LOGIC;
clk8hz, hecho, COUT: en STD_LOGIC;
código 1:OUT STD _ LOGIC _ VECTOR(3 hasta 0);
alto 1:OUT STD _ LOGIC;
sp kout:OUT STD _ LOGIC
);END songer
Uno de los edificios de Shoji es
Etiqueta de comentario del componente
PORT(clk:IN STD _ LOGIC;
índice de tono:OUT STD _ LOGIC _ VECTOR(3 hasta 0));
Fin del componente;
Componente tonetaba
PUERTO (hecho, COUT:in STD _ LOGIC;
índice:IN STD _ LOGIC _ VECTOR(3 hasta 0);
código:OUT STD _ LOGIC _ VECTOR(3 hasta 0);
p>
Alto:out STD _ LOGIC
tono:OUT STD _ LOGIC _ VECTOR(10 hasta 0);
Componente final;
Altavoz componente
PORT(clk:IN STD_LOGIC;
hecho, COUT: en STD_LOGIC;
Tono: en STD _ LOGIC _ VECTOR(10 hasta 0 );
SPKS:out STD _ LOGIC);
Fin del componente;
Tono de señal: STD _ LOGIC _ VECTOR(10 hasta 0);
Índice de tono de señal:STD _ LOGIC _ VECTOR(3 hasta 0);
Inicio
U1: mapeo de puertos de notetabs (clk = & gtclk8hz, toneindex = & gttone index);
u2: mapeo de puertos tonetaba (index = & gttoneindex, tone = & gttone, code = & gtcode1, high = >high1, DONE = & gtDONE, cout = & gtcout <); /p>
u3:mapeo de puerto de altavoz (clk = & gtclk12mhz, done = & gtdone, COUT = & gtCOUT, tone = & gttone, spks = & gtspkout
End;
Biblioteca IEEE
Usar IEEE. STD_LOGIC_1164. Todos;
Utiliza IEEE.
STD_LOGIC_UNSIGNED todos;
Las pestañas de notas de la entidad son
PORT(clk:IN STD _ LOGIC;
índice de tono:OUT STD _ LOGIC _ VECTOR(3 hasta 0 ; 0) en);
Reloj: en STD_LOGIC;
q:OUT STD _ LOGIC _ VECTOR(3 hasta 0));
Fin del componente ;
Contador de señal: STD_LOGIC_VECTOR (7 abajo a 0)
Inicio
CNT8: proceso (reloj, contador)
Inicio
Si contador=138, entonces contador & lt="00000000";
ELSIF(clk'EVENT AND clk='1 ') y luego
Contador<=Contador+1;
Finalizar IF;
Finalizar proceso;
Fin;
Biblioteca IEEE
Utilice IEEE. STD_LOGIC_1164.
Todos;
La entidad tonetaba es
PORT(hecho, COUT:en STD_LOGIC;
index:IN STD_LOGIC_VECTOR(3 hasta 0 );
código:OUT STD _ LOGIC _ VECTOR(3 hasta 0);
Alto:OUT STD _ LOGIC
tono:OUT STD _ LOGIC _ VECTOR(10 hasta 0);
Fin de tonetaba
Uno de los edificios en tonetaba es
Inicio
Buscar : Proceso (Índice)
Inicio
Si done='1' o COUT='1', entonces
El índice del caso es
cuando " 0000 " = >; tono & lt=" 11111111111 "; código & lt = "0000"; alto & lt = '0';
cuando " 0001 " = >; ="01100000101";code<="0001";high<='0';
Cuando "0010"=>tono<="01110010000";code<="0010 ";high& lt='0';
Cuando " 0011" = >; tono & lt="10000001100";código& lt="0011";alto& lt='0';
Cuando" 0101"= >tono & lt="10010101101";code& lt="0101";high& lt='0';
Cuando" 0110"= >tono & lt="10100001010";code& lt="0110";high& lt ='0';
Cuando " 0111" = >tono & lt="10101011100";código& lt= "0111";高& lt='0';
Cuando" 1000"= >tono & lt="10110000010";código& lt="0001";高& lt='1';
Cuándo" 1001"= >tono & lt="10111001000";código& lt ="0010";alto& lt='1';
Cuando" 1010"= >tono <="11000000110";código<="0011";alto<='1';
cuando" 1100"= >tono <="11001010110";código<="0101 ";alto& lt='1';
Cuando " 1101" = >; código& lt="0110";high& lt='1';
Cuando " 1111" = >tono & lt="11011000000" código & lt="0001";
Cuando otros = & gtNULL p>
Fin de caso;
Fin de IF;
Fin de proceso;
Fin uno;
-Inversor CNC
Biblioteca IEEE
Usa IEEE. STD_LOGIC_1164. Todos;
Utiliza IEEE.
STD_LOGIC_UNSIGNED ALL;
El altavoz de la entidad es
PORT(clk:IN STD_LOGIC;
hecho, COUT: IN STD_LOGIC;
Tono : IN STD_LOGIC_VECTOR(10 hasta 0);
SPKS:OUT STD_LOGIC);
END altavoz
Arquitectura de Speaker Uno es
Preclk de señal, paquetes completos:STD_LOGIC;
Inicio
divideclk: proceso (clk)
Recuento de variables 4:STD _ LOGIC _ VECTOR(3 hasta 0 );
Iniciar
IF count4 & gt11 y luego
preclk & lt='1';
count 4:= " 0000 ";
ELSIF clk ' evento AND clk = ' 1 ' ENTONCES
cuenta 4:= cuenta 4+1; preclk & lt='0';
Finalizar IF;
Finalizar proceso;
genspks: proceso (preclock, tono)
Cuenta de variables 11:STD _ LOGIC _ VECTOR(10 hasta 0 );
Iniciar
Si done='1' o COUT='1', entonces
Si preclk'EVENT y preclk='1', entonces
Si cuenta 11 = 16 # 7FF #entonces cuenta 11:= tono;
fullspks & lt='1';
Otros
cuenta 11:= cuenta 11+1;
fullspks & lt='0';
Finalizar SI;
Finalizar SI;
Finalizar IF;
Finalizar proceso;
Retrasar paquetes: proceso (fullspks)
Recuento de variables 2: STD _ LOGIC;
Inicio
Si evento fullspks y fullspks='1' entonces
cuenta 2:=no cuenta 2;
p>
Si cuenta2= '1', luego spks & lt='1';
Otros
spks & lt='0';
Fin IF;
Finalizar IF;
Finalizar proceso;
Finalizar uno
Luego personaliza una RAM tú mismo.