bpc-los_11 - Speciální čítače, KSA
Níže je uveden pouze náhled materiálu. Kliknutím na tlačítko 'Stáhnout soubor' stáhnete kompletní formátovaný materiál ve formátu PDF.
PROCESS(CLK, CLR) -- Paměťová (registrová) část
END PROCESS;
PROCESS(Q) -- Kombinační obvod č.2 (výstup)
END PROCESS;
END Behavioral;
Kombinační
obvod č. 1
Klopné
obvody
Kombinační
obvod č. 2
X
Q
Y
Moore KSA:
S1
S0
S2
S3
O0
O1
O2
O3
I1
I0+I1+I2
I0
I2
I0+I2
I1
I1
I0+I2
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
TYPE TInput IS (I0, I1, I2);
TYPE TOutput IS (O0, O1, O2, O3);
ENTITY Moore IS
PORT(X : IN TInput;
Y : OUT TOutput;
CLK, CLR : IN std_logic
);
END Moore;
ARCHITECTURE Behavioral OF Moore IS TYPE TState IS (S0, S1, S2, S3);
SIGNAL Q, next_Q: TState := S0;
BEGIN
PROCESS(Q, X) -- Kombinační obvod č.1 (vstup)
END PROCESS;
PROCESS(CLK, CLR) -- Paměťová (registrová) část
END PROCESS;
PROCESS(Q) -- Kombinační obvod č.2 (výstup)
END PROCESS;
END Behavioral;
Kombinační
obvod č. 1
Klopné
obvody
Kombinační
obvod č. 2
X
Q
Y
Moore KSA:
S1
S0
S2
S3
O0
O1
O2
O3
I1
I0+I1+I2
I0
I2
I0+I2
I1
I1
I0+I2
Moore KSA:
S1
S0
S2
S3
O0
O1
O2
O3
I1
I0+I1+I2
I0
I2
I0+I2
I1
I1
I0+I2
Tabulka přechodů KSA:
I0
I1
I2
S0 S1 S0 S1
S1 S2 S0 S3
S2 S2 S0 S2
S3 S3 S3 S3
Moore KSA:
S1
S0
S2
S3
O0
O1
O2
O3
I1
I0+I1+I2
I0
I2
I0+I2
I1
I1
I0+I2
PROCESS(Q, X) --Komb.obvod č.1 (vstup)
BEGIN next_Q <= Q;
CASE Q IS WHEN S0 =>
IF(X = I0 OR X = I2) THEN next_Q <= S1;
END IF;
WHEN S1 =>
IF(X = I0) THEN
next_Q <= S2;
ELSIF(X = I1) THEN next_Q <= S0;
ELSIF(X = I2) THEN next_Q <= S3;
END IF;
WHEN S2 =>
IF(X = I1) THEN next_Q <= S0;
END IF;
WHEN S3 =>
next_Q <= S3;
WHEN OTHERS =>
next_Q <= Q;
END CASE;
END PROCESS;
Tabulka přechodů KSA:
I0
I1
I2
S0 S1 S0 S1
S1 S2 S0 S3
S2 S2 S0 S2
S3 S3 S3 S3
Moore KSA:
S1
S0
S2
S3
O0
O1
O2
O3
I1
I0+I1+I2
I0
I2
I0+I2
I1
I1
I0+I2
Moore KSA:
S1
S0
S2
S3
O0
O1
O2
O3
I1
I0+I1+I2
I0
I2
I0+I2
I1
I1
I0+I2
Moore KSA:
S1
S0
S2
S3
O0
O1
O2
O3
I1
I0+I1+I2
I0
I2
I0+I2
I1
I1
I0+I2
PROCESS(CLK, CLR) --Paměťová(reg.) část
BEGIN IF(CLR = '1')
Q <= S0;
ELSIF(CLK'event AND CLK = '1') THEN Q <= next_Q;
END IF;
END PROCESS;
PROCESS(Q) --Komb.obvod č.2 (výstup)
BEGIN CASE Q IS WHEN S0 =>
Y <= O0;
WHEN S1 =>
Y <= O1;
WHEN S2 =>
Y <= O2;
WHEN S3 =>
Y <= O3;
WHEN OTHERS =>
NULL;
END CASE;
END PROCESS;
Moore KSA:
S1
S0
S2
S3
O0
O1
O2
O3
I1
I0+I1+I2
I0
I2
I0+I2
I1
I1
I0+I2
S0 O0
S1 O1
S2 O2
S3 O3
Tabulka výstupů KSA:
PROCESS(CLK, CLR) --Paměťová(reg.) část
BEGIN IF(CLR = '1')
Q <= S0;
ELSIF(CLK'event AND CLK = '1') THEN Q <= next_Q;
END IF;
END PROCESS;