• Nenhum resultado encontrado

Modelação de circuitos síncronos

N/A
N/A
Protected

Academic year: 2021

Share "Modelação de circuitos síncronos"

Copied!
11
0
0

Texto

(1)

73 FEUP/DEEC – Laboratório de Sistemas Digitais

Modelação de circuitos síncronos

• Como se constrói um flip-flop tipo D?

module ffd( CLK, D, Q);

input CLK; // sinal de relogio, activo na transição 0->1

input D; // entrada D

output Q; // saída Q

reg Q; // Q tem que ser declarado também como reg

always @(posedge CLK) begin

Q <= D; end endmodule

Sempre que CLK passa de 0 para 1…

Q passa a conter o valor que está em D Dentro de ‘always @(posedge…)’ as atribuições devem ser todas do tipo ‘<=‘ e não ‘=‘

74 FEUP/DEEC – Laboratório de Sistemas Digitais

Modelação de circuitos síncronos

• Um flip-flip tipo D com enable

module ffden( CLK, EN, D, Q);

input CLK, EN; // sinal de relogio e de ‘enable’

input D; // entrada D

output Q; // saída Q

reg Q; // Q tem que ser declarado também como reg

always @(posedge CLK) begin if ( EN ) Q <= D; end endmodule

Sempre que CLK passa de 0 para 1 e EN é igual a 1 a saída Q passa a conter o valor de D, caso contrário Q mantém o valor que tinha antes

(2)

75 FEUP/DEEC – Laboratório de Sistemas Digitais

Como iniciar o valor de um FFD

• Quando um flip-flop começa a trabalhar o valor

em Q é desconhecido (pode ser 1 ou 0)

• Qualquer sistema que tenha flip-flops deve ter

uma forma de impor o valor inicial das saídas Q

dos flip-flops

• Sinais de iniciação chamam-se usualmente sinais

de reset

• Um sinal de reset pode ser activo com 1 ou 0 e

pode ser síncrono ou assíncrono

76 FEUP/DEEC – Laboratório de Sistemas Digitais

Reset síncrono e assíncrono

• Reset síncrono (depende do clock)

– a acção de reset ocorre apenas quando o sinal

de relógio tem a sua transição activa

• Reset assíncrono (não depende do clock)

– A acção de reset ocorre sempre que o sinal de

reset é colocado no seu nível activo

– O reset assíncrono é uma entrada própria do FF

Q D CLK RST D CLK

(3)

77 FEUP/DEEC – Laboratório de Sistemas Digitais

Modelação de circuitos síncronos

• FFD com enable e reset (síncrono)

module ffdenrst( CLK, EN, RST, D, Q);

input CLK, EN, RST; // relogio, ‘enable’ e ‘reset’ (activo a 1)

input D; // entrada D

output Q; // saída Q

reg Q; // Q tem que ser declarado também como reg

always @(posedge CLK) begin if ( RST ) Q <= 1’b0; else if ( EN ) Q <= D; end endmodule

Se RST é 1, Q é colocado com zero (reset) (mas este valor não tem que ser zero!)

Senão, funciona como o FFD com enable

78 FEUP/DEEC – Laboratório de Sistemas Digitais

Modelação de circuitos síncronos

• FFD com enable e reset (assíncrono)

module ffdenrsta( CLK, EN, RST, D, Q);

input CLK, EN, RST; // relogio, ‘enable’ e ‘reset’ (activo a 1)

input D; // entrada D

output Q; // saída Q

reg Q; // Q tem que ser declarado também como reg

always @(posedge CLK or posedge RST) begin if ( RST ) Q <= 1’b0; else if ( EN ) Q <= D; end endmodule

Quando RST passa de 0 para 1, Q é colocado com zero (reset)

(4)

79 FEUP/DEEC – Laboratório de Sistemas Digitais

Um registo de 8 bits: 8 FFs tipo D

• com enable e reset (assíncrono)

module reg8benrsta( CLK, EN, RST, D, Q);

input CLK, EN, RST; // relogio, ‘enable’ e ‘reset’ (activo a 1)

input [7:0] D; // entrada D com 8 bits

output [7:0] Q; // saída Q com 8 bits...

reg [7:0] Q; // ... Que também é um ‘reg’

always @(posedge CLK or posedge RST) begin if ( RST ) Q <= 8’b0000_0000; else if ( EN ) Q <= D; end endmodule

Quando RST passa de 0 para 1, Q é colocado com o valor inicial (reset)

Senão, funciona como o FFD com enable

80 FEUP/DEEC – Laboratório de Sistemas Digitais

Um contador de 8 bits

• É um registo de 8 bits em que D = Q + 1

module conta8b( CLK, RST, Q);

input CLK, RST; // relogio e ‘reset’ (activo a 1)

output [7:0] Q; // saída Q

reg [7:0] Q; // Q tem que ser declarado também como reg

wire [7:0] D; // representa o ‘fio’ ligado à entrada D do reg.

assign D = Q + 1; // a entrada D do registo é sempre igual a Q+1

always @(posedge CLK or posedge RST) // este bloco é um registo

begin // de 8 bits com reset

if ( RST ) Q <= 8’b0000_0000; else Q <= D; end endmodule Q D CLK RST CLK + 1 8 RST Q 8

(5)

81 FEUP/DEEC – Laboratório de Sistemas Digitais

Um contador de 8 bits com ‘load’

module conta8bld( CLK, RST, LD, E, Q);

input CLK, RST, LD; // relogio, ‘reset’ e ‘load’

input [7:0] E; // entrada de 8 bits para carregar o contador

output [7:0] Q; // saída Q

reg [7:0] Q; // Q tem que ser declarado também como reg

wire [7:0] D; // representa o ‘fio’ ligado à entrada D do reg.

assign D = LD ? E : Q + 1; // se LD==1 então D=E senão D=Q+1

always @(posedge CLK or posedge RST) // este bloco é um registo

begin // de 8 bits com reset

if ( RST ) Q <= 8’b0000_0000; else Q <= D; end endmodule Q D CLK RST CLK + 1 8 RST Q 8 E LD 1 0 8 82 FEUP/DEEC – Laboratório de Sistemas Digitais

Um contador ‘up/down’ de 8 bits

module conta8bupdown( CLK, RST, LD, E, UD, Q);

input CLK, RST, LD, UD; // relogio, ‘reset’, ‘load’ e UP/DOWN

input [7:0] E; // entrada de 8 bits para carregar o contador

output [7:0] Q; // saída Q

reg [7:0] Q; // Q tem que ser declarado também como reg

wire [7:0] D; // representa o ‘fio’ ligado à entrada D do reg.

assign D = LD ? E : ( UD ? Q + 1 : Q – 1); // UD=1 conta para cima

always @(posedge CLK or posedge RST) // este bloco é um registo

begin // de 8 bits com reset

if ( RST ) Q <= 8’b0000_0000; else Q <= D; end endmodule Q D CLK RST CLK +/-1 8 RST Q 8 E LD 1 0 8 UD addsub

(6)

83 FEUP/DEEC – Laboratório de Sistemas Digitais

Modelo geral de uma máquina de estados

(modelo de Moore)

• Registo de estado

– Entradas D (próximo estado) e saídas Q (estado presente)

• Circuito combinacional

que define o próximo estado

– Depende de Q e das entradas E e produz D

• Circuito combinacional

que produz as saídas Z

– Só depende de Q (máquina de Moore)

registo de estado Z E CLK D (próximo estado) reset (estado presente) Q 84 FEUP/DEEC – Laboratório de Sistemas Digitais

module fsm( CLK, RST, E, Z);

input CLK, RST; // relogio e ‘reset’

input E; // entrada E

output Z; // saída Z

reg [1:0] STATE; // registo de estado

reg [1:0] NEXTSTATE; // proximo estado

always @(posedge CLK or posedge RST) // registo de estado com reset begin if ( RST ) STATE <= 2’b00; else STATE <= NEXTSTATE; end

always @* // define o circuito lógico que produz NEXTSTATE case ( STATE )

// define o valor de NEXTSTATE em função de STATE e E endcase

always @* // define o circuito lógico que produz a saída Z case( STATE)

// define o valor da saída Z em função do estado actual STATE endcase

(7)

85 FEUP/DEEC – Laboratório de Sistemas Digitais

INI S1 S2 X=1 X=1 X=0 X=0 Y=0 Y=0 Y=1

Exemplo de uma máquina de estados em

Verilog (modelo de Moore)

CLK X Y

• 3 estados (INI é o estado inicial)

– Bastam 2 bits para codificar o estado

• Uma entrada X

• Uma saída Y que só depende do estado presente

– modelo de máquina de estados de Moore

86 FEUP/DEEC – Laboratório de Sistemas Digitais

module fsm( CLK, RST, X, Y);

input CLK, RST; // relogio e ‘reset’

input X; // entrada X

output Y; reg Y; // saída Y

reg [1:0] STATE; // registo de estado

reg [1:0] NEXTSTATE; // proximo estado

parameter INI = 2’b00, // definição de constantes que representam

S1 = 2’b01, // os nomes simbólicos dos estados

S2 = 2’b11;

always @(posedge CLK or posedge RST) // registo de estado begin // com reset assíncrono

if ( RST ) // define o estado inicial como INI

STATE <= INI; else STATE <= NEXTSTATE;

end

always @* // circuito lógico que produz NEXTSTATE case ( STATE )

INI: if ( X == 1’b0 ) NEXTSTATE = INI; else NEXTSTATE = S1; S1 : if ( X ) NEXTSTATE = S1; else NEXTSTATE = S2;

S2 : NEXTSTATE = INI;

endcase

always @* // circuito lógico que produz a saída Y: só depende de STATE case( STATE) INI: Y = 0; S1 : Y = 0; S2 : Y = 1; endcase endmodule

(8)

87 FEUP/DEEC – Laboratório de Sistemas Digitais

module fsm( CLK, RST, X, Y);

input CLK, RST; // relogio e ‘reset’

input X; // entrada X

output Y; // saída Y

reg [1:0] STATE; // registo de estado

reg [1:0] NEXTSTATE; // proximo estado

parameter INI = 2’b00, // definição de constantes que representam

S1 = 2’b01, // os nomes simbólicos dos estados

S2 = 2’b11;

...

assign Y = ( STATE == S2 ); // Y é 1 quando STATE for igual a S2

endmodule

Outra forma de definir o valor de Y

• Y vale 1 quando o estado presente é S2

88 FEUP/DEEC – Laboratório de Sistemas Digitais

INI S1 S2 X=1 X=1 X=0 X=0 Y=0 Y=0 Y=1

Como acrescentar uma entrada ‘restart’

(reset síncrono)

CLK X Y RESTART=1 RESTART=1 RESTART

(9)

89 FEUP/DEEC – Laboratório de Sistemas Digitais

module fsm( CLK, RST, RESTART, X, Y); input CLK, RST; // relogio e ‘reset’

input X, RESTART; // entrada X e RESTART

output Y; reg Y; // saída Y

reg [1:0] STATE; // registo de estado

reg [1:0] NEXTSTATE; // proximo estado

parameter INI = 2’b00, // definição de constantes que representam

S1 = 2’b01, // os nomes simbólicos dos estados

S2 = 2’b11;

always @(posedge CLK or posedge RST) // registo de estado begin // com reset assíncrono

if ( RST ) // define o estado inicial como INI

STATE <= INI; else STATE <= NEXTSTATE;

end

always @* // circuito lógico que produz NEXTSTATE if ( RESTART ) NEXTSTATE = INI;

else

case ( STATE )

INI: if ( X == 1’b0 ) NEXTSTATE = INI; else NEXTSTATE = S1; S1 : if ( X ) NEXTSTATE = S1; else NEXTSTATE = S2;

S2 : NEXTSTATE = INI;

endcase

always @* // circuito lógico que produz a saída Y ...

endmodule

90 FEUP/DEEC – Laboratório de Sistemas Digitais

Modelo geral de uma máquina de estados

(modelo de Mealy)

• Diferença para o modelo de Moore:

• O

circuito combinacional

que produz as saídas Z

– depende do estado presente (Q) e das entradas E

registo de estado Z E CLK D (próximo estado) reset (estado presente) Q Z também depende de E

