¡Urgente! ¿Qué experto tiene el código multiplicador en VHDL? ¡Es un multiplicador de frecuencia! ¡Sea más detallado!
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
- --- Si crea una instancia
---- cualquier primitiva Xilinx en este código, descomente la siguiente declaración de biblioteca.
--biblioteca UNISIM;
- use UNISIM.VComponents.all;
los minutos de entidad son
Puerto (rst3,selector2, ky_2j: en STD_LOGIC;
B10: en std_logic;
C: fuera std_logic;
dat30: C: fuera std_logic
dat30: out std_logic_vector(7 downto 0));
final de los minutos;
arquitectura El comportamiento de los minutos es
señal dat31, dat32: std_logic_vector(7 downto 0)); ):=(otros =>'0');
comenzar
proceso(rst3,B10,ky_2j)
comenzar
case selector2 es
cuando '1' =>dat32<=dat31; si ky_2j'event y ky_2j='1' entonces
if dat31(7 downto 4)="0101" y dat31(3 hasta 0)="1001"
entonces dat31(7 hasta 0)<="00000000";
elsif dat31(3 hasta 0)<"1001" Entonces dat31(3 abajo a 0)<=dat31(3 abajo a 0)+1;
else dat31(3 abajo a 0)<="0000";
si dat31(7 abajo a 4)< "0101" luego dat31(7 hasta 4)<=dat31(7 hasta 4)+1;
si no dat31(7 hasta 4)<=" 0000";
finalizar si;
finalizar si;
finalizar si;
dat30<=dat31;
cuando '0' => dat31<=dat32; if(rst3 = '0') entonces dat32<=( otros =>'0');
elsif B10'event y B10='1' entonces
si dat32(7 hasta 4)="0101" y dat32(3 hasta 0)="1001"
entonces C<='1'; dat32(7 hasta 0)<="00000000";
else C<='0';
si dat32(3 hasta 0)< "1001" entonces dat32(3 hasta 0)<=dat32(3 hasta 0)+1 ;
else dat32(3 hasta 0)<="0000";
si dat32(7 hasta 4)< "0101" entonces dat32(7 hasta 4)<=dat32( 7 hasta 4)+1;
else dat32(7 hasta 4)
<="0000";
finalizar si;
finalizar si;
finalizar si;
finalizar si;
dat30<=dat32;
cuando otros =>null;
finalizar caso;
finalizar proceso
finalizar comportamiento; ;.