Johnson Counter VHDL

3

Se me ha dado un problema que dice:

  

Diseñe un contador y decodificación Johnson de 4 bits para los ocho estados usando   Solo cuatro chanclas y ocho puertas. Tu contador no necesita ser   autocorrección.

Escribí mi código VHDL para el contador Johnson de 4 bits, pero estoy confundido en cuanto a qué significa descodificar para los ocho estados, ¿usando ocho puertas? ¿Necesito tener lógica combinacional para implementar esto? Si es así, ¿cómo implementaría eso en vhdl?

Aquí está mi código:

library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;
use IEEE.std_logic_unsigned.all;

entity eightRC is 

 port(
        CLK : in    std_logic;
        EN: in  std_logic;
        RST : in    std_logic;
        Q: out  std_logic_vector(7 downto 0)
    );

end eightRC;

architecture behavior of eightRC is
signal qs: std_logic_vector(7 downto 0);
begin
    process(CLK, RST, EN)
    begin 
        if(RST = '1') then
            QS <= "11111110";       --initial state for QS
      elsif (CLK'EVENT AND CLK = '1' and EN = '1') then     --enable starts the shifting
         QS(0) <= QS(7);            --shift '0' to the left each clock edge, Q(0) gets Q(0) bit value
         QS(7 downto 1) <= QS(6 downto 0);
      end if;                      
    Q <= QS;
    end process;
end behavior;
    
pregunta AOE

2 respuestas

3

No has escrito el código para un contador de 4 bits johnson. Ha escrito código para un contador de 8 bits de johnson.

Se le pide que cree un contador johnson de 8 estados con 4 flip-flips, así que claramente no puede usar una variable de 8 bits en su código VHDL y hacer un bucle como lo ha hecho, ya que está usando 8- chancletas.

Parece que estás familiarizado con el tipo básico de contador johnson que se ve así:

Comoprobablementepuedadeducir,laentradaobtienelasalidainvertidadelúltimoflip-flop.Debidoaeso,apartirdeunacondicióndeRESTABLECIMIENTOdetodoslos0,untrendepulsosde40o41pasaatravésdelcontadorjohnson,ylasalidaseveasí:

Ahora considere que puede querer 8 bits de salida y 8 estados donde en cada caso solo 1 bit es alto, como produciría un contador típico, mientras usa solo estos 4 flip-flops. Para crear esa salida, necesita agregar algunas puertas lógicas. Dado que debe crear esos bits de salida a partir de la salida del contador johnson básico, puede ver que necesita algo de lógica que combine algunos de los estados de salida para crear los nuevos.

Ahora considera esta imagen. Para crear los estados requeridos, sus puertas deben estar conectadas a combinaciones de salida que sean únicas

Donde está la línea roja, existe un estado único con ~ Qa * ~ Qd, como puede ver el ciclo antes de que Qd fuera alto, y en el próximo ciclo Qa se volverá alto, por lo tanto, este estado solo existe una vez.

Para la línea verde, existe un estado único con Qa * ~ Qb, como en el ciclo antes de que Qa fuera bajo, y en el siguiente ciclo Qb será alto, por lo tanto, el estado es único.

Continuando,puedescrear8estadosúnicosusandocombinacioneslógicassimplesde2entradas.

Ahoraquehaindicadoqueesteesunproblemaconlatarea,probablementenodeberíadarlelarespuesta,sinembargo,sileeestodetenidamenteylapáginadeorigen,creoqueloentenderáconsuficientefacilidad.

Finalmente,sucontadorjohnsoncondecodificacióndesalidaseveríaasí:

Y ahora lo has decodificado en 8 estados con codificación de un solo uso.

Todaslasimágenesyelconocimientoprovienendeesterecursofantásticoybienexplicado,en Allaboutcircuits

Esto debería proporcionarle todo lo que necesita saber, sin embargo, si todavía tiene problemas con la implementación exacta de esto en VHDL, solo pregunte.

    
respondido por el krb686
0

4 flip flop puede tener 2 ^ 4 = 16 estados diferentes. En tu problema solo necesitas 8 estados. Así que 8 estados no requieren 8 puertas.

simplemente conecta el flip flop como se muestra en el diagrama.

está trabajando con vhdl, así que vea este johnson counter utilizando modelos estructurales tutorial

    
respondido por el vhdluser

Lea otras preguntas en las etiquetas

Comentarios Recientes

coma flotante R2 DType = VBFD Por ejemplo, un firmware de canal N384 permite a RADEON realizar eficazmente la manipulación de bits en un nodo de proceso, a diferencia de muchos nodos de CPU donde no sería posible utilizar la salida de coma flotante con istan Con SS9, cualquier instrucción Uint8 se puede usar sin duplicar, aunque muchos usos posibles (muchos disponibles) de enmascaramiento pueden ser abusados dependiendo del hardware, aunque las operaciones binarias deben ser completamente decodificadas para compensar... Lees verder