(10)

91 FEUP/DEEC – Laboratório de Sistemas Digitais

INI S1 S2 X=1, Y=0 X=1, Y=0 X=0, Y=0 X=0, Y=1

Exemplo de uma máquina de estados em

Verilog (modelo de Mealy)

CLK X Y

• Uma entrada X

• Uma saída Y que depende do estado presente e de X

– modelo de máquina de estados de Mealy

• Em cada estado, o valor de Y é determinado pelas

mesmas condições que definem o valor do próximo estado

X=0, Y=0

X=1, Y=1

92 FEUP/DEEC – Laboratório de Sistemas Digitais

module fsm( CLK, RST, X, Y);

input CLK, RST; // relogio e ‘reset’

input X; // entrada X

output Y; reg Y; // saída Y

reg [1:0] STATE; // registo de estado

reg [1:0] NEXTSTATE; // proximo estado

parameter INI = 2’b00, // definição de constantes que representam

S1 = 2’b01, // os nomes simbólicos dos estados

S2 = 2’b11;

// registo de estado é igual aos exemplos anteriores

always @* // circuito lógico que produz NEXTSTATE case ( STATE )

INI: if ( X ) NEXTSTATE = S1; else NEXTSTATE = INI; S1 : if ( X ) NEXTSTATE = S1; else NEXTSTATE = S2; S2 : if ( X ) NEXTSTATE = INI; else NEXTSTATE = S2;

endcase

always @* // circuito lógico que produz a saída Y: depende de STATE e de X case( STATE) INI: Y = 0; S1 : if ( X ) Y = 0; else Y = 1; S2 : if ( X ) Y = 1; else Y = 0; endcase endmodule

(11)

93 FEUP/DEEC – Laboratório de Sistemas Digitais

Outra forma de definir as saídas em

máquinas de estados de Mealy

• Em cada estado, as saídas dependem do valor das entradas

• As condições que determinam as saídas são geralmente as

mesmas que determinam o próximo estado

– Não é necessário escrever duas vezes a instrução ‘

case

• Os dois blocos

always

(próximo estado e saídas) podem ser

combinados num único

94 FEUP/DEEC – Laboratório de Sistemas Digitais

always @* // circuito lógico que produz NEXTSTATE e a saída Y case ( STATE ) INI: if ( X ) begin NEXTSTATE = S1; Y = 0; end else begin NEXTSTATE = INI; Y = 0; end S1 : if ( X ) begin NEXTSTATE = S1; Y = 0; end else begin NEXTSTATE = S2; Y = 1; end S2 : if ( X ) begin NEXTSTATE = INI; Y = 1; end else begin NEXTSTATE = S2; Y = 0; end endcase

Referências

Documentos relacionados

Come¸cando pela abordagem associada ao m´etodo de Gumbel, admitamos que dispomos de uma amostra constitu´ıda por valores m´aximos de um determinado fen´omeno, recolhidos ao longo

2 Vetores de Inspiração dos Direitos Humanos de Segunda Dimensão; 4 Os Aspectos Transindividuais enquanto sedimento de Orientação dos Direitos Humanos de Terceira

Proposta de indicadores de sustentabilidade para formação do Subíndice Ambiental (SA) preenchida com dados referentes ao parque aquícola de Breu Branco III no reservatório

Neste trabalho n´ os obtemos condi¸c˜ oes para a existˆ encia e unicidade de solu¸c˜ oes brandas assintoticamente quase peri´ odicas para equa¸c˜ oes diferenciais abstratas

Esse estudo mostra que a escolaridade feminina é a variável socioeconômica mais importante para explicar o número de filhos por mulher, visto que o aumento da educação feminina pode

 Como meio para atingir estes fins, os seres humanos estabelecem objetivos comuns, alcançáveis quando todos colaboram para o bem estar social de todos os membros da comunidade. 

Assim, cada ente poderá, por meio da sua competência tributária, por meio dos tributos, determinar a forma que for mais interessante para estimular a proteção ambiental, a exemplo, da

39 Securitizações sintéticas — Estrutura Básica — Banco (comprador da proteção) SPV (vendedor da proteção) Investidores (vendedores finais da