Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo hacer un reproductor de música programático

Cómo hacer un reproductor de música programático

Biblioteca IEEE

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

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.