Diseño de circuito de reloj digital multifuncional.
1. Tareas y requisitos de diseño:
Tarea de diseño: diseñar un reloj digital que pueda mostrar horas, minutos y segundos.
Los requisitos específicos son los siguientes:
El segundo pulso se genera mediante la división de frecuencia de la señal del reloj en la caja experimental;
El circuito de temporización de 24 dígitos del contador de temporización;
La hora se puede corregir manualmente, la hora y los minutos se pueden corregir por separado;
Informes de hora;
2 códigos de programa y forma de onda correspondiente
Segundo 1 (en hexadecimal y 10 segundos representados)
Biblioteca ieee
Usa IEEE.STD_logic_1164.all;
Usa IEEE.STD_logic_unsigned.all ;
Los segundos de entidad 1 son
Puerto(clks, clr:in STD_logic;
Secs,Secg:out STD_logic_vector(3 hasta 0);
cout 1:out STD _ logic);
final del segundo 1;
La arquitectura a del segundo1 es
Iniciar
Proceso (reloj, reloj)
Variable ss, SG:STD_logic_vector(3 hasta 0);
Variable co:STD_ logic;
Inicio
Si clr='1' entonces ss:= "0000"; SG:= "0000";
Elsif clks event y clks ='1 'Entonces
Si ss ="0101 ", sg="1001 ", luego ss:= " 0000 "; SG:= " 0000 "; co:= ' 1 ';
elsif sg & lt "1001" luego SG: = SG+1; co:= ' 0 ';
elsif sg="1001 "entonces SG:= " 0000 "; ss:= ss+1; >
Finalizar si;
Finalizar si
cout 1 & lt; = co
Segs & lt= ss
Secg & lt= sg
Finalizar el proceso;
Finalizar a;
Min1(dieciséis Un subcontador en decimal y ALM 10 en decimal pueden indicar la hora)
Biblioteca ieee
Usa IEEE.STD_Logic_1164.all;
Usa IEEE.STD_logic_unsigned.all;
La entidad min1 es
Puerto(clkm, clr:in STD_logic;
mins, Ming:buffer STD_logic_vector(3 hasta 0);
enmin, alarma:out STD_logic); p>
Fin;
La arquitectura a de min1 es
Inicio
Proceso (clkm, clr)
Variable ms , mg: STD _ logic _ vector (3 hasta 0);
Variable entonces, ALM:STD_logic;
Iniciar
Si clr='1' , entonces ms:= "0000"; mg:= "0000";
p>Elsif clkm 'evento y clkm='1' entonces
Si ms="0101" y mg="1001" entonces ms:=" 0000 "; mg:=" 0000 "; entonces:= ' 1 '; ALM:= ' 1 ';
elsif mg & lt "1001" entonces mg
:= mg+1; entonces:= ' 0 '; ALM:= ' 0 ';
elsif mg="1001 "Entonces mg:= " 0000 "; = ' 0 '; ALM:= ' 0 ';
Finalizar si
Finalizar si
Alerta & lt= alm
enmin & lt=so;
minutos& lt= ms
ming& lt= mg
Finalizar proceso;
Finalizar a ;
Hora1 (contador de horas cuaternario y binario)
Biblioteca ieee
Usa IEEE .STD_logic_1164.all;
Usa IEEE .STD_logic_unsigned .all ;
La hora de la entidad 1 es
Puerto(clkh, clr:in STD_logic;
horas, hourg:out std_logic_vector(3 hasta 0));
Fin;
La arquitectura a de la hora1 es
Inicio
Proceso(clkh, clr)
Variable hs, hg: STD_logic_vector(3 hasta 0);
Inicio
Si clr= '1 ', entonces hs:= " 0000 "; /p>
elsif clkh ' event y clkh = ' 1 ' entonces
Si hs="0010 " , hg="0011", entonces hs:= " 0000 "; ";
elsif hg & lt "1001" luego Hg:= Hg+1;
elsif hg="1001 "Entonces Hg:= " 0000 "; hs:= hs+ 1; finalizar si;
finalizar si
hora& lt= hs
hora & lt= hg
Finalizar proceso; p>
Fin;
Revisión
Biblioteca ieee
Usando IEEE.STD_logic_1164.all;
Usando IEEE.STD_logic_unsigned. all;
La entidad madapt es
Puerto (en, clk, secin, m 1: in STD _ logic;
minset:out STD _ logic) ;
Fin;
La arquitectura de Madap es
Inicio
Proceso (es, m1)
Inicio
Si en='1 ', entonces
Si m1='1 ', entonces minset & lt= clk
de lo contrario minset & lt= secin termina si ;
else minset & lt= secin
Finalizar si;
Finalizar proceso;
Fin;
Horario escolar
Biblioteca ieee
Usando IEEE.STD_logic_1164.all;
Usando IEEE.STD_logic_unsigned.all;
La entidad hadapt es
Puerto(en, clk, minin, h 1:in STD_logic;
hourset:out STD_logic);
Fin;
El Edificio A de Hardap es
Iniciar
Proceso (es, h1)
Iniciar
Si en='1 ', entonces
Si h1='1 ', entonces horario & lt= clk
si no horario & lt= min end if;
else hourset & lt= minin
Finalizar si
Finalizar proceso
Fin
Topclock (archivo de nivel superior de creación de instancias de componentes)
Biblioteca ieee
Usando IEEE.STD_logic_1164.all;
Usando IEEE.STD_logic_arith.all;
p>Usando IEEE.STD_logic_unsigned .all;
La entidad topclock es
Port(clk, clr, en, m1, h 1: in STD_logic ;
alarm:out STD_logic;
segundos, segundos, minutos, ming, horas, horas:buffer STD_logic_vector(3 hasta 0));
p>
Fin;
Uno de las arquitecturas de topclock es
Componente segundos 1
Puerto(clks, clr:in STD_logic;
p>
secs, secg:buffer STD_logic_vector (3 hasta 0);
cout 1:out STD_logic);
Componente final;
p>
Componente min1
Puerto(clkm, clr:in STD_logic;
mins, Ming:buffer STD_logic_vector(3 hasta 0);
enmin, alarma:out STD_logic);
Fin del componente;
Componente hora 1
Puerto(clkh, clr:in STD_logic;
horas, hourg:buffer std_logic_vector(3 hasta 0 ));
Componente final;
Componente madapt
Puerto(en, m1, clk, secin:in STD_logic;
minset :out STD_logic);
Fin del componente;
Componente hadapt
Puerto(en, h1, clk, Minin:in STD_logic;
hourset:out STD_logic);
Fin del componente;
Señales a, b, c, d: STD_logic;
Inicio
u1:asignación de puerto segundo1 (clr = & gtclr,
secs = & gtsecs, secg = & gtsecg, clks = & gtclk, cout1 = >a
u2:puerto min1); mapeo (clr = & gtclr, alarm = & gt alarm,
minutos=>mins, ming=>ming, clkm=>b, enmin=>c);
u3:mapeo de puerto hora1 ( clr=>clr,
horas =& gtú
rs, hourg = & gthourg, clkh = & gtd);
u4: mapeo de puertos madapt (en = & gten, m1 = & gtb, clk = & gtclk, secin = & gta, minset = & gtb);
u5:mapeo de puertos hadapt (en = & gten, h1 = >h1, clk = & gtclk, minin = & gtc, hourset = & gtd);
3 Diagrama de circuito
4 Experiencia experimental
Todos los programas están escritos para usted. Solo necesita simularlo usted mismo, descargarlo en el cuadro de experimentos y estará bien.