Circuitos Lógicos e Organização de Computadores Capítulo 8 –Circuitos Seqüenciais Síncronos Ricardo Pannain pannain@puc-campinas.edu.br http://docentes.puc-campinas.edu.br/ceatec/pannain/

Slides:



Advertisements
Apresentações semelhantes
Contadores e Registradores
Advertisements

Máquinas de Estado Sistemas Digitais.
Sistemas Digitais Projeto RTL – Unidade de Controle
Circuitos Lógicos e Organização de Computadores Capítulo 3 – Tecnologia de Implementação Ricardo Pannain
Circuitos Lógicos e Organização de Computadores Capítulo 4 – Implementações Otimizadas de Funções Lógicas Ricardo Pannain
Circuitos Lógicos e Organização de Computadores Capítulo 6 – Blocos com Circuitos Combinacionais Ricardo Pannain
15/1/2014 Professor Leomir J. Borba- – 1 Tec. Em Analise e desenvolv. De Sistemas analise.
Dispositivos lógicos programáveis (DLP)
Modelos de Troca de Dados em Nível Elétrico
Máquinas de Estado Eletrônica Digital.
Unidades de Execução e de Controle Sistemas Digitais.
Modelos no Domínio do Tempo de Sistemas LTI Contínuos
Circuitos Lógicos Sequenciais
Finite State Machines.
MC542 Organização de Computadores Teoria e Prática
Introdução a circuitos lógicos
Dicas de Circuitos MO801/MC912.
MC542 Organização de Computadores Teoria e Prática
MC542 Organização de Computadores Teoria e Prática
MC542 Organização de Computadores Teoria e Prática
MO Prof. Paulo Cesar Centoducatte MC542 Organização de Computadores Teoria e Prática.
MC542 Organização de Computadores Teoria e Prática
Instituto de Computação - UFF Detecção de Terminação Algoritmos Distribuídos Professora: Lúcia Drummond.
DIAGRAMA DE ATIVIDADES
Rganização de Computadores Melhorias de Desempenho com Pipelines Capítulo 6 – Patterson & Hennessy Organização de Computadores Melhorias de Desempenho.
Revisão de Circuitos Lógicos MO801/MC912. Conteúdo Níveis lógicos Portas lógicas Formas de onda Sinais básicos Elementos de armazenamento Registradores.
Análise de Circuitos Sequenciais Síncronos
Circuitos Sequenciais
Máquina de Estados Uma máquina de estados finitos ou autômato finito é uma modelagem de um comportamento composto por estados, transições e ações Um estado.
Máquina de Estados Uma máquina de estados finitos ou autômato finito é uma modelagem de um comportamento composto por estados, transições e ações Um estado.
Auditoria de Segurança da Informação
Aula 6 Subprogramas Universidade do Vale do Rio dos Sinos
1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos
Programação Baseada em Objectos Desenho de TAD
Estrutura de decisão e repetição em JAVA
© GfK 2012 | Title of presentation | DD. Month
Máquina de Estados Finito
Como aplicar leis da lógica
Introdução à Programação
Exercícios Referentes à Prova P2
Semana 03: Comandos de desvio de fluxo. Expressões lógicas.
Circuitos Seqüenciais Descrição VHDL
Prof.Corradi Finite State Machines.
Índice SUMÁRIO Introdução ao projeto de lógica seqüencial.
Engenharia de Software para Computação Embarcada
Fundamentos de Engenharia de SW
Latches e Flip-Flops GSI008 – Sistemas Digitais
Fundamentos de Circuitos Sequenciais Modelos de Mealy e Moore
Circuitos Seqüenciais Contadores
Salas de Matemática.
SISTEMAS DIGITAIS ALGEBRA DE BOOLE E SIMPLIFICAÇÃO DE CIRC. LÓGICOS
Semana 03 Comandos de desvio de fluxo. Expressões lógicas.
ENGA78 – Síntese de Circuitos Digitais
1 2 Observa ilustração. Cria um texto. Observa ilustração.
Grupo A – Azul Claro, Marrom, Laranja
CALENDÁRIO SEXY Ele & Ela. CALENDÁRIO SEXY Ele & Ela.
Rio Verde - Goiás - Brasil
Máquina de Turing Universal
Circuitos Combinacionais Exercícios 2 POSCOMP e ENADE
Nome alunos 1 Título UC. Título – slide 2 Conteúdo Conteúdo 2.
GINÁSTICA LABORAL UM NOVO CAMINHO.
Aplicações com flip-flops
Eletrônica Digital II ELT013
Introdução às Máquinas de Estados Finitos (Finite State Machine - FSM)
Cap. V – Análise e Síntese de Circuitos Sequenciais Síncronos
Circuitos Lógicos Sequenciais
Máquina de Estados Finitos com Dados (FSMD)
Lógica Sequencial e Máquina de Estados Finitos
Lógica Programável e VHDL
Máquina de Estados Uma máquina de estados finitos ou autômato finito é uma modelagem de um comportamento composto por estados, transições e ações Um estado.
Transcrição da apresentação:

