Practica 5

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 11

INSTITUTO POLITÉCNICO NACIONAL

ESCUELA SUPERIOR DE CÓMPUTO

DISEÑO DE SISTEMAS DIGITALES

PRACTICA 5

Contador de Johnson

PRESENTA:

Arellano Juarez Jose Juan


Flores Espinosa Edgar Jair
Jorge Vazquez Diego Baruch

NOVIEMBRE 2024
Desarrollo Experimental
Se creó un contador Johnson en una tarjeta de desarrollo Xilinx. Se estableció un
valor inicial para las entradas (0000), y los cambios se generaron en cada flanco
de subida, siempre que la entrada de habilitación (enable) estuviera en 1. Cada
salida estaba controlada mediante flip-flops de tipos SR, D y JK, con el último
estado alcanzado siendo 0001. En este punto, el contador se reinicia
automáticamente para comenzar de nuevo desde el valor inicial.

Estado Q3 Q2 Q1 Q0

0 0 0 0 0
1 1 0 0 0

2 1 1 0 0

3 1 1 1 0

4 1 1 1 1

5 0 1 1 1

6 0 0 1 1

7 0 0 0 1
Tabla 1: Tabla de funcionamiento

Con lo anterior, se realizó un análisis detallado, donde se obtuvo las


salidas esperadas, cuando nuestra entra de habilitación estaba en
funcionamiento, obteniendo las ecuaciones a usar para el
funcionamiento de nuestros flip-flops y así obtener los estados de salida.
Conclusiones
Flores Espinosa Edgar Jair
Fue una práctica sencilla al momento de codificar, pues sus salidas estaban
definidas, lo más complicado si así lo puedo decir, era obtener las ecuaciones que
se necesitarían para cada salida, pues cada bit está relacionado con un flip-flop
diferente, por ende, fue muy tardado el realizar eso, sin embargo, la práctica fue
sencilla en la mayoría de los aspectos.
Arellano Juárez José Juan
En esta práctica se puso en práctica toda la teoría aprendida acerca de
conadores, en especifico para el johnson.
Hubo un trabajo de punto extra muy parecido a esta práctica, por lo cuál no se me
dificultó su entendimiento, pues solamente era saber trabajar con los diferentes
FF, en el orden que se nos asignó, y realizar el contador de 4 bits.
Para el apartado del código, no hubo tanta complicación, pues con todas las
prácticas pasadas se complementa. En cuanto al programa de Xilinx, solamente
era conocer qué salidas dentro de la FPGA se iban a necesitar para la
programación, pero mirando fisicamente la FPGA se pudieron definir, y así
completar la práctica.
Jorge Vázquez Diego Baruch
En esta práctica, la parte más tediosa fue encontrar las ecuaciones de cada uno
de los flip-flops mediante el uso de mapas de Karnaugh, ya que es un proceso
extenso que requiere tener a mano la tabla de excitación de cada tipo de flip-flop
para poder determinar el estado siguiente. La implementación del código resultó
ser la parte más sencilla, ya que consistió principalmente en declarar cada una de
las entradas y salidas de los flip-flops. Esta práctica fue entregada con mayor
rapidez en comparación con las anteriores, en gran medida gracias al uso de
FPGA's, dado que, al programar con GALS, solíamos enfrentarnos a dificultades,
incluso cuando el código estaba bien implementado. A futuro, debemos fortalecer
nuestros conocimientos sobre cómo conectar un circuito externo a la FPGA en
caso de que esta no funcione en su totalidad.
Anexos y Bibliografías
library IEEE;
use IEEE.std_logic_1164.all;
entity johnson is
port(
clk: in std_logic;
en: in std_logic;
reset: in std_logic;
salida: out std_logic;
q: out std_logic_vector(3 downto 0)
);
end johnson;
architecture behavioral of johnson is
signal q3F, q2F, q1F, q0F: std_logic := '0';
signal S3, R3, D2, J1, K1, J0, K0: std_logic;
signal clk_aux: std_logic;
signal contador:integer range 0 to 50000000:= 0;
begin
S3<= not q2F and not q1F and not q0F and en;
R3<= q2F and q1F and q0F and en;
D2<= (q3F and q2F and not q0F) or (q3F and not q1F and not q0F and en)
or (q3F and q2F and q1F and q0F) or (q2f and q1f and q0f and not en);
J1<=q3f and q2f and not q0f and en;
K1<= not q3f and not q2f and q0f and en;
j0<= q3f and q2f and q1f and en;
k0<= not q3f and not q2f and not q1f and en;

divisor_frecuencia : process(reset, clk) begin


if(reset='1') then
clk_aux<='0';
contador<=0;
elsif rising_edge(clk) then
if(contador=50000000 ) then
clk_aux<=not(clk_aux);
contador<=0;
else
contador<=contador+1;
end if;
end if;
end process;
salida<=clk_aux;
process(clk_aux, reset)
begin
if reset='1' then
q3f<='0';
q2f<='0';
q1f<='0';
q0f<='0';
elsif rising_edge(clk_aux) then
if S3='1' and r3='0' then
q3f<='1';
elsif r3='1' and s3='0' then
q3f<='0';
elsif s3='0' or r3='0' then
q3f<=q3f;
end if;

if d2='0' then
q2f <= '0';
elsif d2='1' then
q2f <= '1';
end if;

if j1='1' then
q1f<='1';

elsif k1='1' then


q1f<='0';
end if;
if j0='1' then
q0f<='1';
elsif k0='1' then
q0f<='0';
end if;
end if;
end process;
q<=q3f & q2f & q1f & q0f;
end behavioral;
Formato que comprueba la práctica revisada en laboratorio
Bibliografía
River Glennapts. (2021). Contador Johnson. Recopilado de
https://riverglennapts.com/es/digital-counters/283-johnson-counter.html

Electrónica, F. (2020). Contador Johnson. Electrónica Fácil Top. Recopilado de


https://www.electronicafacil.top/contadores-digitales/contador-de-johnson/

R. J. Tocci, N. S. Widmer, y G. L. Moss, Digital Systems: Principles and Applications,


Prentice Hall, 10th ed., 2006.

M. M. Mano y M. D. Ciletti, Digital Design, Prentice Hall, 5th ed., 2013.

S. Rao, Digital Circuit Design for Beginners: Sequential Circuits, CreateSpace


Independent Publishing, 2016.

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy