Upload
internet
View
109
Download
1
Embed Size (px)
Citation preview
Simulação de Eventos Discretos
Aplicação à simulação de Circuitos Lógicos
AED - 2003
2
Esquema de um Simulador de Eventos Discretos
InicializaInicializa
TEMPOt
TEMPOt
Acrescenta eventos(ek , t’)
e re-ordena lista
Acrescenta eventos(ek , t’)
e re-ordena lista
Actualiza Tempot’ = t1
Actualiza Tempot’ = t1
Actualiza Estadox’ = f (x, e1 )
Actualiza Estadox’ = f (x, e1 )
ESTADOx
ESTADOx
e1e1
LISTA de EVENTOSe1 t1
e2 t2
t’
t’
x’
x’
Gerador de Eventos
Temporais
Gerador de Eventos
Temporais
Elimina eventos(ek , tk)
Elimina eventos(ek , tk)
...
3
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.
4
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.
5
Exemplo de Circuito Lógico
2
4
3
1G1
G2
G3
G4
pztxin1
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
•Nós do circuito: xin1, y3, u, v, pzt, q, z_1, zout
6
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.
7
Simulaçã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
2
4
3
1G1
G2
G3
G4
pztxin1
y3
u
vq
z_1
zout
Sinais de entrada:
8
Inicialização:LISTA de EVENTOS
xin1, 0 0
y3,0 0
u,1 0
v, 1 0
TEMPO ESTADO
0 X X X X X X X X
2
4
3
1G1
G2
G3
G4
pztxin1
y3
u
vq
z_1
zout
ESTADO
xin1 y3 u v pzt q z_1 zout
Gerador de Eventos
Temporais
Gerador de Eventos
Temporais
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
Acrescenta eventos(ek , t’)
e re-ordena lista
Acrescenta eventos(ek , t’)
e re-ordena lista
9
2
4
3
1G1
G2
G3
G4
pztxin1
y3
u
vq
z_1
zout
ESTADO
xin1 y3 u v pzt q z_1 zout
t=0:LISTA de EVENTOS
y3,0 0
u,1 0
v, 1 0
pzt, 0 4
TEMPO ESTADO
0 0 X X X X X X X
•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)
xi1,0 0
Actualiza Tempot’ = 0
Actualiza Tempot’ = 0 Actualiza Estado
x’ = f (x, e1 )
Actualiza Estadox’ = f (x, e1 )
Acrescenta eventos(ek , t’)
e re-ordena lista
Acrescenta eventos(ek , t’)
e re-ordena lista
10
ESTADO
xin1 y3 u v pzt q z_1 zout
t=0:
LISTA de EVENTOS
u,1 0
v, 1 0
pzt, 0 4
TEMPO ESTADO
0 0 0 X X X X X X
t=0:
LISTA de EVENTOS
v, 1 0
pzt, 0 4
TEMPO ESTADO
0 0 0 1 X X X X X
t=0:
LISTA de EVENTOS
q, 0 2
pzt, 0 4
TEMPO ESTADO
0 0 0 1 1 X X X X
y3,0 0
u,1 0
v,1 0
2
4
3
1G1
G2
G3
G4
pztxin1
y3
u
vq
z_1
zout
11
ESTADO
xin1 y3 u v pzt q z_1 zout
t=2:
LISTA de EVENTOS
pzt, 0 4
TEMPO ESTADO
2 0 0 1 1 X 0 X X
t=4:
LISTA de EVENTOS
z_1, 1 5
zout, 0 7
TEMPO ESTADO
4 0 0 1 1 0 0 X X
t=5:
LISTA de EVENTOS
zout, 0 7
TEMPO ESTADO
5 0 0 1 1 0 0 1 X
q,0 2
pzt, 0 4
z_1, 1 5
2
4
3
1G1
G2
G3
G4
pztxin1
y3
u
vq
z_1
zout
12
2
4
3
1G1
G2
G3
G4
pztxin1
y3
u
vq
z_1
zout
ESTADO
xin1 y3 u v pzt q z_1 zout
t=7:
LISTA de EVENTOS
u, 0 14
TEMPO ESTADO
7 0 0 1 1 0 0 1 0
t=14:
LISTA de EVENTOS
q, 1 16
TEMPO ESTADO
14 0 0 0 1 0 0 1 0
t=16:
LISTA de EVENTOS
Z_out, 1 19
TEMPO ESTADO
16 0 0 0 1 0 1 1 0
zout, 0 7 u, 0 14
q, 1 16Acrescenta eventos(ek , t’)
e re-ordena lista
Acrescenta eventos(ek , t’)
e re-ordena lista
Gerador de Eventos
Temporais
Gerador de Eventos
Temporais
t=19:
LISTA de EVENTOS
u, X 20
TEMPO ESTADO
19 0 0 0 1 0 1 1 1
Z_out, 1
19
Acrescenta eventos(ek , t’)
e re-ordena lista
Acrescenta eventos(ek , t’)
e re-ordena lista
Gerador de Eventos
Temporais
Gerador de Eventos
Temporais
13
2
4
3
1G1
G2
G3
G4
pztxin1
y3
u
vq
z_1
zout
ESTADO
xin1 y3 u v pzt q z_1 zout
t=25:
LISTA de EVENTOS
xin1, 1 30
y3, 1 30
u, 1 30
TEMPO ESTADO
25 0 0 X 1 0 X 1 X
t=30:
LISTA de EVENTOS
u, 1 30
pzt, 1 34
TEMPO ESTADO
30 1 1 X 1 0 X 1 X
zout, X 25 y3, 1 30
t=20:
LISTA de EVENTOS
q, X 22
TEMPO ESTADO
20 0 0 X 1 0 1 1 1
u, X 20
t=22:
LISTA de EVENTOS
zout, X 25
TEMPO ESTADO
22 0 0 X 1 0 X 1 1
q, X 22t=30:
LISTA de EVENTOS
y3, 1 30
u, 1 30
TEMPO ESTADO
30 1 0 X 1 0 X 1 X
xin1, 1 30 t=30:
LISTA de EVENTOS
q, 0 32
pzt, 1 34
TEMPO ESTADO
30 1 1 1 1 0 X 1 X
u, 1 30
Gerador de Eventos
Temporais
Gerador de Eventos
Temporais
14
2
4
3
1G1
G2
G3
G4
pztxin1
y3
u
vq
z_1
zout
ESTADO
xin1 y3 u v pzt q z_1 zout
t=37:
LISTA de EVENTOS
xin1, 0 40
TEMPO ESTADO
37 1 1 1 1 1 0 0 1
zout, 1 37
t=32:
LISTA de EVENTOS
pzt, 1 34
zout, 0 35
TEMPO ESTADO
32 1 1 1 1 0 0 1 X
q, 0 32
t=34:
LISTA de EVENTOS
z_1, 0 35
zout, 1 37
TEMPO ESTADO
34 1 1 1 1 1 0 1 X
pzt, 1 34
Elimina eventos(ek , tk)
Elimina eventos(ek , tk)
t=35:
LISTA de EVENTOS
zout, 1 37
TEMPO ESTADO
35 1 1 1 1 1 0 0 1
z_1, 0 35
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
Gerador de Eventos
Temporais
Gerador de Eventos
Temporais
15
2
4
3
1G1
G2
G3
G4
pztxin1
y3
u
vq
z_1
zout
ESTADO
xin1 y3 u v pzt q z_1 zout
t=42:
LISTA de EVENTOS
TEMPO ESTADO
42 1 1 1 1 1 0 0 1
xin1, 1 42
t=40:
LISTA de EVENTOS
xin1, 1 42
pzt, 0 44
TEMPO ESTADO
40 0 1 1 1 1 0 0 1
xin1, 0 40
Elimina eventos(ek , tk)
Elimina eventos(ek , tk)
Gerador de Eventos
Temporais
Gerador de Eventos
Temporais
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
16