Circuitos Lógicos e Organização de Computadores Capítulo 8 –Circuitos Seqüenciais Síncronos Ricardo Pannain pannain@puc-campinas.edu.br http://docentes.puc-campinas.edu.br/ceatec/pannain/

Forma geral de um circuito seqüêncial Combinational Circuito Flip-flops Clock Q W Z Máquina de estados finitos (FSM – Finite State Machine)  o comportamento do circuito pode ser representado usando um número finito de estados. Máquina de MOORE  saídas dependem apenas do estado do circuito. Máquina de MEALY  saídas dependem do estado do circuito e de suas entradas primárias.

Etapas Básicas de Projeto Exemplo: Supondo um circuito que tenha uma entrada w e uma saída z. Todas as mudanças ocorrerão na subida do clock. A saída z é igual a 1 se durante dois ciclos consecutivos imediatamente prescedente a entrada w for igual a 1. Caso contrário o valor é zero. A tabela abaixo ilustra o funcionamento para um padrão de w qualquer. Clockcycle: t 1 2 3 4 5 6 7 8 9 10 w : z

Etapas Básicas de Projeto PRIMEIRO PASSO  Diagrama de estados Determinar quantos estágios são necessários e quais transições são possíveis de um estado para outro. No exemplo: Supondo o estado inicial A (com saída z = 0)  enquanto w = 0 ele permanece neste estado. Se w = 1, na subida do clock ele passará para o estado B (com z = 0). Uma vez no estado B, se w = 0 , ele passará para o estado A (z = 0) na subida do clock. Se w = 1, passará para um terceiro estado C (z = 1). No estado C, se w = 0, ele passará para o estado A (z = 0) na subida do clock. Se w = 1, Continuará no estado C (z = 1)

Diagrama de estados do exemplo anterior – Máquina de MOORE C z 1 = ¤ Reset B A w

Tabela de estados w = 1 z Present Next state Output state A B C SEGUNDO PASSO  Tabela de Estados Present Next state Output state w = 1 z A B C

Circuito seqüencial geral Como temos 3 estados, precisaremos de 2 Flip-Flops e o circuito ficaria: Combinational Circuito Clock y 2 z w 1 Y

Tabela de estados assinalados Next state Present Output state w = w = 1 z y y Y Y Y Y 2 1 2 1 2 1 A 00 00 01 B 01 00 10 C 10 00 10 1 11 dd dd d

Derivando as expressões lógicas dos próximos estados e da saída Ignorando don't cares Usando don't cares Y 1 wy y 2 = + z Y 1 wy y 2 = + z w ( ) w 00 01 11 10 1 y 2 d w 00 01 11 10 1 d y 2 1 d y 2

Circuito Seqüencial do exemplo anterior

Diagrama de tempo do exemplo anterior 1 2 3 4 5 6 7 8 9 10 1 Clock 1 w 1 y 1 1 y 2 1 z

Exemplo – Troca de conteúdo entre dois registradores Trocar o conteúdo dos registradores R1 e R2, utilizando o registador R3 com auxiliar R3  R2 R2  R1 R1  R3 Sinais necessários Control circuit w Clock Done R 1 out 2 in 3

