Simulação de Eventos Discretos
Aplicação à simulação de Circuitos Lógicos
AED - 2003
Esquema de um Simulador de
Eventos Discretos
Inicializa
TEMPO
t
ESTADO
x
x’
Actualiza Estado
x’ = f (x, e1 )
x’
Gerador de
Eventos
Temporais
LISTA de
EVENTOS
e1
et11
e2
t2
...
t’
Actualiza Tempo
t’ = t1
t’
Elimina eventos
(ek , tk)
Acrescenta eventos
(ek , t’)
e re-ordena lista
2
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;
6.
Reordenar a LISTA DE EVENTOS por ordem crescente de tempo.
3
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 actualiza 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.
4
Exemplo de Circuito Lógico
z_1
G3
xin1
G1
y3
pzt
1
4
G4
u
G2
q
zout
3
v
2
•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
•Nós do circuito: xin1, y3, u, v, pzt, q, z_1, zout
5
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.
6
G3
xin1
pzt
G1
z_1
1
y3
4
G4
3
u
G2
v
Simulação
zout
q
2
Sinais de entrada:
Tempo
Valor
Nó
0
0
Xin1
0
0
y3
0
1
U
0
1
V
14
0
U
20
X
U
30
1
Xin1
30
1
Y3
30
1
U
40
0
Xin1
42
1
xin1
7
G3
xin1
pzt
G1
z_1
ESTADO
1
xin1
y3
4
G4
u
v
pzt
q
z_1
zout
zout
3
u
G2
v
y3
q
2
Inicialização:
Tempo
Valor
Nó
0
0
Xin1
0
0
y3
0
1
U
0
1
V
14
0
U
20
X
U
30
1
Xin1
30
1
Y3
30
1
U
40
0
Xin1
42
1
xin1
TEMPO
0
ESTADO
X
LISTA de EVENTOS
X X X X X X X
Gerador de
Eventos
Temporais
xin1, 0
0
y3,0
0
u,1
0
v, 1
0
Acrescenta eventos
(ek , t’)
e re-ordena lista
8
G3
xin1
G1
pzt
z_1
ESTADO
1
xin1
y3
4
G4
u
v
pzt
q
z_1
zout
zout
3
u
G2
v
y3
q
2
t=0:
xi1,0
0
TEMPO
0
ESTADO
0
Actualiza Tempo
t’ = 0
LISTA de EVENTOS
X X X X X X X
Actualiza Estado
x’ = f (x, e1 )
•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)
y3,0
0
u,1
0
v, 1
0
pzt, 0
4
Acrescenta eventos
(ek , t’)
e re-ordena lista
9
G3
xin1
pzt
G1
z_1
1
ESTADO
y3
4
G4
G2
t=0:
xin1
y3
u
v
pzt
q
z_1
zout
3
u
v
zout
q
2
y3,0
TEMPO
0
0
ESTADO
0
0 X X X X X X
LISTA de EVENTOS
t=0:
0
u,1
u,1
0
TEMPO
v, 1
0
0
pzt, 0
4
ESTADO
0
0 1 X X X X X
LISTA de EVENTOS
t=0:
0
v,1
v, 1
0
TEMPO
pzt, 0
4
0
ESTADO
0
0 1 1 X X X X
LISTA de EVENTOS
q, 0
2
pzt, 0
4
10
G3
xin1
pzt
G1
z_1
1
ESTADO
y3
4
G4
G2
t=2:
y3
u
v
pzt
q
z_1
zout
q
2
2
q,0
TEMPO
2
xin1
3
u
v
zout
ESTADO
0
0 1 1 X 0 X X
LISTA de EVENTOS
pzt, 0
4
t=4:
pzt, 0
TEMPO
4
4
ESTADO
0
0 1 1 0 0 X X
LISTA de EVENTOS
z_1, 1
5
zout, 0
7
t=5:
z_1, 1
TEMPO
5
5
ESTADO
0
0 1 1 0 0 1 X
LISTA de EVENTOS
zout, 0
7
11
G3
xin1
G1
pzt
z_1
ESTADO
1
xin1
y3
4
G4
u
v
pzt
q
z_1
zout
zout
3
u
G2
v
t=7:
y3
q
2
zout, 0
TEMPO
t=14:
7
ESTADO
7
0
0 1 1 0 0 1 0
LISTA de EVENTOS
u, 0
14
Acrescenta eventos
(ek , t’)
e re-ordena lista
TEMPO
t=19:
ESTADO
14
0
0 0 1 0 0 1 0
LISTA de EVENTOS
16
q, 1
t=16:
q, 1
TEMPO
16
Gerador de
Eventos
Temporais
14
u, 0
16
ESTADO
0
TEMPO
19
ESTADO
19
0
0 0 1 0 1 1 1
LISTA de EVENTOS
u, X
20
Acrescenta eventos
(ek , t’)
e re-ordena lista
0 0 1 0 1 1 0
LISTA de EVENTOS
Z_out, 1
Z_out, 1
19
Gerador de
Eventos
Temporais
12
G3
xin1
pzt
G1
z_1
ESTADO
1
xin1
y3
4
G4
G2
t=20:
t=25:
zout, X
TEMPO
20
25
ESTADO
0
q
z_1
zout
25
t=30:
22
q, X
q, X
TEMPO
Gerador de
Eventos
Temporais
ESTADO
0
0 X 1 0 X 1 1
LISTA de EVENTOS
zout, X
0
y3, 1
30
25
0 X 1 0 X 1 X
TEMPO
30
ESTADO
1
1 X 1 0 X 1 X
LISTA de EVENTOS
xin1, 1
30
u, 1
30
y3, 1
30
pzt, 1
34
u, 1
30
t=30:
22
ESTADO
LISTA de EVENTOS
0 X 1 0 1 1 1
LISTA de EVENTOS
22
pzt
zout
q
TEMPO
t=22:
v
2
u, X
20
u
3
u
v
y3
xin1, 1
TEMPO
30
30
ESTADO
1
0 X 1 0 X 1 X
LISTA de EVENTOS
t=30:
u, 1
TEMPO
30
30
ESTADO
1
1 1 1 0 X 1 X
LISTA de EVENTOS
y3, 1
30
q, 0
32
u, 1
30
pzt, 1
34
13
G3
xin1
pzt
G1
z_1
ESTADO
1
xin1
y3
4
G4
G2
t=32:
v
pzt
q
z_1
TEMPO
zout
zout
t=35:
q
35
32
LISTA de EVENTOS
34
zout, 0
35
pzt, 1
TEMPO
34
zout, 1
TEMPO
1 1 1 1 0 0 1
37
37
ESTADO
1
1 1 1 1 0 0 1
LISTA de EVENTOS
34
ESTADO
1
1
t=37:
37
t=34:
ESTADO
zout, 1
1 1 1 0 0 1 X
pzt, 1
35
LISTA de EVENTOS
ESTADO
1
z_1, 0
TEMPO
2
q, 0
32
u
3
u
v
y3
1 1 1 1 0 1 X
LISTA de EVENTOS
z_1, 0
35
zout, 1
37
Elimina eventos
(ek , tk)
Iné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)
da lista de eventos
xin1, 0
40
Gerador de
Eventos
Temporais
14
G3
xin1
G1
pzt
z_1
ESTADO
1
xin1
y3
4
G4
u
v
pzt
q
z_1
zout
zout
3
u
G2
v
y3
q
2
t=40:
xin1, 0
TEMPO
40
40
ESTADO
0
1 1 1 1 0 0 1
LISTA de EVENTOS
Gerador de
Eventos
Temporais
xin1, 1
42
pzt, 0
44
t=42:
xin1, 1
TEMPO
42
42
ESTADO
1
1 1 1 1 0 0 1
LISTA de EVENTOS
Elimina eventos
(ek , tk)
Iné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
lista de eventos
15
16
Download

e 1