Simulação de Eventos Discretos
Aplicação à simulação de Circuitos Lógicos
Esquema de um Simulador de
Eventos Discretos
Inicializa Inicializa TEMPO t TEMPO t Acrescenta eventos (ek, t’) e re-ordena lista Acrescenta eventos (ek, t’) e re-ordena lista Actualiza Tempo t’ = t1 Actualiza Tempo t’ = t1 Actualiza Estado x’ = f (x, e1 ) Actualiza Estado x’ = f (x, e1 ) ESTADO x ESTADO x e1 e1 LISTA de EVENTOS e1 t1 e2 t2 t’ t’ x’ x’ Gerador de Eventos Temporais Gerador de Eventos Temporais Elimina eventos (ek, tk) Elimina eventos (ek, tk)...
Passos de Simulação
1. Retirar o primeiro elemento, (e1, t1), da LISTA DE EVENTOS;
2. Actualizar o tempo de simulação (TEMPO), avançando-o para o instante do novo evento, t1;
3. Actualizar o ESTADO de acordo com as regras de transição, representadas pela função de transição de estado, x’=f(x, e1);
4. Eliminar da LISTA DE EVENTOS todas as entradas correspondentes a eventos incompatíveis com o novo estado x’;
5. Adicionar à LISTA DE EVENTOS todos os eventos que ainda não estejam agendados, despoletados pelo evento processado;
Componentes de um Simulador
• ESTADO: memória onde todas as variáveis de estado são guardadas; • TEMPO: variável que armazena o tempo de simulação;
• LISTA DE EVENTOS: lista onde todos os eventos agendados são guardados, com indicação dos instantes de tempo em que ocorrem;
• Função de Inicialização: função que inicializa todas as estruturas de dados no início
de uma simulação;
• Função de Actualização de Estado: função que actualiza o estado baseado no
próximo evento a ocorrer;
• Funções de Geração de Eventos Temporais: conjunto de funções que geram
eventos relacionados explicitamente com o tempo, por exemplo, eventos periódicos;
• Função Principal: responsável pela coordenação de todas as componentes do
simulador. Começa por invocar a função de inicialização, após o que, repetidamente, invoca as funções de actualização do tempo e do estado e actuali za a lista ordenada de eventos. É também responsável pela terminação da simulação, baseada na
observância de critérios especificados pelo utilizador, bem como pela apresentação dos resultados da simulação.
Exemplo de Circuito Lógico
2
4
3
1
G1
G2
G3
G4
pzt
xin1
y3
u
v
q
z_1
zout
•Portas lógicas: G1 (and), G2 (nand), G3 (not), G4 (or)
•Atrasos das portas: G1 = 4; G2 = 2; G3 = 1; G4 = 3;
•Entradas do circuito: xin1, y3, u, v
•Saídas do circuito: z_1, zout
Modelo de Atraso
•
Modelo de Atraso Fixo: cada porta tem um atraso fixo de entrada para a
saída, definido na descrição da porta.
•
O modelo de atraso assume inércia nos sinais e transições. Isto significa
que a saída de uma porta lógica só muda como consequência de uma
alteração nas entradas se as entradas mantiverem constantes a condição
para o novo valor da saída até ao instante efectivo da alteração da saída.
Simulação
xin1 1 42 Xin1 0 40 U 1 30 Y3 1 30 Xin1 1 30 U X 20 U 0 14 V 1 0 U 1 0 y3 0 0 Xin1 0 0 Nó Valor Tempo 2 4 3 1 G1 G2 G3 G4 pzt xin1 y3 u v q z_1 zoutSinais de entrada:
Inicialização:
LISTA de EVENTOS 0 v, 1 0 u,1 0 y3,0 0 xin1, 0 ESTADO TEMPO X X X X X X X X 0 2 4 3 1 G1 G2 G3 G4 pzt xin1 y3 u v q z_1 zout zout z_1 q pzt v u y3 xin1 ESTADO Gerador de Eventos Temporais Gerador de Eventos Temporais xin1 1 42 Xin1 0 40 U 1 30 Y3 1 30 Xin1 1 30 U X 20 U 0 14 V 1 0 U 1 0 y3 0 0 Xin1 0 0 Nó Valor Tempo Acrescenta eventos (ek, t’) e re-ordena lista Acrescenta eventos (ek, t’) e re-ordena lista2 4 3 1 G1 G2 G3 G4 pzt xin1 y3 u v q z_1 zout zout z_1 q pzt v u y3 xin1 ESTADO
t=0:
4 pzt, 0 LISTA de EVENTOS 0 v, 1 0 u,1 0 y3,0 ESTADO TEMPO X X X X X X X 0 0•Retira o evento (xi1,0 , 0) da lista de eventos •Actualiza o TEMPO
•Actualiza o ESTADO
• xin1 afecta a porta G1 gerando o evento (pzt,0 , 4) 0 xi1,0 Actualiza Tempo t’ = 0 Actualiza Tempo t’ = 0 Actualiza Estado x’ = f (x, e1 ) Actualiza Estado x’ = f (x, e1 ) Acrescenta eventos (ek, t’) e re-ordena lista Acrescenta eventos (ek, t’) e re-ordena lista
zout z_1 q pzt v u y3 xin1 ESTADO
t=0:
LISTA de EVENTOS 4 pzt, 0 0 v, 1 0 u,1 ESTADO TEMPO X X X X X X 0 0 0t=0:
4 pzt, 0 LISTA de EVENTOS 0 v, 1 ESTADO TEMPO X X X X X 1 0 0 0t=0:
4 pzt, 0 LISTA de EVENTOS 2 q, 0 ESTADO TEMPO X X X X 1 1 0 0 0 0 y3,0 0 u,1 0 v,1 2 4 3 1 G1 G2 G3 G4 pzt xin1 y3 u v q z_1 zoutzout z_1 q pzt v u y3 xin1 ESTADO
t=2:
LISTA de EVENTOS 4 pzt, 0 ESTADO TEMPO X X 0 X 1 1 0 0 2t=4:
5 z_1, 1 LISTA de EVENTOS 7 zout, 0 ESTADO TEMPO X X 0 0 1 1 0 0 4t=5:
LISTA de EVENTOS 7 zout, 0 ESTADO TEMPO 1 X 0 0 1 1 0 0 5 2 q,0 4 pzt, 0 5 z_1, 1 2 4 3 1 G1 G2 G3 G4 pzt xin1 y3 u v q z_1 zout2 4 3 1 G1 G2 G3 G4 pzt xin1 y3 u v q z_1 zout zout z_1 q pzt v u y3 xin1 ESTADO
t=7:
LISTA de EVENTOS 14 u, 0 ESTADO TEMPO 1 0 0 0 1 1 0 0 7t=14:
16 q, 1 LISTA de EVENTOS ESTADO TEMPO 1 0 0 0 1 0 0 0 14t=16:
LISTA de EVENTOS 19 Z_out, 1 ESTADO TEMPO 1 0 1 0 1 0 0 0 16 7 zout, 0 u, 0 14 16 q, 1 Acrescenta eventos (ek, t’) e re-ordena lista Acrescenta eventos (ek, t’) e re-ordena lista Gerador de Eventos Temporais Gerador de Eventos Temporaist=19:
LISTA de EVENTOS 20 u, X ESTADO TEMPO 1 1 1 0 1 0 0 0 19 19 Z_out, 1 Acrescenta eventos (ek, t’) e re-ordena lista Acrescenta eventos (ek, t’) e re-ordena lista Gerador de Eventos Temporais Gerador de Eventos Temporais2 4 3 1 G1 G2 G3 G4 pzt xin1 y3 u v q z_1 zout zout z_1 q pzt v u y3 xin1 ESTADO
t=25:
30 xin1, 1 30 y3, 1 30 u, 1 LISTA de EVENTOS ESTADO TEMPO 1 X X 0 1 X 0 0 25t=30:
34 pzt, 1 LISTA de EVENTOS 30 u, 1 ESTADO TEMPO 1 X X 0 1 X 1 1 30 25 zout, X y3, 1 30t=20:
22 q, X LISTA de EVENTOS ESTADO TEMPO 1 1 1 0 1 X 0 0 20 20 u, Xt=22:
25 zout, X LISTA de EVENTOS ESTADO TEMPO 1 1 X 0 1 X 0 0 22 22 q, Xt=30:
30 y3, 1 30 u, 1 LISTA de EVENTOS ESTADO TEMPO 1 X X 0 1 X 0 1 30 30 xin1, 1t=30:
34 pzt, 1 LISTA de EVENTOS 32 q, 0 ESTADO TEMPO 1 X X 0 1 1 1 1 30 30 u, 1 Gerador de Eventos Temporais Gerador de Eventos Temporais14 2 4 3 1 G1 G2 G3 G4 pzt xin1 y3 u v q z_1 zout zout z_1 q pzt v u y3 xin1 ESTADO
t=37:
40 xin1, 0 LISTA de EVENTOS ESTADO TEMPO 0 1 0 1 1 1 1 1 37 37 zout, 1t=32:
34 pzt, 1 35 zout, 0 LISTA de EVENTOS ESTADO TEMPO 1 X 0 0 1 1 1 1 32 32 q, 0t=34:
35 z_1, 0 37 zout, 1 LISTA de EVENTOS ESTADO TEMPO 1 X 0 1 1 1 1 1 34 34 pzt, 1 Elimina eventos (ek, tk) Elimina eventos (ek, tk)t=35:
37 zout, 1 LISTA de EVENTOS ESTADO TEMPO 0 1 0 1 1 1 1 1 35 35 z_1, 0Inércia na transição: os sinais na entrada de G4 não se mantiveram constantes antes da transição em t=35, pelo que esta deixa de ter efeito,
retirando-se o evento (zout, 1)
Gerador de Eventos Temporais Gerador de Eventos Temporais
2 4 3 1 G1 G2 G3 G4 pzt xin1 y3 u v q z_1 zout zout z_1 q pzt v u y3 xin1 ESTADO
t=42:
LISTA de EVENTOS ESTADO TEMPO 0 1 0 1 1 1 1 1 42 42 xin1, 1t=40:
42 xin1, 1 44 pzt, 0 LISTA de EVENTOS ESTADO TEMPO 0 1 0 1 1 1 1 0 40 40 xin1, 0 Elimina eventos (ek, tk) Elimina eventos (ek, tk) Gerador de Eventos Temporais Gerador de Eventos TemporaisInércia na transição: o sinal
xin1 não se manteve constante
na entrada de G1 antes da transição pzt=0 em t=44, pelo que esta deixa de ter efeito, retirando-se o evento (pzt, 0) da