Diagrama de estados , ¤ D R 3 1 = Done w C 2 B A No transfer Reset out in Done , ¤ w C 2 B A No transfer Reset

Tabela de estados Present Next state Outputs state A B C 1 D w = 0 C 1 D w = 0 w = 1

Tabela de estados assinalados

Derivação da expressão do próximo estado

Circuito seqüencial correspondente

Problemas de assinalamento de estados Suponha que, no primeiro exemplo, ao assinalar valores para os estados presentes, tenhamos escolhido conforma a tabela abaixo: Present Next state state w = 1 Output y 2 Y z A 00 01 B 11 C 10 dd d Y1 = D1 = w Y2 = D2 = w y1 z = y2

Circuito com a melhoria no assinalamento D Q Y 2 1 w Clock z y Resetn

Tabela de estados com melhoria de assnalamento – exemplo 2

Derivação da expressão do próximo estado y y 2 1 w 00 01 11 10 1 Y = wy + y y 1 2 1 2 1 1 1 y y 2 1 w 00 01 11 10 1 1 Y = y 2 1 1 1 1

Exemplo 3 – One hot encoding Podemos também ter tantas variáveis quantos forem os estados. Supor um circuito one hot enconding, representado pela tabela abaixo: Present Nextstate state w = 1 Output y 3 2 Y z A 001 010 B 100 C

Assinalamento de estados - One-hot encoding

Máquina de Mealy Clock cycle: t w : z Nos exemplos anteriores, os circuitos seqüenciais onde cada estado tem valores dos sinais de saídas associados a eles,são chamadas Máquinas de MOORE. Os circuitos seqüenciais onde os sinais das saídas estão associados tanto aos estados como às entradas são chamadas de Máquina de MEALY Tomando o primeiro exemplo visto anteriormente, que gerava z = 1 quando a ocorrência de w = 1 era detectada em dois períodos consecutivos de clock. Supondo agora que queiramos que z seja 1 no segundo ciclo que w = 1 seja detectado, como exemplifica a tabela abaixo: Clock cycle: t 1 2 3 4 5 6 7 8 9 10 w : z

Diagrama de estado No exemplo: Supondo o estado inicial A  enquanto w = 0 ele permanece neste estado e produz a saída z = 0. Se w = 1 (z = 0 ), na subida do clock, ele passará para o estado B. Uma vez no estado B, se w = 0 (z = 0) , ele passará para o estado A na subida do clock. Se w = 1 produzirá a saída z = 1 e permanecerá neste estado.. A w = z ¤ 1 B Reset

Tabela de estados Present Next state Output z state w = 1 A B

Tabela de estados assinalados Present Next state Output state w = 1 y Y z A B

Implementação da FSM Clock Resetn D Q w z (a) Circuito y t Clock y w z 1 2 3 4 5 6 7 8 9 10 Clock y w z (b) Diagrama de tempo

Implementação da FSM incluíndo um atraso na saída OBS – Mesmo circuito do slide 19

Exemplo – troca de conteúdo de registradores 3 out 1 = in Done , w 2 ¤ A Reset B C

Código VHDL para uma FSM simples USE ieee.std_logic_1164.all ; ENTITY simple IS PORT ( Clock, Resetn, w : IN STD_LOGIC ; z : OUT STD_LOGIC ) ; END simple ; ARCHITECTURE Behavior OF simple IS TYPE State_type IS (A, B, C) ; SIGNAL y : State_type ; BEGIN PROCESS ( Resetn, Clock ) IF Resetn = '0' THEN y <= A ; ELSIF (Clock'EVENT AND Clock = '1') THEN con’t ...

Código VHDL para uma FSM simples - continuação CASE y IS WHEN A => IF w = '0' THEN y <= A ; ELSE y <= B ; END IF ; WHEN B => y <= C ; WHEN C => END CASE ; END PROCESS ; z <= '1' WHEN y = C ELSE '0' ; END Behavior ;

Alternativa de estilo para um código de uma FSM (ENTITY declaration not shown) ARCHITECTURE Behavior OF simple IS TYPE State_type IS (A, B, C) ; SIGNAL y_present, y_next : State_type ; BEGIN PROCESS ( w, y_present ) CASE y_present IS WHEN A => IF w = '0' THEN y_next <= A ; ELSE y_next <= B ; END IF ; WHEN B => y_next <= C ;

Alternativa de estilo para um código de uma FSM - continuação WHEN C => IF w = '0' THEN y_next <= A ; ELSE y_next <= C ; END IF ; END CASE ; END PROCESS ; PROCESS (Clock, Resetn) BEGIN IF Resetn = '0' THEN y_present <= A ; ELSIF (Clock'EVENT AND Clock = '1') THEN y_present <= y_next ; z <= '1' WHEN y_present = C ELSE '0' ; END Behavior ;

Uso de definição de ATTRIBUTE para assinalamento manual de estados (ENTITY declaration not shown) ARCHITECTURE Behavior OF simple IS TYPE State_TYPE IS (A, B, C) ; ATTRIBUTE ENUM_ENCODING : STRING ; ATTRIBUTE ENUM_ENCODING OF State_type : TYPE IS "00 01 11" ; SIGNAL y_present, y_next : State_type ; BEGIN con’t ...

Uso de constantes para assinalamento manual de estados LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY simple IS PORT ( Clock, Resetn, w : IN STD_LOGIC ; z : OUT STD_LOGIC ) ; END simple ; ARCHITECTURE Behavior OF simple IS SIGNAL y_present, y_next : STD_LOGIC_VECTOR(1 DOWNTO 0); CONSTANT A : STD_LOGIC_VECTOR(1 DOWNTO 0) := "00" ; CONSTANT B : STD_LOGIC_VECTOR(1 DOWNTO 0) := "01" ; CONSTANT C : STD_LOGIC_VECTOR(1 DOWNTO 0) := "11" ; BEGIN PROCESS ( w, y_present ) CASE y_present IS WHEN A => IF w = '0' THEN y_next <= A ; ELSE y_next <= B ; END IF ; … con’t

Uso de constantes para assinalamento manual de estados WHEN B => IF w = '0' THEN y_next <= A ; ELSE y_next <= C ; END IF ; WHEN C => WHEN OTHERS => y_next <= A ; END CASE ; END PROCESS ; PROCESS ( Clock, Resetn ) BEGIN IF Resetn = '0' THEN y_present <= A ; ELSIF (Clock'EVENT AND Clock = '1') THEN y_present <= y_next ; z <= '1' WHEN y_present = C ELSE '0' ; END Behavior ;

Código VHDL máquina de Mealy LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY mealy IS PORT ( Clock, Resetn, w : IN STD_LOGIC ; z : OUT STD_LOGIC ) ; END mealy ; ARCHITECTURE Behavior OF mealy IS TYPE State_type IS (A, B) ; SIGNAL y : State_type ; BEGIN PROCESS ( Resetn, Clock ) IF Resetn = '0' THEN y <= A ; ELSIF (Clock'EVENT AND Clock = '1') THEN CASE y IS WHEN A => IF w = '0' THEN y <= A ; ELSE y <= B ; END IF ; … con’t

Código VHDL máquina de Mealy - continuação WHEN B => IF w = '0' THEN y <= A ; ELSE y <= B ; END IF ; END CASE ; END PROCESS ; PROCESS ( y, w ) BEGIN CASE y IS WHEN A => z <= '0' ; z <= w ; END Behavior ;

Exemplo – somador serial Sum A B + = Shift register Adder FSM a b s Clock

Somador serial – diagrama de estados - Mealy

Somador serial – Tabela de estados - Mealy Present Next state Output s state ab =00 01 10 11 00 G H 1

Somador serial – Tabela de estados assinalados - Mealy Present Next state Output state ab =00 01 10 11 00 y Y s 1 carry out Y = a b + a y + b y s = a b y Full adder soma

Somador serial – Mealy FSM Full adder a b s D Q carry-out Clock Reset Y y

Somador serial – diagrama de estados - Moore H 1 s = ¤ Reset 01 10 11 G 00

Somador serial – tabela de estados - Moore Present Nextstate Output state ab =00 01 10 11 s G 1 H

Somador serial – tabela de estados assinalados - Moore Present Nextstate state ab =00 01 10 11 Output y 2 1 Y s 00 soma Y1 = a b y2 Y2 = a b + a y2 + b y2 s = y1 Full adder carry out

Somador serial –Moore FSM Full adder a b D Q Carry-out Clock Reset s Y 2 1 Sum bit y

Código de um shift register left-to-right com enable LIBRARY ieee ; USE ieee.std_logic_1164.all ; -- left-to-right shift register with parallel load and enable ENTITY shiftrne IS GENERIC ( N : INTEGER := 4 ) ; PORT ( R : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ; L, E, w : IN STD_LOGIC ; Clock : IN STD_LOGIC ; Q : BUFFER STD_LOGIC_VECTOR(N-1 DOWNTO 0) ) ; END shiftrne ; ARCHITECTURE Behavior OF shiftrne IS BEGIN PROCESS … con’t

Código de um shift register left-to-right com enable - continuação WAIT UNTIL Clock'EVENT AND Clock = '1' ; IF E = '1' THEN IF L = '1' THEN Q <= R ; ELSE Genbits: FOR i IN 0 TO N-2 LOOP Q(i) <= Q(i+1) ; END LOOP ; Q(N-1) <= w ; END IF ; END PROCESS ; END Behavior ;

Código VHDL – somador serial LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY serial IS GENERIC ( length : INTEGER := 8 ) ; PORT ( Clock : IN STD_LOGIC ; Reset : IN STD_LOGIC ; A, B : IN STD_LOGIC_VECTOR(length-1 DOWNTO 0) ; Sum : BUFFER STD_LOGIC_VECTOR(length-1 DOWNTO 0) ); END serial ; ARCHITECTURE Behavior OF serial IS COMPONENT shiftrne GENERIC ( N : INTEGER := 4 ) ; PORT ( R : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ; L, E, w : IN STD_LOGIC ; Clock : IN STD_LOGIC ; Q : BUFFER STD_LOGIC_VECTOR(N-1 DOWNTO 0) ) ; END COMPONENT ; SIGNAL QA, QB, Null_in : STD_LOGIC_VECTOR(length-1 DOWNTO 0) ; SIGNAL s, Low, High, Run : STD_LOGIC ; SIGNAL Count : INTEGER RANGE 0 TO length ; TYPE State_type IS (G, H) ; SIGNAL y : State_type ; … con’t

Código VHDL – somador serial - continuação BEGIN Low <= '0' ; High <= '1' ; ShiftA: shiftrne GENERIC MAP (N => length) PORT MAP ( A, Reset, High, Low, Clock, QA ) ; ShiftB: shiftrne GENERIC MAP (N => length) PORT MAP ( B, Reset, High, Low, Clock, QB ) ; AdderFSM: PROCESS ( Reset, Clock ) IF Reset = '1' THEN y <= G ; ELSIF Clock'EVENT AND Clock = '1' THEN CASE y IS WHEN G => IF QA(0) = '1' AND QB(0) = '1' THEN y <= H ; ELSE y <= G ; END IF ; WHEN H => IF QA(0) = '0' AND QB(0) = '0' THEN y <= G ; ELSE y <= H ; END CASE ; END PROCESS AdderFSM ; … con’t

Código VHDL – somador serial - continuação WITH y SELECT s <= QA(0) XOR QB(0) WHEN G, NOT ( QA(0) XOR QB(0) ) WHEN H ; Null_in <= (OTHERS => '0') ; ShiftSum: shiftrne GENERIC MAP ( N => length ) PORT MAP ( Null_in, Reset, Run, s, Clock, Sum ) ; Stop: PROCESS BEGIN WAIT UNTIL (Clock'EVENT AND Clock = '1') ; IF Reset = '1' THEN Count <= length ; ELSIF Run = '1' THEN Count <= Count -1 ; END IF ; END PROCESS ; Run <= '0' WHEN Count = 0 ELSE '1' ; -- stops counter and ShiftSum END Behavior ;

Minimização de estados Definição 1 – Sejam 2 estados Si e Sj. Eles são ditos equivalentes se somente se para todas as possíveis seqüências de entradas, a mesma seqüência de saída é produzida, independente de qual estado (Si ou Sj) seja produzido. OBS – É mais fácil mostrar os estados que não são equivalentes. Procedimento de Particionamento

Minimização de estados Tabela de Estados Present Next state Output state w = 1 z A B C D F E G

Figure 8.52 Minimized state table for Example 8.5 Next state Present Output state z w = w = 1 A B C 1 B A F 1 C F C F C A Figure 8.52 Minimized state table for Example 8.5

Figure 8.53 Signals for the vending machine Clock sense N sense D N D (a) Timing diagram N sense N D Q D Q Clock Q Q (b) Circuit that generates N Figure 8.53 Signals for the vending machine

Figure 8.54 State diagram for Example 8.6 DN Reset DN DN S1 ¤ DN DN DN D N D S4 ¤ 1 S2 ¤ S3 ¤ S7 ¤ 1 N D N DN S5 ¤ 1 S6 ¤ DN DN N D S8 ¤ 1 S9 ¤ 1 Figure 8.54 State diagram for Example 8.6

Figure 8.55 State table for Example 8.6 Next state Present Output state z DN =00 01 10 11 S1 S1 S3 S2 – S2 S2 S4 S5 – S3 S3 S6 S7 – S4 S1 – – – 1 S5 S3 – – – 1 S6 S6 S8 S9 – S7 S1 – – – 1 S8 S1 – – – 1 S9 S3 – – – 1 Figure 8.55 State table for Example 8.6

Figure 8.56 Minimized state table for Example 8.6 Next state Present Output state z DN =00 01 10 11 S1 S1 S3 S2 – S2 S2 S4 S5 – S3 S3 S2 S4 – S4 S1 – – – 1 S5 S3 – – – 1 Figure 8.56 Minimized state table for Example 8.6

Figure 8.57 Minimized state diagram for Example 8.6 DN S1 ¤ N DN S3 ¤ D DN N DN D DN S2 ¤ S5 ¤ 1 N D S4 ¤ 1 Figure 8.57 Minimized state diagram for Example 8.6

Figure 8.58 Mealy-type FSM for Example 8.6 DN ¤ S1 N ¤ D ¤ 1 DN ¤ N ¤ 1 S3 D ¤ N ¤ D ¤ 1 S2 DN ¤ Figure 8.58 Mealy-type FSM for Example 8.6

Figure 8.59 Incompletely specified state table for Example 8.7 Next state Output z Present state w = w = 1 w = w = 1 A B C B D – – C F E 1 D B G E F C 1 F E D 1 G F – – Figure 8.59 Incompletely specified state table for Example 8.7

Figure 8.60 State diagram for a counter w = w = w = w = w = 1 w = 1 w = 1 A/0 B/1 C/2 D/3 w = 1 w = 1 H/7 G/6 F/5 E/4 w = 1 w = 1 w = 1 w = w = w = w = Figure 8.60 State diagram for a counter

Figure 8.61 State table for the counter Next state Present Output state w = w = 1 A A B B B C 1 C C D 2 D D E 3 E E F 4 F F G 5 G G H 6 H H A 7 Figure 8.61 State table for the counter

Figure 8.62 State-assigned table for the counter Next state Present Count state w = w = 1 y y y z z z 2 1 2 1 Y Y Y Y Y Y 2 1 2 1 A 000 000 001 000 B 001 001 010 001 C 010 010 011 010 D 011 011 100 011 E 100 100 101 100 F 101 101 110 101 G 110 110 111 110 H 111 111 000 111 Figure 8.62 State-assigned table for the counter

Figure 8.63 Karnaugh maps for D flip-flops for the counter y y y y 1 1 wy wy 2 00 01 11 10 2 00 01 11 10 00 1 1 00 1 1 01 1 1 01 1 1 11 1 1 11 1 1 10 1 1 10 1 1 Y = wy + wy Y = wy + y y + wy y 1 1 1 1 y y 1 wy 2 00 01 11 10 00 01 1 1 1 1 11 1 1 1 10 1 Y = wy + y y + y y + w y y y 2 2 2 1 2 1 2 Figure 8.63 Karnaugh maps for D flip-flops for the counter

Diagrama do circuito do contador Q Clock y w 1 2 Y Resetn Diagrama do circuito do contador

Figure 8.65 Excitation table for the counter with JK flip-flops Flip-flop inputs Present Count state w = w = 1 y y y z z z 2 1 2 1 Y Y Y J K J K J K Y Y Y J K J K J K 2 1 2 2 1 1 2 1 2 2 1 1 A 000 000 0d 0d 0d 001 0d 0d 1d 000 B 001 001 0d 0d d0 010 0d 1d d1 001 C 010 010 0d d0 0d 011 0d d0 1d 010 D 011 011 0d d0 d0 100 1d d1 d1 011 E 100 100 d0 0d 0d 101 d0 0d 1d 100 F 101 101 d0 0d d0 110 d0 1d d1 101 G 110 110 d0 d0 0d 111 d0 d0 1d 110 H 111 111 d0 d0 d0 000 d1 d1 d1 111 Figure 8.65 Excitation table for the counter with JK flip-flops

Mapa Karnaugh - contador 00 01 11 10 d 1 y wy 2 J w = K

Diagrama do circuito usando flip-flop JK

Figure 8.68 Factored-form implementation of the counter

Figure 8.69 State table for the counterlike example Present Next Output state state z z z 2 1 A B 000 B C 100 C D 010 D E 110 E F 001 F G 101 G H 011 H A 111 Figure 8.69 State table for the counterlike example

Figure 8.70 State-assigned table Present Next Output state state y y y Y Y Y z z z 2 1 2 1 2 1 000 1 00 00 100 10 1 00 010 1 10 10 110 01 1 10 001 1 01 01 101 11 1 01 011 1 11 11 111 00 1 11 Figure 8.70 State-assigned table

Figure 8.71 Circuit for the counterlike example D Q z 2 Q D Q z 1 Q D Q z w Q Figure 8.71 Circuit for the counterlike example

Figure 8.72 State diagram for the arbiter Reset 000 Idle 0xx 1xx gnt1 ¤ g = 1 1 x0x 1xx 01x gnt2 ¤ g = 1 2 xx0 x1x 001 gnt3 ¤ g = 1 3 xx1 Figure 8.72 State diagram for the arbiter

Figure 8.73 Alternative style of state diagram for the arbiter Reset 1 2 3 Idle r r 1 1 gnt1 ¤ g = 1 1 r r r r 2 1 1 2 gnt2 ¤ g = 1 2 r r 2 r r r 3 1 2 3 gnt3 ¤ g = 1 3 r 3 Figure 8.73 Alternative style of state diagram for the arbiter

Figure 8.74a VHDL code for the arbiter LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY arbiter IS PORT ( Clock, Resetn : IN STD_LOGIC ; r : IN STD_LOGIC_VECTOR(1 TO 3) ; g : OUT STD_LOGIC_VECTOR(1 TO 3) ) ; END arbiter ; ARCHITECTURE Behavior OF arbiter IS TYPE State_type IS (Idle, gnt1, gnt2, gnt3) ; SIGNAL y : State_type ; BEGIN PROCESS ( Resetn, Clock ) IF Resetn = '0' THEN y <= Idle ; ELSIF (Clock'EVENT AND Clock = '1') THEN CASE y IS WHEN Idle => IF r(1) = '1' THEN y <= gnt1 ; ELSIF r(2) = '1' THEN y <= gnt2 ; ELSIF r(3) = '1' THEN y <= gnt3 ; ELSE y <= Idle ; END IF ; … con’t Figure 8.74a VHDL code for the arbiter

Figure 8.74b VHDL code for the arbiter (con’t) WHEN gnt1 => IF r(1) = '1' THEN y <= gnt1 ; ELSE y <= Idle ; END IF ; WHEN gnt2 => IF r(2) = '1' THEN y <= gnt2 ; WHEN gnt3 => IF r(3) = '1' THEN y <= gnt3 ; END CASE ; END PROCESS ; g(1) <= '1' WHEN y = gnt1 ELSE '0' ; g(2) <= '1' WHEN y = gnt2 ELSE '0' ; g(3) <= '1' WHEN y = gnt3 ELSE '0' ; END Behavior ; Figure 8.74b VHDL code for the arbiter (con’t)

Figure 8.75 Incorrect VHDL code for the grant signals PROCESS( y ) BEGIN IF y = gnt1 THEN g(1) <= '1' ; ELSIF y = gnt2 THEN g(2) <= '1' ; ELSIF y = gnt3 THEN g(3) <= '1' ; END IF ; END PROCESS ; END Behavior ; Figure 8.75 Incorrect VHDL code for the grant signals

Figure 8.76 Correct VHDL code for the grant signals PROCESS( y ) BEGIN g(1) <= '0' ; g(2) <= '0' ; g(3) <= '0' ; IF y = gnt1 THEN g(1) <= '1' ; ELSIF y = gnt2 THEN g(2) <= '1' ; ELSIF y = gnt3 THEN g(3) <= '1' ; END IF ; END PROCESS ; END Behavior ; Figure 8.76 Correct VHDL code for the grant signals

Figure 8.77 Simulation results for the arbiter circuit

Figure 8.78 Output delays in the arbiter circuit a) Output delays using binary encoding b) Output delays using one-hot encoding Figure 8.78 Output delays in the arbiter circuit

Figure 8.80 Circuit for Example 8.8

Figure 8.81 Tables for the circuit in Example 8.8 Next State Present Output state w = w = 1 Next state Present Output y y z 2 1 state z Y Y Y Y w = w = 1 2 1 2 1 01 A A B 1 10 B A C 1 11 C A D 1 1 11 1 D A D 1 (a)State-assigned table (b)State table Figure 8.81 Tables for the circuit in Example 8.8

Figure 8.82 Circuit for Example 8.9 J y 1 1 w J Q z K Q K 1 J y 2 2 J Q Clock K Q K 2 Resetn Figure 8.82 Circuit for Example 8.9

Figure 8.83 Excitation table Flip-flop inputs Present Output state w = w = 1 y y z 2 1 J K J K J K J K 2 2 1 1 2 2 1 1 00 01 1 1 1 01 01 1 1 1 1 10 01 1 1 11 01 1 1 1 1 Figure 8.83 Excitation table

Figure 8.84 Circuit for Example 8.10

Figure 8.85 Excitation table Flip-flop inputs Present Output state w = w = 1 y y z 2 1 T D T D 2 1 2 1 01 1 10 1 1 01 1 1 1 01 1 Figure 8.85 Excitation table

Figure 8.86 Elements used in ASM charts State name Output signals 0 (False) 1 (True) Condition or actions expression (Moore type) (a) State box (b) Decision box Conditional outputs or actions (Mealy type) (c) Conditional output box Figure 8.86 Elements used in ASM charts

Please see “portrait orientation” PowerPoint file for Chapter 8 Figure 8.87 ASM chart for a simple FSM

Figure 8.88 ASM chart for the FSM in Figure 8.23

Figure 8.89 ASM chart for the arbiter Reset Idle 1 r 1 gnt1 1 g 1 r 1 1 r 2 gnt2 1 g 2 r 2 1 r 3 gnt3 1 g 3 r 3 Figure 8.89 ASM chart for the arbiter

Figure 8.90 The general model for a sequential circuit w z 1 1 Inputs Outputs w Combinational z n m circuit y k Y k Present-state Next-state variables variables y 1 Y 1 Figure 8.90 The general model for a sequential circuit

Figure P8.1 State-assigned table for problems 8.1 and 8.2 Present Next state Output state w = w = 1 y y z 2 1 Y Y Y Y 2 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Figure P8.1 State-assigned table for problems 8.1 and 8.2

Figure P8.2 Circuit for problem 8.29