Logo Passei Direto
Buscar

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Simula��es/ApendiceB/simula��o B.1/simula��o-B.1.doc
Guia de Laboratório
de
Arquitetura de Computadores
Simulação B.1 – Programação com um microcontrolador (CREPE)
1 – Objetivos
Esta simulação exemplifica a programação de um microcontrolador, tomando o Programa B.1 como base, explorando o acesso aos registradores auxiliares para configuração e utilização dos periféricos. Com base neste programa, pode-se fazer algumas experiências, incluindo as seguintes:
Configurar a duração de cada bit de forma diferente em cada UART e ver qual a diferença máxima até a recepção deixar de ser correta;
Modificar a rotina de atendimento da interrupção RX2_CHEGOU para, antes de ler o RDU2, testar o bit SRX2 e ler o RDU2 apenas se o bit SRX2 estiver com 1 (Tabela B.8). O resultado é ler apenas metade dos bytes, aqueles que são recebidos na UART 2 sem o byte anterior ser lido.
Esta simulação ainda não está concluída, em função do desenvolvimento do CREPE ainda não estar completo.
	1
Simula��es/Cap2/simula��o 2.1/and-or.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 6 NC= 5
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C7543" NBits= 1 NSegments= 1
 Po= "118b87e3266-0" Pd= "118b87ea544" Np= 2
 X= 209 Y= 191
 X= 261 Y= 223
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C44c3" NBits= 1 NSegments= 1
 Po= "118b87e43cb-0" Pd= "118b87ea564" Np= 2
 X= 209 Y= 263
 X= 261 Y= 243
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "C1149" NBits= 1 NSegments= 1
 Po= "118b8933b78-0" Pd= "118b87e75b8-0" Np= 2
 X= 531 Y= 255
 X= 557 Y= 255
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "C6641" NBits= 1 NSegments= 1
 Po= "118b87ea535-0" Pd= "118b8933b97" Np= 2
 X= 371 Y= 223
 X= 421 Y= 255
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ceb77" NBits= 1 NSegments= 1
 Po= "118b8945a08-0" Pd= "118b8933bc6" Np= 2
 X= 209 Y= 335
 X= 421 Y= 275
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "Interruptor 1" NPorts= 1 Conf= "1@3" X= 104 Y= 176
 P= "OUT" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118b87e3266-0" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "Interruptor 2" NPorts= 1 Conf= "1@3" X= 104 Y= 248
 P= "OUT" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118b87e43cb-0" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Leds" NPorts= 1 Conf= "1@3" X= 552 Y= 240
 P= "IN" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118b87e75b8-0" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleAND" Name= "AND" NPorts= 3 Conf= "2x1@3" X= 256 Y= 208
 P= "IN0" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118b87ea544" Fixed= -1
 P= "IN1" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118b87ea564" Fixed= -1
 P= "OUT" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118b87ea535-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleOR" Name= "OR" NPorts= 3 Conf= "2x1@3" X= 416 Y= 240
 P= "IN0" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118b8933b97" Fixed= -1
 P= "IN1" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118b8933bc6" Fixed= -1
 P= "OUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118b8933b78-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "Interruptor 3" NPorts= 1 Conf= "1@3" X= 104 Y= 320
 P= "OUT" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118b8945a08-0" Fixed= -1
Simula��es/Cap2/simula��o 2.1/int-led.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 2 NC= 1
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C12e9" NBits= 4 NSegments= 1
 Po= "118b89a3730-0" Pd= "118b89a61ab-0" Np= 2
 X= 193 Y= 175
 X= 301 Y= 175
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "Interruptor" NPorts= 1 Conf= "4@3" X= 88 Y= 160
 P= "OUT" CIn= 0 NBit= 4 StBit= 0 StConnBit= 0 PId= "118b89a3730-0" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Leds" NPorts= 1 Conf= "4@3" X= 296 Y= 160
 P= "IN" CIn= 0 NBit= 4 StBit= 0 StConnBit= 0 PId= "118b89a61ab-0" Fixed= -1
Simula��es/Cap2/simula��o 2.1/simula��o-2.1.doc
Guia de Laboratório
de
Arquitetura de Computadores
Simulação 2.1 – Portas Lógicas
1 – Objetivos
Com este trabalho pretende-se que o leitor se familiarize com a interface do simulador, através de um conjunto de circuitos exemplos. A melhor forma de aprender o funcionamento de qualquer sistema é fazer experiências com ele. Existem implementações físicas das portas lógicas, em circuitos integrados, mas nem sempre existem as condições apropriadas para usar uma implementação física.
Felizmente, existem simuladores (em computador) que permitem reproduzir de forma muito realista o comportamento destes sistemas. Todo este livro está baseado nesta perspectiva. Em vez de se limitar a descrever as diversas técnicas, o livro está repleto de referências a guias práticos (como esta Simulação 2.1) que permitem ao leitor experimentar, na prática, os sistemas e técnicas que acabou de descobrir. 
O Apêndice C contém uma breve introdução às capacidades do simulador.
Esta simulação inclui os seguintes aspectos:
Introdução ao simulador XE "Simulador" , com construção (no simulador) de pequenos circuitos de teste das portas lógicas;
Utilização de interruptores XE "Interruptor" como dispositivos de entrada (produzindo 0 ou 1, bastando um clique com o mouse para mudar o valor) e LEDs XE "LED" para visualizar o estado das saídas;
Verificação da tabela verdade XE "Tabela:de verdade" das várias portas lógicas, com várias entradas;
Verificação de algumas equivalências (por exemplo, uma porta NAND e o seu equivalente, uma porta AND ligada a uma porta NOT);
Verificação do tempo de atraso XE "Tempo:de atraso" das portas lógicas.
2 – O Simulador
O simulador permite testar o funcionamento de sistemas digitais e de computadores, permitindo fazer experiências, em qualquer lugar, sem o ônus da montagem física dos circuitos. 
Esse simulador pode ser executado em qualquer plataforma para a qual exista uma Java Virtual Machine (JVM). O site inclui todas as informações para poder instalar e executar o simulador.
O manual do simulador explica as operações necessárias para realizar as simulações, embora nesta simulação, dado que é a primeira, sejam exemplificados os passos fundamentais.
3 – Um circuito simples sem portas lógicas
3.1 – Criação do circuito
Execute o simulador, dando um clique duplo sobre o arquivo “simulador.jar”. Deverá aparecer, após o tempo necessário (alguns segundos) para iniciar a máquina Java, uma tela como a seguinte. Se abrir com algum circuito que tenha sido aberto anteriormente, clique em New no menu File.
Clique em “Periféricos” e depois em “Simples”.
Clique em “Interruptor” e arraste para o espaço de trabalho, soltando depois o botão do mouse. Deve aparecer um objeto com o nome “Toggle Buttons”. Idem para “Botão de Pressão” e “Led” (para este último, faça duas vezes). Ao final, você terá algo como a janela seguinte (os objetos podem ser arrumados clicando e arrastando-os).
Para mudar o nome do objeto “Toggle Buttons”, dê um duplo clique nele, o que faz aparecer a sua janela de configuração:
Mude o nome para “interruptor”.
Mude também o nome dos outros objetos, para serem mais facilmente identificáveis.
Para ligar o interruptor e o botão de pressão ao seu respectivo LED, clique no pino OUT e arraste até o pino IN do LED. 
Se desejar, você pode guardar este circuito com File e Save. Pode mais tarde recuperá-lo com File e Load.
3.2 – Simulação do circuito
O circuito está pronto. Passemos
agora para “Simulação” (abaixo da barra de menu) e clique em “Start”.
A seguir, precisamos abrir as janelas de interface destes quatro objetos, para podermos controlá-los/visualizá-los. Isso é feito com um duplo clique sobre cada objeto. Alargue cada uma das janelas até o título estar completamente visível. Você pode deslocar as janelas para onde quiser na tela.
	
	
Agora clique no botão com “0” dentro da janela do interruptor. Esta muda para 1 (novo valor à saída do interruptor) e o LED fica aceso. O número “0” que se mantém indica apenas o número do bit (cada um destes objetos pode ter vários bits; neste exemplo têm apenas um, correspondente ao bit 0).
Faça o mesmo para o botão de pressão. Note que neste caso, ao contrário do que acontece com o interruptor, o LED apaga quando se solta o botão. Há assim uma forma de gerar um sinal que alterna entre 0 ou 1 a cada vez que se pressiona o botão do mouse (interruptor) ou um sinal que está com 1 apenas enquanto se está pressionando o botão do mouse (botão de pressão).
Observe que, na simulação, as linhas estão em preto quando têm o valor 0 e em vermelho quando têm o valor 1 (NOTA – isto só funciona em ligações de um bit, como é o caso).
A figura seguinte representa a ligação quer do interruptor quer do botão a um LED, mas com esta diferença de comportamento.
3.3 – Interruptores e LEDs de vários bits
Tanto os interruptores como os LEDs (e muitos outros módulos) podem ser configurados para ter vários bits. Por exemplo, a figura seguinte representa um interruptor de 4 bits ligado a um LED também de 4 bits. A ligação entre os dois fica automaticamente com 4 bits. Do lado direito da figura aparece um circuito funcionalmente equivalente, com quatro interruptores e quatro LEDs individuais.
Qualquer dos circuitos pode ser simulado, mas o circuito do lado esquerdo tem apenas duas janelas de controle (uma com quatro botões e outra com quatro LEDs), enquanto no circuito do lado direito teria de se ter quatro janelas de interruptores e quatro de LEDs, todos independentes.
O circuito seguinte mostra um interruptor de 4 bits ligado a um LED de 4 bits. Em termos visuais não se distingue de um interruptor de 1 bit ligado a um LED de 1 bit, mas ao se dar um duplo clique sobre o interruptor em modo Design, abre-se a janela de configuração do interruptor, permitindo configurá-lo para 4 bits. Idem para o LED (que permite ainda configurar as cores).
O arquivo “int-LED.cmod” já tem este circuito construído.
	
Passando depois para simulação, ao se dar um duplo clique no interruptor e no LED, abre-se as janelas de controle destes objetos, mostrando efetivamente que são de 4 bits. Clicando em cada um dos botões do interruptor, consegue-se controlar o respectivo LED de forma independente dos restantes.
	
4 – Circuito com AND
Construa o circuito seguinte. O AND está disponível em “Portas lógicas”.
Passe para “Simulação”, clique em “Start”, dê um duplo clique nos interruptores e no LED e verifique que só quando ambos os interruptores estão com 1 é que o LED acende, tal como seria de esperar de um AND.
5 – Outros circuitos
Experimente também:
Construir outros circuitos usando outra das portas lógicas disponíveis (visíveis na figura anterior), incluindo portas de três entradas (terá de incluir outro interruptor).
A equivalência entre um NAND e um AND seguido de um NOT, verificando que ambos os circuitos se comportam de igual modo;
Incluir duas ou mais portas lógicas como, por exemplo, o seguinte circuito. Para facilitar, este circuito já está disponível, através do arquivo “and-or.cmod”.
Verifique o funcionamento deste circuito (a sua tabela verdade).
6 – Atraso das portas lógicas
O simulador permite simular o atraso inerente aos circuitos eletrônicos (tempo que a saída demora para reagir às alterações nas entradas).
As portas lógicas têm um tempo de atraso predeterminado de 3 unidades de tempo. Uma unidade é o que se quiser, pois o tempo de simulação não é real. Embora o interruptor seja um dispositivo mecânico, terá um pequeno circuito eletrônico associado (para produzir o 0 e o 1), em função do que, para manter um padrão, também terá um atraso de 3 unidades. O LED faz apenas visualização, assumindo-se que não tem atraso.
Construa o seguinte circuito, com um interruptor, um NOT e um LED. Quando se passa para simulação, o tempo corrente é mostrado em “Time”.
A cada vez que se pressiona e solta o interruptor, o tempo avança de 6 unidades. A saída do interruptor demora 3 unidades para reagir, e o NOT demora mais 3 para reagir.
	� PAGE �11�
_1267186746.vsd
0
1
LED
_1202315613.vsd
0
1
0
1
0
1
0
1
LED
LED
LED
LED
4
L
E
D
s
0
1
0
1
0
1
0
1
Simula��es/Cap2/simula��o 2.10/simula��o-2.10.doc
Guia de Laboratório
de
Arquitetura de Computadores
Simulação 2.10 – Lógica de três estados
1 – Objetivos
Esta simulação demonstra o funcionamento das portas tri-state, tomando a Figura 2.27 como base. Os aspectos abordados incluem os seguintes:
Funcionamento de uma porta tri-state;
Leitura de uma porta tri-state em estado de alta impedância (valor aleatório);
Conflitos numa ligação, em caso de ativação simultânea de duas portas tri-state.
2 – Utilização correta dos circuitos tri-state
Carregue o seguinte circuito do arquivo “tristate.cmod”, com dispositivos de 4 bits (para permitir a visualização nos mostradores de 7 segmentos). 
Os registradores são construídos com latches (trincos). O Trinco 1 e o Trinco 2 estão sempre transparentes, isto é, estão sendo usados apenas como dispositivos que permitem desligar a sua saída (colocá-la em estado de tri-state) através dos interruptores Controlo 1 e Controlo 2, respectivamente. 
Os interruptores de 4 bits Valor 1 e Valor 2 permitem especificar o valor a ser mostrado no Mostrador 2.
O Trinco 3 permite memorizar o valor do Mostrador 2, clicando no botão Memoriza.
Passe para Simulação, clique em Start e abra os painéis de controle dos interruptores, do botão e dos mostradores. Coloque valores nos interruptores como, por exemplo, 5H no Valor 1 e 8H no Valor 2
	
	
	
Note que as saídas dos Trinco 1 e Trinco 2 estão desligadas (em estado de alta impedância, ou em tri-state), em função do que nenhum dos mostradores tem ainda um valor válido (ou inicializado) e assumem este aspecto: 
	
Clique agora em Controlo 1, o que faz aparecer o valor 5 na entrada do Mostrador 1.
	
Desligue o Controlo 1. O Trinco 1 volta a estar em tri-state e o Mostrador 1 volta a ter o aspecto inicial.
	
Clique agora em Controlo 2, o que faz aparecer o valor 8 na entrada do Mostrador 1.
	
Desligue o Controlo 2. O Trinco 2 volta a estar em tri-state e o Mostrador 1 volta a ter o aspecto inicial.
	
Tente agora memorizar um valor no Trinco 3, clicando no botão Memoriza. O Trinco 3 até memoriza, mas o problema é que ninguém está passando um valor válido para sua entrada. Logo, o valor memorizado é aleatório. Isso pode ser percebido clicando várias vezes no botão Memoriza e verificando que o valor vai variando. Até pode aparecer 5 ou 8, mas isso é mera coincidência.
Para memorizar um valor correto no Trinco 3, tem de se ativar ou o Trinco 1 ou o Trinco 2. Por exemplo, ativando o Trinco 1 e clicando em Memoriza, obtém-se:
		
Por outro lado, se se desativar o Trinco 1 e ativar o Trinco 2, obtém-se:
		
3 – Utilização incorreta dos circuitos tri-state
E o que é que acontece se se ativar simultaneamente o Trinco 1 e o Trinco 2? Há um conflito na ligação com o Mostrador 1 e o simulador reporta um erro (na janela das mensagens, embaixo).
Em termos de simulador não tem outras
conseqüências, mas num circuito real poderia mesmo danificar o próprio circuito.
	4
Simula��es/Cap2/simula��o 2.10/tristate.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 10 NC= 7
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C3e08" NBits= 1 NSegments= 1
 Po= "118cb7ff4bd-0" Pd= "118cb7f48fc" Np= 2
 X= 169 Y= 199
 X= 269 Y= 171
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cf4c9" NBits= 1 NSegments= 1
 Po= "118cb7fecdd-0" Pd= "118cb7f7a4d" Np= 2
 X= 169 Y= 343
 X= 269 Y= 315
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ccd7b" NBits= 4 NSegments= 3
 Po= "118cb7f492b" Pd= "118cb8002b7-0" Np= 4
 X= 379 Y= 111
 X= 423 Y= 111
 X= 423 Y= 199
 X= 469 Y= 199
 Po= "118cb7f7a7c" Pd= "118cb8002b7-0" Np= 4
 X= 379 Y= 255
 X= 423 Y= 255
 X= 423 Y= 199
 X= 469 Y= 199
 Po= "118cb93ee05-0" Pd= "118cb7f7a7c" Np= 4
 X= 493 Y= 335
 X= 423 Y= 335
 X= 423 Y= 255
 X= 379 Y= 255
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cd0cf" NBits= 1 NSegments= 1
 Po= "118cb954567-0" Pd= "118cb93edf5-0" Np= 4
 X= 425 Y= 407
 X= 457 Y= 407
 X= 457 Y= 315
 X= 493 Y= 315
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cd71d" NBits= 4 NSegments= 1
 Po= "118cb93ee14" Pd= "118cb95ea90-0" Np= 2
 X= 603 Y= 295
 X= 661 Y= 295
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "C5bde" NBits= 4 NSegments= 1
 Po= "118cb961faa-0" Pd= "118cb7f490c" Np= 2
 X= 169 Y= 151
 X= 269 Y= 151
 6 C= "ist.ac.simulador.nucleo.SConnection" Name= "C6d63" NBits= 4 NSegments= 1
 Po= "118cb966df9-0" Pd= "118cb7f7a5d" Np= 2
 X= 169 Y= 295
 X= 269 Y= 295
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleLatch" Name= "Trinco 1" NPorts= 5 Conf= "4@10" X= 264 Y= 96
 P= "CLEAR" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb7f494a" Fixed= 1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb7f48dd-0" Fixed= 1
 P= "IN" CIn= 5 NBit= 4 StBit= 0 StConnBit= 0 PId= "118cb7f490c" Fixed= -1
 P= "OE" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb7f48fc" Fixed= -1
 P= "OUT" CIn= 2 NBit= 4 StBit= 0 StConnBit= 0 PId= "118cb7f492b" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleLatch" Name= "Trinco 2" NPorts= 5 Conf= "4@10" X= 264 Y= 240
 P= "CLEAR" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb7f7a8b" Fixed= 1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb7f7a2e-0" Fixed= 1
 P= "IN" CIn= 6 NBit= 4 StBit= 0 StConnBit= 0 PId= "118cb7f7a5d" Fixed= -1
 P= "OE" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb7f7a4d" Fixed= -1
 P= "OUT" CIn= 2 NBit= 4 StBit= 0 StConnBit= 0 PId= "118cb7f7a7c" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "Controlo 2" NPorts= 1 Conf= "1@3" X= 64 Y= 328
 P= "OUT" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb7fecdd-0" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "Controlo 1" NPorts= 1 Conf= "1@3" X= 64 Y= 184
 P= "OUT" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb7ff4bd-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleHexaDisplay" Name= "Mostrador 1" NPorts= 1 Conf= "4@3" X= 464 Y= 184
 P= "IN" CIn= 2 NBit= 4 StBit= 0 StConnBit= 0 PId= "118cb8002b7-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleLatch" Name= "Trinco 3" NPorts= 5 Conf= "4@10" X= 488 Y= 280
 P= "CLEAR" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb93ee24" Fixed= 1
 P= "EN" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb93edf5-0" Fixed= -1
 P= "IN" CIn= 2 NBit= 4 StBit= 0 StConnBit= 0 PId= "118cb93ee05-0" Fixed= -1
 P= "OE" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb93ee05" Fixed= 1
 P= "OUT" CIn= 4 NBit= 4 StBit= 0 StConnBit= 0 PId= "118cb93ee14" Fixed= -1
 6 M= "ist.ac.simulador.modules.ModulePushButtons" Name= "Memoriza" NPorts= 1 Conf= "1@3" X= 320 Y= 392
 P= "OUT" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb954567-0" Fixed= -1
 7 M= "ist.ac.simulador.modules.ModuleHexaDisplay" Name= "Mostrador 2" NPorts= 1 Conf= "4@3" X= 656 Y= 280
 P= "IN" CIn= 4 NBit= 4 StBit= 0 StConnBit= 0 PId= "118cb95ea90-0" Fixed= -1
 8 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "Valor 1" NPorts= 1 Conf= "4@3" X= 64 Y= 136
 P= "OUT" CIn= 5 NBit= 4 StBit= 0 StConnBit= 0 PId= "118cb961faa-0" Fixed= -1
 9 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "Valor 2" NPorts= 1 Conf= "4@3" X= 64 Y= 280
 P= "OUT" CIn= 6 NBit= 4 StBit= 0 StConnBit= 0 PId= "118cb966df9-0" Fixed= -1
Simula��es/Cap2/simula��o 2.11/contador-binario.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 12 NC= 11
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cf561" NBits= 1 NSegments= 1
 Po= "118cd545910-0" Pd= "118cd54420d" Np= 2
 X= 331 Y= 399
 X= 429 Y= 399
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cf2b" NBits= 2 NSegments= 1
 Po= "118cd546312-0" Pd= "118cd543442" Np= 2
 X= 331 Y= 527
 X= 429 Y= 527
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "C884" NBits= 1 NSegments= 1
 Po= "118cd543a2e-0" Pd= "118cd540b8c-0" Np= 2
 X= 539 Y= 271
 X= 645 Y= 271
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "C5f46" NBits= 1 NSegments= 1
 Po= "118cd5441fe-0" Pd= "118cd5414d3-0" Np= 2
 X= 539 Y= 399
 X= 645 Y= 399
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cfaa8" NBits= 1 NSegments= 1
 Po= "118cd543432-0" Pd= "118cd541d11-0" Np= 2
 X= 539 Y= 527
 X= 645 Y= 527
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "C88b8" NBits= 1 NSegments= 1
 Po= "118cd5fee84-0" Pd= "118cd54035e-0" Np= 6
 X= 955 Y= 111
 X= 984 Y= 111
 X= 984 Y= 75
 X= 617 Y= 75
 X= 617 Y= 151
 X= 645 Y= 151
 6 C= "ist.ac.simulador.nucleo.SConnection" Name= "C25cd" NBits= 1 NSegments= 14
 Po= "118cd541d6e" Pd= "118cd543461" Np= 6
 X= 755 Y= 487
 X= 773 Y= 487
 X= 773 Y= 602
 X= 408 Y= 602
 X= 408 Y= 547
 X= 429 Y= 547
 Po= "118cd541541" Pd= "118cd54421d" Np= 6
 X= 755 Y= 359
 X= 780 Y= 359
 X= 780 Y= 458
 X= 391 Y= 458
 X= 391 Y= 419
 X= 429 Y= 419
 Po= "118cd54421d" Pd= "118cd546322" Np= 6
 X= 429 Y= 419
 X= 391 Y= 419
 X= 391 Y= 479
 X= 198 Y= 479
 X= 198 Y= 527
 X= 221 Y= 527
 Po= "118cd540bda" Pd= "118cd543a5d" Np= 6
 X= 755 Y= 231
 X= 780 Y= 231
 X= 780 Y= 331
 X= 397 Y= 331
 X= 397 Y= 291
 X= 429 Y= 291
 Po= "118cd543a5d" Pd= "118cd546332" Np= 4
 X= 429 Y= 291
 X= 181 Y= 291
 X= 181 Y= 547
 X= 221 Y= 547
 Po= "118cd543a5d" Pd= "118cd54592f" Np= 4
 X= 429 Y= 291
 X= 181 Y= 291
 X= 181 Y= 399
 X= 221 Y= 399
 Po= "118cd54038d" Pd= "118cd5fee94" Np= 2
 X= 755 Y= 111
 X= 845 Y= 111
 Po= "118cd54038d" Pd= "118cd543a4d" Np= 6
 X= 755 Y= 111
 X= 777 Y= 111
 X= 777 Y= 193
 X= 403 Y= 193
 X= 403 Y= 271
 X= 429 Y= 271
 Po= "118cd543a4d" Pd= "118cd54595e" Np= 4
 X= 429 Y= 271
 X= 157 Y= 271
 X= 157 Y= 419
 X= 221 Y= 419
 Po= "118cd54595e" Pd= "118cd546351" Np= 4
 X= 221 Y= 419
 X= 156 Y= 419
 X= 156 Y= 567
 X= 221 Y= 567
 Po= "118cd54038d" Pd= "118cd602302-0" Np= 4
 X= 755 Y= 111
 X= 812 Y= 111
 X= 812 Y= 311
 X= 845 Y= 311
 Po= "118cd540bda" Pd= "118cd602302-0" Np= 4
 X= 755 Y= 231
 X= 812 Y= 231
 X= 812 Y= 311
 X= 845 Y= 311
 Po= "118cd541541" Pd= "118cd602302-0" Np= 4
 X= 755 Y= 359
 X= 812 Y= 359
X= 812 Y= 311
 X= 845 Y= 311
 Po= "118cd541d6e" Pd= "118cd602302-0" Np= 4
 X= 755 Y= 487
 X= 812 Y= 487
 X= 812 Y= 311
 X= 845 Y= 311
 7 C= "ist.ac.simulador.nucleo.SConnection" Name= "C6eef" NBits= 1 NSegments= 12
 Po= "118cd541541" Pd= "118cd54421d" Np= 6
 X= 755 Y= 359
 X= 780 Y= 359
 X= 780 Y= 458
 X= 391 Y= 458
 X= 391 Y= 419
 X= 429 Y= 419
 Po= "118cd54421d" Pd= "118cd546322" Np= 6
 X= 429 Y= 419
 X= 391 Y= 419
 X= 391 Y= 479
 X= 198 Y= 479
 X= 198 Y= 527
 X= 221 Y= 527
 Po= "118cd540bda" Pd= "118cd543a5d" Np= 6
 X= 755 Y= 231
 X= 780 Y= 231
 X= 780 Y= 331
 X= 397 Y= 331
 X= 397 Y= 291
 X= 429 Y= 291
 Po= "118cd543a5d" Pd= "118cd546332" Np= 4
 X= 429 Y= 291
 X= 181 Y= 291
 X= 181 Y= 547
 X= 221 Y= 547
 Po= "118cd543a5d" Pd= "118cd54592f" Np= 4
 X= 429 Y= 291
 X= 181 Y= 291
 X= 181 Y= 399
 X= 221 Y= 399
 Po= "118cd54038d" Pd= "118cd5fee94" Np= 2
 X= 755 Y= 111
 X= 845 Y= 111
 Po= "118cd54038d" Pd= "118cd543a4d" Np= 6
 X= 755 Y= 111
 X= 777 Y= 111
 X= 777 Y= 193
 X= 403 Y= 193
 X= 403 Y= 271
 X= 429 Y= 271
 Po= "118cd543a4d" Pd= "118cd54595e" Np= 4
 X= 429 Y= 271
 X= 157 Y= 271
 X= 157 Y= 419
 X= 221 Y= 419
 Po= "118cd54595e" Pd= "118cd546351" Np= 4
 X= 221 Y= 419
 X= 156 Y= 419
 X= 156 Y= 567
 X= 221 Y= 567
 Po= "118cd54038d" Pd= "118cd602302-0" Np= 4
 X= 755 Y= 111
 X= 812 Y= 111
 X= 812 Y= 311
 X= 845 Y= 311
 Po= "118cd540bda" Pd= "118cd602302-0" Np= 4
 X= 755 Y= 231
 X= 812 Y= 231
 X= 812 Y= 311
 X= 845 Y= 311
 Po= "118cd541541" Pd= "118cd602302-0" Np= 4
 X= 755 Y= 359
 X= 812 Y= 359
 X= 812 Y= 311
 X= 845 Y= 311
 8 C= "ist.ac.simulador.nucleo.SConnection" Name= "C40c0" NBits= 1 NSegments= 9
 Po= "118cd540bda" Pd= "118cd543a5d" Np= 6
 X= 755 Y= 231
 X= 780 Y= 231
 X= 780 Y= 331
 X= 397 Y= 331
 X= 397 Y= 291
 X= 429 Y= 291
 Po= "118cd543a5d" Pd= "118cd546332" Np= 4
 X= 429 Y= 291
 X= 181 Y= 291
 X= 181 Y= 547
 X= 221 Y= 547
 Po= "118cd543a5d" Pd= "118cd54592f" Np= 4
 X= 429 Y= 291
 X= 181 Y= 291
 X= 181 Y= 399
 X= 221 Y= 399
 Po= "118cd54038d" Pd= "118cd5fee94" Np= 2
 X= 755 Y= 111
 X= 845 Y= 111
 Po= "118cd54038d" Pd= "118cd543a4d" Np= 6
 X= 755 Y= 111
 X= 777 Y= 111
 X= 777 Y= 193
 X= 403 Y= 193
 X= 403 Y= 271
 X= 429 Y= 271
 Po= "118cd543a4d" Pd= "118cd54595e" Np= 4
 X= 429 Y= 271
 X= 157 Y= 271
 X= 157 Y= 419
 X= 221 Y= 419
 Po= "118cd54595e" Pd= "118cd546351" Np= 4
 X= 221 Y= 419
 X= 156 Y= 419
 X= 156 Y= 567
 X= 221 Y= 567
 Po= "118cd54038d" Pd= "118cd602302-0" Np= 4
 X= 755 Y= 111
 X= 812 Y= 111
 X= 812 Y= 311
 X= 845 Y= 311
 Po= "118cd540bda" Pd= "118cd602302-0" Np= 4
 X= 755 Y= 231
 X= 812 Y= 231
 X= 812 Y= 311
 X= 845 Y= 311
 9 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ca205" NBits= 1 NSegments= 5
 Po= "118cd54038d" Pd= "118cd5fee94" Np= 2
 X= 755 Y= 111
 X= 845 Y= 111
 Po= "118cd54038d" Pd= "118cd543a4d" Np= 6
 X= 755 Y= 111
 X= 777 Y= 111
 X= 777 Y= 193
 X= 403 Y= 193
 X= 403 Y= 271
 X= 429 Y= 271
 Po= "118cd543a4d" Pd= "118cd54595e" Np= 4
 X= 429 Y= 271
 X= 157 Y= 271
 X= 157 Y= 419
 X= 221 Y= 419
 Po= "118cd54595e" Pd= "118cd546351" Np= 4
 X= 221 Y= 419
 X= 156 Y= 419
 X= 156 Y= 567
 X= 221 Y= 567
 Po= "118cd54038d" Pd= "118cd602302-0" Np= 4
 X= 755 Y= 111
 X= 812 Y= 111
 X= 812 Y= 311
 X= 845 Y= 311
 10 C= "ist.ac.simulador.nucleo.SConnection" Name= "C9b9" NBits= 1 NSegments= 4
 Po= "11c26b8defe-0" Pd= "118cd54036e" Np= 2
 X= 329 Y= 111
 X= 645 Y= 111
 Po= "118cd540b9c" Pd= "11c26b8defe-0" Np= 4
 X= 645 Y= 231
 X= 593 Y= 231
 X= 593 Y= 111
 X= 329 Y= 111
 Po= "118cd541502" Pd= "11c26b8defe-0" Np= 4
 X= 645 Y= 359
 X= 593 Y= 359
 X= 593 Y= 111
 X= 329 Y= 111
 Po= "118cd541d30" Pd= "11c26b8defe-0" Np= 4
 X= 645 Y= 487
 X= 593 Y= 487
 X= 593 Y= 111
 X= 329 Y= 111
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Báscula 0" NPorts= 4 Conf= "1@10" X= 640 Y= 96
 P= "CLOCK" CIn= 10 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd54036e" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd54037e" Fixed= 1
 P= "IN" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd54035e-0" Fixed= -1
 P= "OUT" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd54038d" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Báscula 1" NPorts= 4 Conf= "1@10" X= 640 Y= 216
 P= "CLOCK" CIn= 10 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd540b9c" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd540bbb" Fixed= 1
 P= "IN" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd540b8c-0" Fixed= -1
 P= "OUT" CIn= 6 NBit= 1 StBit= 0 StConnBit= 1 PId= "118cd540bda" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Báscula 2" NPorts= 4 Conf= "1@10" X= 640 Y= 344
 P= "CLOCK" CIn= 10 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd541502" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd541521" Fixed= 1
 P= "IN" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd5414d3-0" Fixed= -1
 P= "OUT" CIn= 6 NBit= 1 StBit= 0 StConnBit= 2 PId= "118cd541541" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Báscula 3" NPorts= 4 Conf= "1@10" X= 640 Y= 472
 P= "CLOCK" CIn= 10 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd541d30" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd541d4f" Fixed= 1
 P= "IN" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd541d11-0" Fixed= -1
 P= "OUT" CIn= 6 NBit= 1 StBit= 0 StConnBit= 3 PId= "118cd541d6e" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleXOR" Name= "XOR" NPorts= 3 Conf= "2x1@3" X= 424 Y= 512
 P= "IN0" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd543442" Fixed= -1
 P= "IN1" CIn= 6 NBit= 1 StBit= 0 StConnBit= 3 PId= "118cd543461" Fixed= -1
 P= "OUT" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd543432-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleXOR" Name= "XOR" NPorts= 3 Conf= "2x1@3" X= 424 Y= 256
 P= "IN0" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd543a4d" Fixed= -1
 P= "IN1" CIn= 6 NBit= 1 StBit= 0 StConnBit= 1 PId= "118cd543a5d" Fixed= -1
 P= "OUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd543a2e-0" Fixed= -1
 6 M= "ist.ac.simulador.modules.ModuleXOR" Name= "XOR" NPorts= 3 Conf= "2x1@3" X= 424 Y= 384
 P= "IN0" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd54420d" Fixed= -1
 P= "IN1" CIn= 6 NBit= 1 StBit= 0 StConnBit= 2 PId= "118cd54421d" Fixed= -1
 P= "OUT" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd5441fe-0" Fixed= -1
 7 M= "ist.ac.simulador.modules.ModuleAND" Name= "AND" NPorts= 3 Conf= "2x1@3" X= 216 Y= 384
 P= "IN0" CIn= 6 NBit= 1 StBit= 0 StConnBit= 1 PId= "118cd54592f" Fixed= -1
 P= "IN1" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd54595e" Fixed= -1
 P= "OUT" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd545910-0" Fixed= -1
 8 M= "ist.ac.simulador.modules.ModuleAND" Name= "AND" NPorts= 4 Conf= "3x2@3" X= 216 Y= 512
 P= "IN0" CIn= 6 NBit= 2 StBit= 0 StConnBit= 2 PId= "118cd546322" Fixed= -1
 P= "IN1" CIn= 6 NBit= 2 StBit= 0 StConnBit= 1 PId= "118cd546332" Fixed= -1
 P= "IN2" CIn= 6 NBit= 2 StBit= 0 StConnBit=
0 PId= "118cd546351" Fixed= -1
 P= "OUT" CIn= 1 NBit= 2 StBit= 0 StConnBit= 0 PId= "118cd546312-0" Fixed= -1
 9 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT" NPorts= 2 Conf= "1x1@3" X= 840 Y= 96
 P= "IN0" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd5fee94" Fixed= -1
 P= "OUT" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd5fee84-0" Fixed= -1
 10 M= "ist.ac.simulador.modules.ModuleHexaDisplay" Name= "Hexa Display" NPorts= 1 Conf= "4@3" X= 840 Y= 296
 P= "IN" CIn= 6 NBit= 4 StBit= 0 StConnBit= 0 PId= "118cd602302-0" Fixed= -1
 11 M= "ist.ac.simulador.modules.ModulePushButtons" Name= "C" NPorts= 1 Conf= "1@3" X= 224 Y= 96
 P= "OUT" CIn= 10 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c26b8defe-0" Fixed= -1
Simula��es/Cap2/simula��o 2.11/contador-crescente.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 8 NC= 6
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cf81e" NBits= 1 NSegments= 1
 Po= "118d03104c8-0" Pd= "118d02d4782-0" Np= 2
 X= 217 Y= 247
 X= 285 Y= 247
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ce1f0" NBits= 1 NSegments= 2
 Po= "118d031b193-0" Pd= "118d02d4986" Np= 6
 X= 619 Y= 415
 X= 648 Y= 415
 X= 648 Y= 380
 X= 238 Y= 380
 X= 238 Y= 307
 X= 285 Y= 307
 Po= "118d03e162e-0" Pd= "118d031b193-0" Np= 2
 X= 685 Y= 415
 X= 619 Y= 415
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cf18c" NBits= 1 NSegments= 1
 Po= "118d0319c75-0" Pd= "118d031b1b2" Np= 6
 X= 811 Y= 231
 X= 837 Y= 231
 X= 837 Y= 352
 X= 473 Y= 352
 X= 473 Y= 435
 X= 509 Y= 435
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cd3ed" NBits= 4 NSegments= 5
 Po= "118d031b1a2" Pd= "118d02d49b4" Np= 4
 X= 509 Y= 415
 X= 433 Y= 415
 X= 433 Y= 247
 X= 395 Y= 247
 Po= "118d03165b5" Pd= "118d02d49b4" Np= 4
 X= 501 Y= 311
 X= 433 Y= 311
 X= 433 Y= 247
 X= 395 Y= 247
 Po= "118d03152e8" Pd= "118d02d49b4" Np= 2
 X= 501 Y= 247
 X= 395 Y= 247
 Po= "118d0322ae9-0" Pd= "118d02d49b4" Np= 4
 X= 501 Y= 159
 X= 465 Y= 159
 X= 465 Y= 247
 X= 395 Y= 247
 Po= "118d0319c94" Pd= "118d02d49b4" Np= 6
 X= 701 Y= 231
 X= 672 Y= 231
 X= 672 Y= 213
 X= 465 Y= 213
 X= 465 Y= 247
 X= 395 Y= 247
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "C1e84" NBits= 1 NSegments= 1
 Po= "118d03152c9-0" Pd= "118d0319e97" Np= 2
 X= 611 Y= 247
 X= 701 Y= 247
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "C126b" NBits= 1 NSegments= 1
 Po= "118d0316596-0" Pd= "118d0319ed6" Np= 4
 X= 611 Y= 311
 X= 653 Y= 311
 X= 653 Y= 271
 X= 701 Y= 271
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleCounter" Name= "Counter" NPorts= 7 Conf= "4@10" X= 280 Y= 232
 P= "CLOCK" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d02d4782-0" Fixed= -1
 P= "DATA" CIn= -1 NBit= 4 StBit= 0 StConnBit= 0 PId= "118d02d4995" Fixed= 0
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d02d49a5" Fixed= 1
 P= "OUT" CIn= 3 NBit= 4 StBit= 0 StConnBit= 0 PId= "118d02d49b4" Fixed= -1
 P= "PL" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d02d4986" Fixed= -1
 P= "TC" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d02d49a5-0" Fixed= -1
 P= "UP" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d02d4976" Fixed= 1
 1 M= "ist.ac.simulador.modules.ModulePushButtons" Name= "C" NPorts= 1 Conf= "1@3" X= 112 Y= 232
 P= "OUT" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d03104c8-0" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT" NPorts= 2 Conf= "1x1@3" X= 496 Y= 232
 P= "IN0" CIn= 3 NBit= 1 StBit= 0 StConnBit= 1 PId= "118d03152e8" Fixed= -1
 P= "OUT" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d03152c9-0" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT" NPorts= 2 Conf= "1x1@3" X= 496 Y= 296
 P= "IN0" CIn= 3 NBit= 1 StBit= 0 StConnBit= 2 PId= "118d03165b5" Fixed= -1
 P= "OUT" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d0316596-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleAND" Name= "AND" NPorts= 4 Conf= "3x1@3" X= 696 Y= 216
 P= "IN0" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d0319c94" Fixed= -1
 P= "IN1" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d0319e97" Fixed= -1
 P= "IN2" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d0319ed6" Fixed= -1
 P= "OUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d0319c75-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleAND" Name= "AND" NPorts= 3 Conf= "2x1@3" X= 504 Y= 400
 P= "IN0" CIn= 3 NBit= 1 StBit= 0 StConnBit= 3 PId= "118d031b1a2" Fixed= -1
 P= "IN1" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d031b1b2" Fixed= -1
 P= "OUT" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d031b193-0" Fixed= -1
 6 M= "ist.ac.simulador.modules.ModuleHexaDisplay" Name= "Hexa Display" NPorts= 1 Conf= "4@3" X= 496 Y= 144
 P= "IN" CIn= 3 NBit= 4 StBit= 0 StConnBit= 0 PId= "118d0322ae9-0" Fixed= -1
 7 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Leds" NPorts= 1 Conf= "1@3" X= 680 Y= 400
 HIGHCOLOR= "Red" LOWCOLOR= "Black" ZCOLOR= "Grey" P= "IN" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d03e162e-0" Fixed= -1
Simula��es/Cap2/simula��o 2.11/contador-programavel.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 4 NC= 4
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cc11a" NBits= 1 NSegments= 1
 Po= "118d03104c8-0" Pd= "118d02d4782-0" Np= 2
 X= 185 Y= 247
 X= 285 Y= 247
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C20df" NBits= 4 NSegments= 1
 Po= "118d0322ae9-0" Pd= "118d02d49b4" Np= 2
 X= 485 Y= 247
 X= 395 Y= 247
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "C9391" NBits= 4 NSegments= 1
 Po= "118d04f9aec-0" Pd= "118d02d4995" Np= 4
 X= 185 Y= 311
 X= 219 Y= 311
 X= 219 Y= 267
 X= 285 Y= 267
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "C6b64" NBits= 1 NSegments= 1
 Po= "118d02d49a5-0" Pd= "118d02d4986" Np= 6
 X= 395 Y= 267
 X= 426 Y= 267
 X= 426 Y= 397
 X= 258 Y= 397
 X= 258 Y= 307
 X= 285 Y= 307
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleCounter" Name= "Counter" NPorts= 7 Conf= "4@10" X= 280 Y= 232
 P= "CLOCK" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d02d4782-0" Fixed= -1
 P= "DATA" CIn= 2 NBit= 4 StBit= 0 StConnBit= 0 PId= "118d02d4995" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d02d49a5" Fixed= 1
 P= "OUT" CIn= 1 NBit= 4 StBit= 0 StConnBit= 0 PId= "118d02d49b4" Fixed= -1
 P= "PL" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d02d4986" Fixed= -1
 P= "TC" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d02d49a5-0" Fixed= -1
 P= "UP" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d02d4976" Fixed= 0
 1 M= "ist.ac.simulador.modules.ModulePushButtons" Name= "C" NPorts= 1 Conf= "1@3" X= 80 Y= 232
 P= "OUT" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d03104c8-0" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleHexaDisplay" Name= "Hexa Display" NPorts= 1 Conf= "4@3" X= 480 Y= 232
 P= "IN" CIn= 1 NBit= 4 StBit= 0 StConnBit= 0 PId= "118d0322ae9-0" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleInput" Name= "Valor" NPorts= 1 Conf= "4@3" X= 80 Y= 296
 P= "OUT" CIn= 2 NBit= 4 StBit= 0 StConnBit= 0 PId= "118d04f9aec-0" Fixed= -1
Simula��es/Cap2/simula��o 2.11/contador-ripple.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 10 NC= 6
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection"
Name= "Cced9" NBits= 4 NSegments= 8
 Po= "118cd38f875" Pd= "118cd393436-0" Np= 4
 X= 331 Y= 303
 X= 347 Y= 303
 X= 347 Y= 463
 X= 821 Y= 463
 Po= "118cd39165d" Pd= "118cd393436-0" Np= 4
 X= 539 Y= 303
 X= 557 Y= 303
 X= 557 Y= 463
 X= 821 Y= 463
 Po= "118cd390110-0" Pd= "118cd393436-0" Np= 4
 X= 731 Y= 303
 X= 750 Y= 303
 X= 750 Y= 463
 X= 821 Y= 463
 Po= "118cd390ab5" Pd= "118cd393436-0" Np= 6
 X= 931 Y= 303
 X= 950 Y= 303
 X= 950 Y= 398
 X= 800 Y= 435
 X= 800 Y= 463
 X= 821 Y= 463
 Po= "118cd38f875" Pd= "118cd39eebc" Np= 6
 X= 331 Y= 303
 X= 347 Y= 303
 X= 347 Y= 279
 X= 195 Y= 231
 X= 195 Y= 199
 X= 221 Y= 199
 Po= "118cd39165d" Pd= "118cd39fa26" Np= 6
 X= 539 Y= 303
 X= 557 Y= 303
 X= 557 Y= 282
 X= 409 Y= 231
 X= 409 Y= 199
 X= 429 Y= 199
 Po= "118cd390110-0" Pd= "118cd3a05ed" Np= 6
 X= 731 Y= 303
 X= 750 Y= 303
 X= 750 Y= 284
 X= 593 Y= 226
 X= 593 Y= 199
 X= 613 Y= 199
 Po= "118cd390ab5" Pd= "118cd3a10bb" Np= 6
 X= 931 Y= 303
 X= 950 Y= 303
 X= 950 Y= 286
 X= 800 Y= 227
 X= 800 Y= 199
 X= 821 Y= 199
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cf01" NBits= 1 NSegments= 2
 Po= "118cd39161f" Pd= "118cd39ee9c-0" Np= 5
 X= 429 Y= 303
 X= 410 Y= 303
 X= 353 Y= 228
 X= 353 Y= 199
 X= 331 Y= 199
 Po= "118cd38f856-0" Pd= "118cd39ee9c-0" Np= 6
 X= 221 Y= 343
 X= 196 Y= 343
 X= 196 Y= 274
 X= 353 Y= 228
 X= 353 Y= 199
 X= 331 Y= 199
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ca235" NBits= 1 NSegments= 2
 Po= "118cd390100" Pd= "118cd39fa06-0" Np= 5
 X= 621 Y= 303
 X= 604 Y= 303
 X= 557 Y= 229
 X= 557 Y= 199
 X= 539 Y= 199
 Po= "118cd39fa06-0" Pd= "118cd3915ff-0" Np= 6
 X= 539 Y= 199
 X= 557 Y= 199
 X= 557 Y= 229
 X= 400 Y= 270
 X= 400 Y= 343
 X= 429 Y= 343
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cafe8" NBits= 1 NSegments= 2
 Po= "118cd390a67" Pd= "118cd3a05ce-0" Np= 5
 X= 821 Y= 303
 X= 807 Y= 303
 X= 742 Y= 219
 X= 742 Y= 199
 X= 723 Y= 199
 Po= "118cd3a05ce-0" Pd= "118cd3900f1-0" Np= 6
 X= 723 Y= 199
 X= 742 Y= 199
 X= 742 Y= 219
 X= 598 Y= 274
 X= 598 Y= 343
 X= 621 Y= 343
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "C61bf" NBits= 1 NSegments= 1
 Po= "118cd3a10ab-0" Pd= "118cd390a47-0" Np= 6
 X= 931 Y= 199
 X= 957 Y= 199
 X= 957 Y= 223
 X= 799 Y= 267
 X= 799 Y= 343
 X= 821 Y= 343
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "C7f83" NBits= 1 NSegments= 1
 Po= "11c26ab8b29-0" Pd= "118cd38f865" Np= 2
 X= 145 Y= 303
 X= 221 Y= 303
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Báscula 0" NPorts= 4 Conf= "1@10" X= 216 Y= 288
 P= "CLOCK" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd38f865" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd38f865-0" Fixed= 1
 P= "IN" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd38f856-0" Fixed= -1
 P= "OUT" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd38f875" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Báscula 2" NPorts= 4 Conf= "1@10" X= 616 Y= 288
 P= "CLOCK" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd390100" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd390110" Fixed= 1
 P= "IN" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd3900f1-0" Fixed= -1
 P= "OUT" CIn= 0 NBit= 1 StBit= 0 StConnBit= 2 PId= "118cd390110-0" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Báscula 3" NPorts= 4 Conf= "1@10" X= 816 Y= 288
 P= "CLOCK" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd390a67" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd390a86" Fixed= 1
 P= "IN" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd390a47-0" Fixed= -1
 P= "OUT" CIn= 0 NBit= 1 StBit= 0 StConnBit= 3 PId= "118cd390ab5" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Báscula 1" NPorts= 4 Conf= "1@10" X= 424 Y= 288
 P= "CLOCK" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd39161f" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd39164d" Fixed= 1
 P= "IN" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd3915ff-0" Fixed= -1
 P= "OUT" CIn= 0 NBit= 1 StBit= 0 StConnBit= 1 PId= "118cd39165d" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleHexaDisplay" Name= "Hexa Display" NPorts= 1 Conf= "4@3" X= 816 Y= 448
 P= "IN" CIn= 0 NBit= 4 StBit= 0 StConnBit= 0 PId= "118cd393436-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT" NPorts= 2 Conf= "1x1@3" X= 216 Y= 184
 P= "IN0" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd39eebc" Fixed= -1
 P= "OUT" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd39ee9c-0" Fixed= -1
 6 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT" NPorts= 2 Conf= "1x1@3" X= 424 Y= 184
 P= "IN0" CIn= 0 NBit= 1 StBit= 0 StConnBit= 1 PId= "118cd39fa26" Fixed= -1
 P= "OUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd39fa06-0" Fixed= -1
 7 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT" NPorts= 2 Conf= "1x1@3" X= 608 Y= 184
 P= "IN0" CIn= 0 NBit= 1 StBit= 0 StConnBit= 2 PId= "118cd3a05ed" Fixed= -1
 P= "OUT" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd3a05ce-0" Fixed= -1
 8 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT" NPorts= 2 Conf= "1x1@3" X= 816 Y= 184
 P= "IN0" CIn= 0 NBit= 1 StBit= 0 StConnBit= 3 PId= "118cd3a10bb" Fixed= -1
 P= "OUT" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cd3a10ab-0" Fixed= -1
 9 M= "ist.ac.simulador.modules.ModulePushButtons" Name= "C" NPorts= 1 Conf= "1@3" X= 40 Y= 288
 P= "OUT" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c26ab8b29-0" Fixed= -1
Simula��es/Cap2/simula��o 2.11/contador-rtc.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 4 NC= 4
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C6a2e" NBits= 4 NSegments= 1
 Po= "118d0322ae9-0" Pd= "118d02d49b4" Np= 2
 X= 485 Y= 247
 X= 395 Y= 247
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cffe4" NBits= 4 NSegments= 1
 Po= "118d04f9aec-0" Pd= "118d02d4995" Np= 4
 X= 185 Y= 311
 X= 219 Y= 311
 X= 219 Y= 267
 X= 285 Y= 267
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cf86e" NBits= 1 NSegments= 1
 Po= "118d02d49a5-0" Pd= "118d02d4986" Np= 6
 X= 395 Y= 267
 X= 426 Y= 267
 X= 426 Y= 397
 X= 258 Y= 397
 X= 258 Y= 307
 X= 285 Y= 307
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cc4c" NBits= 1 NSegments= 1
 Po= "118d05a7907-0" Pd= "118d02d4782-0" Np= 2
 X= 185 Y= 247
 X= 285 Y= 247
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleCounter" Name= "Counter" NPorts= 7 Conf= "4@10" X= 280 Y= 232
 P= "CLOCK" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d02d4782-0" Fixed= -1
 P= "DATA" CIn= 1 NBit= 4 StBit= 0 StConnBit= 0 PId= "118d02d4995" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d02d49a5" Fixed= 1
 P= "OUT" CIn= 0 NBit= 4 StBit= 0 StConnBit= 0 PId= "118d02d49b4" Fixed= -1
 P= "PL" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d02d4986" Fixed= -1
 P= "TC" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d02d49a5-0" Fixed= -1
 P= "UP" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d02d4976" Fixed= 0
 1 M= "ist.ac.simulador.modules.ModuleHexaDisplay" Name= "Hexa Display" NPorts= 1 Conf= "4@3" X= 480 Y= 232
P= "IN" CIn= 0 NBit= 4 StBit= 0 StConnBit= 0 PId= "118d0322ae9-0" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleInput" Name= "Valor" NPorts= 1 Conf= "4@3" X= 80 Y= 296
 P= "OUT" CIn= 1 NBit= 4 StBit= 0 StConnBit= 0 PId= "118d04f9aec-0" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleRTClock" Name= "RTClock" NPorts= 1 Conf= "1@1000" X= 80 Y= 232
 P= "OUT" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d05a7907-0" Fixed= -1
Simula��es/Cap2/simula��o 2.11/simula��o-2.11.doc
Guia de Laboratório
de
Arquitetura de Computadores
Simulação 2.11 – Contadores
1 – Objetivos
Esta simulação ilustra o funcionamento dos contadores com flip-flops D, com base nas figuras e exemplos da seção 2.6.5. Os aspectos abordados incluem os seguintes:
Verificação do comportamento do contador em seqüência (ripple) e da soma dos tempos de atraso (Figura 2.30);
Verificação do comportamento do contador da Figura 2.32 e do seu tempo de atraso em relação ao relógio;
Contagem crescente com carga paralela (Figura 2.34);
Contagem decrescente com carga paralela (Figura 2.35) e programação do período de contagem.
NOTA – Na descrição da simulação 2.11, no livro, onde está “Figura 2.33” devia estar “Figura 2.34” e onde está “Figura 2.34” devia estar “Figura 2.35”. Este erro está corrigido aqui e registrado na errata do livro.
2 – Contador com flip-flop D em seqüência (ripple)
Carregue o seguinte circuito do arquivo “contador-ripple.cmod”, que implementa o circuito da Figura 2.30. Note que os flip-flops (básculas) estão na ordem inversa, apenas para facilitar a ligação entre flip-flops no circuito, uma vez que os módulos têm sempre as entradas do lado esquerdo e as saídas do lado direito. Mas o circuito é o mesmo.
Passe para Simulação, clique em Start e abra as janelas do botão e do Mostrador de 7 segmentos. Verifique que, a cada vez que o botão vai de 0 para 1, o número no mostrador é incrementado.
Note também que às vezes o número parece piscar (embora em computadores rápidos quase nem se note) e que o tempo de simulação avança bastante (umas vezes mais, outras menos) a cada vez que o botão muda de valor.
Isso se deve à propagação dos vários sinais ao longo do circuito, que faz o mostrador passar por vários números intermediários (rápido demais para se ver, mas o suficiente para se notar o número piscando, na transição) até atingir o valor de equilíbrio. Estes atrasos são ilustrados na seqüência de sinais da Figura 2.30.
NOTA – Para este circuito funcionar, a saída de cada flip-flop (báscula) tem de se ligar a um bit diferente da ligação com o mostrador de 7 segmentos, pois esta ligação é de 4 bits. Isto está programado no próprio circuito e afeta os sinais OUT de cada flip-flop e os sinais IN0 de cada NOT.
3 – Contador binário
Carregue o seguinte circuito do arquivo “contador-binario.cmod”, que implementa o circuito da Figura 2.32. 
Passe para Simulação, clique em Start e abra as janelas do botão e do Mostrador de 7 segmentos. Verifique que, a cada vez que o botão vai de 0 para 1, o número no mostrador é incrementado.
Note que, ao contrário do contador em seqüência (ripple), o sinal de relógio (botão C) entra ao mesmo tempo em todos os flip-flops. Apesar de, a cada vez que o valor do botão muda de valor, o tempo de simulação também avança algumas unidades (devido ao tempo de propagação dos sinais através das portas lógicas), isso acontece enquanto os flip-flops estão estáveis (só mudam na transição do sinal C de 0 para 1), e estes mudam todos simultaneamente. Os tempos de atraso das portas lógicas acontecem após as mudanças de estado dos flip-flops e só têm influência na próxima transição do botão para 1. Desta forma, as transições do número no Mostrador de 7 segmentos evoluem de forma estável (sem nunca piscar) a cada vez que o botão passa de 0 para 1. 
NOTA – Para este circuito funcionar, a saída de cada flip-flop tem de se ligar a um bit diferente da ligação com o mostrador de 7 segmentos, pois esta ligação é de 4 bits. Isto está programado no próprio circuito e afeta não só os sinais OUT de cada flip-flop como todas as entradas dos módulos restantes que se ligam a eles.
4 – Contador crescente com carga paralela
Carregue o seguinte circuito do arquivo “contador-crescente.cmod”, que implementa o circuito da Figura 2.34, com a adição de um LED no sinal de carga paralela para melhor visualizar a ocorrência desta situação.
Passe para Simulação, clique em Start e abra as janelas do botão, do mostrador e do LED.
Verifique que, a cada vez que a saída do botão passa para 1, o mostrador conta uma unidade e que, quando este chega a 9, o LED fica aceso. No próximo clique, o mostrador passa para 0, devido à carga em paralelo do valor presente na entrada do contador (forçada a 0).
5 – Contador decrescente com período programável
Carregue o seguinte circuito do arquivo “contador-programavel.cmod”, que implementa o circuito da Figura 2.35, mas em que o módulo Contador do simulador já produz um sinal (TC – Terminal Count) que implementa o NOR, isto é, dá um impulso a 1 quando a contagem chega ao fim. O sinal UP está forçado a 0 para a contagem ser decrescente. 
A janela de entrada (valor) permite especificar o período de contagem.
Passe para Simulação, clique em Start e abra as janelas do botão C, da entrada Valor e do mostrador de 7 segmentos. Na janela de entrada, coloque 6 (como na Figura 2.35, ou outro valor à sua escolha) e clique em OK. Vá clicando no botão até o contador chegar a 0 (não se admire se o contador começar a contar num valor diferente daquele que você especificou em Valor, pois este só será lido quando o contador TC estiver ativo, e quando começa o contador ainda não está inicializado. Mas após a primeira iteração ele já fica certo). Verifique que, no próximo ciclo de relógio, o contador recomeça em 6 (ou no valor que constar na janela de entrada). 
Use agora o arquivo “contador-rtc.cmod” que, em vez de um botão, utiliza um relógio de tempo real (RTC), com período de 1 segundo. 
Faça como no caso anterior, mas, em vez da janela do botão, abra a janela do RTC e clique em Start nesta janela. 
O funcionamento do contador é agora automático, evoluindo a cada segundo. Experimente alterar o valor na janela de entrada (dando OK) e verifique que este não tem efeito imediato no valor do contador. Só quando o contador chega a 0 é que carrega o novo valor.
 
	5
Simula��es/Cap2/simula��o 2.12/deslocamento-carga.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 19 NC= 15
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cda2e" NBits= 1 NSegments= 2
 Po= "118d08baa79-0" Pd= "118d089c3a8" Np= 5
 X= 221 Y= 359
 X= 221 Y= 304
 X= 351 Y= 304
 X= 351 Y= 215
 X= 331 Y= 215
 Po= "118d08baa79-0" Pd= "118d0aede8e-0" Np= 3
 X= 221 Y= 359
 X= 221 Y= 475
 X= 269 Y= 475
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C2bcc" NBits= 1 NSegments= 2
 Po= "118d08bb249-0" Pd= "118d089cd7b" Np= 5
 X= 413 Y= 359
 X= 413 Y= 306
 X= 532 Y= 306
 X= 532 Y= 215
 X= 515 Y= 215
 Po= "118d08bb249-0" Pd= "118d0aee739" Np= 3
 X= 413 Y= 359
 X= 413 Y= 475
 X= 445 Y= 475
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "C5638" NBits= 1 NSegments= 2
 Po= "118d08bbb51-0" Pd= "118d089d77e" Np= 5
 X= 589 Y= 359
 X= 589 Y= 308
 X= 717 Y= 308
 X= 717 Y= 215
 X= 699 Y= 215
 Po= "118d08bbb51-0" Pd= "118d0aef802" Np= 3
 X= 589 Y= 359
 X= 589 Y= 475
 X= 629 Y= 475
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "C266e" NBits= 1 NSegments= 4
 Po= "118d08aea65-0" Pd= "118d089c369" Np= 4
 X= 145 Y= 135
 X= 189 Y= 135
 X= 189 Y= 215
 X= 221 Y= 215
 Po= "118d08aea65-0"
Pd= "118d089cd3d" Np= 4
 X= 145 Y= 135
 X= 378 Y= 135
 X= 378 Y= 215
 X= 405 Y= 215
 Po= "118d08aea65-0" Pd= "118d089d73f" Np= 4
 X= 145 Y= 135
 X= 564 Y= 135
 X= 564 Y= 215
 X= 589 Y= 215
 Po= "118d08aea65-0" Pd= "118d089e1fd" Np= 4
 X= 145 Y= 135
 X= 760 Y= 135
 X= 760 Y= 215
 X= 781 Y= 215
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "C15b7" NBits= 1 NSegments= 1
 Po= "118d08bcad2-0" Pd= "118d089e23c" Np= 5
 X= 781 Y= 359
 X= 781 Y= 310
 X= 908 Y= 310
 X= 908 Y= 215
 X= 891 Y= 215
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cb293" NBits= 1 NSegments= 1
 Po= "118d0aed622" Pd= "118d089c34a-0" Np= 3
 X= 187 Y= 455
 X= 187 Y= 255
 X= 221 Y= 255
 6 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cc2e0" NBits= 1 NSegments= 1
 Po= "118d0aede6f-0" Pd= "118d089cd1e-0" Np= 3
 X= 379 Y= 455
 X= 379 Y= 255
 X= 405 Y= 255
 7 C= "ist.ac.simulador.nucleo.SConnection" Name= "C898b" NBits= 1 NSegments= 1
 Po= "118d0aee71a-0" Pd= "118d089d720-0" Np= 3
 X= 555 Y= 455
 X= 555 Y= 255
 X= 589 Y= 255
 8 C= "ist.ac.simulador.nucleo.SConnection" Name= "C4e3e" NBits= 1 NSegments= 1
 Po= "118d0aef7e3-0" Pd= "118d089e1de-0" Np= 4
 X= 739 Y= 455
 X= 753 Y= 455
 X= 753 Y= 255
 X= 781 Y= 255
 9 C= "ist.ac.simulador.nucleo.SConnection" Name= "C6274" NBits= 1 NSegments= 4
 Po= "118d0b070d7-0" Pd= "118d0aed622-0" Np= 4
 X= 905 Y= 599
 X= 905 Y= 538
 X= 77 Y= 538
 X= 77 Y= 495
 Po= "118d0b070d7-0" Pd= "118d0aede7f" Np= 4
 X= 905 Y= 599
 X= 905 Y= 538
 X= 269 Y= 538
 X= 269 Y= 495
 Po= "118d0b070d7-0" Pd= "118d0aee72a" Np= 4
 X= 905 Y= 599
 X= 905 Y= 538
 X= 445 Y= 538
 X= 445 Y= 495
 Po= "118d0b070d7-0" Pd= "118d0aef7e3-1" Np= 4
 X= 905 Y= 599
 X= 905 Y= 538
 X= 629 Y= 538
 X= 629 Y= 495
 10 C= "ist.ac.simulador.nucleo.SConnection" Name= "C9ff0" NBits= 1 NSegments= 1
 Po= "118d0b11360-0" Pd= "118d0aed641" Np= 5
 X= 121 Y= 599
 X= 121 Y= 560
 X= 51 Y= 560
 X= 51 Y= 455
 X= 77 Y= 455
 11 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ce286" NBits= 1 NSegments= 1
 Po= "118d0b11bdc-0" Pd= "118d0aede8e" Np= 5
 X= 297 Y= 599
 X= 297 Y= 558
 X= 245 Y= 558
 X= 245 Y= 455
 X= 269 Y= 455
 12 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ce20b" NBits= 1 NSegments= 1
 Po= "118d0b124d5-0" Pd= "118d0aee72a-0" Np= 5
 X= 473 Y= 599
 X= 473 Y= 559
 X= 429 Y= 559
 X= 429 Y= 455
 X= 445 Y= 455
 13 C= "ist.ac.simulador.nucleo.SConnection" Name= "C814c" NBits= 1 NSegments= 1
 Po= "118d0b12ed7-0" Pd= "118d0aef7f2" Np= 5
 X= 657 Y= 599
 X= 657 Y= 563
 X= 608 Y= 563
 X= 608 Y= 455
 X= 629 Y= 455
 14 C= "ist.ac.simulador.nucleo.SConnection" Name= "C6a6e" NBits= 1 NSegments= 1
 Po= "118d0aed641-0" Pd= "118d08b1c14-0" Np= 5
 X= 77 Y= 475
 X= 34 Y= 475
 X= 34 Y= 354
 X= 145 Y= 354
 X= 145 Y= 255
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Báscula 3" NPorts= 4 Conf= "1@10" X= 216 Y= 200
 P= "CLOCK" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089c369" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089c388" Fixed= 1
 P= "IN" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089c34a-0" Fixed= -1
 P= "OUT" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089c3a8" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Báscula 2" NPorts= 4 Conf= "1@10" X= 400 Y= 200
 P= "CLOCK" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089cd3d" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089cd5c" Fixed= 1
 P= "IN" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089cd1e-0" Fixed= -1
 P= "OUT" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089cd7b" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Báscula 1" NPorts= 4 Conf= "1@10" X= 584 Y= 200
 P= "CLOCK" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089d73f" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089d75f" Fixed= 1
 P= "IN" CIn= 7 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089d720-0" Fixed= -1
 P= "OUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089d77e" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Báscula 0" NPorts= 4 Conf= "1@10" X= 776 Y= 200
 P= "CLOCK" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089e1fd" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089e21d" Fixed= 1
 P= "IN" CIn= 8 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089e1de-0" Fixed= -1
 P= "OUT" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089e23c" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModulePushButtons" Name= "C" NPorts= 1 Conf= "1@3" X= 40 Y= 120
 P= "OUT" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d08aea65-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "X" NPorts= 1 Conf= "1@3" X= 40 Y= 240
 P= "OUT" CIn= 14 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d08b1c14-0" Fixed= -1
 6 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Led 3" NPorts= 1 Conf= "1@3" X= 216 Y= 344
 P= "IN" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d08baa79-0" Fixed= -1
 7 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Led 2" NPorts= 1 Conf= "1@3" X= 408 Y= 344
 P= "IN" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d08bb249-0" Fixed= -1
 8 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Led 1" NPorts= 1 Conf= "1@3" X= 584 Y= 344
 P= "IN" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d08bbb51-0" Fixed= -1
 9 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Led 0" NPorts= 1 Conf= "1@3" X= 776 Y= 344
 P= "IN" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d08bcad2-0" Fixed= -1
 10 M= "ist.ac.simulador.modules.ModuleMux" Name= "Multiplexer" NPorts= 4 Conf= "2x1@10" X= 72 Y= 440
 P= "IN0" CIn= 10 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d0aed641" Fixed= -1
 P= "IN1" CIn= 14 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d0aed641-0" Fixed= -1
 P= "OUT" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d0aed622" Fixed= -1
 P= "SEL0" CIn= 9 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d0aed622-0" Fixed= -1
 11 M= "ist.ac.simulador.modules.ModuleMux" Name= "Multiplexer" NPorts= 4 Conf= "2x1@10" X= 264 Y= 440
 P= "IN0" CIn= 11 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d0aede8e" Fixed= -1
 P= "IN1" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d0aede8e-0" Fixed= -1
 P= "OUT" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d0aede6f-0" Fixed= -1
 P= "SEL0" CIn= 9 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d0aede7f" Fixed= -1
 12 M= "ist.ac.simulador.modules.ModuleMux" Name= "Multiplexer" NPorts= 4 Conf= "2x1@10" X= 440 Y= 440
 P= "IN0" CIn= 12 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d0aee72a-0" Fixed= -1
 P= "IN1" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d0aee739" Fixed= -1
 P= "OUT" CIn= 7 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d0aee71a-0" Fixed= -1
 P= "SEL0" CIn= 9 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d0aee72a" Fixed= -1
 13 M= "ist.ac.simulador.modules.ModuleMux" Name= "Multiplexer" NPorts= 4 Conf= "2x1@10" X= 624 Y= 440
 P= "IN0" CIn= 13 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d0aef7f2" Fixed= -1
 P= "IN1" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d0aef802" Fixed= -1
 P= "OUT" CIn= 8 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d0aef7e3-0" Fixed= -1
 P= "SEL0" CIn= 9 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d0aef7e3-1" Fixed= -1
 14 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "D" NPorts= 1 Conf= "1@3" X= 800 Y= 584
 P= "OUT" CIn= 9 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d0b070d7-0" Fixed= -1
 15
M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "Y3" NPorts= 1 Conf= "1@3" X= 16 Y= 584
 P= "OUT" CIn= 10 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d0b11360-0" Fixed= -1
 16 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "Y2" NPorts= 1 Conf= "1@3" X= 192 Y= 584
 P= "OUT" CIn= 11 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d0b11bdc-0" Fixed= -1
 17 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "Y1" NPorts= 1 Conf= "1@3" X= 368 Y= 584
 P= "OUT" CIn= 12 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d0b124d5-0" Fixed= -1
 18 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "Y0" NPorts= 1 Conf= "1@3" X= 552 Y= 584
 P= "OUT" CIn= 13 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d0b12ed7-0" Fixed= -1
Simula��es/Cap2/simula��o 2.12/deslocamento-direita.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 10 NC= 6
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cc0e3" NBits= 1 NSegments= 2
 Po= "118d089c3a8" Pd= "118d089cd1e-0" Np= 4
 X= 331 Y= 215
 X= 351 Y= 215
 X= 351 Y= 255
 X= 405 Y= 255
 Po= "118d08baa79-0" Pd= "118d089c3a8" Np= 5
 X= 221 Y= 359
 X= 221 Y= 304
 X= 351 Y= 304
 X= 351 Y= 215
 X= 331 Y= 215
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cc28e" NBits= 1 NSegments= 2
 Po= "118d089cd7b" Pd= "118d089d720-0" Np= 4
 X= 515 Y= 215
 X= 532 Y= 215
 X= 532 Y= 255
 X= 589 Y= 255
 Po= "118d08bb249-0" Pd= "118d089cd7b" Np= 5
 X= 413 Y= 359
 X= 413 Y= 306
 X= 532 Y= 306
 X= 532 Y= 215
 X= 515 Y= 215
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "C5c6" NBits= 1 NSegments= 2
 Po= "118d089d77e" Pd= "118d089e1de-0" Np= 4
 X= 699 Y= 215
 X= 717 Y= 215
 X= 717 Y= 255
 X= 781 Y= 255
 Po= "118d08bbb51-0" Pd= "118d089d77e" Np= 5
 X= 589 Y= 359
 X= 589 Y= 308
 X= 717 Y= 308
 X= 717 Y= 215
 X= 699 Y= 215
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cd5ff" NBits= 1 NSegments= 4
 Po= "118d08aea65-0" Pd= "118d089c369" Np= 4
 X= 145 Y= 135
 X= 189 Y= 135
 X= 189 Y= 215
 X= 221 Y= 215
 Po= "118d08aea65-0" Pd= "118d089cd3d" Np= 4
 X= 145 Y= 135
 X= 378 Y= 135
 X= 378 Y= 215
 X= 405 Y= 215
 Po= "118d08aea65-0" Pd= "118d089d73f" Np= 4
 X= 145 Y= 135
 X= 564 Y= 135
 X= 564 Y= 215
 X= 589 Y= 215
 Po= "118d08aea65-0" Pd= "118d089e1fd" Np= 4
 X= 145 Y= 135
 X= 760 Y= 135
 X= 760 Y= 215
 X= 781 Y= 215
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "C25f5" NBits= 1 NSegments= 1
 Po= "118d08b1c14-0" Pd= "118d089c34a-0" Np= 2
 X= 145 Y= 255
 X= 221 Y= 255
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "C56b" NBits= 1 NSegments= 1
 Po= "118d08bcad2-0" Pd= "118d089e23c" Np= 5
 X= 781 Y= 359
 X= 781 Y= 310
 X= 908 Y= 310
 X= 908 Y= 215
 X= 891 Y= 215
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Báscula 3" NPorts= 4 Conf= "1@10" X= 216 Y= 200
 P= "CLOCK" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089c369" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089c388" Fixed= 1
 P= "IN" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089c34a-0" Fixed= -1
 P= "OUT" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089c3a8" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Báscula 2" NPorts= 4 Conf= "1@10" X= 400 Y= 200
 P= "CLOCK" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089cd3d" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089cd5c" Fixed= 1
 P= "IN" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089cd1e-0" Fixed= -1
 P= "OUT" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089cd7b" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Báscula 1" NPorts= 4 Conf= "1@10" X= 584 Y= 200
 P= "CLOCK" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089d73f" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089d75f" Fixed= 1
 P= "IN" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089d720-0" Fixed= -1
 P= "OUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089d77e" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Báscula 0" NPorts= 4 Conf= "1@10" X= 776 Y= 200
 P= "CLOCK" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089e1fd" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089e21d" Fixed= 1
 P= "IN" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089e1de-0" Fixed= -1
 P= "OUT" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089e23c" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModulePushButtons" Name= "C" NPorts= 1 Conf= "1@3" X= 40 Y= 120
 P= "OUT" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d08aea65-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "X" NPorts= 1 Conf= "1@3" X= 40 Y= 240
 P= "OUT" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d08b1c14-0" Fixed= -1
 6 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Led 3" NPorts= 1 Conf= "1@3" X= 216 Y= 344
 P= "IN" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d08baa79-0" Fixed= -1
 7 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Led 2" NPorts= 1 Conf= "1@3" X= 408 Y= 344
 P= "IN" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d08bb249-0" Fixed= -1
 8 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Led 1" NPorts= 1 Conf= "1@3" X= 584 Y= 344
 P= "IN" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d08bbb51-0" Fixed= -1
 9 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Led 0" NPorts= 1 Conf= "1@3" X= 776 Y= 344
 P= "IN" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d08bcad2-0" Fixed= -1
Simula��es/Cap2/simula��o 2.12/deslocamento-esquerda.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 10 NC= 6
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C2cc0" NBits= 1 NSegments= 1
 Po= "118d08baa79-0" Pd= "118d089c3a8" Np= 5
 X= 221 Y= 359
 X= 221 Y= 304
 X= 351 Y= 304
 X= 351 Y= 215
 X= 331 Y= 215
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C8b0f" NBits= 1 NSegments= 2
 Po= "118d08bb249-0" Pd= "118d089cd7b" Np= 5
 X= 413 Y= 359
 X= 413 Y= 306
 X= 532 Y= 306
 X= 532 Y= 215
 X= 515 Y= 215
 Po= "118d089c34a-0" Pd= "118d089cd7b" Np= 5
 X= 221 Y= 255
 X= 162 Y= 255
 X= 162 Y= 185
 X= 515 Y= 185
 X= 515 Y= 215
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "C4392" NBits= 1 NSegments= 2
 Po= "118d08bbb51-0" Pd= "118d089d77e" Np= 5
 X= 589 Y= 359
 X= 589 Y= 308
 X= 717 Y= 308
 X= 717 Y= 215
 X= 699 Y= 215
 Po= "118d089cd1e-0" Pd= "118d089d77e" Np= 5
 X= 405 Y= 255
 X= 364 Y= 255
 X= 364 Y= 162
 X= 699 Y= 162
 X= 699 Y= 215
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cfe1b" NBits= 1 NSegments= 4
 Po= "118d08aea65-0" Pd= "118d089c369" Np= 4
 X= 145 Y= 135
 X= 189 Y= 135
 X= 189 Y= 215
 X= 221 Y= 215
 Po= "118d08aea65-0" Pd= "118d089cd3d" Np= 4
 X= 145 Y= 135
 X= 378 Y= 135
 X= 378 Y= 215
 X= 405 Y= 215
 Po= "118d08aea65-0" Pd= "118d089d73f" Np= 4
 X= 145 Y= 135
 X= 564 Y= 135
 X= 564 Y= 215
 X= 589 Y= 215
 Po= "118d08aea65-0" Pd= "118d089e1fd" Np= 4
 X= 145 Y= 135
 X= 760 Y= 135
 X= 760 Y= 215
 X= 781 Y= 215
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cbc7b" NBits= 1 NSegments= 2
 Po= "118d08bcad2-0" Pd= "118d089e23c" Np= 5
 X= 781 Y= 359
 X= 781 Y= 310
 X= 908 Y= 310
 X= 908 Y= 215
 X= 891
Y= 215
 Po= "118d089d720-0" Pd= "118d089e23c" Np= 5
 X= 589 Y= 255
 X= 549 Y= 255
 X= 549 Y= 112
 X= 891 Y= 112
 X= 891 Y= 215
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cc2fe" NBits= 1 NSegments= 1
 Po= "118d08b1c14-0" Pd= "118d089e1de-0" Np= 4
 X= 737 Y= 431
 X= 754 Y= 431
 X= 754 Y= 255
 X= 781 Y= 255
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Báscula 3" NPorts= 4 Conf= "1@10" X= 216 Y= 200
 P= "CLOCK" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089c369" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089c388" Fixed= 1
 P= "IN" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089c34a-0" Fixed= -1
 P= "OUT" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089c3a8" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Báscula 2" NPorts= 4 Conf= "1@10" X= 400 Y= 200
 P= "CLOCK" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089cd3d" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089cd5c" Fixed= 1
 P= "IN" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089cd1e-0" Fixed= -1
 P= "OUT" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089cd7b" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Báscula 1" NPorts= 4 Conf= "1@10" X= 584 Y= 200
 P= "CLOCK" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089d73f" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089d75f" Fixed= 1
 P= "IN" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089d720-0" Fixed= -1
 P= "OUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089d77e" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Báscula 0" NPorts= 4 Conf= "1@10" X= 776 Y= 200
 P= "CLOCK" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089e1fd" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089e21d" Fixed= 1
 P= "IN" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089e1de-0" Fixed= -1
 P= "OUT" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089e23c" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModulePushButtons" Name= "C" NPorts= 1 Conf= "1@3" X= 40 Y= 120
 P= "OUT" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d08aea65-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "X" NPorts= 1 Conf= "1@3" X= 632 Y= 416
 P= "OUT" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d08b1c14-0" Fixed= -1
 6 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Led 3" NPorts= 1 Conf= "1@3" X= 216 Y= 344
 P= "IN" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d08baa79-0" Fixed= -1
 7 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Led 2" NPorts= 1 Conf= "1@3" X= 408 Y= 344
 P= "IN" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d08bb249-0" Fixed= -1
 8 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Led 1" NPorts= 1 Conf= "1@3" X= 584 Y= 344
 P= "IN" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d08bbb51-0" Fixed= -1
 9 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Led 0" NPorts= 1 Conf= "1@3" X= 776 Y= 344
 P= "IN" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d08bcad2-0" Fixed= -1
Simula��es/Cap2/simula��o 2.12/rotacao-direita.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 9 NC= 5
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cc7da" NBits= 1 NSegments= 2
 Po= "118d089c3a8" Pd= "118d089cd1e-0" Np= 4
 X= 331 Y= 215
 X= 351 Y= 215
 X= 351 Y= 255
 X= 405 Y= 255
 Po= "118d08baa79-0" Pd= "118d089c3a8" Np= 5
 X= 221 Y= 359
 X= 221 Y= 304
 X= 351 Y= 304
 X= 351 Y= 215
 X= 331 Y= 215
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C76b9" NBits= 1 NSegments= 2
 Po= "118d089cd7b" Pd= "118d089d720-0" Np= 4
 X= 515 Y= 215
 X= 532 Y= 215
 X= 532 Y= 255
 X= 589 Y= 255
 Po= "118d08bb249-0" Pd= "118d089cd7b" Np= 5
 X= 413 Y= 359
 X= 413 Y= 306
 X= 532 Y= 306
 X= 532 Y= 215
 X= 515 Y= 215
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "C574a" NBits= 1 NSegments= 2
 Po= "118d089d77e" Pd= "118d089e1de-0" Np= 4
 X= 699 Y= 215
 X= 717 Y= 215
 X= 717 Y= 255
 X= 781 Y= 255
 Po= "118d08bbb51-0" Pd= "118d089d77e" Np= 5
 X= 589 Y= 359
 X= 589 Y= 308
 X= 717 Y= 308
 X= 717 Y= 215
 X= 699 Y= 215
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "C958b" NBits= 1 NSegments= 4
 Po= "118d08aea65-0" Pd= "118d089c369" Np= 4
 X= 145 Y= 135
 X= 189 Y= 135
 X= 189 Y= 215
 X= 221 Y= 215
 Po= "118d08aea65-0" Pd= "118d089cd3d" Np= 4
 X= 145 Y= 135
 X= 378 Y= 135
 X= 378 Y= 215
 X= 405 Y= 215
 Po= "118d08aea65-0" Pd= "118d089d73f" Np= 4
 X= 145 Y= 135
 X= 564 Y= 135
 X= 564 Y= 215
 X= 589 Y= 215
 Po= "118d08aea65-0" Pd= "118d089e1fd" Np= 4
 X= 145 Y= 135
 X= 760 Y= 135
 X= 760 Y= 215
 X= 781 Y= 215
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "C3275" NBits= 1 NSegments= 2
 Po= "118d08bcad2-0" Pd= "118d089e23c" Np= 5
 X= 781 Y= 359
 X= 781 Y= 310
 X= 908 Y= 310
 X= 908 Y= 215
 X= 891 Y= 215
 Po= "118d089c34a-0" Pd= "118d089e23c" Np= 5
 X= 221 Y= 255
 X= 159 Y= 255
 X= 159 Y= 171
 X= 891 Y= 171
 X= 891 Y= 215
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Báscula 3" NPorts= 4 Conf= "1@10" X= 216 Y= 200
 P= "CLOCK" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089c369" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089c388" Fixed= 1
 P= "IN" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089c34a-0" Fixed= -1
 P= "OUT" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089c3a8" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Báscula 2" NPorts= 4 Conf= "1@10" X= 400 Y= 200
 P= "CLOCK" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089cd3d" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089cd5c" Fixed= 1
 P= "IN" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089cd1e-0" Fixed= -1
 P= "OUT" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089cd7b" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Báscula 1" NPorts= 4 Conf= "1@10" X= 584 Y= 200
 P= "CLOCK" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089d73f" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089d75f" Fixed= 1
 P= "IN" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089d720-0" Fixed= -1
 P= "OUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089d77e" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Báscula 0" NPorts= 4 Conf= "1@10" X= 776 Y= 200
 P= "CLOCK" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089e1fd" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089e21d" Fixed= 1
 P= "IN" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089e1de-0" Fixed= -1
 P= "OUT" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d089e23c" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModulePushButtons" Name= "C" NPorts= 1 Conf= "1@3" X= 40 Y= 120
 P= "OUT" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d08aea65-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Led 3" NPorts= 1 Conf= "1@3" X= 216 Y= 344
 P= "IN" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d08baa79-0" Fixed= -1
 6 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Led 2" NPorts= 1 Conf= "1@3" X= 408 Y= 344
 P= "IN" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d08bb249-0" Fixed= -1
 7 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Led 1" NPorts= 1 Conf= "1@3" X= 584 Y= 344
 P= "IN" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0
PId= "118d08bbb51-0" Fixed= -1
 8 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Led 0" NPorts= 1 Conf= "1@3" X= 776 Y= 344
 P= "IN" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d08bcad2-0" Fixed= -1
Simula��es/Cap2/simula��o 2.12/simula��o-2.12.doc
Guia de Laboratório
de
Arquitetura de Computadores
Simulação 2.12 – Registradores de deslocamento
1 – Objetivos
Esta simulação ilustra o funcionamento dos registradores de deslocamento. Os aspectos abordados incluem os seguintes:
Deslocamento linear do registrador de deslocamento (Figura 2.36), para a esquerda e para a direita, incluindo os bits que entram e que se perdem;
Registrador de deslocamento com carga paralela (Figura 2.37);
Funcionamento da rotação.
2 – Registrador de deslocamento à direita
Carregue o seguinte circuito do arquivo “deslocamento-direita.cmod”, que implementa a Figura 2.36a. 
Passe para Simulação, clique em Start e abra as janelas do botão C (relógio das básculas), do interruptor X (dados) e dos quatro LEDs.
Clique no botão o número de vezes necessário para todos os LEDs ficarem apagados (inicialmente, as básculas (flip-flops) podem ter valores aleatórios).
Coloque 1 no interruptor X e pressione e solte o botão C. O LED 3 deve acender-se, pois este valor foi memorizado pela báscula 3. 
Coloque agora 0 no interruptor e vá dando impulsos de relógio com o botão C. Note o LED aceso se deslocando da posição 3 para a direita, até que todos os LEDs ficam apagados. Ou seja, os bits foram se deslocando para a direita.
Faça outras experiências, mudando o interruptor X para 0 e 1 entre impulsos de relógio, e verifique que os valores que vão entrando vão se deslocando para a direita.
3 – Registrador de deslocamento à esquerda
Carregue o seguinte circuito do arquivo “deslocamento-esquerda.cmod”, que implementa a Figura 2.36b. 
Passe para Simulação, clique em Start e abra as janelas do botão C (relógio das básculas), do interruptor X (dados) e dos quatro LEDs.
Clique no botão o número de vezes necessário para todos os LEDs ficarem apagados (inicialmente, as básculas (flip-flops) podem ter valores aleatórios).
Coloque 1 no interruptor X e pressione e solte o botão C. O LED 0 deve acender-se, pois este valor foi memorizado pela báscula 0. 
Coloque agora 0 no interruptor e vá dando impulsos de relógio com o botão C. Note o LED aceso se deslocando da posição 0 para a esquerda, até que todos os LEDs ficam apagados. Ou seja, os bits foram se deslocando para a esquerda.
Faça outras experiências, mudando o interruptor X para 0 e 1 entre impulsos de relógio, e verifique que os valores que vão entrando vão se deslocando para a esquerda.
4 – Registrador de deslocamento em rotação
Carregue o seguinte circuito do arquivo “rotacao-direita.cmod”, que implementa um registrador de deslocamento em rotação à direita, semelhante ao registrador da Figura 2.36a, mas em que a entrada da báscula 3 vem da saída da báscula 0. Desta forma, os bits que saem pela direita, durante o deslocamento, entram de novo pelo lado esquerdo.
Passe para Simulação, clique em Start e, a seguir, clique no botão sucessivamente. Você poderá verificar que os bits que estiverem com 1 vão circulando em rotação. Note que, neste circuito, não há hipótese de inicializar os flip-flops (básculas), em função do que os bits que aparecerem com 1 são aleatórios.
5 – Registrador de deslocamento com carga em paralelo
Carregue o seguinte circuito do arquivo “deslocamento-carga.cmod”, que implementa a Figura 2.37. 
Passe para Simulação, clique em Start e abra as janelas de controle do botão C, dos interruptores X, D e Y3 a Y0 e dos LEDs. Coloque um determinado valor (em binário) nos interruptores Y e D=1. Verifique que isto seleciona o deslocamento, clicando várias vezes no botão C e clicando no interruptor X.
Passe agora D para 0 e clique uma vez no botão. Os LEDs passam a refletir o estado dos interruptores Y. Se clicar mais vezes no botão C, nada acontece, a menos que se altere os interruptores Y, o que faz os flip-flops (básculas) memorizarem o novo valor.
Passe agora D para 1 novamente e observe o interruptor X. A cada vez que se clica no botão C, o valor nas básculas (flip-flops) se desloca de um bit para a direita, começando com o valor memorizado a partir dos interruptores Y, e o valor de X entra na báscula 3.
	4
Simula��es/Cap2/simula��o 2.13/microondas.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 13 NC= 11
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C79c8" NBits= 1 NSegments= 1
 Po= "118d11435ac-0" Pd= "118d113c4a2-0" Np= 4
 X= 307 Y= 335
 X= 327 Y= 335
 X= 327 Y= 299
 X= 365 Y= 299
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C57e2" NBits= 1 NSegments= 2
 Po= "118d1144106-0" Pd= "118d113c4a2" Np= 2
 X= 307 Y= 279
 X= 365 Y= 279
 Po= "118d1144106-0" Pd= "118d113cc15" Np= 4
 X= 307 Y= 279
 X= 344 Y= 279
 X= 344 Y= 439
 X= 373 Y= 439
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ce32c" NBits= 1 NSegments= 2
 Po= "118d11435cb" Pd= "118d113cc34" Np= 4
 X= 197 Y= 335
 X= 178 Y= 335
 X= 178 Y= 459
 X= 373 Y= 459
 Po= "118d1157957-0" Pd= "118d11435cb" Np= 2
 X= 153 Y= 335
 X= 197 Y= 335
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "C2d3a" NBits= 1 NSegments= 1
 Po= "118d1156e99-0" Pd= "118d1144125" Np= 2
 X= 153 Y= 279
 X= 197 Y= 279
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "C17ac" NBits= 1 NSegments= 1
 Po= "118d113cbe6-0" Pd= "118d112f01c-0" Np= 2
 X= 483 Y= 439
 X= 541 Y= 439
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cd567" NBits= 1 NSegments= 1
 Po= "118d113c493-0" Pd= "118d112e56e-0" Np= 2
 X= 475 Y= 279
 X= 541 Y= 279
 6 C= "ist.ac.simulador.nucleo.SConnection" Name= "C823c" NBits= 1 NSegments= 2
 Po= "118d1159480-0" Pd= "118d112e5ac" Np= 4
 X= 153 Y= 191
 X= 183 Y= 191
 X= 183 Y= 239
 X= 541 Y= 239
 Po= "118d1159480-0" Pd= "118d112f01c-1" Np= 6
 X= 153 Y= 191
 X= 183 Y= 191
 X= 183 Y= 239
 X= 509 Y= 239
 X= 509 Y= 399
 X= 541 Y= 399
 7 C= "ist.ac.simulador.nucleo.SConnection" Name= "C3f17" NBits= 1 NSegments= 1
 Po= "118d112e61a" Pd= "118d1136665-1" Np= 2
 X= 651 Y= 239
 X= 710 Y= 239
 8 C= "ist.ac.simulador.nucleo.SConnection" Name= "C4ab5" NBits= 1 NSegments= 2
 Po= "118d1136665-0" Pd= "118d1196e09-0" Np= 2
 X= 820 Y= 239
 X= 861 Y= 239
 Po= "118d1136665-0" Pd= "118d119e915" Np= 6
 X= 820 Y= 239
 X= 842 Y= 239
 X= 842 Y= 311
 X= 687 Y= 311
 X= 687 Y= 375
 X= 709 Y= 375
 9 C= "ist.ac.simulador.nucleo.SConnection" Name= "C1018" NBits= 1 NSegments= 1
 Po= "118d112f03b-0" Pd= "118d119e935" Np= 2
 X= 651 Y= 399
 X= 709 Y= 399
 10 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cf0a1" NBits= 1 NSegments= 1
 Po= "118d119e8f6-0" Pd= "118d119750e-0" Np= 2
 X= 819 Y= 375
 X= 861 Y= 375
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Báscula 0" NPorts= 4 Conf= "1@10" X= 536 Y= 224
 P= "CLOCK" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d112e5ac" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d112e5eb" Fixed= 1
 P= "IN" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d112e56e-0" Fixed= -1
 P= "OUT" CIn= 7 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d112e61a" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Báscula 1" NPorts= 4 Conf= "1@10" X= 536 Y= 384
 P= "CLOCK" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d112f01c-1" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d112f03b" Fixed= 1
 P= "IN" CIn= 4 NBit= 1 StBit=
0 StConnBit= 0 PId= "118d112f01c-0" Fixed= -1
 P= "OUT" CIn= 9 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d112f03b-0" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT" NPorts= 2 Conf= "1x1@3" X= 705 Y= 224
 P= "IN0" CIn= 7 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d1136665-1" Fixed= -1
 P= "OUT" CIn= 8 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d1136665-0" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleAND" Name= "AND" NPorts= 3 Conf= "2x1@3" X= 360 Y= 264
 P= "IN0" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d113c4a2" Fixed= -1
 P= "IN1" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d113c4a2-0" Fixed= -1
 P= "OUT" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d113c493-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleAND" Name= "AND" NPorts= 3 Conf= "2x1@3" X= 368 Y= 424
 P= "IN0" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d113cc15" Fixed= -1
 P= "IN1" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d113cc34" Fixed= -1
 P= "OUT" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d113cbe6-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT" NPorts= 2 Conf= "1x1@3" X= 192 Y= 320
 P= "IN0" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d11435cb" Fixed= -1
 P= "OUT" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d11435ac-0" Fixed= -1
 6 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT" NPorts= 2 Conf= "1x1@3" X= 192 Y= 264
 P= "IN0" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d1144125" Fixed= -1
 P= "OUT" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d1144106-0" Fixed= -1
 7 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "B" NPorts= 1 Conf= "1@3" X= 48 Y= 264
 P= "OUT" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d1156e99-0" Fixed= -1
 8 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "P" NPorts= 1 Conf= "1@3" X= 48 Y= 320
 P= "OUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d1157957-0" Fixed= -1
 9 M= "ist.ac.simulador.modules.ModulePushButtons" Name= "C" NPorts= 1 Conf= "1@3" X= 48 Y= 176
 P= "OUT" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d1159480-0" Fixed= -1
 10 M= "ist.ac.simulador.modules.ModuleLeds" Name= "L" NPorts= 1 Conf= "1@3" X= 856 Y= 224
 P= "IN" CIn= 8 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d1196e09-0" Fixed= -1
 11 M= "ist.ac.simulador.modules.ModuleLeds" Name= "M" NPorts= 1 Conf= "1@3" X= 856 Y= 360
 P= "IN" CIn= 10 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d119750e-0" Fixed= -1
 12 M= "ist.ac.simulador.modules.ModuleAND" Name= "AND" NPorts= 3 Conf= "2x1@3" X= 704 Y= 360
 P= "IN0" CIn= 8 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d119e915" Fixed= -1
 P= "IN1" CIn= 9 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d119e935" Fixed= -1
 P= "OUT" CIn= 10 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d119e8f6-0" Fixed= -1
Simula��es/Cap2/simula��o 2.13/simula��o-2.13.doc
Guia de Laboratório
de
Arquitetura de Computadores
Simulação 2.13 – Máquinas de estados simples
1 – Objetivos
Esta simulação ilustra o funcionamento da máquina de estados do controle do microondas, com o circuito da Figura 2.40. Os aspectos abordados incluem os seguintes:
Verificação do comportamento da máquina de estados, principalmente em relação à Figura 2.39 e à Tabela 2.11;
Demonstração de que uma atuação momentânea de uma variável de entrada, que não alcance uma transição do relógio, não é detectada pela máquina de estados.
2 – Funcionamento da máquina de estados
Carregue o seguinte circuito do arquivo “microondas.cmod”, que implementa a Figura 2.40. 
Passe para Simulação, clique em Start e abra as janelas do botão C (relógio das básculas), dos interruptores B e P e dos LEDs L e M.
Clique no botão uma vez e veja em que estado ficaram as básculas (inicialmente, as básculas (flip-flops) podem ter valores aleatórios). Veja na Tabela 2.11 o estado em que o circuito está e como pode se evoluir dele, colocando um valor adequado nas entradas B e P. Clique outra vez no botão C e verifique que as básculas (flip-flops) evoluíram para o estado pretendido. Verifique também o valor das saídas.
Com base na Tabela 2.11, verifique o funcionamento dos três estados da máquina de estados.
No estado Q1=1 e Q0=0, coloque B=0 e P=0. De acordo com a tabela, no próximo ciclo de relógio, o estado evoluirá para Q1=0 e Q0=1. Não clique no botão C. O estado das básculas não se altera, pois o sinal de relógio ainda não foi ativado. Coloque agora B=1 e P=1 e clique no botão C. O estado evolui para Q1=0 e Q0=0. Ou seja, a passagem de B e P pelos valores intermediários não tem influência. Apenas os valores existentes imediatamente antes da transição para 1 do sinal de relógio são levados em conta.
	2
Simula��es/Cap2/simula��o 2.14/semaforo-botao.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 10 NC= 5
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C8db5" NBits= 4 NSegments= 2
 Po= "118d13bb936" Pd= "118d13b239d" Np= 2
 X= 531 Y= 159
 X= 605 Y= 159
 Po= "118d1458ef9-0" Pd= "118d13bb936" Np= 4
 X= 605 Y= 79
 X= 559 Y= 79
 X= 559 Y= 159
 X= 531 Y= 159
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C94a1" NBits= 12 NSegments= 6
 Po= "118d13c4847-0" Pd= "118d13b23ad" Np= 4
 X= 845 Y= 103
 X= 782 Y= 103
 X= 782 Y= 159
 X= 715 Y= 159
 Po= "118d13c382a-0" Pd= "118d13b23ad" Np= 2
 X= 845 Y= 159
 X= 715 Y= 159
 Po= "118d13c5363-0" Pd= "118d13b23ad" Np= 4
 X= 845 Y= 215
 X= 809 Y= 215
 X= 809 Y= 159
 X= 715 Y= 159
 Po= "118d13b23ad" Pd= "118d1f8f7fd" Np= 5
 X= 715 Y= 159
 X= 715 Y= 123
 X= 228 Y= 123
 X= 228 Y= 219
 X= 269 Y= 219
 Po= "118d1f8f7de" Pd= "118d1f8f7fd" Np= 4
 X= 269 Y= 199
 X= 228 Y= 199
 X= 228 Y= 219
 X= 269 Y= 219
 Po= "118d201cc2e-0" Pd= "118d13b23ad" Np= 4
 X= 845 Y= 319
 X= 759 Y= 319
 X= 759 Y= 159
 X= 715 Y= 159
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ce24e" NBits= 1 NSegments= 1
 Po= "118d1fa3e96-0" Pd= "118d1f8f7ce" Np= 2
 X= 201 Y= 239
 X= 269 Y= 239
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cf46c" NBits= 1 NSegments= 1
 Po= "118d13c736e-0" Pd= "118d13bb8d8" Np= 4
 X= 353 Y= 55
 X= 385 Y= 55
 X= 385 Y= 159
 X= 421 Y= 159
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "C542f" NBits= 4 NSegments= 1
 Po= "118d1f8f7bf-0" Pd= "118d13bb89a-0" Np= 2
 X= 379 Y= 199
 X= 421 Y= 199
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModulePROMRd" Name= "PROM" NPorts= 3 Conf= "4x12@3" X= 600 Y= 144
 P= "ADDRESS" CIn= 0 NBit= 4 StBit= 0 StConnBit= 0 PId= "118d13b239d" Fixed= -1
 P= "DATA" CIn= 1 NBit= 12 StBit= 0 StConnBit= 0 PId= "118d13b23ad" Fixed= -1
 P= "RD" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d13b236e-0" Fixed= 0
 1 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Register-D" NPorts= 4 Conf= "4@10" X= 416 Y= 144
 P= "CLOCK" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d13bb8d8" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d13bb8f8" Fixed= 1
 P= "IN" CIn= 4 NBit= 4 StBit= 0 StConnBit= 0 PId= "118d13bb89a-0" Fixed= -1
 P= "OUT" CIn= 0 NBit= 4 StBit= 0 StConnBit= 0 PId= "118d13bb936" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Amarelo" NPorts= 1 Conf= "1@3" X= 840 Y= 144
 HIGHCOLOR= "Yellow" LOWCOLOR= "Black" ZCOLOR= "Grey" P= "IN" CIn= 1 NBit= 1 StBit= 0 StConnBit= 2 PId= "118d13c382a-0" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Vermelho" NPorts= 1 Conf= "1@3" X= 840 Y= 88
 HIGHCOLOR= "Red" LOWCOLOR= "Black" ZCOLOR= "Grey" P= "IN" CIn= 1 NBit= 1 StBit= 0 StConnBit= 1 PId= "118d13c4847-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleLeds"
Name= "Verde" NPorts= 1 Conf= "1@3" X= 840 Y= 200
 HIGHCOLOR= "Green" LOWCOLOR= "Black" ZCOLOR= "Grey" P= "IN" CIn= 1 NBit= 1 StBit= 0 StConnBit= 3 PId= "118d13c5363-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleRTClock" Name= "RTClock" NPorts= 1 Conf= "1@1000" X= 248 Y= 40
 P= "OUT" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d13c736e-0" Fixed= -1
 6 M= "ist.ac.simulador.modules.ModuleHexaDisplay" Name= "Hexa Display" NPorts= 1 Conf= "4@3" X= 600 Y= 64
 P= "IN" CIn= 0 NBit= 4 StBit= 0 StConnBit= 0 PId= "118d1458ef9-0" Fixed= -1
 7 M= "ist.ac.simulador.modules.ModuleMux" Name= "Multiplexer" NPorts= 4 Conf= "2x4@10" X= 264 Y= 184
 P= "IN0" CIn= 1 NBit= 4 StBit= 0 StConnBit= 8 PId= "118d1f8f7de" Fixed= -1
 P= "IN1" CIn= 1 NBit= 4 StBit= 0 StConnBit= 4 PId= "118d1f8f7fd" Fixed= -1
 P= "OUT" CIn= 4 NBit= 4 StBit= 0 StConnBit= 0 PId= "118d1f8f7bf-0" Fixed= -1
 P= "SEL0" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d1f8f7ce" Fixed= -1
 8 M= "ist.ac.simulador.modules.ModulePushButtons" Name= "Botão" NPorts= 1 Conf= "1@3" X= 96 Y= 224
 P= "OUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d1fa3e96-0" Fixed= -1
 9 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Semáforo peões" NPorts= 1 Conf= "1@3" X= 840 Y= 304
 HIGHCOLOR= "Red" LOWCOLOR= "Green" ZCOLOR= "Grey" P= "IN" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d201cc2e-0" Fixed= -1
Simula��es/Cap2/simula��o 2.14/semaforo-botao.dat
0 1e9
1 2f9
2 239
3 449
4 559
5 665
6 775
7 873
8 972
9 a72
a b72
b cc2
c dd3
d 3
e ff9
f 339
Simula��es/Cap2/simula��o 2.14/semaforo-pedestres.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 8 NC= 3
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cf353" NBits= 4 NSegments= 2
 Po= "118d13bb936" Pd= "118d13b239d" Np= 2
 X= 315 Y= 159
 X= 405 Y= 159
 Po= "118d1458ef9-0" Pd= "118d13bb936" Np= 4
 X= 405 Y= 79
 X= 359 Y= 79
 X= 359 Y= 159
 X= 315 Y= 159
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C54f4" NBits= 8 NSegments= 5
 Po= "118d13b23ad" Pd= "118d13bb89a-0" Np= 6
 X= 515 Y= 159
 X= 551 Y= 159
 X= 551 Y= 239
 X= 173 Y= 239
 X= 173 Y= 199
 X= 205 Y= 199
 Po= "118d13c4847-0" Pd= "118d13b23ad" Np= 4
 X= 645 Y= 103
 X= 582 Y= 103
 X= 582 Y= 159
 X= 515 Y= 159
 Po= "118d13c382a-0" Pd= "118d13b23ad" Np= 2
 X= 645 Y= 159
 X= 515 Y= 159
 Po= "118d13c5363-0" Pd= "118d13b23ad" Np= 4
 X= 645 Y= 215
 X= 609 Y= 215
 X= 609 Y= 159
 X= 515 Y= 159
 Po= "118d171784e-0" Pd= "118d13b23ad" Np= 4
 X= 645 Y= 303
 X= 551 Y= 303
 X= 551 Y= 159
 X= 515 Y= 159
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cab41" NBits= 1 NSegments= 1
 Po= "118d13c736e-0" Pd= "118d13bb8d8" Np= 2
 X= 145 Y= 159
 X= 205 Y= 159
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModulePROMRd" Name= "PROM" NPorts= 3 Conf= "4x8@3" X= 400 Y= 144
 P= "ADDRESS" CIn= 0 NBit= 4 StBit= 0 StConnBit= 0 PId= "118d13b239d" Fixed= -1
 P= "DATA" CIn= 1 NBit= 8 StBit= 0 StConnBit= 0 PId= "118d13b23ad" Fixed= -1
 P= "RD" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d13b236e-0" Fixed= 0
 1 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Register-D" NPorts= 4 Conf= "4@10" X= 200 Y= 144
 P= "CLOCK" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d13bb8d8" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d13bb8f8" Fixed= 1
 P= "IN" CIn= 1 NBit= 4 StBit= 0 StConnBit= 4 PId= "118d13bb89a-0" Fixed= -1
 P= "OUT" CIn= 0 NBit= 4 StBit= 0 StConnBit= 0 PId= "118d13bb936" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Amarelo" NPorts= 1 Conf= "1@3" X= 640 Y= 144
 HIGHCOLOR= "Yellow" LOWCOLOR= "Black" ZCOLOR= "Grey" P= "IN" CIn= 1 NBit= 1 StBit= 0 StConnBit= 2 PId= "118d13c382a-0" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Vermelho" NPorts= 1 Conf= "1@3" X= 640 Y= 88
 HIGHCOLOR= "Red" LOWCOLOR= "Black" ZCOLOR= "Grey" P= "IN" CIn= 1 NBit= 1 StBit= 0 StConnBit= 1 PId= "118d13c4847-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Verde" NPorts= 1 Conf= "1@3" X= 640 Y= 200
 HIGHCOLOR= "Green" LOWCOLOR= "Black" ZCOLOR= "Grey" P= "IN" CIn= 1 NBit= 1 StBit= 0 StConnBit= 3 PId= "118d13c5363-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleRTClock" Name= "RTClock" NPorts= 1 Conf= "1@1000" X= 40 Y= 144
 P= "OUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d13c736e-0" Fixed= -1
 6 M= "ist.ac.simulador.modules.ModuleHexaDisplay" Name= "Hexa Display" NPorts= 1 Conf= "4@3" X= 400 Y= 64
 P= "IN" CIn= 0 NBit= 4 StBit= 0 StConnBit= 0 PId= "118d1458ef9-0" Fixed= -1
 7 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Semáforo peões" NPorts= 1 Conf= "1@3" X= 640 Y= 288
 HIGHCOLOR= "Red" LOWCOLOR= "Green" ZCOLOR= "Grey" P= "IN" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d171784e-0" Fixed= -1
Simula��es/Cap2/simula��o 2.14/semaforo-pedestres.dat
0 19
1 29
2 39
3 49
4 59
5 65
6 75
7 83
8 92
9 a2
a b2
b c2
c d3
d 3
e 0
f 0
Simula��es/Cap2/simula��o 2.14/semaforo-simples.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 7 NC= 3
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ce0c1" NBits= 4 NSegments= 2
 Po= "118d13bb936" Pd= "118d13b239d" Np= 2
 X= 315 Y= 159
 X= 405 Y= 159
 Po= "118d1458ef9-0" Pd= "118d13bb936" Np= 4
 X= 405 Y= 79
 X= 359 Y= 79
 X= 359 Y= 159
 X= 315 Y= 159
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C6cc3" NBits= 7 NSegments= 4
 Po= "118d13b23ad" Pd= "118d13bb89a-0" Np= 6
 X= 515 Y= 159
 X= 551 Y= 159
 X= 551 Y= 239
 X= 173 Y= 239
 X= 173 Y= 199
 X= 205 Y= 199
 Po= "118d13c4847-0" Pd= "118d13b23ad" Np= 4
 X= 645 Y= 103
 X= 582 Y= 103
 X= 582 Y= 159
 X= 515 Y= 159
 Po= "118d13c382a-0" Pd= "118d13b23ad" Np= 2
 X= 645 Y= 159
 X= 515 Y= 159
 Po= "118d13c5363-0" Pd= "118d13b23ad" Np= 4
 X= 645 Y= 215
 X= 609 Y= 215
 X= 609 Y= 159
 X= 515 Y= 159
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cb0cf" NBits= 1 NSegments= 1
 Po= "118d13c736e-0" Pd= "118d13bb8d8" Np= 2
 X= 145 Y= 159
 X= 205 Y= 159
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModulePROMRd" Name= "PROM" NPorts= 3 Conf= "4x7@3" X= 400 Y= 144
 P= "ADDRESS" CIn= 0 NBit= 4 StBit= 0 StConnBit= 0 PId= "118d13b239d" Fixed= -1
 P= "DATA" CIn= 1 NBit= 7 StBit= 0 StConnBit= 0 PId= "118d13b23ad" Fixed= -1
 P= "RD" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d13b236e-0" Fixed= 0
 1 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Register-D" NPorts= 4 Conf= "4@10" X= 200 Y= 144
 P= "CLOCK" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d13bb8d8" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d13bb8f8" Fixed= 1
 P= "IN" CIn= 1 NBit= 4 StBit= 0 StConnBit= 3 PId= "118d13bb89a-0" Fixed= -1
 P= "OUT" CIn= 0 NBit= 4 StBit= 0 StConnBit= 0 PId= "118d13bb936" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Amarelo" NPorts= 1 Conf= "1@3" X= 640 Y= 144
 HIGHCOLOR= "Yellow" LOWCOLOR= "Black" ZCOLOR= "Grey" P= "IN" CIn= 1 NBit= 1 StBit= 0 StConnBit= 1 PId= "118d13c382a-0" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Vermelho" NPorts= 1 Conf= "1@3" X= 640 Y= 88
 HIGHCOLOR= "Red" LOWCOLOR= "Black" ZCOLOR= "Grey" P= "IN" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d13c4847-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Verde" NPorts= 1 Conf= "1@3" X= 640 Y= 200
 HIGHCOLOR= "Green" LOWCOLOR=
"Black" ZCOLOR= "Grey" P= "IN" CIn= 1 NBit= 1 StBit= 0 StConnBit= 2 PId= "118d13c5363-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleRTClock" Name= "RTClock" NPorts= 1 Conf= "1@1000" X= 40 Y= 144
 P= "OUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d13c736e-0" Fixed= -1
 6 M= "ist.ac.simulador.modules.ModuleHexaDisplay" Name= "Hexa Display" NPorts= 1 Conf= "4@3" X= 400 Y= 64
 P= "IN" CIn= 0 NBit= 4 StBit= 0 StConnBit= 0 PId= "118d1458ef9-0" Fixed= -1
Simula��es/Cap2/simula��o 2.14/semaforo-simples.dat
0 c
1 14
2 1c
3 24
4 2c
5 32
6 3a
7 41
8 49
9 51
a 59
b 61
c 69
d 1
e 0
f 0
Simula��es/Cap2/simula��o 2.14/simula��o-2.14.doc
Guia de Laboratório
de
Arquitetura de Computadores
Simulação 2.14 – Máquinas de estados microprogramadas
1 – Objetivos
Esta simulação ilustra o funcionamento das duas máquinas de estados do controle do semáforo, sem e com botão de pedestres, usando o circuito da Figura 2.44a. Os aspectos abordados incluem os seguintes:
Preenchimento da ROM;
Verificação do comportamento das máquinas de estados, principalmente em relação aos respectivos diagramas de estados;
Inclusão da saída adicional para um semáforo de pedestres e reprogramação da ROM para esse fim.
2 – Máquina de estados com semáforo simples
Carregue o seguinte circuito do arquivo “semaforo-simples.cmod”, que implementa o circuito da Figura 2.43, com as saídas ligadas a três LEDs que simulam um semáforo. O mostrador de 7 segmentos é auxiliar e destina-se a visualizar o estado corrente do registrador (de 4 bits) da máquina de estados.
Passe para Simulação, clique em Start e abra as janelas de controle do RTC (relógio de tempo real), da PROM, do mostrador de 7 segmentos e dos três LEDs.
Na PROM, carregue o arquivo “semaforo-simples.dat”, que já contém os dados da Tabela 2.14 que implementa o semáforo simples.
Clique em Start do RTC e verifique a evolução dos estados da máquina de estados e dos LEDs, simulando a seqüência de um semáforo real. A temporização de uma cor depende do número de estados em que essa cor se mantém (o relógio tem um período de 1 segundo).
3 – Máquina de estados com semáforo de pedestres
A tabela seguinte é semelhante à Tabela 2.14, mas com mais uma saída para ser ligada a um semáforo de pedestres (vermelho=1, verde=0). Note que, tal como nos semáforos verdadeiros, o verde no semáforo dos pedestres surge apenas 1 segundo depois de o semáforo para carros ficar verde e o vermelho surge 2 segundos antes de o semáforo de carros passar a verde.
		Endereço
		Palavra da ROM
(4 bits do estado seguinte +
4 bits das saídas)
		0000
		00011001
		0001
		00101001
		0010
		00111001
		0011
		01001001
		0100
		01011001
		0101
		01100101
		0110
		01110101
		0111
		10000011
		1000
		10010010
		1001
		10100010
		1010
		10110010
		1011
		11000010
		1100
		11010011
		1101
		00000011
		1110
		XXXXXXX
		1111
		XXXXXXX
Carregue o seguinte circuito do arquivo “semaforo-pedestres.cmod”, que implementa o circuito anterior com mais o semáforo de pedestres.
Passe para Simulação, clique em Start e abra as janelas de controle do RTC (relógio de tempo real), da PROM, do mostrador de 7 segmentos e dos quatro LEDs.
Na PROM, carregue o arquivo “semaforo-pedestres.dat”, que já contém os dados da Tabela 2.14 modificada, como indicado anteriormente.
Clique em Start do RTC e verifique a evolução dos estados da máquina de estados e dos LEDs, simulando a seqüência de um semáforo real, incluindo semáforo de pedestres..
4 – Máquina de estados com semáforo com botão de pedestres
Carregue o seguinte circuito do arquivo “semaforo-botao.cmod”, que implementa o circuito da Figura 2.44a, com a máquina de estados contida na Tabela 2.13, a que se acrescentou um bit para o semáforo de pedestres, tal como no exemplo anterior, ilustrado na tabela seguinte.
		Estados
		Saídas (no estado atual)
		Nº 
		Nome
		Atual
		Seguinte
		Verde
		Amarelo
		Vermelho
		Semáforo pedestres
		
		
		
		Botão=0
		Botão=1
		
		
		
		
		0
		Verde1
		0000
		0001
		1110
		1
		0
		0
		1
		1
		Verde2
		0001
		0010
		1111
		1
		0
		0
		1
		2
		Verde3
		0010
		0010
		0011
		1
		0
		0
		1
		3
		Verde4
		0011
		0100
		0100
		1
		0
		0
		1
		4
		Verde5
		0100
		0101
		0101
		1
		0
		0
		1
		5
		Amarelo1
		0101
		0110
		0110
		0
		1
		0
		1
		6
		Amarelo2
		0110
		0111
		0111
		0
		1
		0
		1
		7
		Vermelho1
		0111
		1000
		0111
		0
		0
		1
		1
		8
		Vermelho2
		1000
		1001
		0111
		0
		0
		1
		0
		9
		Vermelho3
		1001
		1010
		0111
		0
		0
		1
		0
		10
		Vermelho4
		1010
		1011
		0111
		0
		0
		1
		0
		11
		Vermelho5
		1011
		1100
		1100
		0
		0
		1
		0
		12
		Vermelho6
		1100
		1101
		1101
		0
		0
		1
		1
		13
		Vermelho7
		1101
		0000
		0000
		0
		0
		1
		1
		14
		Botão1
		1110
		1111
		1111
		1
		0
		0
		1
		15
		Botão2
		1111
		0011
		0011
		1
		0
		0
		1
Este exemplo ilustra assim uma máquina de estados com uma variável de entrada, neste caso um semáforo com um botão para os pedestres pedirem para atravessar a rua (com vermelho para os carros). A Figura 2.42 descreve o diagrama de estados.
Passe para Simulação, clique em Start e abra as janelas de controle do RTC (relógio de tempo real), da PROM, do mostrador de 7 segmentos e dos quatro LEDs.
Na PROM, carregue o arquivo “semaforo-botao.dat”, que já contém os dados desta tabela.
Clique no Start do RTC e verifique a evolução dos estados da máquina de estados e dos LEDs, simulando a seqüência de um semáforo real, incluindo botão e semáforo de pedestres. Como o registrador não tem inicialização do estado inicial com 0, é natural que na primeira vez que se liga comece no meio da seqüência de estados e dê a volta, mas depois disso permanece no estado 2 até que se clique no botão.
Pode-se notar que um toque rápido no botão pode não ter efeito. O botão tem de estar pressionado quando o relógio transitar de 0 para 1.
	� PAGE �4�
Simula��es/Cap2/simula��o 2.15/simula��o-2.15.doc
Guia de Laboratório
de
Arquitetura de Computadores
Simulação 2.15 – Soma e subtração
1 – Objetivos
Esta simulação ilustra o funcionamento do somador/subtrator da Figura 2.51, com 4 bits, tomando como base um somador elementar de 1 bit (Figura 2.49a). Os aspectos abordados incluem os seguintes:
Verificação da tabela verdade do somador elementar (Tabela 2.24);
Verificação do comportamento do somador em complemento de 2 (com números positivos e negativos);
Utilização do somador como subtrator, em complemento de 2 (com números positivos e negativos);
Detecção da condição de estouro.
2 – Somador de 1 bit
O arquivo “somador1bit.cmod” implementa o circuito da Figura 2.49a. Os botões e os LEDs são de 1 bit.
Carregue este arquivo e inicie a simulação. Abra os painéis de controle dos botões Cin, X e Y e dos LEDs Cout e S. 
Percorrendo as várias combinações dos valores dos botões, verifique que o circuito implementa a Tabela 2.24. Por exemplo, com X=Y=1 e Cin=0, o resultado é Cout=1 e S=0 (ou seja, 10 em binário, ou 0 e vai 1).
 
 
3 – Somador de 4 bits
O arquivo “somador4bits.cmod” implementa o circuito da Figura
2.51. Os elementos estão noutra disposição, vertical, mas o circuito é o mesmo.
Os botões X e Y e os LEDs S são de 4 bits.
Carregue este arquivo e inicie a simulação. Abra os painéis de controle dos botões X, Y e F e dos LEDs S e Excesso (estouro). 
Coloque vários números em X e Y (com F com zero) e veja que no LED S aparece o resultado. Por exemplo, com X=3 e Y=4, o resultado é 7.
 
Mas, se com estes valores se fizer F=1, o somador passa a subtrator e faz S = X – Y = -1 (o que em complemento de 2 corresponde a todos os bits com 1, ou todos os LEDs acesos) .
 
Em complemento de 2 com 4 bits, os números que se pode representar variam de -8 a +7. Se voltarmos a colocar F=0 (somador) e, por exemplo, colocarmos Y=6, o resultado daria +9, mas não se consegue representar isso com 4 bits. O resultado em S fica incorreto. Até parece que em S está 9 (1001), mas o problema é que essa representação, em complemento de 2, é negativa. O LED Excesso (estouro) fica aceso, assinalando essa situação.
 
	3
Simula��es/Cap2/simula��o 2.15/somador1bit.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 6 NC= 5
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C3512" NBits= 1 NSegments= 1
 Po= "118d59e9e65" Pd= "118d59ed16b-0" Np= 2
 X= 491 Y= 351
 X= 557 Y= 351
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C1dd5" NBits= 1 NSegments= 1
 Po= "118d5a093dc-0" Pd= "118d59e9e16-0" Np= 2
 X= 265 Y= 391
 X= 381 Y= 371
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "C4bae" NBits= 1 NSegments= 1
 Po= "118d5a09b0f-0" Pd= "118d59e9e36" Np= 2
 X= 265 Y= 471
 X= 381 Y= 391
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ce0c0" NBits= 1 NSegments= 1
 Po= "118d5a0a531-0" Pd= "118d59e9e45" Np= 2
 X= 617 Y= 473
 X= 491 Y= 371
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "C606d" NBits= 1 NSegments= 1
 Po= "118d59eac01-0" Pd= "118d59e9e55" Np= 2
 X= 289 Y= 319
 X= 381 Y= 351
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleADD" Name= "Somador" NPorts= 5 Conf= "1@10" X= 376 Y= 336
 P= "CIN" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d59e9e55" Fixed= -1
 P= "COUT" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d59e9e65" Fixed= -1
 P= "IN0" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d59e9e16-0" Fixed= -1
 P= "IN1" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d59e9e36" Fixed= -1
 P= "OUT" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d59e9e45" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "Cin" NPorts= 1 Conf= "1@3" X= 184 Y= 304
 P= "OUT" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d59eac01-0" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Cout" NPorts= 1 Conf= "1@3" X= 552 Y= 336
 HIGHCOLOR= "Red" LOWCOLOR= "Black" ZCOLOR= "Grey" P= "IN" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d59ed16b-0" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "X" NPorts= 1 Conf= "1@3" X= 160 Y= 376
 P= "OUT" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5a093dc-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "Y" NPorts= 1 Conf= "1@3" X= 160 Y= 456
 P= "OUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5a09b0f-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleLeds" Name= "S" NPorts= 1 Conf= "1@3" X= 612 Y= 458
 HIGHCOLOR= "Red" LOWCOLOR= "Black" ZCOLOR= "Grey" P= "IN" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5a0a531-0" Fixed= -1
Simula��es/Cap2/simula��o 2.15/somador4bits.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 14 NC= 13
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C41cc" NBits= 4 NSegments= 4
 Po= "118d5a9850b-0" Pd= "118d5a90099-0" Np= 4
 X= 145 Y= 223
 X= 392 Y= 223
 X= 392 Y= 131
 X= 437 Y= 131
 Po= "118d5a9850b-0" Pd= "118d5a9082a-0" Np= 4
 X= 145 Y= 223
 X= 392 Y= 223
 X= 392 Y= 259
 X= 437 Y= 259
 Po= "118d5a9850b-0" Pd= "118d5a8f946-0" Np= 4
 X= 145 Y= 223
 X= 392 Y= 223
 X= 392 Y= 387
 X= 437 Y= 387
 Po= "118d5a9850b-0" Pd= "118d5a8efc0-0" Np= 4
 X= 145 Y= 223
 X= 392 Y= 223
 X= 392 Y= 515
 X= 437 Y= 515
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ca684" NBits= 1 NSegments= 1
 Po= "118d5a8f04d" Pd= "118d5a8f965" Np= 6
 X= 547 Y= 495
 X= 562 Y= 495
 X= 562 Y= 448
 X= 414 Y= 448
 X= 414 Y= 367
 X= 437 Y= 367
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ca118" NBits= 1 NSegments= 1
 Po= "118d5a8f974" Pd= "118d5a90888" Np= 6
 X= 547 Y= 367
 X= 556 Y= 367
 X= 556 Y= 324
 X= 416 Y= 324
 X= 416 Y= 239
 X= 437 Y= 239
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ce6b4" NBits= 1 NSegments= 2
 Po= "118d5a908a7" Pd= "118d5a90106" Np= 6
 X= 547 Y= 239
 X= 567 Y= 239
 X= 567 Y= 193
 X= 414 Y= 193
 X= 414 Y= 111
 X= 437 Y= 111
 Po= "118d5c47807" Pd= "118d5a908a7" Np= 4
 X= 661 Y= 203
 X= 614 Y= 203
 X= 614 Y= 239
 X= 547 Y= 239
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "C9d92" NBits= 1 NSegments= 5
 Po= "118d5a990e2-0" Pd= "118d5a8f02d" Np= 4
 X= 145 Y= 455
 X= 220 Y= 455
 X= 220 Y= 495
 X= 437 Y= 495
 Po= "118d5a990e2-0" Pd= "118d5c459b2" Np= 4
 X= 145 Y= 455
 X= 220 Y= 455
 X= 220 Y= 171
 X= 253 Y= 171
 Po= "118d5a990e2-0" Pd= "118d5c46981" Np= 4
 X= 145 Y= 455
 X= 220 Y= 455
 X= 220 Y= 299
 X= 253 Y= 299
 Po= "118d5a990e2-0" Pd= "118d5c4625d" Np= 4
 X= 145 Y= 455
 X= 220 Y= 455
 X= 220 Y= 427
 X= 253 Y= 427
 Po= "118d5a990e2-0" Pd= "118d5c470f3" Np= 4
 X= 145 Y= 455
 X= 220 Y= 455
 X= 220 Y= 555
 X= 253 Y= 555
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "C9624" NBits= 4 NSegments= 4
 Po= "118d5a900d7" Pd= "118d5a9ceb6-0" Np= 4
 X= 547 Y= 131
 X= 583 Y= 131
 X= 583 Y= 327
 X= 661 Y= 327
 Po= "118d5a90859" Pd= "118d5a9ceb6-0" Np= 4
 X= 547 Y= 259
 X= 583 Y= 259
 X= 583 Y= 327
 X= 661 Y= 327
 Po= "118d5a8f955" Pd= "118d5a9ceb6-0" Np= 4
 X= 547 Y= 387
 X= 583 Y= 387
 X= 583 Y= 327
 X= 661 Y= 327
 Po= "118d5a8f00e" Pd= "118d5a9ceb6-0" Np= 4
 X= 547 Y= 515
 X= 583 Y= 515
 X= 583 Y= 327
 X= 661 Y= 327
 6 C= "ist.ac.simulador.nucleo.SConnection" Name= "C3138" NBits= 1 NSegments= 1
 Po= "118d5c4620e-0" Pd= "118d5a8f946-1" Np= 2
 X= 363 Y= 407
 X= 437 Y= 407
 7 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cc38f" NBits= 1 NSegments= 1
 Po= "118d5c470a5-0" Pd= "118d5a8efef" Np= 2
 X= 363 Y= 535
 X= 437 Y= 535
 8 C= "ist.ac.simulador.nucleo.SConnection" Name= "C675" NBits= 1 NSegments= 1
 Po= "118d5c46952-0" Pd= "118d5a9083a" Np= 2
 X= 363 Y= 279
 X= 437 Y= 279
 9 C= "ist.ac.simulador.nucleo.SConnection" Name= "C59e1" NBits= 1 NSegments= 1
 Po= "118d5c45993-0" Pd= "118d5a900b8" Np= 2
 X= 363 Y= 151
 X= 437 Y= 151
 10 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ca6e0" NBits= 4 NSegments= 4
 Po= "118d5a97684-0" Pd= "118d5c470d4" Np= 4
 X= 145 Y= 359
 X= 185 Y= 359
 X= 185 Y= 535
 X= 253 Y= 535
 Po= "118d5a97684-0" Pd= "118d5c4623d" Np= 4
 X= 145 Y= 359
 X= 185 Y= 359
 X= 185 Y= 407
 X= 253 Y= 407
 Po= "118d5a97684-0" Pd= "118d5c46971" Np= 4
 X= 145 Y= 359
 X= 185 Y= 359
 X= 185 Y= 279
 X= 253 Y= 279
 Po= "118d5a97684-0" Pd= "118d5c459a2" Np= 4
 X= 145 Y= 359
 X= 185 Y= 359
X= 185 Y= 151
 X= 253 Y= 151
 11 C= "ist.ac.simulador.nucleo.SConnection" Name= "C74ef" NBits= 1 NSegments= 1
 Po= "118d5c477f8" Pd= "118d5a90125" Np= 4
 X= 661 Y= 183
 X= 613 Y= 183
 X= 613 Y= 111
 X= 547 Y= 111
 12 C= "ist.ac.simulador.nucleo.SConnection" Name= "C4d19" NBits= 1 NSegments= 1
 Po= "118d5c477d9-0" Pd= "118d5a9c5dd-0" Np= 2
 X= 771 Y= 183
 X= 813 Y= 183
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleADD" Name= "Somador 0" NPorts= 5 Conf= "1@10" X= 432 Y= 480
 P= "CIN" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5a8f02d" Fixed= -1
 P= "COUT" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5a8f04d" Fixed= -1
 P= "IN0" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5a8efc0-0" Fixed= -1
 P= "IN1" CIn= 7 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5a8efef" Fixed= -1
 P= "OUT" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5a8f00e" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleADD" Name= "Somador 1" NPorts= 5 Conf= "1@10" X= 432 Y= 352
 P= "CIN" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5a8f965" Fixed= -1
 P= "COUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5a8f974" Fixed= -1
 P= "IN0" CIn= 0 NBit= 1 StBit= 0 StConnBit= 1 PId= "118d5a8f946-0" Fixed= -1
 P= "IN1" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5a8f946-1" Fixed= -1
 P= "OUT" CIn= 5 NBit= 1 StBit= 0 StConnBit= 1 PId= "118d5a8f955" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleADD" Name= "Somador 3" NPorts= 5 Conf= "1@10" X= 432 Y= 96
 P= "CIN" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5a90106" Fixed= -1
 P= "COUT" CIn= 11 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5a90125" Fixed= -1
 P= "IN0" CIn= 0 NBit= 1 StBit= 0 StConnBit= 3 PId= "118d5a90099-0" Fixed= -1
 P= "IN1" CIn= 9 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5a900b8" Fixed= -1
 P= "OUT" CIn= 5 NBit= 1 StBit= 0 StConnBit= 3 PId= "118d5a900d7" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleADD" Name= "Somador 2" NPorts= 5 Conf= "1@10" X= 432 Y= 224
 P= "CIN" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5a90888" Fixed= -1
 P= "COUT" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5a908a7" Fixed= -1
 P= "IN0" CIn= 0 NBit= 1 StBit= 0 StConnBit= 2 PId= "118d5a9082a-0" Fixed= -1
 P= "IN1" CIn= 8 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5a9083a" Fixed= -1
 P= "OUT" CIn= 5 NBit= 1 StBit= 0 StConnBit= 2 PId= "118d5a90859" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "Y" NPorts= 1 Conf= "4@3" X= 40 Y= 344
 P= "OUT" CIn= 10 NBit= 4 StBit= 0 StConnBit= 0 PId= "118d5a97684-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "X" NPorts= 1 Conf= "4@3" X= 40 Y= 208
 P= "OUT" CIn= 0 NBit= 4 StBit= 0 StConnBit= 0 PId= "118d5a9850b-0" Fixed= -1
 6 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "F" NPorts= 1 Conf= "1@3" X= 40 Y= 440
 P= "OUT" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5a990e2-0" Fixed= -1
 7 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Excesso" NPorts= 1 Conf= "1@3" X= 808 Y= 168
 P= "IN" CIn= 12 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5a9c5dd-0" Fixed= -1
 8 M= "ist.ac.simulador.modules.ModuleLeds" Name= "S" NPorts= 1 Conf= "4@3" X= 656 Y= 312
 P= "IN" CIn= 5 NBit= 4 StBit= 0 StConnBit= 0 PId= "118d5a9ceb6-0" Fixed= -1
 9 M= "ist.ac.simulador.modules.ModuleXOR" Name= "XOR" NPorts= 3 Conf= "2x1@3" X= 248 Y= 136
 P= "IN0" CIn= 10 NBit= 1 StBit= 0 StConnBit= 3 PId= "118d5c459a2" Fixed= -1
 P= "IN1" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5c459b2" Fixed= -1
 P= "OUT" CIn= 9 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5c45993-0" Fixed= -1
 10 M= "ist.ac.simulador.modules.ModuleXOR" Name= "XOR" NPorts= 3 Conf= "2x1@3" X= 248 Y= 392
 P= "IN0" CIn= 10 NBit= 1 StBit= 0 StConnBit= 1 PId= "118d5c4623d" Fixed= -1
 P= "IN1" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5c4625d" Fixed= -1
 P= "OUT" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5c4620e-0" Fixed= -1
 11 M= "ist.ac.simulador.modules.ModuleXOR" Name= "XOR" NPorts= 3 Conf= "2x1@3" X= 248 Y= 264
 P= "IN0" CIn= 10 NBit= 1 StBit= 0 StConnBit= 2 PId= "118d5c46971" Fixed= -1
 P= "IN1" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5c46981" Fixed= -1
 P= "OUT" CIn= 8 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5c46952-0" Fixed= -1
 12 M= "ist.ac.simulador.modules.ModuleXOR" Name= "XOR" NPorts= 3 Conf= "2x1@3" X= 248 Y= 520
 P= "IN0" CIn= 10 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5c470d4" Fixed= -1
 P= "IN1" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5c470f3" Fixed= -1
 P= "OUT" CIn= 7 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5c470a5-0" Fixed= -1
 13 M= "ist.ac.simulador.modules.ModuleXOR" Name= "XOR" NPorts= 3 Conf= "2x1@3" X= 656 Y= 168
 P= "IN0" CIn= 11 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5c477f8" Fixed= -1
 P= "IN1" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5c47807" Fixed= -1
 P= "OUT" CIn= 12 NBit= 1 StBit= 0 StConnBit= 0 PId= "118d5c477d9-0" Fixed= -1
Simula��es/Cap2/simula��o 2.2/fig2-8.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 19 NC= 17
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ce959" NBits= 1 NSegments= 2
 Po= "118bb9364c3-0" Pd= "118bb92b345" Np= 2
 X= 347 Y= 343
 X= 517 Y= 343
 Po= "118bb937676" Pd= "118bb9364c3-0" Np= 4
 X= 517 Y= 439
 X= 491 Y= 439
 X= 491 Y= 343
 X= 347 Y= 343
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C8615" NBits= 1 NSegments= 1
 Po= "118bb920a63-0" Pd= "118bb921550" Np= 5
 X= 819 Y= 119
 X= 838 Y= 119
 X= 838 Y= 223
 X= 709 Y= 223
 X= 709 Y= 263
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "C244" NBits= 1 NSegments= 1
 Po= "118bb921531-0" Pd= "118bb95aed2-0" Np= 2
 X= 819 Y= 263
 X= 869 Y= 263
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "C4e74" NBits= 1 NSegments= 1
 Po= "118bb92157f" Pd= "118bb92b2f7-0" Np= 4
 X= 709 Y= 283
 X= 687 Y= 283
 X= 687 Y= 319
 X= 627 Y= 319
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cfb9d" NBits= 1 NSegments= 1
 Po= "118bb920a92" Pd= "118bb9257a8-0" Np= 4
 X= 709 Y= 119
 X= 662 Y= 119
 X= 662 Y= 79
 X= 627 Y= 79
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "C69fa" NBits= 1 NSegments= 1
 Po= "118bb920ad0" Pd= "118bb929907-0" Np= 4
 X= 709 Y= 139
 X= 662 Y= 139
 X= 662 Y= 151
 X= 627 Y= 151
 6 C= "ist.ac.simulador.nucleo.SConnection" Name= "C21ab" NBits= 1 NSegments= 1
 Po= "118bb920af0" Pd= "118bb92ddef-0" Np= 4
 X= 709 Y= 159
 X= 678 Y= 159
 X= 678 Y= 223
 X= 627 Y= 223
 7 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cb987" NBits= 1 NSegments= 1
 Po= "118bb93b564-0" Pd= "118bb95d650-0" Np= 2
 X= 819 Y= 535
 X= 869 Y= 535
 8 C= "ist.ac.simulador.nucleo.SConnection" Name= "C7727" NBits= 1 NSegments= 1
 Po= "118bb937657-0" Pd= "118bb93b583" Np= 4
 X= 627 Y= 439
 X= 684 Y= 439
 X= 684 Y= 535
 X= 709 Y= 535
 9 C= "ist.ac.simulador.nucleo.SConnection" Name= "C210e" NBits= 1 NSegments= 1
 Po= "118bb938338-0" Pd= "118bb93b5a2" Np= 4
 X= 627 Y= 511
 X= 652 Y= 511
 X= 652 Y= 555
 X= 709 Y= 555
 10 C= "ist.ac.simulador.nucleo.SConnection" Name= "C717b" NBits= 1 NSegments= 2
 Po= "118bb98acd0-0" Pd= "118bb93419b" Np= 2
 X= 137 Y= 79
 X= 237 Y= 79
 Po= "118bb92ddff" Pd= "118bb98acd0-0" Np= 4
 X= 517 Y= 223
 X= 217 Y= 223
 X= 217 Y= 79
 X= 137 Y= 79
 11 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cde6d" NBits= 1 NSegments= 2
 Po= "118bb98c7ab-0" Pd= "118bb934852" Np= 2
 X= 137 Y= 127
 X= 237 Y= 127
 Po=
"118bb92de1e" Pd= "118bb98c7ab-0" Np= 4
 X= 517 Y= 243
 X= 197 Y= 243
 X= 197 Y= 127
 X= 137 Y= 127
 12 C= "ist.ac.simulador.nucleo.SConnection" Name= "C561f" NBits= 1 NSegments= 4
 Po= "118bb98cf4c-0" Pd= "118bb935419" Np= 2
 X= 137 Y= 175
 X= 237 Y= 175
 Po= "118bb92de3d" Pd= "118bb98cf4c-0" Np= 4
 X= 517 Y= 263
 X= 179 Y= 263
 X= 179 Y= 175
 X= 137 Y= 175
 Po= "118bb92b326" Pd= "118bb98cf4c-0" Np= 6
 X= 517 Y= 319
 X= 490 Y= 319
 X= 490 Y= 263
 X= 179 Y= 263
 X= 179 Y= 175
 X= 137 Y= 175
 Po= "118bb93b5b2" Pd= "118bb98cf4c-0" Np= 4
 X= 709 Y= 575
 X= 179 Y= 575
 X= 179 Y= 175
 X= 137 Y= 175
 13 C= "ist.ac.simulador.nucleo.SConnection" Name= "C9142" NBits= 1 NSegments= 1
 Po= "118bb98d632-0" Pd= "118bb9364d3" Np= 2
 X= 137 Y= 343
 X= 237 Y= 343
 14 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ce122" NBits= 1 NSegments= 2
 Po= "118bb93418b-0" Pd= "118bb9257c8" Np= 2
 X= 347 Y= 79
 X= 517 Y= 79
 Po= "118bb938396" Pd= "118bb93418b-0" Np= 4
 X= 517 Y= 531
 X= 388 Y= 531
 X= 388 Y= 79
 X= 347 Y= 79
 15 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cd789" NBits= 1 NSegments= 2
 Po= "118bb9353fa-0" Pd= "118bb9257e7" Np= 4
 X= 347 Y= 175
 X= 430 Y= 175
 X= 430 Y= 99
 X= 517 Y= 99
 Po= "118bb9353fa-0" Pd= "118bb929907-1" Np= 4
 X= 347 Y= 175
 X= 430 Y= 175
 X= 430 Y= 151
 X= 517 Y= 151
 16 C= "ist.ac.simulador.nucleo.SConnection" Name= "C81e3" NBits= 1 NSegments= 3
 Po= "118bb934832-0" Pd= "118bb929916" Np= 4
 X= 347 Y= 127
 X= 468 Y= 127
 X= 468 Y= 171
 X= 517 Y= 171
 Po= "118bb934832-0" Pd= "118bb937695" Np= 4
 X= 347 Y= 127
 X= 468 Y= 127
 X= 468 Y= 459
 X= 517 Y= 459
 Po= "118bb938357" Pd= "118bb934832-0" Np= 4
 X= 517 Y= 511
 X= 468 Y= 511
 X= 468 Y= 127
 X= 347 Y= 127
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleOR" Name= "OR" NPorts= 4 Conf= "3x1@3" X= 704 Y= 104
 P= "IN0" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb920a92" Fixed= -1
 P= "IN1" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb920ad0" Fixed= -1
 P= "IN2" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb920af0" Fixed= -1
 P= "OUT" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb920a63-0" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleOR" Name= "OR" NPorts= 3 Conf= "2x1@3" X= 704 Y= 248
 P= "IN0" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb921550" Fixed= -1
 P= "IN1" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb92157f" Fixed= -1
 P= "OUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb921531-0" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleAND" Name= "AND" NPorts= 3 Conf= "2x1@3" X= 512 Y= 64
 P= "IN0" CIn= 14 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb9257c8" Fixed= -1
 P= "IN1" CIn= 15 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb9257e7" Fixed= -1
 P= "OUT" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb9257a8-0" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleAND" Name= "AND" NPorts= 3 Conf= "2x1@3" X= 512 Y= 136
 P= "IN0" CIn= 15 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb929907-1" Fixed= -1
 P= "IN1" CIn= 16 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb929916" Fixed= -1
 P= "OUT" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb929907-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleAND" Name= "AND" NPorts= 3 Conf= "2x1@3" X= 512 Y= 304
 P= "IN0" CIn= 12 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb92b326" Fixed= -1
 P= "IN1" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb92b345" Fixed= -1
 P= "OUT" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb92b2f7-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleAND" Name= "AND" NPorts= 4 Conf= "3x1@3" X= 512 Y= 208
 P= "IN0" CIn= 10 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb92ddff" Fixed= -1
 P= "IN1" CIn= 11 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb92de1e" Fixed= -1
 P= "IN2" CIn= 12 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb92de3d" Fixed= -1
 P= "OUT" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb92ddef-0" Fixed= -1
 6 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT A" NPorts= 2 Conf= "1x1@3" X= 232 Y= 64
 P= "IN0" CIn= 10 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb93419b" Fixed= -1
 P= "OUT" CIn= 14 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb93418b-0" Fixed= -1
 7 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT B" NPorts= 2 Conf= "1x1@3" X= 232 Y= 112
 P= "IN0" CIn= 11 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb934852" Fixed= -1
 P= "OUT" CIn= 16 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb934832-0" Fixed= -1
 8 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT C" NPorts= 2 Conf= "1x1@3" X= 232 Y= 160
 P= "IN0" CIn= 12 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb935419" Fixed= -1
 P= "OUT" CIn= 15 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb9353fa-0" Fixed= -1
 9 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT D" NPorts= 2 Conf= "1x1@3" X= 232 Y= 328
 P= "IN0" CIn= 13 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb9364d3" Fixed= -1
 P= "OUT" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb9364c3-0" Fixed= -1
 10 M= "ist.ac.simulador.modules.ModuleAND" Name= "AND" NPorts= 3 Conf= "2x1@3" X= 512 Y= 424
 P= "IN0" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb937676" Fixed= -1
 P= "IN1" CIn= 16 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb937695" Fixed= -1
 P= "OUT" CIn= 8 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb937657-0" Fixed= -1
 11 M= "ist.ac.simulador.modules.ModuleAND" Name= "AND" NPorts= 3 Conf= "2x1@3" X= 512 Y= 496
 P= "IN0" CIn= 16 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb938357" Fixed= -1
 P= "IN1" CIn= 14 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb938396" Fixed= -1
 P= "OUT" CIn= 9 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb938338-0" Fixed= -1
 12 M= "ist.ac.simulador.modules.ModuleOR" Name= "OR" NPorts= 4 Conf= "3x1@3" X= 704 Y= 520
 P= "IN0" CIn= 8 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb93b583" Fixed= -1
 P= "IN1" CIn= 9 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb93b5a2" Fixed= -1
 P= "IN2" CIn= 12 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb93b5b2" Fixed= -1
 P= "OUT" CIn= 7 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb93b564-0" Fixed= -1
 13 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Z1" NPorts= 1 Conf= "1@3" X= 864 Y= 248
 P= "IN" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb95aed2-0" Fixed= -1
 14 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Z2" NPorts= 1 Conf= "1@3" X= 864 Y= 520
 P= "IN" CIn= 7 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb95d650-0" Fixed= -1
 15 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "A" NPorts= 1 Conf= "1@3" X= 32 Y= 64
 P= "OUT" CIn= 10 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb98acd0-0" Fixed= -1
 16 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "B" NPorts= 1 Conf= "1@3" X= 32 Y= 112
 P= "OUT" CIn= 11 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb98c7ab-0" Fixed= -1
 17 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "C" NPorts= 1 Conf= "1@3" X= 32 Y= 160
 P= "OUT" CIn= 12 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb98cf4c-0" Fixed= -1
 18 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "D" NPorts= 1 Conf= "1@3" X= 32 Y= 328
 P= "OUT" CIn= 13 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb98d632-0" Fixed= -1
Simula��es/Cap2/simula��o 2.2/picos.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 18 NC= 16
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C9b5d" NBits= 1 NSegments= 2
 Po= "118bb9364c3-0" Pd= "118bb92b345" Np= 2
 X= 347 Y= 343
 X= 517 Y= 343
 Po= "118bb937676" Pd= "118bb9364c3-0" Np= 4
X= 517 Y= 439
 X= 491 Y= 439
 X= 491 Y= 343
 X= 347 Y= 343
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C23ed" NBits= 1 NSegments= 1
 Po= "118bb920a63-0" Pd= "118bb921550" Np= 5
 X= 819 Y= 119
 X= 838 Y= 119
 X= 838 Y= 223
 X= 709 Y= 223
 X= 709 Y= 263
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "C64c6" NBits= 1 NSegments= 1
 Po= "118bb921531-0" Pd= "118bb95aed2-0" Np= 2
 X= 819 Y= 263
 X= 869 Y= 263
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ca74d" NBits= 1 NSegments= 1
 Po= "118bb92157f" Pd= "118bb92b2f7-0" Np= 4
 X= 709 Y= 283
 X= 687 Y= 283
 X= 687 Y= 319
 X= 627 Y= 319
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "C48ea" NBits= 1 NSegments= 1
 Po= "118bb920a92" Pd= "118bb9257a8-0" Np= 4
 X= 709 Y= 119
 X= 662 Y= 119
 X= 662 Y= 79
 X= 627 Y= 79
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "C903c" NBits= 1 NSegments= 1
 Po= "118bb920ad0" Pd= "118bb929907-0" Np= 4
 X= 709 Y= 139
 X= 662 Y= 139
 X= 662 Y= 151
 X= 627 Y= 151
 6 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cc0ba" NBits= 1 NSegments= 1
 Po= "118bb920af0" Pd= "118bb92ddef-0" Np= 4
 X= 709 Y= 159
 X= 678 Y= 159
 X= 678 Y= 223
 X= 627 Y= 223
 7 C= "ist.ac.simulador.nucleo.SConnection" Name= "C1d65" NBits= 1 NSegments= 1
 Po= "118bb93b564-0" Pd= "118bb95d650-0" Np= 2
 X= 819 Y= 535
 X= 869 Y= 535
 8 C= "ist.ac.simulador.nucleo.SConnection" Name= "C2bc" NBits= 1 NSegments= 1
 Po= "118bb937657-0" Pd= "118bb93b583" Np= 4
 X= 627 Y= 439
 X= 684 Y= 439
 X= 684 Y= 535
 X= 709 Y= 535
 9 C= "ist.ac.simulador.nucleo.SConnection" Name= "C9df4" NBits= 1 NSegments= 1
 Po= "118bb938338-0" Pd= "118bb93b5a2" Np= 4
 X= 627 Y= 511
 X= 652 Y= 511
 X= 652 Y= 555
 X= 709 Y= 555
 10 C= "ist.ac.simulador.nucleo.SConnection" Name= "C67a4" NBits= 1 NSegments= 2
 Po= "118bb98acd0-0" Pd= "118bb93419b" Np= 2
 X= 137 Y= 79
 X= 237 Y= 79
 Po= "118bb92ddff" Pd= "118bb98acd0-0" Np= 4
 X= 517 Y= 223
 X= 217 Y= 223
 X= 217 Y= 79
 X= 137 Y= 79
 11 C= "ist.ac.simulador.nucleo.SConnection" Name= "C9f79" NBits= 1 NSegments= 6
 Po= "118bb98cf4c-0" Pd= "118bb935419" Np= 2
 X= 137 Y= 175
 X= 237 Y= 175
 Po= "118bb92de3d" Pd= "118bb98cf4c-0" Np= 4
 X= 517 Y= 263
 X= 179 Y= 263
 X= 179 Y= 175
 X= 137 Y= 175
 Po= "118bb92b326" Pd= "118bb98cf4c-0" Np= 6
 X= 517 Y= 319
 X= 490 Y= 319
 X= 490 Y= 263
 X= 179 Y= 263
 X= 179 Y= 175
 X= 137 Y= 175
 Po= "118bb93b5b2" Pd= "118bb98cf4c-0" Np= 4
 X= 709 Y= 575
 X= 179 Y= 575
 X= 179 Y= 175
 X= 137 Y= 175
 Po= "118bb92de1e" Pd= "118bb98cf4c-0" Np= 4
 X= 517 Y= 243
 X= 179 Y= 243
 X= 179 Y= 175
 X= 137 Y= 175
 Po= "118bb934852" Pd= "118bb98cf4c-0" Np= 4
 X= 237 Y= 127
 X= 193 Y= 127
 X= 193 Y= 175
 X= 137 Y= 175
 12 C= "ist.ac.simulador.nucleo.SConnection" Name= "C5761" NBits= 1 NSegments= 1
 Po= "118bb98d632-0" Pd= "118bb9364d3" Np= 2
 X= 137 Y= 343
 X= 237 Y= 343
 13 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ca4d3" NBits= 1 NSegments= 2
 Po= "118bb93418b-0" Pd= "118bb9257c8" Np= 2
 X= 347 Y= 79
 X= 517 Y= 79
 Po= "118bb938396" Pd= "118bb93418b-0" Np= 4
 X= 517 Y= 531
 X= 388 Y= 531
 X= 388 Y= 79
 X= 347 Y= 79
 14 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ca953" NBits= 1 NSegments= 2
 Po= "118bb9353fa-0" Pd= "118bb9257e7" Np= 4
 X= 347 Y= 175
 X= 430 Y= 175
 X= 430 Y= 99
 X= 517 Y= 99
 Po= "118bb9353fa-0" Pd= "118bb929907-1" Np= 4
 X= 347 Y= 175
 X= 430 Y= 175
 X= 430 Y= 151
 X= 517 Y= 151
 15 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cff47" NBits= 1 NSegments= 3
 Po= "118bb934832-0" Pd= "118bb929916" Np= 4
 X= 347 Y= 127
 X= 468 Y= 127
 X= 468 Y= 171
 X= 517 Y= 171
 Po= "118bb934832-0" Pd= "118bb937695" Np= 4
 X= 347 Y= 127
 X= 468 Y= 127
 X= 468 Y= 459
 X= 517 Y= 459
 Po= "118bb938357" Pd= "118bb934832-0" Np= 4
 X= 517 Y= 511
 X= 468 Y= 511
 X= 468 Y= 127
 X= 347 Y= 127
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleOR" Name= "OR" NPorts= 4 Conf= "3x1@3" X= 704 Y= 104
 P= "IN0" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb920a92" Fixed= -1
 P= "IN1" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb920ad0" Fixed= -1
 P= "IN2" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb920af0" Fixed= -1
 P= "OUT" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb920a63-0" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleOR" Name= "OR" NPorts= 3 Conf= "2x1@3" X= 704 Y= 248
 P= "IN0" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb921550" Fixed= -1
 P= "IN1" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb92157f" Fixed= -1
 P= "OUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb921531-0" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleAND" Name= "AND" NPorts= 3 Conf= "2x1@3" X= 512 Y= 64
 P= "IN0" CIn= 13 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb9257c8" Fixed= -1
 P= "IN1" CIn= 14 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb9257e7" Fixed= -1
 P= "OUT" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb9257a8-0" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleAND" Name= "AND" NPorts= 3 Conf= "2x1@3" X= 512 Y= 136
 P= "IN0" CIn= 14 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb929907-1" Fixed= -1
 P= "IN1" CIn= 15 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb929916" Fixed= -1
 P= "OUT" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb929907-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleAND" Name= "AND" NPorts= 3 Conf= "2x1@3" X= 512 Y= 304
 P= "IN0" CIn= 11 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb92b326" Fixed= -1
 P= "IN1" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb92b345" Fixed= -1
 P= "OUT" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb92b2f7-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleAND" Name= "AND" NPorts= 4 Conf= "3x1@3" X= 512 Y= 208
 P= "IN0" CIn= 10 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb92ddff" Fixed= -1
 P= "IN1" CIn= 11 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb92de1e" Fixed= -1
 P= "IN2" CIn= 11 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb92de3d" Fixed= -1
 P= "OUT" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb92ddef-0" Fixed= -1
 6 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT A" NPorts= 2 Conf= "1x1@3" X= 232 Y= 64
 P= "IN0" CIn= 10 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb93419b" Fixed= -1
 P= "OUT" CIn= 13 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb93418b-0" Fixed= -1
 7 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT B" NPorts= 2 Conf= "1x1@3" X= 232 Y= 112
 P= "IN0" CIn= 11 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb934852" Fixed= -1
 P= "OUT" CIn= 15 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb934832-0" Fixed= -1
 8 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT C" NPorts= 2 Conf= "1x1@3" X= 232 Y= 160
 P= "IN0" CIn= 11 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb935419" Fixed= -1
 P= "OUT" CIn= 14 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb9353fa-0" Fixed= -1
 9 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT D" NPorts= 2 Conf= "1x1@3" X= 232 Y= 328
 P= "IN0" CIn= 12 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb9364d3" Fixed= -1
 P= "OUT" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb9364c3-0" Fixed= -1
 10 M= "ist.ac.simulador.modules.ModuleAND" Name= "AND" NPorts= 3 Conf= "2x1@3" X= 512 Y= 424
 P= "IN0" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb937676" Fixed= -1
 P= "IN1" CIn= 15 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb937695" Fixed= -1
P= "OUT" CIn= 8 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb937657-0" Fixed= -1
 11 M= "ist.ac.simulador.modules.ModuleAND" Name= "AND" NPorts= 3 Conf= "2x1@3" X= 512 Y= 496
 P= "IN0" CIn= 15 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb938357" Fixed= -1
 P= "IN1" CIn= 13 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb938396" Fixed= -1
 P= "OUT" CIn= 9 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb938338-0" Fixed= -1
 12 M= "ist.ac.simulador.modules.ModuleOR" Name= "OR" NPorts= 4 Conf= "3x1@3" X= 704 Y= 520
 P= "IN0" CIn= 8 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb93b583" Fixed= -1
 P= "IN1" CIn= 9 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb93b5a2" Fixed= -1
 P= "IN2" CIn= 11 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb93b5b2" Fixed= -1
 P= "OUT" CIn= 7 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb93b564-0" Fixed= -1
 13 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Z1" NPorts= 1 Conf= "1@3" X= 864 Y= 248
 P= "IN" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb95aed2-0" Fixed= -1
 14 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Z2" NPorts= 1 Conf= "1@3" X= 864 Y= 520
 P= "IN" CIn= 7 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb95d650-0" Fixed= -1
 15 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "A" NPorts= 1 Conf= "1@3" X= 32 Y= 64
 P= "OUT" CIn= 10 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb98acd0-0" Fixed= -1
 16 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "BC" NPorts= 1 Conf= "1@3" X= 32 Y= 160
 P= "OUT" CIn= 11 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb98cf4c-0" Fixed= -1
 17 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "D" NPorts= 1 Conf= "1@3" X= 32 Y= 328
 P= "OUT" CIn= 12 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bb98d632-0" Fixed= -1
Simula��es/Cap2/simula��o 2.2/simula��o-2.2.doc
Guia de Laboratório
de
Arquitetura de Computadores
Simulação 2.2 – Circuitos combinatórios
1 – Objetivos
Esta simulação ilustra o funcionamento dos circuitos combinatórios, usando como base o circuito da Figura 2.8. Os aspectos abordados incluem os seguintes:
Verificação do atendimento da tabela verdade da Tabela 2.4;
Inspeção de valores das ligações intermediárias;
Observação dos picos causados pelo comportamento transitório dos valores das ligações enquanto ocorrem as interações das mudanças de sinais;
Verificação do tempo de atraso XE "Tempo:de atraso" total do circuito.
2 – O circuito
A figura seguinte mostra o circuito da Figura 2.8 já no simulador (e já em Simulação). O OR de quatro entradas Z1 foi substituído por um de três entradas e outro de duas entradas, por não haver um de quatro entradas na paleta de objetos do simulador (embora este os suporte, mas é preciso configurar um arquivo interno).
As entradas são realizadas com interruptores e as saídas com LEDs. Este circuito já está disponível no arquivo “fig2-8.cmod”.
3 – Tabela verdade
Depois de carregar o arquivo, passe para Simulação e clique em Start. Abra as janelas de interface dos interruptores e dos LEDs (com duplo clique). Mudando o valor dos interruptores, percorra as várias combinações da tabela 2.4 e verifique o comportamento do circuito. Os LEDs indicam os valores das saídas Z1 e Z2.
4 – Valores das ligações intermediárias
Note as cores das várias ligações, que indicam o valor (preto é 0, vermelho é 1). Colocando o cursor em cima de qualquer ligação (sem clicar) indica também o valor.
5 – Tempos de atraso
Coloque agora todos os interruptores com zero e tome nota do tempo de simulação. As figuras aqui representadas usam os tempos desde o início da simulação sem testar as combinações dos interruptores. No seu caso, veja o tempo corrente ou recomece a simulação, carregando o arquivo de novo.
Passe o interruptor B para 1.
Note que o tempo de simulação evoluiu 12 unidades. Como cada dispositivo tem um tempo de atraso de 3 unidades, isto quer dizer que houve quatro dispositivos em série que mudaram o seu valor. Pode-se verificar que foi apenas Z2 que mudou e, que para a alteração do valor do interruptor B chegar lá, o sinal teve de atravessar quatro dispositivos, contando com o próprio interruptor, que também introduziu atraso. Os LEDs, sendo apenas para visualização sem interferir com os resultados, são considerados sem atraso.
Mude agora o interruptor A para 1 também.
Agora é Z1 que muda, e o tempo evolui mais 15 unidades. Isto se deve ao fato de, para alterar Z1 a partir do interruptor A, o sinal ter de atravessar cinco dispositivos, com 3 unidades de atraso cada um. Não é o caso da Figura 2.8 (representada anteriormente), que tem apenas quatro, mas no circuito do simulador introduziu-se mais um OR de duas entradas em série com o de três entradas (para não ter de usar o OR de quatro entradas).
5 – Picos transitórios na simulação
Este é um simulador baseado em eventos. Quando as entradas de um determinado módulo (porta lógica, por exemplo) mudam, este é reavaliado para determinar os eventuais novos valores das saídas. Para simular os tempos de atraso, os novos valores são programados para um tempo de simulação futuro (no caso das portas lógicas, para 3 unidades de tempo depois).
No entanto, quando chegar o tempo desses novos valores aparecerem nas saídas, os módulos cujas entradas estão ligadas a essas saídas também precisam ser reavaliados. O simulador entra assim em loop até não haver mais eventos, isto é, ter atingido uma situação estável. 
Na seção anterior, observou-se que o tempo evoluiu de 12 e de 15 unidades de tempo (o necessário para todas as alterações terem sido propagadas pelas diversas portas lógicas), mas não se viu o que aconteceu no meio. A experiência seguinte permite observar as mudanças intermediárias de valores.
O circuito seguinte está contido no arquivo “picos.cmod”. Os interruptores B e C foram fundidos num só (BC), em função do que as entradas B e C são agora a mesma. Carregue este arquivo, passe para Simulação, clique em Start e abra a janela de controle do interruptor BC. 
Clique agora em Stop, o que faz parar a simulação.
Clique agora no interruptor BC, passando-o para 1.
Como a simulação está parada, o circuito não reage. Clique agora em Step. O simulador executa apenas uma iteração, isto é, programa uma alteração na saída do interruptor para daí a 3 unidades de tempo. Este evento futuro pode ser observado na janela “Waiting Events”.
Clique novamente em Step. O simulador avança 3 unidades de tempo, altera a saída do interruptor, reavalia as portas lógicas cujas entradas estão ligadas ao interruptor BC (pois a saída deste mudou) e programa para um tempo futuro as alterações que houver nas saídas destas portas lógicas.
Clique novamente em Step. As portas lógicas cujas entradas estão ligadas às saídas das primeiras são reavaliadas e as alterações nas suas saídas são programadas.
Clique novamente em Step, acontecendo então nova iteração. O último evento programado é o do OR antes do LED Z1.
Clique novamente em Step, o que executa o último evento programado, mas não gera mais nenhum, pois se atingiu uma situação estável.
Se clicar mais vezes em Step, nada acontece, pois não há mais eventos para executar.
O tempo que tudo isto demora não depende do número de módulos em série, mas sim das alterações que é preciso propagar. Se um determinado sinal não muda de valor, não é preciso reavaliar os módulos que se ligam a ele.
Passe novamente o interruptor para 0.
Clique mais uma vez em Step. Novamente, surge o evento programado para alterar a saída do interruptor.
Vá clicando sucessivamente em Step e observe os valores das saídas. Note que elas começaram ambas em 1, passam ambas por 0 e terminam novamente ambas em 1.
Se esta seqüência não fosse vista de Step a Step (passo a passo), nem se perceberia que as saídas tiveram
temporariamente 0.
Ou seja: o fato de haver alterações nas entradas pode ocasionar picos transitórios nas saídas, enquanto o circuito não estabiliza.
No caso deste circuito, isso é provocado pelas negações dos sinais de entrada. O atraso introduzido por cada negação é suficiente para os sinais negados e não negados atingirem as portas lógicas em instantes diferentes e provocar os picos até que tudo estabilize. A duração dos picos é da ordem dos atrasos das negações.
Em circuitos combinatórios, os picos não originam problemas. Mas se estas saídas fossem usadas como sinal de relógio de um circuito seqüencial, seria introduzido um ciclo de relógio inoportuno, não desejado e que poderia ocasionar um funcionamento incorreto do circuito.
	� PAGE �12�
Simula��es/Cap2/simula��o 2.3/func.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 10 NC= 9
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C1d3e" NBits= 1 NSegments= 1
 Po= "118bd031a2f-0" Pd= "118bd126c00" Np= 4
 X= 379 Y= 95
 X= 445 Y= 95
 X= 445 Y= 327
 X= 493 Y= 327
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ccad0" NBits= 1 NSegments= 1
 Po= "118bd11438d-0" Pd= "118bd126c2e" Np= 4
 X= 379 Y= 247
 X= 407 Y= 247
 X= 407 Y= 347
 X= 493 Y= 347
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "C9265" NBits= 1 NSegments= 1
 Po= "118bd117079-0" Pd= "118bd126c3e" Np= 4
 X= 379 Y= 463
 X= 406 Y= 463
 X= 406 Y= 367
 X= 493 Y= 367
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cb862" NBits= 1 NSegments= 1
 Po= "118bd115e58-0" Pd= "118bd126c4e" Np= 4
 X= 379 Y= 615
 X= 431 Y= 615
 X= 431 Y= 387
 X= 493 Y= 387
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cefeb" NBits= 1 NSegments= 1
 Po= "118bd126be0-0" Pd= "118bc454802-0" Np= 2
 X= 603 Y= 327
 X= 653 Y= 327
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ca7ff" NBits= 1 NSegments= 4
 Po= "118bc43c9ce-0" Pd= "118bd031a5e" Np= 4
 X= 153 Y= 311
 X= 185 Y= 311
 X= 185 Y= 175
 X= 269 Y= 175
 Po= "118bc43c9ce-0" Pd= "118bd11439d" Np= 4
 X= 153 Y= 311
 X= 241 Y= 311
 X= 241 Y= 327
 X= 269 Y= 327
 Po= "118bc43c9ce-0" Pd= "118bd117089" Np= 4
 X= 153 Y= 311
 X= 241 Y= 311
 X= 241 Y= 543
 X= 269 Y= 543
 Po= "118bc43c9ce-0" Pd= "118bd115e78" Np= 4
 X= 153 Y= 311
 X= 241 Y= 311
 X= 241 Y= 695
 X= 269 Y= 695
 6 C= "ist.ac.simulador.nucleo.SConnection" Name= "C20a8" NBits= 1 NSegments= 1
 Po= "118bd153e3a-0" Pd= "118bd126bf0" Np= 2
 X= 153 Y= 407
 X= 493 Y= 407
 7 C= "ist.ac.simulador.nucleo.SConnection" Name= "C723a" NBits= 1 NSegments= 1
 Po= "118bd15452f-0" Pd= "118bd126c0f" Np= 4
 X= 153 Y= 455
 X= 181 Y= 455
 X= 181 Y= 427
 X= 493 Y= 427
 8 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ca99a" NBits= 1 NSegments= 4
 Po= "118bd04f817-0" Pd= "118bd031a8d-0" Np= 4
 X= 153 Y= 359
 X= 213 Y= 359
 X= 213 Y= 195
 X= 269 Y= 195
 Po= "118bd04f817-0" Pd= "118bd1143bc" Np= 4
 X= 153 Y= 359
 X= 213 Y= 359
 X= 213 Y= 347
 X= 269 Y= 347
 Po= "118bd04f817-0" Pd= "118bd1170b7" Np= 4
 X= 153 Y= 359
 X= 213 Y= 359
 X= 213 Y= 563
 X= 269 Y= 563
 Po= "118bd04f817-0" Pd= "118bd115e97" Np= 4
 X= 153 Y= 359
 X= 213 Y= 359
 X= 213 Y= 715
 X= 269 Y= 715
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "S0" NPorts= 1 Conf= "1@3" X= 48 Y= 296
 P= "OUT" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bc43c9ce-0" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Z1" NPorts= 1 Conf= "1@3" X= 648 Y= 312
 P= "IN" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bc454802-0" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleMux" Name= "Multiplexer" NPorts= 7 Conf= "4x1@10" X= 264 Y= 80
 P= "IN0" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd031a8d" Fixed= 1
 P= "IN1" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd031a9d" Fixed= 1
 P= "IN2" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd031aac" Fixed= 1
 P= "IN3" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd031acb" Fixed= 0
 P= "OUT" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd031a2f-0" Fixed= -1
 P= "SEL0" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd031a5e" Fixed= -1
 P= "SEL1" CIn= 8 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd031a8d-0" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "S1" NPorts= 1 Conf= "1@3" X= 48 Y= 344
 P= "OUT" CIn= 8 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd04f817-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleMux" Name= "Multiplexer" NPorts= 7 Conf= "4x1@10" X= 264 Y= 232
 P= "IN0" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd1143ac" Fixed= 1
 P= "IN1" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd1143db" Fixed= 1
 P= "IN2" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd1143eb" Fixed= 1
 P= "IN3" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd1143fa" Fixed= 0
 P= "OUT" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd11438d-0" Fixed= -1
 P= "SEL0" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd11439d" Fixed= -1
 P= "SEL1" CIn= 8 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd1143bc" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleMux" Name= "Multiplexer" NPorts= 7 Conf= "4x1@10" X= 264 Y= 600
 P= "IN0" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd115e87" Fixed= 0
 P= "IN1" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd115ea6" Fixed= 0
 P= "IN2" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd115ec6" Fixed= 1
 P= "IN3" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd115ed5" Fixed= 1
 P= "OUT" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd115e58-0" Fixed= -1
 P= "SEL0" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd115e78" Fixed= -1
 P= "SEL1" CIn= 8 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd115e97" Fixed= -1
 6 M= "ist.ac.simulador.modules.ModuleMux" Name= "Multiplexer" NPorts= 7 Conf= "4x1@10" X= 264 Y= 448
 P= "IN0" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd1170a8" Fixed= 1
 P= "IN1" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd1170c7" Fixed= 1
 P= "IN2" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd1170e6" Fixed= 1
 P= "IN3" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd1170f6" Fixed= 0
 P= "OUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd117079-0" Fixed= -1
 P= "SEL0" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd117089" Fixed= -1
 P= "SEL1" CIn= 8 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd1170b7" Fixed= -1
 7 M= "ist.ac.simulador.modules.ModuleMux" Name= "Multiplexer" NPorts= 7 Conf= "4x1@10" X= 488 Y= 312
 P= "IN0" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd126c00" Fixed= -1
 P= "IN1" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd126c2e" Fixed= -1
 P= "IN2" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd126c3e" Fixed= -1
 P= "IN3" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd126c4e" Fixed= -1
 P= "OUT" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd126be0-0" Fixed= -1
 P= "SEL0" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd126bf0" Fixed= -1
 P= "SEL1" CIn= 7 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd126c0f" Fixed= -1
 8 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "S2" NPorts= 1 Conf= "1@3" X= 48 Y= 392
 P= "OUT" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd153e3a-0" Fixed= -1
 9 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "S3" NPorts= 1 Conf= "1@3" X= 48 Y= 440
 P= "OUT" CIn= 7 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd15452f-0" Fixed= -1
Simula��es/Cap2/simula��o
2.3/mpx2-circuito.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 8 NC= 7
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ca61a" NBits= 1 NSegments= 2
 Po= "118bc43c9ce-0" Pd= "118bc42eb74" Np= 2
 X= 153 Y= 351
 X= 205 Y= 351
 Po= "118bc43c9ce-0" Pd= "118bc42bdfc" Np= 4
 X= 153 Y= 351
 X= 184 Y= 351
 X= 184 Y= 267
 X= 349 Y= 267
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C4595" NBits= 1 NSegments= 1
 Po= "118bc42b59f" Pd= "118bc42eb65-0" Np= 4
 X= 349 Y= 179
 X= 328 Y= 179
 X= 328 Y= 351
 X= 315 Y= 351
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "C48be" NBits= 1 NSegments= 1
 Po= "118bc42b570-0" Pd= "118bc42d656-1" Np= 2
 X= 459 Y= 159
 X= 533 Y= 199
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "C1439" NBits= 1 NSegments= 1
 Po= "118bc42bdcd-0" Pd= "118bc42d666" Np= 2
 X= 459 Y= 247
 X= 533 Y= 219
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "C8f05" NBits= 1 NSegments= 1
 Po= "118bc42d656-0" Pd= "118bc454802-0" Np= 2
 X= 643 Y= 199
 X= 717 Y= 199
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "C325e" NBits= 1 NSegments= 1
 Po= "118bc6c94fb-0" Pd= "118bc42b58f" Np= 2
 X= 153 Y= 159
 X= 349 Y= 159
 6 C= "ist.ac.simulador.nucleo.SConnection" Name= "C6dd6" NBits= 1 NSegments= 1
 Po= "118bc6cb97b-0" Pd= "118bc42bddc" Np= 2
 X= 153 Y= 247
 X= 349 Y= 247
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleAND" Name= "AND" NPorts= 3 Conf= "2x1@3" X= 344 Y= 144
 P= "IN0" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bc42b58f" Fixed= -1
 P= "IN1" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bc42b59f" Fixed= -1
 P= "OUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bc42b570-0" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleAND" Name= "AND" NPorts= 3 Conf= "2x1@3" X= 344 Y= 232
 P= "IN0" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bc42bddc" Fixed= -1
 P= "IN1" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bc42bdfc" Fixed= -1
 P= "OUT" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bc42bdcd-0" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleOR" Name= "OR" NPorts= 3 Conf= "2x1@3" X= 528 Y= 184
 P= "IN0" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bc42d656-1" Fixed= -1
 P= "IN1" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bc42d666" Fixed= -1
 P= "OUT" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bc42d656-0" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT" NPorts= 2 Conf= "1x1@3" X= 200 Y= 336
 P= "IN0" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bc42eb74" Fixed= -1
 P= "OUT" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bc42eb65-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "S0" NPorts= 1 Conf= "1@3" X= 48 Y= 336
 P= "OUT" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bc43c9ce-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Leds" NPorts= 1 Conf= "1@3" X= 712 Y= 184
 P= "IN" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bc454802-0" Fixed= -1
 6 M= "ist.ac.simulador.modules.ModulePushButtons" Name= "X0" NPorts= 1 Conf= "1@3" X= 48 Y= 144
 P= "OUT" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bc6c94fb-0" Fixed= -1
 7 M= "ist.ac.simulador.modules.ModulePushButtons" Name= "X1" NPorts= 1 Conf= "1@3" X= 48 Y= 232
 P= "OUT" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bc6cb97b-0" Fixed= -1
Simula��es/Cap2/simula��o 2.3/mpx2-modulo.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 5 NC= 4
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C3424" NBits= 1 NSegments= 1
 Po= "118bc6c94fb-0" Pd= "118bcc71735" Np= 2
 X= 153 Y= 159
 X= 261 Y= 175
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C99bc" NBits= 1 NSegments= 1
 Po= "118bc6cb97b-0" Pd= "118bcc71745" Np= 2
 X= 153 Y= 223
 X= 261 Y= 195
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cc9c6" NBits= 1 NSegments= 1
 Po= "118bc43c9ce-0" Pd= "118bcc71726" Np= 2
 X= 153 Y= 311
 X= 261 Y= 215
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ccc53" NBits= 1 NSegments= 1
 Po= "118bcc71716-0" Pd= "118bc454802-0" Np= 2
 X= 371 Y= 175
 X= 437 Y= 175
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "S0" NPorts= 1 Conf= "1@3" X= 48 Y= 296
 P= "OUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bc43c9ce-0" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Leds" NPorts= 1 Conf= "1@3" X= 432 Y= 160
 P= "IN" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bc454802-0" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModulePushButtons" Name= "X0" NPorts= 1 Conf= "1@3" X= 48 Y= 144
 P= "OUT" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bc6c94fb-0" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModulePushButtons" Name= "X1" NPorts= 1 Conf= "1@3" X= 48 Y= 208
 P= "OUT" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bc6cb97b-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleMux" Name= "Multiplexer" NPorts= 4 Conf= "2x1@10" X= 256 Y= 160
 P= "IN0" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bcc71735" Fixed= -1
 P= "IN1" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bcc71745" Fixed= -1
 P= "OUT" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bcc71716-0" Fixed= -1
 P= "SEL0" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bcc71726" Fixed= -1
Simula��es/Cap2/simula��o 2.3/mpx4.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 8 NC= 7
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ca85c" NBits= 1 NSegments= 1
 Po= "118bc6c94fb-0" Pd= "118bd031a8d" Np= 2
 X= 153 Y= 95
 X= 245 Y= 151
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C8ada" NBits= 1 NSegments= 1
 Po= "118bc6cb97b-0" Pd= "118bd031a9d" Np= 2
 X= 153 Y= 143
 X= 245 Y= 171
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "C83e8" NBits= 1 NSegments= 1
 Po= "118bd03ef04-0" Pd= "118bd031aac" Np= 2
 X= 153 Y= 191
 X= 245 Y= 191
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "C4243" NBits= 1 NSegments= 1
 Po= "118bd03f7ed-0" Pd= "118bd031acb" Np= 2
 X= 153 Y= 239
 X= 245 Y= 211
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cb2ce" NBits= 1 NSegments= 1
 Po= "118bc43c9ce-0" Pd= "118bd031a5e" Np= 2
 X= 153 Y= 311
 X= 245 Y= 231
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "C1296" NBits= 1 NSegments= 1
 Po= "118bd04f817-0" Pd= "118bd031a8d-0" Np= 2
 X= 153 Y= 359
 X= 245 Y= 251
 6 C= "ist.ac.simulador.nucleo.SConnection" Name= "C77de" NBits= 1 NSegments= 1
 Po= "118bd031a2f-0" Pd= "118bc454802-0" Np= 2
 X= 355 Y= 151
 X= 437 Y= 151
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "S0" NPorts= 1 Conf= "1@3" X= 48 Y= 296
 P= "OUT" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bc43c9ce-0" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Leds" NPorts= 1 Conf= "1@3" X= 432 Y= 136
 P= "IN" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bc454802-0" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModulePushButtons" Name= "X0" NPorts= 1 Conf= "1@3" X= 48 Y= 80
 P= "OUT" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bc6c94fb-0" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModulePushButtons" Name= "X1" NPorts= 1 Conf= "1@3" X= 48 Y= 128
 P= "OUT" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bc6cb97b-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleMux" Name= "Multiplexer" NPorts= 7 Conf= "4x1@10" X= 240 Y= 136
 P= "IN0" CIn= 0 NBit= 1 StBit= 0 StConnBit=
0 PId= "118bd031a8d" Fixed= -1
 P= "IN1" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd031a9d" Fixed= -1
 P= "IN2" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd031aac" Fixed= -1
 P= "IN3" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd031acb" Fixed= -1
 P= "OUT" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd031a2f-0" Fixed= -1
 P= "SEL0" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd031a5e" Fixed= -1
 P= "SEL1" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd031a8d-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModulePushButtons" Name= "X2" NPorts= 1 Conf= "1@3" X= 48 Y= 176
 P= "OUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd03ef04-0" Fixed= -1
 6 M= "ist.ac.simulador.modules.ModulePushButtons" Name= "X3" NPorts= 1 Conf= "1@3" X= 48 Y= 224
 P= "OUT" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd03f7ed-0" Fixed= -1
 7 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "S1" NPorts= 1 Conf= "1@3" X= 48 Y= 344
 P= "OUT" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bd04f817-0" Fixed= -1
Simula��es/Cap2/simula��o 2.3/simula��o-2.3.doc
Guia de Laboratório
de
Arquitetura de Computadores
Simulação 2.3 – Multiplexadores
1 – Objetivos
Esta simulação ilustra o funcionamento dos multiplexadores, usando as figuras desta seção como circuitos de base. Os aspectos abordados incluem os seguintes:
Verificação do funcionamento dos multiplexadores de várias entradas;
Verificação do funcionamento do circuito da Figura 2.11;
Utilização de um multiplexador para implementar uma função.
2 – O circuito do multiplexador de duas entradas
O circuito seguinte implementa a Figura 2.11a e já está pronto no arquivo “mpx2-circuito.cmod”. X0 e X1 são botões de pressão e S0 um interruptor.
Carregue o arquivo, passe para Simulação, clique em Start e abra as janelas de controle dos botões, interruptor e LED. Verifique que:
Com S0=0, o LED se acende quando se pressiona o botão X0 e se apaga quando se solta o botão, e ainda que X1 não tem efeito;
Com S0=1, o LED se acende quando se pressiona o botão X1 e se apaga quando se solta o botão, e ainda que X0 não tem efeito.
Ou seja, o circuito deixa passar para a saída apenas a entrada selecionada por S0.
Se desejar, construa o circuito da Figura 2.11b e verifique a tabela verdade indicada nessa figura para um multiplexador de quatro entradas.
3 – O módulo multiplexador
O simulador já tem multiplexadores predefinidos. O arquivo “mpx2-modulo.cmod” contém o circuito da figura seguinte.
Verifique que o comportamento deste circuito é o mesmo que o do circuito anterior. 
Considere agora o circuito com um multiplexador (multiplexer) de quatro entradas, contido no arquivo “mpx4.cmod”.
Verifique o seu funcionamento, de acordo com a tabela verdade da Figura 2.11b.
4 – Uso de um multiplexador para implementar uma função
A figura seguinte usa composição de multiplexadores de quatro entradas para construir um multiplexador de 16 entradas, o que já está feito no arquivo “func.cmod”.
Faça a sua simulação e verifique que ele implementa a função Z1, tal como definida pela Figura 2.12. 
Para este fim, foi forçado 0 ou 1 nas entradas dos multiplexadores (multiplexers), de acordo com o necessário (vermelho com 1, preto com 0), o que é feito abrindo a janela de configuração do módulo e dando um duplo clique no pino correspondente. VCC força 1 e GND força 0.
	
	4
Simula��es/Cap2/simula��o 2.4/decodificador.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 12 NC= 11
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C6ef9" NBits= 1 NSegments= 1
 Po= "118bdd52e85" Pd= "118bdd56a84-0" Np= 2
 X= 363 Y= 79
 X= 461 Y= 79
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C4a57" NBits= 1 NSegments= 1
 Po= "118bdd52ea4" Pd= "118bdd5761d-0" Np= 2
 X= 363 Y= 99
 X= 461 Y= 127
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "C72a1" NBits= 1 NSegments= 1
 Po= "118bdd52ec3" Pd= "118bdd58177-0" Np= 2
 X= 363 Y= 119
 X= 461 Y= 175
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "C2237" NBits= 1 NSegments= 1
 Po= "118bdd52ee3" Pd= "118bdd5c883-0" Np= 2
 X= 363 Y= 139
 X= 461 Y= 223
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "C7d4" NBits= 1 NSegments= 1
 Po= "118bdd52ef2" Pd= "118bdd61b94-0" Np= 2
 X= 363 Y= 159
 X= 461 Y= 271
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "C1227" NBits= 1 NSegments= 1
 Po= "118bdd52f02" Pd= "118bdd62be0-0" Np= 2
 X= 363 Y= 179
 X= 461 Y= 319
 6 C= "ist.ac.simulador.nucleo.SConnection" Name= "C205a" NBits= 1 NSegments= 1
 Po= "118bdd52f11" Pd= "118bdd653bb-0" Np= 2
 X= 363 Y= 199
 X= 461 Y= 367
 7 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cc996" NBits= 1 NSegments= 1
 Po= "118bdd52f21" Pd= "118bdd693e1-0" Np= 2
 X= 363 Y= 219
 X= 461 Y= 415
 8 C= "ist.ac.simulador.nucleo.SConnection" Name= "C1bb3" NBits= 1 NSegments= 1
 Po= "118bdd74fde-0" Pd= "118bdd52e66-0" Np= 2
 X= 169 Y= 79
 X= 253 Y= 79
 9 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cd10" NBits= 1 NSegments= 1
 Po= "118bdd76b07-0" Pd= "118bdd52e94" Np= 2
 X= 169 Y= 127
 X= 253 Y= 99
 10 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cc8a3" NBits= 1 NSegments= 1
 Po= "118bdd77efd-0" Pd= "118bdd52eb4" Np= 2
 X= 169 Y= 175
 X= 253 Y= 119
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleDecoder" Name= "Decoder" NPorts= 12 Conf= "3@10" X= 248 Y= 64
 P= "A0" CIn= 8 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bdd52e66-0" Fixed= -1
 P= "A1" CIn= 9 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bdd52e94" Fixed= -1
 P= "A2" CIn= 10 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bdd52eb4" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bdd52f40" Fixed= 1
 P= "OUT0" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bdd52e85" Fixed= -1
 P= "OUT1" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bdd52ea4" Fixed= -1
 P= "OUT2" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bdd52ec3" Fixed= -1
 P= "OUT3" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bdd52ee3" Fixed= -1
 P= "OUT4" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bdd52ef2" Fixed= -1
 P= "OUT5" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bdd52f02" Fixed= -1
 P= "OUT6" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bdd52f11" Fixed= -1
 P= "OUT7" CIn= 7 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bdd52f21" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleLeds" Name= "OUT0" NPorts= 1 Conf= "1@3" X= 456 Y= 64
 P= "IN" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bdd56a84-0" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleLeds" Name= "OUT1" NPorts= 1 Conf= "1@3" X= 456 Y= 112
 P= "IN" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bdd5761d-0" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleLeds" Name= "OUT2" NPorts= 1 Conf= "1@3" X= 456 Y= 160
 P= "IN" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bdd58177-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleLeds" Name= "OUT3" NPorts= 1 Conf= "1@3" X= 456 Y= 208
 P= "IN" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bdd5c883-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleLeds" Name= "OUT4" NPorts= 1 Conf= "1@3" X= 456 Y= 256
 P= "IN" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bdd61b94-0" Fixed= -1
 6 M= "ist.ac.simulador.modules.ModuleLeds" Name= "OUT5" NPorts= 1 Conf= "1@3" X= 456 Y= 304
 P= "IN" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bdd62be0-0" Fixed= -1
 7 M= "ist.ac.simulador.modules.ModuleLeds" Name= "OUT6" NPorts= 1 Conf= "1@3" X= 456 Y= 352
 P= "IN" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bdd653bb-0" Fixed= -1
 8 M= "ist.ac.simulador.modules.ModuleLeds"
Name= "OUT7" NPorts= 1 Conf= "1@3" X= 456 Y= 400
 P= "IN" CIn= 7 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bdd693e1-0" Fixed= -1
 9 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "A0" NPorts= 1 Conf= "1@3" X= 64 Y= 64
 P= "OUT" CIn= 8 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bdd74fde-0" Fixed= -1
 10 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "A1" NPorts= 1 Conf= "1@3" X= 64 Y= 112
 P= "OUT" CIn= 9 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bdd76b07-0" Fixed= -1
 11 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "A2" NPorts= 1 Conf= "1@3" X= 64 Y= 160
 P= "OUT" CIn= 10 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bdd77efd-0" Fixed= -1
Simula��es/Cap2/simula��o 2.4/mostrador.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 2 NC= 1
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C54a6" NBits= 4 NSegments= 1
 Po= "118bd41e784-0" Pd= "118bd420492-0" Np= 2
 X= 209 Y= 175
 X= 290 Y= 175
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleInput" Name= "Input" NPorts= 1 Conf= "4@3" X= 104 Y= 160
 P= "OUT" CIn= 0 NBit= 4 StBit= 0 StConnBit= 0 PId= "118bd41e784-0" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleHexaDisplay" Name= "Hexa Display" NPorts= 1 Conf= "4@3" X= 285 Y= 163
 P= "IN" CIn= 0 NBit= 4 StBit= 0 StConnBit= 0 PId= "118bd420492-0" Fixed= -1
Simula��es/Cap2/simula��o 2.4/simula��o-2.4.doc
Guia de Laboratório
de
Arquitetura de Computadores
Simulação 2.4 – Decodificadores
1 – Objetivos
Esta simulação ilustra o funcionamento dos decodificadores. Os aspectos abordados incluem os seguintes:
Verificação do funcionamento do decodificador de sete segmentos (Figura 2.14);
Verificação do funcionamento dos decodificadores 1-de-4 e 1-de-8 (Figura 2.15).
2 – O mostrador de 7 segmentos
O circuito seguinte implementa um módulo de Entrada ligado a um mostrador (Display Hexadecimal) de 7 segmentos. Ele está disponível no arquivo “mostrador.cmod”.
O módulo Entrada tem de ser configurado para 4 bits.
Passando para Simulação, abra as janelas dos módulos Entrada e Display. 
	
Ambos mostram que a saída do módulo Entrada ainda não tem valor válido (o Z indica que ainda não tem valor).
Pode-se entrar com um valor, teclando Enter em seguida. Neste exemplo, o valor é 5.
	
3 – O decodificador 1-de-N
O circuito seguinte ilustra a utilização de um decodificador de 1-de-8. Ele tem 3 entradas de seleção que identificam uma das oito saídas, que é a única a estar com 0. Todas as restantes estão com 1. Este circuito está disponível no arquivo “decodificador.cmod”.
Simule este circuito, colocando diferentes combinações nos interruptores e verificando que o LED que acende é o que lhe corresponde, tal como definido na tabela 2.8.
Observe que o sinal EN (Enable) tem de ser forçado a 1, para o decodificador funcionar. Caso contrário, todas as saídas ficam com 1 (pode-se verificar isto deixando de forçar 1 na entrada EN e ligando aí um interruptor).
	3
Simula��es/Cap2/simula��o 2.5/prom.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 4 NC= 3
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C1d5f" NBits= 1 NSegments= 1
 Po= "118bdf7d743-0" Pd= "118bdefbf9b-0" Np= 2
 X= 185 Y= 247
 X= 252 Y= 183
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cbb54" NBits= 4 NSegments= 1
 Po= "118bdf79344-0" Pd= "118bdefbfba" Np= 2
 X= 185 Y= 167
 X= 252 Y= 167
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cc633" NBits= 8 NSegments= 1
 Po= "118bdefbfca" Pd= "118c7cd4b95-0" Np= 2
 X= 362 Y= 163
 X= 429 Y= 163
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModulePROMRd" Name= "PROM" NPorts= 3 Conf= "4x8@3" X= 247 Y= 148
 P= "ADDRESS" CIn= 1 NBit= 4 StBit= 0 StConnBit= 0 PId= "118bdefbfba" Fixed= -1
 P= "DATA" CIn= 2 NBit= 8 StBit= 0 StConnBit= 0 PId= "118bdefbfca" Fixed= -1
 P= "RD" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bdefbf9b-0" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleInput" Name= "Input" NPorts= 1 Conf= "4@3" X= 80 Y= 152
 P= "OUT" CIn= 1 NBit= 4 StBit= 0 StConnBit= 0 PId= "118bdf79344-0" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "Toggle Buttons" NPorts= 1 Conf= "1@3" X= 80 Y= 232
 P= "OUT" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118bdf7d743-0" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleSevenSegments" Name= "Seven Segments" NPorts= 1 Conf= "4@3" X= 424 Y= 152
 P= "IN" CIn= 2 NBit= 7 StBit= 0 StConnBit= 0 PId= "118c7cd4b95-0" Fixed= -1
Simula��es/Cap2/simula��o 2.5/prom.dat
0 7e
1 30
2 6d
3 79
4 33
5 5b
6 5f
7 f0
8 7f
9 7b
a 77
b 1f
c 4e
d 3d
e 4f
f 47
Simula��es/Cap2/simula��o 2.5/simula��o-2.5.doc
Guia de Laboratório
de
Arquitetura de Computadores
Simulação 2.5 – PROMs
1 – Objetivos
Esta simulação ilustra o funcionamento das ROMs em geral, usando uma PROM que permite alterar facilmente o seu conteúdo. Os aspectos abordados incluem os seguintes:
Especificação e visualização do conteúdo da PROM;
Verificação do funcionamento de uma memória, permitindo obter uma palavra após especificar o endereço;
Implementação com uma PROM do decodificador de sete segmentos da Figura 2.14, com a tabela verdade indicada pela Tabela 2.6.
2 – Funcionamento da PROM
Carregue o circuito do arquivo “prom.cmod” que, além da PROM, tem uma janela de entrada, para poder especificar o endereço, um interruptor para poder controlar a saída da PROM e um mostrador de 7 segmentos, em que os sete bits de controle de cada um dos segmentos individuais está disponível.
Dê um duplo clique sobre a PROM e programe-a para 4 bits de endereço (16 células) e 8 bits de dados. Só vão ser usados 7 e é possível programar a PROM para ter 7 bits de saída, mas 8 é um valor mais comum (o oitavo bit fica sempre com 0).
O conteúdo da PROM pode ser definido abrindo, em Simulação, a janela de controle da PROM e escrevendo diretamente nas células ou lendo o arquivo “prom.dat”, que já contém os valores da Tabela 2.6. Este arquivo pode ser aberto com um editor de texto como, por exemplo, o NotePad.
NOTA – Na tabela 2.6, o bit G da linha do símbolo C (1100 em X3X2X1X0) está errado. Deve ser 0 e não 1. Este erro consta da errata do livro.
Nestas condições, em Simulação e depois de clicar em Start, é possível especificar valores de 0 a F na janela Input (clicando sempre em OK para o valor entrar) e ver que, no mostrador de 7 segmentos, aparecem os símbolos descritos na Tabela 2.6, que aqui é exemplificado para o símbolo “b”. Para cada valor de endereço especificado, a PROM coloca na sua saída o valor da célula endereçada.
	 
O sinal RD da PROM, controlado pelo interruptor, fica ativo em 0. Colocando 1 nele, todos os bits de saída da PROM ficam em estado de alta impedância (tri-state, ver Simulação 2.10) e o mostrador de 7 segmentos fica com o seguinte aspecto.
		
	3
Simula��es/Cap2/simula��o 2.6/simula��o-2.6.doc
Guia de Laboratório
de
Arquitetura de Computadores
Simulação 2.6 – Latch SR
1 – Objetivos
Esta simulação permite verificar o funcionamento dos latches SR, tomando como base a Figura 2.17 e a Figura 2.18. Os aspectos abordados incluem os seguintes:
Seqüencia dos estados do latch SR com NORs;
Seqüencia dos estados do latch SR com NANDs;
Verificação do estado com S e R ativos.
2 – Latch SR com NORs
Carregue o seguinte circuito do arquivo “SR-NOR.cmod”. Passe para Simulação, clique em Start e abra os painéis de controle dos interruptores S e R e dos LEDs.
Verifique que este circuito se comporta como indicado na
Figura 2.17b, incluindo a situação com ambos os interruptores com 1.
3 – Latch SR com NANDs
Carregue o seguinte circuito do arquivo “SR-NAND.cmod”. Passe para Simulação, clique em Start e abra os painéis de controle dos interruptores S e R e dos LEDs.
Verifique que este circuito se comporta como indicado na Figura 2.18b, incluindo a situação com ambos os interruptores com 0.
	2
Simula��es/Cap2/simula��o 2.6/SR-NAND.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 6 NC= 4
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C289d" NBits= 1 NSegments= 2
 Po= "118c7f23eff-0" Pd= "118c7e7935e-0" Np= 2
 X= 315 Y= 135
 X= 381 Y= 135
 Po= "118c7f23eff-0" Pd= "118c7f24a69" Np= 6
 X= 315 Y= 135
 X= 345 Y= 135
 X= 345 Y= 203
 X= 152 Y= 203
 X= 152 Y= 255
 X= 205 Y= 255
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C5768" NBits= 1 NSegments= 2
 Po= "118c7f24a49-0" Pd= "118c7e7c58a-0" Np= 2
 X= 315 Y= 255
 X= 381 Y= 255
 Po= "118c7f23f4d" Pd= "118c7f24a49-0" Np= 6
 X= 205 Y= 155
 X= 177 Y= 155
 X= 177 Y= 218
 X= 345 Y= 218
 X= 345 Y= 255
 X= 315 Y= 255
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ce406" NBits= 1 NSegments= 1
 Po= "118c7e75674-0" Pd= "118c7f23eff-1" Np= 2
 X= 137 Y= 135
 X= 205 Y= 135
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "C35e1" NBits= 1 NSegments= 1
 Po= "118c7f24ae6" Pd= "118c7e76d96-0" Np= 2
 X= 205 Y= 275
 X= 137 Y= 275
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "S" NPorts= 1 Conf= "1@3" X= 32 Y= 120
 P= "OUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7e75674-0" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "R" NPorts= 1 Conf= "1@3" X= 32 Y= 264
 P= "OUT" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7e76d96-0" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Q" NPorts= 1 Conf= "1@3" X= 376 Y= 120
 P= "IN" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7e7935e-0" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Não Q" NPorts= 1 Conf= "1@3" X= 376 Y= 240
 P= "IN" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7e7c58a-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleNAND" Name= "NAND" NPorts= 3 Conf= "2x1@3" X= 200 Y= 120
 P= "IN0" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7f23eff-1" Fixed= -1
 P= "IN1" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7f23f4d" Fixed= -1
 P= "OUT" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7f23eff-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleNAND" Name= "NAND" NPorts= 3 Conf= "2x1@3" X= 200 Y= 240
 P= "IN0" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7f24a69" Fixed= -1
 P= "IN1" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7f24ae6" Fixed= -1
 P= "OUT" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7f24a49-0" Fixed= -1
Simula��es/Cap2/simula��o 2.6/SR-NOR.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 6 NC= 4
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C72eb" NBits= 1 NSegments= 2
 Po= "118c7e66a10-0" Pd= "118c7e677dc" Np= 6
 X= 307 Y= 135
 X= 329 Y= 135
 X= 329 Y= 195
 X= 166 Y= 195
 X= 166 Y= 255
 X= 197 Y= 255
 Po= "118c7e66a10-0" Pd= "118c7e7935e-0" Np= 2
 X= 307 Y= 135
 X= 381 Y= 135
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "Caf08" NBits= 1 NSegments= 2
 Po= "118c7e66a4f" Pd= "118c7e677cc-0" Np= 6
 X= 197 Y= 155
 X= 182 Y= 155
 X= 182 Y= 228
 X= 329 Y= 228
 X= 329 Y= 255
 X= 307 Y= 255
 Po= "118c7e677cc-0" Pd= "118c7e7c58a-0" Np= 2
 X= 307 Y= 255
 X= 381 Y= 255
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "C5f46" NBits= 1 NSegments= 1
 Po= "118c7e76d96-0" Pd= "118c7e6781a" Np= 2
 X= 137 Y= 279
 X= 197 Y= 279
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "C56c7" NBits= 1 NSegments= 1
 Po= "118c7e75674-0" Pd= "118c7e66a30" Np= 2
 X= 137 Y= 135
 X= 197 Y= 135
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleNOR" Name= "NOR" NPorts= 3 Conf= "2x1@3" X= 192 Y= 120
 P= "IN0" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7e66a30" Fixed= -1
 P= "IN1" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7e66a4f" Fixed= -1
 P= "OUT" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7e66a10-0" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleNOR" Name= "NOR" NPorts= 3 Conf= "2x1@3" X= 192 Y= 240
 P= "IN0" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7e677dc" Fixed= -1
 P= "IN1" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7e6781a" Fixed= -1
 P= "OUT" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7e677cc-0" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "S" NPorts= 1 Conf= "1@3" X= 32 Y= 120
 P= "OUT" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7e75674-0" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "R" NPorts= 1 Conf= "1@3" X= 32 Y= 264
 P= "OUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7e76d96-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Q" NPorts= 1 Conf= "1@3" X= 376 Y= 120
 P= "IN" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7e7935e-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Não Q" NPorts= 1 Conf= "1@3" X= 376 Y= 240
 P= "IN" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7e7c58a-0" Fixed= -1
Simula��es/Cap2/simula��o 2.7/latch-D.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 9 NC= 7
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C806f" NBits= 1 NSegments= 2
 Po= "118c7f23eff-0" Pd= "118c7e7935e-0" Np= 2
 X= 651 Y= 103
 X= 717 Y= 103
 Po= "118c7f23eff-0" Pd= "118c7f24a69" Np= 6
 X= 651 Y= 103
 X= 681 Y= 103
 X= 681 Y= 171
 X= 488 Y= 171
 X= 488 Y= 223
 X= 541 Y= 223
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "Caf83" NBits= 1 NSegments= 2
 Po= "118c7f24a49-0" Pd= "118c7e7c58a-0" Np= 2
 X= 651 Y= 223
 X= 717 Y= 223
 Po= "118c7f23f4d" Pd= "118c7f24a49-0" Np= 6
 X= 541 Y= 123
 X= 513 Y= 123
 X= 513 Y= 186
 X= 681 Y= 186
 X= 681 Y= 223
 X= 651 Y= 223
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "C8f3e" NBits= 1 NSegments= 1
 Po= "118c807d2bd-0" Pd= "118c7f23eff-1" Np= 2
 X= 467 Y= 103
 X= 541 Y= 103
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "C962b" NBits= 1 NSegments= 1
 Po= "118c807df11-0" Pd= "118c7f24ae6" Np= 2
 X= 467 Y= 247
 X= 541 Y= 247
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "C215e" NBits= 1 NSegments= 1
 Po= "118c808bf40-0" Pd= "118c807df30" Np= 2
 X= 315 Y= 271
 X= 357 Y= 271
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ca2b" NBits= 1 NSegments= 2
 Po= "118c807df21" Pd= "118c7e76d96-0" Np= 4
 X= 357 Y= 247
 X= 327 Y= 247
 X= 327 Y= 199
 X= 161 Y= 199
 Po= "118c7e76d96-0" Pd= "118c807d2dc" Np= 4
 X= 161 Y= 199
 X= 327 Y= 199
 X= 327 Y= 123
 X= 357 Y= 123
 6 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ce8af" NBits= 1 NSegments= 2
 Po= "118c7e75674-0" Pd= "118c807d2cc" Np= 2
 X= 161 Y= 103
 X= 357 Y= 103
 Po= "118c808bf5f" Pd= "118c7e75674-0" Np= 4
 X= 205 Y= 271
 X= 192 Y= 271
 X= 192 Y= 103
 X= 161 Y= 103
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "D" NPorts= 1 Conf= "1@3" X= 56 Y= 88
 P= "OUT" CIn= 6 NBit= 1 StBit= 0 StConnBit=
0 PId= "118c7e75674-0" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "C" NPorts= 1 Conf= "1@3" X= 56 Y= 184
 P= "OUT" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7e76d96-0" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Q" NPorts= 1 Conf= "1@3" X= 712 Y= 88
 P= "IN" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7e7935e-0" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Não Q" NPorts= 1 Conf= "1@3" X= 712 Y= 208
 P= "IN" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7e7c58a-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleNAND" Name= "NAND" NPorts= 3 Conf= "2x1@3" X= 536 Y= 88
 P= "IN0" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7f23eff-1" Fixed= -1
 P= "IN1" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7f23f4d" Fixed= -1
 P= "OUT" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7f23eff-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleNAND" Name= "NAND" NPorts= 3 Conf= "2x1@3" X= 536 Y= 208
 P= "IN0" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7f24a69" Fixed= -1
 P= "IN1" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7f24ae6" Fixed= -1
 P= "OUT" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7f24a49-0" Fixed= -1
 6 M= "ist.ac.simulador.modules.ModuleNAND" Name= "NAND" NPorts= 3 Conf= "2x1@3" X= 352 Y= 88
 P= "IN0" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c807d2cc" Fixed= -1
 P= "IN1" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c807d2dc" Fixed= -1
 P= "OUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c807d2bd-0" Fixed= -1
 7 M= "ist.ac.simulador.modules.ModuleNAND" Name= "NAND" NPorts= 3 Conf= "2x1@3" X= 352 Y= 232
 P= "IN0" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c807df21" Fixed= -1
 P= "IN1" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c807df30" Fixed= -1
 P= "OUT" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c807df11-0" Fixed= -1
 8 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT" NPorts= 2 Conf= "1x1@3" X= 200 Y= 256
 P= "IN0" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c808bf5f" Fixed= -1
 P= "OUT" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c808bf40-0" Fixed= -1
Simula��es/Cap2/simula��o 2.7/simula��o-2.7.doc
Guia de Laboratório
de
Arquitetura de Computadores
Simulação 2.7 – Latches D
1 – Objetivos
Esta simulação ilustra o funcionamento dos latches D, usando a Figura 2.19 como base. Os aspectos abordados incluem os seguintes:
Seqüencia das variáveis de entrada e verificação da tabela de estados;
Verificação dos efeitos de transparência e de memorização.
2 – Latch D
Carregue o seguinte circuito do arquivo “latch-D.cmod”. Passe para Simulação, clique em Start e abra os painéis de controle dos interruptores D e C e dos LEDs.
Verifique que este circuito se comporta como indicado na Figura 2.19b. Em especial, coloque 1 no interruptor C e verifique que a saída Q acompanha a entrada D nas suas variações, ao contrário da situação em que C=0, em que a saída mantém o valor independentemente de D.
	1
Simula��es/Cap2/simula��o 2.8/divisor.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 4 NC= 3
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cfb1c" NBits= 1 NSegments= 1
 Po= "118cb113368-0" Pd= "118cb10cc9f" Np= 2
 X= 241 Y= 319
 X= 357 Y= 319
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C67" NBits= 1 NSegments= 2
 Po= "118cb10ccbe" Pd= "118cb10fd54-0" Np= 2
 X= 467 Y= 319
 X= 557 Y= 319
 Po= "118cb10ccbe" Pd= "118cb2a06ff" Np= 2
 X= 467 Y= 319
 X= 509 Y= 247
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "C5b3e" NBits= 1 NSegments= 1
 Po= "118cb2a06d0-0" Pd= "118cb10cc8f-0" Np= 5
 X= 619 Y= 247
 X= 619 Y= 199
 X= 316 Y= 199
 X= 316 Y= 359
 X= 357 Y= 359
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Register-D" NPorts= 4 Conf= "1@10" X= 352 Y= 304
 P= "CLOCK" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb10cc9f" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb10ccaf" Fixed= 1
 P= "IN" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb10cc8f-0" Fixed= -1
 P= "OUT" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb10ccbe" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Báscula" NPorts= 1 Conf= "1@3" X= 552 Y= 304
 P= "IN" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb10fd54-0" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "C" NPorts= 1 Conf= "1@3" X= 136 Y= 304
 P= "OUT" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb113368-0" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT" NPorts= 2 Conf= "1x1@3" X= 504 Y= 232
 P= "IN0" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb2a06ff" Fixed= -1
 P= "OUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb2a06d0-0" Fixed= -1
Simula��es/Cap2/simula��o 2.8/flipflop-D-circuito.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 10 NC= 8
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ce51a" NBits= 1 NSegments= 2
 Po= "118c7f23eff-0" Pd= "118c7e7935e-0" Np= 2
 X= 675 Y= 223
 X= 741 Y= 223
 Po= "118c7f23eff-0" Pd= "118c7f24a69" Np= 6
 X= 675 Y= 223
 X= 705 Y= 223
 X= 705 Y= 272
 X= 531 Y= 315
 X= 531 Y= 343
 X= 565 Y= 343
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C3950" NBits= 1 NSegments= 2
 Po= "118c7f24a49-0" Pd= "118c7e7c58a-0" Np= 2
 X= 675 Y= 343
 X= 741 Y= 343
 Po= "118c7f23f4d" Pd= "118c7f24a49-0" Np= 6
 X= 565 Y= 243
 X= 537 Y= 243
 X= 537 Y= 277
 X= 705 Y= 314
 X= 705 Y= 343
 X= 675 Y= 343
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cf50d" NBits= 1 NSegments= 1
 Po= "118c807d2bd-0" Pd= "118c807df21" Np= 6
 X= 427 Y= 87
 X= 454 Y= 87
 X= 454 Y= 137
 X= 293 Y= 193
 X= 293 Y= 223
 X= 317 Y= 223
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "C3be" NBits= 1 NSegments= 3
 Po= "118c807df11-0" Pd= "118c807d2dc" Np= 6
 X= 427 Y= 223
 X= 452 Y= 223
 X= 452 Y= 192
 X= 292 Y= 145
 X= 292 Y= 107
 X= 317 Y= 107
 Po= "118c836b349-1" Pd= "118c807df11-0" Np= 6
 X= 317 Y= 367
 X= 298 Y= 367
 X= 298 Y= 339
 X= 461 Y= 258
 X= 461 Y= 223
 X= 427 Y= 223
 Po= "118c807df11-0" Pd= "118c7f23eff-1" Np= 2
 X= 427 Y= 223
 X= 565 Y= 223
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "C5a50" NBits= 1 NSegments= 2
 Po= "118c807d2cc" Pd= "118c8365a5c-0" Np= 6
 X= 317 Y= 87
 X= 259 Y= 87
 X= 259 Y= 602
 X= 457 Y= 602
 X= 457 Y= 519
 X= 427 Y= 519
 Po= "118c836b369" Pd= "118c8365a5c-0" Np= 6
 X= 317 Y= 407
 X= 306 Y= 407
 X= 306 Y= 435
 X= 457 Y= 497
 X= 457 Y= 519
 X= 427 Y= 519
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "C5736" NBits= 1 NSegments= 2
 Po= "118c836b349-0" Pd= "118c8365a6b" Np= 6
 X= 427 Y= 367
 X= 457 Y= 367
 X= 457 Y= 446
 X= 296 Y= 489
 X= 296 Y= 519
 X= 317 Y= 519
 Po= "118c836b349-0" Pd= "118c7f24ae6" Np= 2
 X= 427 Y= 367
 X= 565 Y= 367
 6 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cf493" NBits= 1 NSegments= 2
 Po= "118c807df30" Pd= "118c7e76d96-0" Np= 4
 X= 317 Y= 243
 X= 281 Y= 243
 X= 281 Y= 327
 X= 193 Y= 327
 Po= "118c836b359" Pd= "118c7e76d96-0" Np= 4
 X= 317 Y= 387
 X= 281 Y= 387
 X= 281 Y= 327
 X= 193 Y= 327
 7 C= "ist.ac.simulador.nucleo.SConnection" Name= "C579f" NBits= 1 NSegments= 1
 Po= "118c8365a8b" Pd= "118c7e75674-0"
Np= 2
 X= 317 Y= 539
 X= 193 Y= 539
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "D" NPorts= 1 Conf= "1@3" X= 88 Y= 528
 P= "OUT" CIn= 7 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7e75674-0" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "C" NPorts= 1 Conf= "1@3" X= 88 Y= 312
 P= "OUT" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7e76d96-0" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Q" NPorts= 1 Conf= "1@3" X= 736 Y= 208
 P= "IN" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7e7935e-0" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Não Q" NPorts= 1 Conf= "1@3" X= 736 Y= 328
 P= "IN" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7e7c58a-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleNAND" Name= "NAND" NPorts= 3 Conf= "2x1@3" X= 560 Y= 208
 P= "IN0" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7f23eff-1" Fixed= -1
 P= "IN1" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7f23f4d" Fixed= -1
 P= "OUT" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7f23eff-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleNAND" Name= "NAND" NPorts= 3 Conf= "2x1@3" X= 560 Y= 328
 P= "IN0" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7f24a69" Fixed= -1
 P= "IN1" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7f24ae6" Fixed= -1
 P= "OUT" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c7f24a49-0" Fixed= -1
 6 M= "ist.ac.simulador.modules.ModuleNAND" Name= "NAND" NPorts= 3 Conf= "2x1@3" X= 312 Y= 72
 P= "IN0" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c807d2cc" Fixed= -1
 P= "IN1" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c807d2dc" Fixed= -1
 P= "OUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c807d2bd-0" Fixed= -1
 7 M= "ist.ac.simulador.modules.ModuleNAND" Name= "NAND" NPorts= 3 Conf= "2x1@3" X= 312 Y= 208
 P= "IN0" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c807df21" Fixed= -1
 P= "IN1" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c807df30" Fixed= -1
 P= "OUT" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c807df11-0" Fixed= -1
 8 M= "ist.ac.simulador.modules.ModuleNAND" Name= "NAND" NPorts= 3 Conf= "2x1@3" X= 312 Y= 504
 P= "IN0" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c8365a6b" Fixed= -1
 P= "IN1" CIn= 7 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c8365a8b" Fixed= -1
 P= "OUT" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c8365a5c-0" Fixed= -1
 9 M= "ist.ac.simulador.modules.ModuleNAND" Name= "NAND" NPorts= 4 Conf= "3x1@3" X= 312 Y= 352
 P= "IN0" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c836b349-1" Fixed= -1
 P= "IN1" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c836b359" Fixed= -1
 P= "IN2" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c836b369" Fixed= -1
 P= "OUT" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "118c836b349-0" Fixed= -1
Simula��es/Cap2/simula��o 2.8/flipflop-latch.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 6 NC= 4
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cce50" NBits= 1 NSegments= 2
 Po= "118cb1109a8-0" Pd= "118cb0f7acb" Np= 2
 X= 241 Y= 183
 X= 357 Y= 183
 Po= "118cb1109a8-0" Pd= "118cb10cc8f-0" Np= 4
 X= 241 Y= 183
 X= 288 Y= 183
 X= 288 Y= 359
 X= 357 Y= 359
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C298a" NBits= 1 NSegments= 2
 Po= "118cb113368-0" Pd= "118cb0f7a7d-0" Np= 4
 X= 241 Y= 319
 X= 325 Y= 319
 X= 325 Y= 163
 X= 357 Y= 163
 Po= "118cb113368-0" Pd= "118cb10cc9f" Np= 2
 X= 241 Y= 319
 X= 357 Y= 319
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cc9ed" NBits= 1 NSegments= 1
 Po= "118cb10ccbe" Pd= "118cb10fd54-0" Np= 2
 X= 467 Y= 319
 X= 557 Y= 319
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "C2b1b" NBits= 1 NSegments= 1
 Po= "118cb0f7aea" Pd= "118cb10f46b-0" Np= 2
 X= 467 Y= 143
 X= 557 Y= 143
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleLatch" Name= "Latch-D" NPorts= 5 Conf= "1@10" X= 352 Y= 128
 P= "CLEAR" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb0f7afa" Fixed= 1
 P= "EN" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb0f7a7d-0" Fixed= -1
 P= "IN" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb0f7acb" Fixed= -1
 P= "OE" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb0f7aab" Fixed= 1
 P= "OUT" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb0f7aea" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Register-D" NPorts= 4 Conf= "1@10" X= 352 Y= 304
 P= "CLOCK" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb10cc9f" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb10ccaf" Fixed= 1
 P= "IN" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb10cc8f-0" Fixed= -1
 P= "OUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb10ccbe" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Trinco" NPorts= 1 Conf= "1@3" X= 552 Y= 128
 P= "IN" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb10f46b-0" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Báscula" NPorts= 1 Conf= "1@3" X= 552 Y= 304
 P= "IN" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb10fd54-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "D" NPorts= 1 Conf= "1@3" X= 136 Y= 168
 P= "OUT" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb1109a8-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "C" NPorts= 1 Conf= "1@3" X= 136 Y= 304
 P= "OUT" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb113368-0" Fixed= -1
Simula��es/Cap2/simula��o 2.8/simula��o-2.8.doc
Guia de Laboratório
de
Arquitetura de Computadores
Simulação 2.8 – Flip-flops D
1 – Objetivos
Esta simulação ilustra o funcionamento dos flip-flops D, não apenas de forma específica, mas também o comparando com o dos latches, usando as figuras anteriores como base. Os aspectos abordados incluem os seguintes:
Verificação do comportamento do flip-flop, usando as portas lógicas internas (Figura 2.20);
Comparação do comportamento de um flip-flop sensível à borda de subida ou de descida com o de um latch (Figura 2.22);
Verificação do comportamento do divisor de freqüência da Figura 2.23;
Inicialização com 0 ou 1 do flip-flop da Figura 2.24.
2 – Flip-flop D
Carregue o seguinte circuito do arquivo “flipflop-D-circuito.cmod”. Passe para Simulação, clique em Start e abra os painéis de controle dos interruptores C e D e dos LEDs.
Verifique que a saída Q memoriza o valor da entrada D apenas na transição de C de 0 para 1.
3 – Comportamento dos flip-flops e dos latches D
Simule agora o circuito do arquivo “flipflop-latch.cmod”, que usa os módulos Trinco (latch) e Báscula (flip-flop). Verifique que o flip-flop atua apenas na borda de subida do sinal C, ao passo que o latch memoriza enquanto C=0. Observe que o sinal Clear do latch está ativo em 0, em função do que tem de ser forçado a 1.
4 – Divisor com um flip-flop D
Simule agora o circuito da Figura 2.23, contido no arquivo “divisor.cmod”. Verifique que o valor do LED muda apenas em cada transição do interruptor C de 0 para 1.
Este circuito não funcionaria se, em vez do flip-flop (báscula), se usasse um latch.
5 – Flip-flop D com Clear e Preset
Este é o circuito da Figura 2.24, cuja construção e simulação são deixadas como exercício para o leitor.
	4
Simula��es/Cap2/simula��o 2.9/registradores.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 6 NC= 4
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C14c6" NBits= 8 NSegments= 2
 Po=
"118cb1109a8-0" Pd= "118cb0f7acb" Np= 2
 X= 241 Y= 183
 X= 357 Y= 183
 Po= "118cb1109a8-0" Pd= "118cb10cc8f-0" Np= 4
 X= 241 Y= 183
 X= 288 Y= 183
 X= 288 Y= 359
 X= 357 Y= 359
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C6ef3" NBits= 1 NSegments= 2
 Po= "118cb113368-0" Pd= "118cb0f7a7d-0" Np= 4
 X= 241 Y= 319
 X= 325 Y= 319
 X= 325 Y= 163
 X= 357 Y= 163
 Po= "118cb113368-0" Pd= "118cb10cc9f" Np= 2
 X= 241 Y= 319
 X= 357 Y= 319
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ca81" NBits= 8 NSegments= 1
 Po= "118cb10ccbe" Pd= "118cb10fd54-0" Np= 2
 X= 467 Y= 319
 X= 557 Y= 319
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "C6c3b" NBits= 8 NSegments= 1
 Po= "118cb0f7aea" Pd= "118cb10f46b-0" Np= 2
 X= 467 Y= 143
 X= 557 Y= 143
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleLatch" Name= "Latch-D" NPorts= 5 Conf= "8@10" X= 352 Y= 128
 P= "CLEAR" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb0f7afa" Fixed= 1
 P= "EN" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb0f7a7d-0" Fixed= -1
 P= "IN" CIn= 0 NBit= 8 StBit= 0 StConnBit= 0 PId= "118cb0f7acb" Fixed= -1
 P= "OE" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb0f7aab" Fixed= 1
 P= "OUT" CIn= 3 NBit= 8 StBit= 0 StConnBit= 0 PId= "118cb0f7aea" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Register-D" NPorts= 4 Conf= "8@10" X= 352 Y= 304
 P= "CLOCK" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb10cc9f" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb10ccaf" Fixed= 1
 P= "IN" CIn= 0 NBit= 8 StBit= 0 StConnBit= 0 PId= "118cb10cc8f-0" Fixed= -1
 P= "OUT" CIn= 2 NBit= 8 StBit= 0 StConnBit= 0 PId= "118cb10ccbe" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Trinco" NPorts= 1 Conf= "8@3" X= 552 Y= 128
 P= "IN" CIn= 3 NBit= 8 StBit= 0 StConnBit= 0 PId= "118cb10f46b-0" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Báscula" NPorts= 1 Conf= "8@3" X= 552 Y= 304
 P= "IN" CIn= 2 NBit= 8 StBit= 0 StConnBit= 0 PId= "118cb10fd54-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "D" NPorts= 1 Conf= "8@3" X= 136 Y= 168
 P= "OUT" CIn= 0 NBit= 8 StBit= 0 StConnBit= 0 PId= "118cb1109a8-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "C" NPorts= 1 Conf= "1@3" X= 136 Y= 304
 P= "OUT" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb113368-0" Fixed= -1
Simula��es/Cap2/simula��o 2.9/simula��o-2.9.doc
Guia de Laboratório
de
Arquitetura de Computadores
Simulação 2.9 – Registradores
1 – Objetivos
Esta simulação ilustra o funcionamento dos registradores, quer com latches quer com flip-flops. Os aspectos abordados incluem os seguintes:
Verificação da diferença de comportamento dos dois registradores da Figura 2.25, incluindo o modo transparente do latch;
Verificação do comportamento do circuito da Figura 2.26;
Constatação do funcionamento incorreto, caso o registrador da Figura 2.26 seja substituído por um registrador com latches.
2 – Registradores com latches e com flip-flops
Carregue o seguinte circuito do arquivo “registradores.cmod”. Passe para Simulação, clique em Start e abra os painéis de controle dos interruptores D e C e dos LEDs. 
Note que o interruptor D, os registradores e os LEDs são todos de 8 bits. 
Altere agora alguns bits do interruptor D, como por exemplo:
As saídas dos registradores não se alteram porque C=0. Passe agora C para 1.
Tanto o registrador com latches (trincos) como o registrador com flip-flops (básculas) passam a refletir o valor da entrada.
Altere agora alguns dos bits do interruptor na entrada, como por exemplo:
Verifique que o registrador com latches acompanha a alteração (com C=1 está transparente), mas que o registrador com flip-flops se mantém. 
Passe agora C para 0 (nada acontece) e novamente para 1. Só agora, na borda de subida de C, o registrador com flip-flops memoriza o valor do interruptor.
3 – Registrador com flip-flops com realimentação
Os registradores com flip-flops e com latches comportam-se de forma diferente quando as suas entradas dependem das suas saídas através de um circuito combinatório.
Carregue o circuito do arquivo “somador-fliflop.cmod”, que implementa o circuito da Figura 2.26, usando um somador de 4 bits (com o segundo operando com 0, mas a entrada de transporte com 1) e um registrador com flip-flops de 4 bits.
Em Simulação e após clicar em Start, abra as janelas do interruptor e do mostrador de 7 segmentos e verifique que o valor deste é incrementado quando o interruptor passa de 0 para 1. A cada instante, o registrador tem um determinado valor na saída e esse valor mais 1 na entrada.
4 – Registrador com latch com realimentação
Simule agora o circuito seguinte, contido no arquivo “somador-latch.cmod”. É igual ao anterior, mas o registrador com flip-flops foi substituído por um registrador com latches.
Passe para Simulação, clique em Start e abra as janelas do interruptor e do mostrador de 7 segmentos. Clique no interruptor e observe o comportamento irregular do mostrador. 
Na realidade, o sistema está contando na velocidade máxima permitida pelo simulador. Com 1 no interruptor, o registrador está transparente e reproduz a sua entrada na saída. É um circuito totalmente combinatório, e a saída do contador aparece na sua entrada, tornando o circuito instável.
Observe ainda que basta passar o interruptor para 0 para a instabilidade parar, mas basta também passar para 1 para a instabilidade recomeçar.
Os registradores com latches só devem ser usados para armazenar dados e não para construir circuitos seqüenciais com realimentação (máquinas de estados).
	4
Simula��es/Cap2/simula��o 2.9/somador-flipflop.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 4 NC= 3
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C40d2" NBits= 4 NSegments= 2
 Po= "118cb638fa2" Pd= "118cb6406a7-0" Np= 2
 X= 475 Y= 167
 X= 549 Y= 167
 Po= "118cb638fa2" Pd= "118cb647b4a-0" Np= 5
 X= 475 Y= 167
 X= 475 Y= 108
 X= 135 Y= 108
 X= 135 Y= 203
 X= 165 Y= 203
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C75dd" NBits= 4 NSegments= 1
 Po= "118cb647b98" Pd= "118cb638ea8-0" Np= 2
 X= 275 Y= 203
 X= 365 Y= 203
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "C3fc2" NBits= 1 NSegments= 1
 Po= "118cb65024d-0" Pd= "118cb638f25" Np= 4
 X= 281 Y= 311
 X= 327 Y= 311
 X= 327 Y= 167
 X= 365 Y= 167
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Register-D" NPorts= 4 Conf= "4@10" X= 360 Y= 152
 P= "CLOCK" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb638f25" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb638f64" Fixed= 1
 P= "IN" CIn= 1 NBit= 4 StBit= 0 StConnBit= 0 PId= "118cb638ea8-0" Fixed= -1
 P= "OUT" CIn= 0 NBit= 4 StBit= 0 StConnBit= 0 PId= "118cb638fa2" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleHexaDisplay" Name= "Hexa Display" NPorts= 1 Conf= "4@3" X= 544 Y= 152
 P= "IN" CIn= 0 NBit= 4 StBit= 0 StConnBit= 0 PId= "118cb6406a7-0" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleADD" Name= "ADD" NPorts= 5 Conf= "4@10" X= 160 Y= 168
 P= "CIN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb647be6" Fixed= 1
 P= "COUT" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb647c15" Fixed= -1
 P= "IN0" CIn= 0 NBit= 4 StBit= 0 StConnBit= 0 PId= "118cb647b4a-0" Fixed= -1
 P= "IN1" CIn= -1 NBit= 4 StBit= 0 StConnBit= 0 PId= "118cb647b79" Fixed= 0
 P= "OUT" CIn= 1 NBit= 4 StBit=
0 StConnBit= 0 PId= "118cb647b98" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "Toggle Buttons" NPorts= 1 Conf= "1@3" X= 176 Y= 296
 P= "OUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb65024d-0" Fixed= -1
Simula��es/Cap2/simula��o 2.9/somador-latch.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 4 NC= 3
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C7eeb" NBits= 4 NSegments= 2
 Po= "118cb6e7dbb" Pd= "118cb6406a7-0" Np= 2
 X= 483 Y= 167
 X= 549 Y= 167
 Po= "118cb6e7dbb" Pd= "118cb647b4a-0" Np= 5
 X= 483 Y= 167
 X= 483 Y= 108
 X= 118 Y= 108
 X= 118 Y= 203
 X= 165 Y= 203
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C1668" NBits= 4 NSegments= 1
 Po= "118cb647b98" Pd= "118cb6e7d8c" Np= 2
 X= 275 Y= 203
 X= 373 Y= 203
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cc44" NBits= 1 NSegments= 1
 Po= "118cb65024d-0" Pd= "118cb6e7d4d-0" Np= 4
 X= 281 Y= 311
 X= 329 Y= 311
 X= 329 Y= 187
 X= 373 Y= 187
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleHexaDisplay" Name= "Hexa Display" NPorts= 1 Conf= "4@3" X= 544 Y= 152
 P= "IN" CIn= 0 NBit= 4 StBit= 0 StConnBit= 0 PId= "118cb6406a7-0" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleADD" Name= "ADD" NPorts= 5 Conf= "4@10" X= 160 Y= 168
 P= "CIN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb647be6" Fixed= 1
 P= "COUT" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb647c15" Fixed= -1
 P= "IN0" CIn= 0 NBit= 4 StBit= 0 StConnBit= 0 PId= "118cb647b4a-0" Fixed= -1
 P= "IN1" CIn= -1 NBit= 4 StBit= 0 StConnBit= 0 PId= "118cb647b79" Fixed= 0
 P= "OUT" CIn= 1 NBit= 4 StBit= 0 StConnBit= 0 PId= "118cb647b98" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "Toggle Buttons" NPorts= 1 Conf= "1@3" X= 176 Y= 296
 P= "OUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb65024d-0" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleLatch" Name= "Latch-D" NPorts= 5 Conf= "4@10" X= 368 Y= 152
 P= "CLEAR" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb6e7dda" Fixed= 1
 P= "EN" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb6e7d4d-0" Fixed= -1
 P= "IN" CIn= 1 NBit= 4 StBit= 0 StConnBit= 0 PId= "118cb6e7d8c" Fixed= -1
 P= "OE" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "118cb6e7d5d" Fixed= 1
 P= "OUT" CIn= 0 NBit= 4 StBit= 0 StConnBit= 0 PId= "118cb6e7dbb" Fixed= -1
Simula��es/Cap3/simula��o 3.1/ram.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 6 NC= 4
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C8462" NBits= 8 NSegments= 1
 Po= "11c60a5d2ba-0" Pd= "11c60a51584-0" Np= 4
 X= 257 Y= 151
 X= 331 Y= 151
 X= 331 Y= 175
 X= 389 Y= 175
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C3198" NBits= 1 NSegments= 1
 Po= "11c60a5b4fd-0" Pd= "11c60a515d2" Np= 4
 X= 257 Y= 279
 X= 333 Y= 279
 X= 333 Y= 235
 X= 389 Y= 235
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "C375a" NBits= 8 NSegments= 2
 Po= "11c60a86cf5-0" Pd= "11c60a51594" Np= 2
 X= 565 Y= 175
 X= 499 Y= 175
 Po= "11c60bbfe91-0" Pd= "11c60a51594" Np= 5
 X= 717 Y= 175
 X= 717 Y= 132
 X= 539 Y= 132
 X= 539 Y= 175
 X= 499 Y= 175
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cf8cb" NBits= 8 NSegments= 1
 Po= "11c60a5e013-0" Pd= "11c60a515b3" Np= 2
 X= 257 Y= 215
 X= 389 Y= 215
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleMemoryTwoDataBusCsWr" Name= "RAM" NPorts= 5 Conf= "8@10" X= 384 Y= 160
 P= "A7..A0" CIn= 0 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60a51584-0" Fixed= -1
 P= "CS" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c60a515c3" Fixed= 0
 P= "DATA_IN" CIn= 3 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60a515b3" Fixed= -1
 P= "DATA_OUT" CIn= 2 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60a51594" Fixed= -1
 P= "WR" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c60a515d2" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "Escreve" NPorts= 1 Conf= "1@3" X= 152 Y= 264
 P= "OUT" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c60a5b4fd-0" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleInput" Name= "Endereço" NPorts= 1 Conf= "8@3" X= 152 Y= 136
 P= "OUT" CIn= 0 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60a5d2ba-0" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleInput" Name= "Dados entrada" NPorts= 1 Conf= "8@3" X= 152 Y= 200
 P= "OUT" CIn= 3 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60a5e013-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleHexaDisplay" Name= "Data_out 7-4" NPorts= 1 Conf= "4@3" X= 560 Y= 160
 P= "IN" CIn= 2 NBit= 4 StBit= 0 StConnBit= 4 PId= "11c60a86cf5-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleHexaDisplay" Name= "Data_out 3-0" NPorts= 1 Conf= "4@3" X= 712 Y= 160
 P= "IN" CIn= 2 NBit= 4 StBit= 0 StConnBit= 0 PId= "11c60bbfe91-0" Fixed= -1
Simula��es/Cap3/simula��o 3.1/simula��o-3.1.doc
Guia de Laboratório
de
Arquitetura de Computadores
Simulação 3.1 – Utilização de RAMs
1 – Objetivos
Esta simulação ilustra a utilização de RAMs. Os aspectos abordados incluem os seguintes:
Leitura de células específicas a partir de seu endereço;
Verificação da capacidade de uma RAM e relação com o endereço;
Escrita de células específicas a partir de seu endereço, com ativação do sinal WR;
Leitura de uma célula após a escrita (por desativação de WR);
Verificação da volatilidade da RAM (simulação do desligamento da alimentação).
A descrição desta simulação, no livro, afirma que o conteúdo inicial de uma RAM é aleatório. Isto acontece num circuito real, quando uma RAM é ligada. A introdução desta característica no simulador é muito fácil, bastando inicialmente preencher o conteúdo da RAM com valores aleatórios. No entanto, verificou-se que era menos confuso, para as várias simulações, se inicialmente a RAM estivesse toda preenchida com zeros. Deste modo, e visando clareza e simplicidade, prescindiu-se de simular o conteúdo aleatório inicial das RAMs. Num sistema real, no entanto, os programas devem inicializar todas as células de RAM que usarem.
2 – Circuito
O arquivo “ram.cmod” implementa o circuito da RAM representada na Figura 3.2 (embora de maior capacidade, com 8 bits de endereço), mais alguns elementos para permitir acessá-la. Os periféricos “Endereço” e “Dados entrada” são de 8 bits.
3 – Simulação
Carregue este arquivo no simulador, passe para Simulação, clique em Start e abra (com duplo clique) os painéis de controle de todos os módulos, incluindo a própria RAM.
Coloque 1 no interruptor Escreve (leitura).
Faça as seguintes experiências:
Visualização e alteração do conteúdo de uma RAM
O painel da RAM mostra inicialmente todas as células com 0 (inicializadas).
Note que a RAM tem 8 bits de endereço, conseqüentemente tem 256 células. No caso geral, uma RAM com N bits de endereço tem 2N células;
Clique em várias células e altere o seu valor (note que um valor só é alterado na célula quando o cursor sai dessa célula).
Quando o valor binário faz parte da tabela do Apêndice E do livro, do lado direito aparecem os caracteres ASCII. Os valores restantes não têm representação visível e são representados com um ‘.’.
Leitura de um endereço
Coloque 0 no módulo Endereço (dê OK). Verifique que nos displays aparece o conteúdo da memória no endereço 00H (12H, neste exemplo);
Coloque outros valores no módulo Endereço (dê OK). Verifique em cada caso que nos displays aparece o conteúdo da memória no endereço especificado;
Se alterar no painel da RAM a célula
de memória cujo endereço é especificado pelo módulo Endereço, verifique que os displays passam a mostrar o novo valor (só quando o cursor sai dessa célula).
Escrita de um valor num endereço
Coloque no módulo “Dados entrada” o valor a escrever na RAM (dê OK);
Coloque no módulo “Endereço” o endereço da célula da RAM onde se pretende escrever esse valor (dê OK);
Coloque 0 no interruptor “Escreve” e depois 1 outra vez;
Verifique que o novo valor aparece nos displays e no painel de controle da RAM (no endereço especificado).
	3
Simula��es/Cap3/simula��o 3.2/simula��o-3.2.doc
Guia de Laboratório
de
Arquitetura de Computadores
Simulação 3.2 – Unidade de dados
1 – Objetivos
Esta simulação ilustra a utilização do circuito da Figura 3.10, incluindo o da Figura 3.11. Os aspectos abordados incluem os seguintes:
Inicialização da memória de dados (valores dos operandos) pelo usuário;
Especificação pelo usuário de cada um dos sinais da Figura 3.10;
Verificação do funcionamento de cada operação básica por ativação desses sinais, com visualização dos dados presentes em cada um dos pontos do circuito, incluindo o interior da ALU;
Detalhes do funcionamento dos sinais WR e ESCR_A (bordas em que estão ativos);
Implementação de uma soma completa (algoritmo 2);
Implementação das operações restantes suportadas pela ALU;
Verificação da possibilidade de utilização do resultado de uma operação no registrador A como operando da operação seguinte.
2 – Circuito
O arquivo “unidade-dados.cmod” implementa o circuito da Figura 3.10, com a ALU implementada pelo circuito da Figura 3.11. A memória tem 8 bits de dados e de endereços. Todos os módulos por onde os dados podem passar (registrador (registo), multiplexadores (multiplexers), somador, XOR, AND e OR) têm 8 bits, tal como indicado na Figura 3.11.
Os botões e o módulo de entrada (endereço), do lado esquerdo, permitem especificar os diversos sinais necessários para controlar o circuito. O multiplexador do lado esquerdo é auxiliar, tem 8 bits, uma entrada forçada a 00H e outra a FFH e destina-se simplesmente a produzir um número de 8 bits, todos com 0 ou todos com 1, de acordo com o sinal SEL_ALU(0), de modo que o XOR de 8 bits complemente todos os bits ou não. A Figura 3.11 é um circuito simplificado e naturalmente um único bit (SEL_ALU(0)) não pode alimentar um XOR de 8 bits (que é um conjunto de 8 XORs de 1 bit cada).
Os displays que se ligam à saída da ALU são apenas para se ver mais facilmente o valor desta saída. O valor de qualquer sinal pode ser visto, em modo de simulação, colocando o cursor em cima de qualquer sinal, sem pressionar o botão do mouse.
3 – Simulação
Passe para modo de simulação (sem clicar em Start) e abra os painéis de controle dos vários dispositivos de entrada e dos displays (estes lado a lado, com os que se ligam aos bits 3 a 0 da ALU do lado direito), para formarem um byte.
Os painéis dos botões precisam ser expandidos (arrastando a borda direita da sua janela, por exemplo), para apresentarem o seu nome.
Coloque 1 no botão WR, para não escrever um valor qualquer na memória. O sinal WR fica ativo com 0.
Comecemos por colocar dados na memória de dados. Abra o painel de controle da memória e coloque os valores 4AH e 23H nos endereços 3 e 4, respectivamente. Estes são os valores (dados e endereços) usados nos exemplos, mas naturalmente você pode usar quaisquer outros valores. 
Note que um valor na memória só fica efetivo depois de se retirar o cursor da célula onde se escreveu o valor.
Se quiser, você pode guardar estes valores num arquivo (através do menu no painel) para mais tarde recuperá-los.
Clique agora em Start e realize as seguintes experiências.
Guardar no registrador A o valor que se encontra no endereço 03H (A<-M[endereço])
Coloque no módulo Endereço o valor 3 (dê OK). Note que na saída da memória aparece o valor 4AH
Coloque no botão SEL_A o valor 1, para que o valor lido da memória chegue à entrada do registrador.
No botão ESCR_A mude o valor 0 para 1, para memorizar o valor no registrador. Este sinal fica ativo na borda de subida, em função do que o valor 4AH aparece logo na saída do registrador.
Passe ESCR_A para 0, de modo a ficar preparado para nova escrita.
Observar as diferentes operações da ALU (operandos A e M[endereço])
Coloque no módulo Endereço o valor 4 (dê OK), de modo a fazer aparecer o valor 23 na saída da memória.
Observe que o valor que aparece nos displays é 6DH, o resultado da soma na ALU entre o valor do registrador A (4AH) e da célula de memória com o endereço 4 (que contém o valor 23).
Coloque 1 no botão SEL_ALU(0), o que seleciona a subtração (por complementar de 2 o valor 23 à entrada do somador, através do XOR). A saída da ALU fica com o valor 27H (4AH-23H).
Coloque 0 no botão SEL_ALU(0) e 1 no SEL_ALU(1), o que seleciona a operação AND. A saída da ALU fica com o valor 02H (4AH AND 23H).
Coloque 1 no botão SEL_ALU(0) e 1 no SEL_ALU(1), o que seleciona a operação OR. A saída da ALU fica com o valor 6BH (4AH OR 23H).
Guardar no registrador A o resultado da soma entre o valor contido no registrador A e valor contido no endereço 04H (A<-A+M[endereço])
Volte a colocar 0 no botão SEL_ALU(0) e 0 no SEL_ALU(1), o que seleciona a operação soma. A saída da ALU fica com o valor 6DH (4AH + 23H)
Coloque o valor 0 no botão SEL_A, para que a saída da ALU chegue à entrada do registrador A.
Passe o botão ESCR_A de 0 para 1 e para 0 novamente. O registrador memoriza o valor 6DH.
Guardar o valor do registrador na célula de memória com o endereço 10H (M[endereço] <- A)
Coloque no módulo Endereço o valor 10H (dê OK).
Passe o valor do botão WR de 1 para 0 e para 1 novamente. O valor 6DH do registrador é memorizado na memória. Verifique-o no painel de controle da memória.
Utilizar o valor do registrador na operação seguinte
Repita a operação de guardar no registrador o resultado de uma operação na ALU, mudando eventualmente a operação da ALU por meio dos sinais SEL_ALU. O valor atual do registrador, que foi o resultado da última operação, é agora o novo operando.
	4
Simula��es/Cap3/simula��o 3.2/unidade-dados.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 17 NC= 15
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C96b" NBits= 8 NSegments= 1
 Po= "11c60a5d2ba-0" Pd= "11c60a51584-0" Np= 2
 X= 225 Y= 55
 X= 605 Y= 55
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C24a3" NBits= 1 NSegments= 1
 Po= "11c60a5b4fd-0" Pd= "11c60a515d2" Np= 2
 X= 225 Y= 119
 X= 605 Y= 119
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "C431e" NBits= 1 NSegments= 1
 Po= "11c6144bce9-0" Pd= "11c60c6c43f" Np= 2
 X= 225 Y= 279
 X= 525 Y= 279
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "C3385" NBits= 1 NSegments= 1
 Po= "11c6144a045-0" Pd= "11c60cb939c" Np= 2
 X= 225 Y= 351
 X= 525 Y= 351
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ca44b" NBits= 8 NSegments= 3
 Po= "11c60c6eb30-0" Pd= "11c60a86cf5-0" Np= 3
 X= 627 Y= 647
 X= 685 Y= 647
 X= 685 Y= 703
 Po= "11c60c6eb30-0" Pd= "11c60bbfe91-0" Np= 3
 X= 627 Y= 647
 X= 845 Y= 647
 X= 845 Y= 703
 Po= "11c60c6eb30-0" Pd= "11c60c6c45e" Np= 5
 X= 627 Y= 647
 X= 720 Y= 647
 X= 720 Y= 206
 X= 525 Y= 206
 X= 525 Y= 239
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ce25" NBits= 8 NSegments= 2
 Po= "11c614205db" Pd= "11c60c6eb8d" Np= 6
 X= 627 Y= 491
 X= 650 Y= 491
 X= 650 Y= 592
 X= 490 Y= 592
 X= 490 Y= 667
 X= 517 Y= 667
 Po= "11c60c6eb5e" Pd= "11c60c6eb8d" Np= 4
 X= 517 Y= 647
 X= 490 Y= 647
 X= 490 Y= 667
 X= 517 Y= 667
 6 C= "ist.ac.simulador.nucleo.SConnection" Name= "C3672"
NBits= 8 NSegments= 1
 Po= "11c60cca1a0-0" Pd= "11c60c6ebac" Np= 4
 X= 435 Y= 591
 X= 467 Y= 591
 X= 467 Y= 687
 X= 517 Y= 687
 7 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ce022" NBits= 8 NSegments= 1
 Po= "11c60ccb639-0" Pd= "11c60c6ebcc" Np= 4
 X= 435 Y= 671
 X= 455 Y= 671
 X= 455 Y= 707
 X= 517 Y= 707
 8 C= "ist.ac.simulador.nucleo.SConnection" Name= "C9f0b" NBits= 8 NSegments= 1
 Po= "11c60c6c420-0" Pd= "11c60cb937d-0" Np= 6
 X= 635 Y= 239
 X= 683 Y= 239
 X= 683 Y= 321
 X= 501 Y= 321
 X= 501 Y= 391
 X= 525 Y= 391
 9 C= "ist.ac.simulador.nucleo.SConnection" Name= "C90c0" NBits= 8 NSegments= 4
 Po= "11c60cb93cb" Pd= "11c60cca1bf" Np= 6
 X= 635 Y= 351
 X= 679 Y= 351
 X= 679 Y= 430
 X= 295 Y= 430
 X= 295 Y= 591
 X= 325 Y= 591
 Po= "11c60cb93cb" Pd= "11c614205ac-0" Np= 6
 X= 635 Y= 351
 X= 679 Y= 351
 X= 679 Y= 430
 X= 488 Y= 430
 X= 488 Y= 491
 X= 517 Y= 491
 Po= "11c60cca1bf" Pd= "11c60ccb658" Np= 4
 X= 325 Y= 591
 X= 295 Y= 591
 X= 295 Y= 671
 X= 325 Y= 671
 Po= "11c60a515b3" Pd= "11c60cb93cb" Np= 6
 X= 605 Y= 95
 X= 573 Y= 95
 X= 573 Y= 158
 X= 781 Y= 158
 X= 781 Y= 351
 X= 635 Y= 351
 10 C= "ist.ac.simulador.nucleo.SConnection" Name= "C4be7" NBits= 8 NSegments= 1
 Po= "11c60cbe6ea-0" Pd= "11c614205bc" Np= 2
 X= 435 Y= 511
 X= 517 Y= 511
 11 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cd980" NBits= 8 NSegments= 4
 Po= "11c60cbe709" Pd= "11c60cca1cf" Np= 4
 X= 325 Y= 511
 X= 272 Y= 511
 X= 272 Y= 611
 X= 325 Y= 611
 Po= "11c60cca1cf" Pd= "11c60ccb668" Np= 4
 X= 325 Y= 611
 X= 272 Y= 611
 X= 272 Y= 691
 X= 325 Y= 691
 Po= "11c60c6c47e" Pd= "11c60cbe709" Np= 4
 X= 525 Y= 259
 X= 272 Y= 259
 X= 272 Y= 511
 X= 325 Y= 511
 Po= "11c60a51594" Pd= "11c60c6c47e" Np= 6
 X= 715 Y= 55
 X= 749 Y= 55
 X= 749 Y= 185
 X= 503 Y= 185
 X= 503 Y= 259
 X= 525 Y= 259
 12 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cca3b" NBits= 1 NSegments= 3
 Po= "11c61441f15-0" Pd= "11c60c6eb3f" Np= 2
 X= 217 Y= 727
 X= 517 Y= 727
 Po= "11c61441f15-0" Pd= "11c614205eb" Np= 4
 X= 217 Y= 727
 X= 241 Y= 727
 X= 241 Y= 471
 X= 517 Y= 471
 Po= "11c61dae0fc" Pd= "11c61441f15-0" Np= 6
 X= 109 Y= 575
 X= 88 Y= 575
 X= 88 Y= 655
 X= 241 Y= 655
 X= 241 Y= 727
 X= 217 Y= 727
 13 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cbe21" NBits= 1 NSegments= 1
 Po= "11c61442694-0" Pd= "11c60c6eb7e" Np= 4
 X= 217 Y= 775
 X= 344 Y= 775
 X= 344 Y= 747
 X= 517 Y= 747
 14 C= "ist.ac.simulador.nucleo.SConnection" Name= "C1273" NBits= 8 NSegments= 1
 Po= "11c61dae0ec-0" Pd= "11c60cbe786" Np= 2
 X= 219 Y= 535
 X= 325 Y= 535
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleMemoryTwoDataBusCsWr" Name= "Memória dados" NPorts= 5 Conf= "8@10" X= 600 Y= 40
 P= "A7..A0" CIn= 0 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60a51584-0" Fixed= -1
 P= "CS" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c60a515c3" Fixed= 0
 P= "DATA_IN" CIn= 9 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60a515b3" Fixed= -1
 P= "DATA_OUT" CIn= 11 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60a51594" Fixed= -1
 P= "WR" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c60a515d2" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "WR" NPorts= 1 Conf= "1@3" X= 120 Y= 104
 P= "OUT" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c60a5b4fd-0" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleInput" Name= "Endereço" NPorts= 1 Conf= "8@3" X= 120 Y= 40
 P= "OUT" CIn= 0 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60a5d2ba-0" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleHexaDisplay" Name= "Saída ALU 7-4" NPorts= 1 Conf= "4@3" X= 680 Y= 688
 P= "IN" CIn= 4 NBit= 4 StBit= 0 StConnBit= 4 PId= "11c60a86cf5-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleHexaDisplay" Name= "Saída ALU 3-0" NPorts= 1 Conf= "4@3" X= 840 Y= 688
 P= "IN" CIn= 4 NBit= 4 StBit= 0 StConnBit= 0 PId= "11c60bbfe91-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleMux" Name= "MUX" NPorts= 4 Conf= "2x8@10" X= 520 Y= 224
 P= "IN0" CIn= 4 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60c6c45e" Fixed= -1
 P= "IN1" CIn= 11 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60c6c47e" Fixed= -1
 P= "OUT" CIn= 8 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60c6c420-0" Fixed= -1
 P= "SEL0" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c60c6c43f" Fixed= -1
 6 M= "ist.ac.simulador.modules.ModuleMux" Name= "Multiplexer" NPorts= 7 Conf= "4x8@10" X= 512 Y= 632
 P= "IN0" CIn= 5 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60c6eb5e" Fixed= -1
 P= "IN1" CIn= 5 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60c6eb8d" Fixed= -1
 P= "IN2" CIn= 6 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60c6ebac" Fixed= -1
 P= "IN3" CIn= 7 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60c6ebcc" Fixed= -1
 P= "OUT" CIn= 4 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60c6eb30-0" Fixed= -1
 P= "SEL0" CIn= 12 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c60c6eb3f" Fixed= -1
 P= "SEL1" CIn= 13 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c60c6eb7e" Fixed= -1
 7 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Registo A" NPorts= 4 Conf= "8@10" X= 520 Y= 336
 P= "CLOCK" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c60cb939c" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c60cb93bc" Fixed= 1
 P= "IN" CIn= 8 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60cb937d-0" Fixed= -1
 P= "OUT" CIn= 9 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60cb93cb" Fixed= -1
 8 M= "ist.ac.simulador.modules.ModuleXOR" Name= "XOR" NPorts= 3 Conf= "2x8@3" X= 320 Y= 496
 P= "IN0" CIn= 11 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60cbe709" Fixed= -1
 P= "IN1" CIn= 14 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60cbe786" Fixed= -1
 P= "OUT" CIn= 10 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60cbe6ea-0" Fixed= -1
 9 M= "ist.ac.simulador.modules.ModuleAND" Name= "AND" NPorts= 3 Conf= "2x8@3" X= 320 Y= 576
 P= "IN0" CIn= 9 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60cca1bf" Fixed= -1
 P= "IN1" CIn= 11 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60cca1cf" Fixed= -1
 P= "OUT" CIn= 6 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60cca1a0-0" Fixed= -1
 10 M= "ist.ac.simulador.modules.ModuleOR" Name= "OR" NPorts= 3 Conf= "2x8@3" X= 320 Y= 656
 P= "IN0" CIn= 9 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60ccb658" Fixed= -1
 P= "IN1" CIn= 11 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60ccb668" Fixed= -1
 P= "OUT" CIn= 7 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60ccb639-0" Fixed= -1
 11 M= "ist.ac.simulador.modules.ModuleADD" Name= "Somador" NPorts= 5 Conf= "8@10" X= 512 Y= 456
 P= "CIN" CIn= 12 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c614205eb" Fixed= -1
 P= "COUT" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c614205fa" Fixed= -1
 P= "IN0" CIn= 9 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c614205ac-0" Fixed= -1
 P= "IN1" CIn= 10 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c614205bc" Fixed= -1
 P= "OUT" CIn= 5 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c614205db" Fixed= -1
 12 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "SEL_ALU(0)" NPorts= 1 Conf= "1@3" X= 112 Y= 712
 P= "OUT" CIn= 12 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c61441f15-0" Fixed= -1
 13 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "SEL_ALU(1)" NPorts= 1 Conf= "1@3" X= 112 Y= 760
 P= "OUT" CIn= 13 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c61442694-0" Fixed= -1
 14 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "ESCR_A" NPorts= 1 Conf= "1@3" X= 120 Y= 336
 P= "OUT" CIn= 3 NBit= 1 StBit=
0 StConnBit= 0 PId= "11c6144a045-0" Fixed= -1
 15 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "SEL_A" NPorts= 1 Conf= "1@3" X= 120 Y= 264
 P= "OUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6144bce9-0" Fixed= -1
 16 M= "ist.ac.simulador.modules.ModuleMux" Name= "Multiplexer" NPorts= 4 Conf= "2x8@10" X= 104 Y= 520
 P= "IN0" CIn= -1 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c61dae10b" Fixed= 0
 P= "IN1" CIn= -1 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c61dae12a" Fixed= 255
 P= "OUT" CIn= 14 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c61dae0ec-0" Fixed= -1
 P= "SEL0" CIn= 12 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c61dae0fc" Fixed= -1
Simula��es/Cap3/simula��o 3.3/circuito-pepe-8.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 22 NC= 23
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cafdc" NBits= 8 NSegments= 1
 Po= "11c60c6eb30-0" Pd= "11c60c6c45e" Np= 5
 X= 1043 Y= 655
 X= 1136 Y= 655
 X= 1136 Y= 214
 X= 941 Y= 214
 X= 941 Y= 247
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cb44c" NBits= 8 NSegments= 2
 Po= "11c614205db" Pd= "11c60c6eb8d" Np= 6
 X= 1043 Y= 499
 X= 1066 Y= 499
 X= 1066 Y= 600
 X= 906 Y= 600
 X= 906 Y= 675
 X= 933 Y= 675
 Po= "11c60c6eb5e" Pd= "11c60c6eb8d" Np= 4
 X= 933 Y= 655
 X= 906 Y= 655
 X= 906 Y= 675
 X= 933 Y= 675
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "C9830" NBits= 8 NSegments= 1
 Po= "11c60cca1a0-0" Pd= "11c60c6ebac" Np= 4
 X= 851 Y= 599
 X= 883 Y= 599
 X= 883 Y= 695
 X= 933 Y= 695
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "C831c" NBits= 8 NSegments= 1
 Po= "11c60ccb639-0" Pd= "11c60c6ebcc" Np= 4
 X= 851 Y= 679
 X= 871 Y= 679
 X= 871 Y= 715
 X= 933 Y= 715
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "C8852" NBits= 8 NSegments= 1
 Po= "11c60c6c420-0" Pd= "11c60cb937d-0" Np= 6
 X= 1051 Y= 247
 X= 1099 Y= 247
 X= 1099 Y= 329
 X= 917 Y= 329
 X= 917 Y= 399
 X= 941 Y= 399
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "C57c1" NBits= 8 NSegments= 13
 Po= "11c60cb93cb" Pd= "11c60cca1bf" Np= 6
 X= 1051 Y= 359
 X= 1095 Y= 359
 X= 1095 Y= 438
 X= 711 Y= 438
 X= 711 Y= 599
 X= 741 Y= 599
 Po= "11c60cb93cb" Pd= "11c614205ac-0" Np= 6
 X= 1051 Y= 359
 X= 1095 Y= 359
 X= 1095 Y= 438
 X= 904 Y= 438
 X= 904 Y= 499
 X= 933 Y= 499
 Po= "11c60cca1bf" Pd= "11c60ccb658" Np= 4
 X= 741 Y= 599
 X= 711 Y= 599
 X= 711 Y= 679
 X= 741 Y= 679
 Po= "11c60a515b3" Pd= "11c60cb93cb" Np= 6
 X= 1021 Y= 103
 X= 989 Y= 103
 X= 989 Y= 166
 X= 1197 Y= 166
 X= 1197 Y= 359
 X= 1051 Y= 359
 Po= "11c60ccb658" Pd= "11c6a4d4ba0" Np= 6
 X= 741 Y= 679
 X= 711 Y= 679
 X= 711 Y= 780
 X= 178 Y= 780
 X= 178 Y= 733
 X= 197 Y= 733
 Po= "11c6a4d4b90" Pd= "11c6a4d4ba0" Np= 4
 X= 197 Y= 713
 X= 178 Y= 713
 X= 178 Y= 733
 X= 197 Y= 733
 Po= "11c6a4d4b71" Pd= "11c6a4d4b90" Np= 4
 X= 197 Y= 693
 X= 178 Y= 693
 X= 178 Y= 713
 X= 197 Y= 713
 Po= "11c6a4d3ade" Pd= "11c6a4d4b71" Np= 4
 X= 197 Y= 637
 X= 178 Y= 637
 X= 178 Y= 693
 X= 197 Y= 693
 Po= "11c6a4d3abf" Pd= "11c6a4d3ade" Np= 4
 X= 197 Y= 617
 X= 178 Y= 617
 X= 178 Y= 637
 X= 197 Y= 637
 Po= "11c6a4d3aaf" Pd= "11c6a4d3abf" Np= 4
 X= 197 Y= 597
 X= 178 Y= 597
 X= 178 Y= 617
 X= 197 Y= 617
 Po= "11c6a4d2ff6" Pd= "11c6a4d3aaf" Np= 4
 X= 197 Y= 539
 X= 178 Y= 539
 X= 178 Y= 597
 X= 197 Y= 597
 Po= "11c6a4d2fe6" Pd= "11c6a4d2ff6" Np= 4
 X= 197 Y= 519
 X= 178 Y= 519
 X= 178 Y= 539
 X= 197 Y= 539
 Po= "11c60cb93cb" Pd= "11c6a4bcbb8" Np= 8
 X= 1051 Y= 359
 X= 1095 Y= 359
 X= 1095 Y= 438
 X= 711 Y= 438
 X= 711 Y= 463
 X= 104 Y= 463
 X= 104 Y= 379
 X= 141 Y= 379
 6 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ca8de" NBits= 8 NSegments= 1
 Po= "11c60cbe6ea-0" Pd= "11c614205bc" Np= 2
 X= 851 Y= 519
 X= 933 Y= 519
 7 C= "ist.ac.simulador.nucleo.SConnection" Name= "C39cd" NBits= 8 NSegments= 1
 Po= "11c61dae0ec-0" Pd= "11c60cbe786" Np= 2
 X= 635 Y= 543
 X= 741 Y= 543
 8 C= "ist.ac.simulador.nucleo.SConnection" Name= "C551f" NBits= 16 NSegments= 13
 Po= "11c6a4c3a42" Pd= "11c60a51584-0" Np= 2
 X= 771 Y= 63
 X= 1021 Y= 63
 Po= "11c6a4bcb3b" Pd= "11c6a4c3a42" Np= 8
 X= 141 Y= 399
 X= 116 Y= 399
 X= 116 Y= 267
 X= 652 Y= 267
 X= 652 Y= 158
 X= 795 Y= 158
 X= 795 Y= 63
 X= 771 Y= 63
 Po= "11c6a4bcb3b" Pd= "11c6a4bcb6a" Np= 4
 X= 141 Y= 399
 X= 116 Y= 399
 X= 116 Y= 419
 X= 141 Y= 419
 Po= "11c60a515d2" Pd= "11c6a4c3a42" Np= 6
 X= 1021 Y= 123
 X= 969 Y= 123
 X= 969 Y= 77
 X= 795 Y= 77
 X= 795 Y= 63
 X= 771 Y= 63
 Po= "11c60c6c43f" Pd= "11c6a4c3a42" Np= 6
 X= 941 Y= 287
 X= 916 Y= 287
 X= 916 Y= 92
 X= 795 Y= 92
 X= 795 Y= 63
 X= 771 Y= 63
 Po= "11c6a7f4222" Pd= "11c6a4c3a42" Np= 8
 X= 733 Y= 271
 X= 711 Y= 271
 X= 711 Y= 199
 X= 815 Y= 199
 X= 815 Y= 140
 X= 795 Y= 140
 X= 795 Y= 63
 X= 771 Y= 63
 Po= "11c6a7f4212" Pd= "11c6a4c3a42" Np= 6
 X= 733 Y= 311
 X= 670 Y= 311
 X= 670 Y= 181
 X= 795 Y= 181
 X= 795 Y= 63
 X= 771 Y= 63
 Po= "11c60cb93bc" Pd= "11c6a4c3a42" Np= 6
 X= 941 Y= 379
 X= 898 Y= 379
 X= 898 Y= 110
 X= 795 Y= 110
 X= 795 Y= 63
 X= 771 Y= 63
 Po= "11c6a564e28" Pd= "11c6a4c3a42" Np= 6
 X= 309 Y= 143
 X= 285 Y= 143
 X= 285 Y= 26
 X= 815 Y= 26
 X= 815 Y= 63
 X= 771 Y= 63
 Po= "11c61dae0fc" Pd= "11c60c6eb3f" Np= 4
 X= 525 Y= 583
 X= 500 Y= 583
 X= 500 Y= 735
 X= 933 Y= 735
 Po= "11c61dae0fc" Pd= "11c614205eb" Np= 4
 X= 525 Y= 583
 X= 500 Y= 583
 X= 500 Y= 479
 X= 933 Y= 479
 Po= "11c60c6eb3f" Pd= "11c60c6eb7e" Np= 4
 X= 933 Y= 735
 X= 908 Y= 735
 X= 908 Y= 755
 X= 933 Y= 755
 Po= "11c6a4c3a42" Pd= "11c614205eb" Np= 6
 X= 771 Y= 63
 X= 795 Y= 63
 X= 795 Y= 125
 X= 880 Y= 125
 X= 880 Y= 479
 X= 933 Y= 479
 9 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cc438" NBits= 1 NSegments= 3
 Po= "11c61dae0fc" Pd= "11c60c6eb3f" Np= 4
 X= 525 Y= 583
 X= 500 Y= 583
 X= 500 Y= 735
 X= 933 Y= 735
 Po= "11c61dae0fc" Pd= "11c614205eb" Np= 4
 X= 525 Y= 583
 X= 500 Y= 583
 X= 500 Y= 479
 X= 933 Y= 479
 Po= "11c60c6eb3f" Pd= "11c60c6eb7e" Np= 4
 X= 933 Y= 735
 X= 908 Y= 735
 X= 908 Y= 755
 X= 933 Y= 755
 10 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cec21" NBits= 8 NSegments= 2
 Po= "11c6a52f14a" Pd= "11c6a4c3a33-0" Np= 2
 X= 619 Y= 63
 X= 661 Y= 63
 Po= "11c6b334eee-0" Pd= "11c6a52f14a" Np= 6
 X= 509 Y= 215
 X= 498 Y= 215
 X= 498 Y= 189
 X= 637 Y= 189
 X= 637 Y= 63
 X= 619 Y= 63
 11 C= "ist.ac.simulador.nucleo.SConnection" Name= "C597c" NBits= 1 NSegments= 2
 Po= "11c6a5722c4-0" Pd= "11c6a564e18" Np= 2
 X= 249 Y= 183
 X= 309 Y= 183
 Po= "11c6a5722c4-0" Pd= "11c6b1bbc6d" Np= 4
 X= 249 Y= 183
 X= 284 Y= 183
 X= 284 Y= 303
 X= 309 Y= 303
 12 C= "ist.ac.simulador.nucleo.SConnection" Name= "C4548" NBits= 1 NSegments= 1
 Po= "11c6a4d2fc7-0" Pd= "11c6a4d641f" Np= 2
 X= 307 Y= 519
 X=
341 Y= 575
 13 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cf41d" NBits= 1 NSegments= 1
 Po= "11c6a4d3aa0-0" Pd= "11c6a4d642f" Np= 2
 X= 307 Y= 597
 X= 341 Y= 597
 14 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cb952" NBits= 1 NSegments= 1
 Po= "11c6a4d4b62-0" Pd= "11c6a4d643e" Np= 2
 X= 307 Y= 693
 X= 341 Y= 615
 15 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cc271" NBits= 1 NSegments= 2
 Po= "11c6a4fd3ae-0" Pd= "11c6a52f0ce-0" Np= 2
 X= 249 Y= 63
 X= 509 Y= 63
 Po= "11c60cb939c" Pd= "11c6a4fd3ae-0" Np= 4
 X= 941 Y= 359
 X= 451 Y= 359
 X= 451 Y= 63
 X= 249 Y= 63
 16 C= "ist.ac.simulador.nucleo.SConnection" Name= "C7feb" NBits= 1 NSegments= 1
 Po= "11c6a4d6400-0" Pd= "11c6a4bcb99" Np= 6
 X= 451 Y= 575
 X= 466 Y= 575
 X= 466 Y= 480
 X= 88 Y= 480
 X= 88 Y= 359
 X= 141 Y= 359
 17 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cf7a5" NBits= 8 NSegments= 4
 Po= "11c6a7f41f3-0" Pd= "11c60c6c47e" Np= 2
 X= 843 Y= 271
 X= 941 Y= 271
 Po= "11c60cbe709" Pd= "11c60cca1cf" Np= 4
 X= 741 Y= 519
 X= 688 Y= 519
 X= 688 Y= 619
 X= 741 Y= 619
 Po= "11c60cca1cf" Pd= "11c60ccb668" Np= 4
 X= 741 Y= 619
 X= 688 Y= 619
 X= 688 Y= 699
 X= 741 Y= 699
 Po= "11c6a7f41f3-0" Pd= "11c60cbe709" Np= 6
 X= 843 Y= 271
 X= 861 Y= 271
 X= 861 Y= 388
 X= 688 Y= 388
 X= 688 Y= 519
 X= 741 Y= 519
 18 C= "ist.ac.simulador.nucleo.SConnection" Name= "C905b" NBits= 8 NSegments= 2
 Po= "11c60cbe709" Pd= "11c60cca1cf" Np= 4
 X= 741 Y= 519
 X= 688 Y= 519
 X= 688 Y= 619
 X= 741 Y= 619
 Po= "11c60cca1cf" Pd= "11c60ccb668" Np= 4
 X= 741 Y= 619
 X= 688 Y= 619
 X= 688 Y= 699
 X= 741 Y= 699
 19 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ca24b" NBits= 8 NSegments= 1
 Po= "11c6a7f4231" Pd= "11c60a51594" Np= 8
 X= 733 Y= 291
 X= 692 Y= 291
 X= 692 Y= 223
 X= 847 Y= 223
 X= 847 Y= 187
 X= 1160 Y= 187
 X= 1160 Y= 63
 X= 1131 Y= 63
 20 C= "ist.ac.simulador.nucleo.SConnection" Name= "C5244" NBits= 8 NSegments= 1
 Po= "11c6a564df9-0" Pd= "11c6a52f10c" Np= 4
 X= 419 Y= 143
 X= 427 Y= 143
 X= 427 Y= 83
 X= 509 Y= 83
 21 C= "ist.ac.simulador.nucleo.SConnection" Name= "C55d2" NBits= 1 NSegments= 1
 Po= "11c6a4bcb1c-0" Pd= "11c6b1bbc7c" Np= 2
 X= 251 Y= 319
 X= 309 Y= 319
 22 C= "ist.ac.simulador.nucleo.SConnection" Name= "C12b9" NBits= 1 NSegments= 1
 Po= "11c6b1bbc4e-0" Pd= "11c6a52f0ed" Np= 4
 X= 419 Y= 303
 X= 480 Y= 303
 X= 480 Y= 123
 X= 509 Y= 123
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleMemoryTwoDataBusCsWr" Name= "Memória dados" NPorts= 5 Conf= "8@10" X= 1016 Y= 48
 P= "A7..A0" CIn= 8 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60a51584-0" Fixed= -1
 P= "CS" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c60a515c3" Fixed= 0
 P= "DATA_IN" CIn= 5 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60a515b3" Fixed= -1
 P= "DATA_OUT" CIn= 19 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60a51594" Fixed= -1
 P= "WR" CIn= 8 NBit= 1 StBit= 0 StConnBit= 8 PId= "11c60a515d2" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleMux" Name= "MUX_A" NPorts= 4 Conf= "2x8@10" X= 936 Y= 232
 P= "IN0" CIn= 0 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60c6c45e" Fixed= -1
 P= "IN1" CIn= 17 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60c6c47e" Fixed= -1
 P= "OUT" CIn= 4 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60c6c420-0" Fixed= -1
 P= "SEL0" CIn= 8 NBit= 1 StBit= 0 StConnBit= 10 PId= "11c60c6c43f" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleMux" Name= "Multiplexer" NPorts= 7 Conf= "4x8@10" X= 928 Y= 640
 P= "IN0" CIn= 1 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60c6eb5e" Fixed= -1
 P= "IN1" CIn= 1 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60c6eb8d" Fixed= -1
 P= "IN2" CIn= 2 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60c6ebac" Fixed= -1
 P= "IN3" CIn= 3 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60c6ebcc" Fixed= -1
 P= "OUT" CIn= 0 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60c6eb30-0" Fixed= -1
 P= "SEL0" CIn= 8 NBit= 1 StBit= 0 StConnBit= 12 PId= "11c60c6eb3f" Fixed= -1
 P= "SEL1" CIn= 8 NBit= 1 StBit= 0 StConnBit= 13 PId= "11c60c6eb7e" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleRegister" Name= "Registo A" NPorts= 4 Conf= "8@10" X= 936 Y= 344
 P= "CLOCK" CIn= 15 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c60cb939c" Fixed= -1
 P= "EN" CIn= 8 NBit= 1 StBit= 0 StConnBit= 11 PId= "11c60cb93bc" Fixed= -1
 P= "IN" CIn= 4 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60cb937d-0" Fixed= -1
 P= "OUT" CIn= 5 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60cb93cb" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleXOR" Name= "XOR" NPorts= 3 Conf= "2x8@3" X= 736 Y= 504
 P= "IN0" CIn= 17 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60cbe709" Fixed= -1
 P= "IN1" CIn= 7 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60cbe786" Fixed= -1
 P= "OUT" CIn= 6 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60cbe6ea-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleAND" Name= "AND" NPorts= 3 Conf= "2x8@3" X= 736 Y= 584
 P= "IN0" CIn= 5 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60cca1bf" Fixed= -1
 P= "IN1" CIn= 17 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60cca1cf" Fixed= -1
 P= "OUT" CIn= 2 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60cca1a0-0" Fixed= -1
 6 M= "ist.ac.simulador.modules.ModuleOR" Name= "OR" NPorts= 3 Conf= "2x8@3" X= 736 Y= 664
 P= "IN0" CIn= 5 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60ccb658" Fixed= -1
 P= "IN1" CIn= 17 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60ccb668" Fixed= -1
 P= "OUT" CIn= 3 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c60ccb639-0" Fixed= -1
 7 M= "ist.ac.simulador.modules.ModuleADD" Name= "Somador" NPorts= 5 Conf= "8@10" X= 928 Y= 464
 P= "CIN" CIn= 8 NBit= 1 StBit= 0 StConnBit= 12 PId= "11c614205eb" Fixed= -1
 P= "COUT" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c614205fa" Fixed= -1
 P= "IN0" CIn= 5 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c614205ac-0" Fixed= -1
 P= "IN1" CIn= 6 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c614205bc" Fixed= -1
 P= "OUT" CIn= 1 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c614205db" Fixed= -1
 8 M= "ist.ac.simulador.modules.ModuleMux" Name= "Multiplexer" NPorts= 4 Conf= "2x8@10" X= 520 Y= 528
 P= "IN0" CIn= -1 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c61dae10b" Fixed= 0
 P= "IN1" CIn= -1 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c61dae12a" Fixed= 255
 P= "OUT" CIn= 7 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c61dae0ec-0" Fixed= -1
 P= "SEL0" CIn= 8 NBit= 1 StBit= 0 StConnBit= 12 PId= "11c61dae0fc" Fixed= -1
 9 M= "ist.ac.simulador.modules.ModuleMux" Name= "MUX_INIT" NPorts= 7 Conf= "4x1@10" X= 136 Y= 304
 P= "IN0" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6a4bcb4b" Fixed= 0
 P= "IN1" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6a4bcb7a" Fixed= 1
 P= "IN2" CIn= 16 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6a4bcb99" Fixed= -1
 P= "IN3" CIn= 5 NBit= 1 StBit= 0 StConnBit= 7 PId= "11c6a4bcbb8" Fixed= -1
 P= "OUT" CIn= 21 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6a4bcb1c-0" Fixed= -1
 P= "SEL0" CIn= 8 NBit= 1 StBit= 0 StConnBit= 14 PId= "11c6a4bcb3b" Fixed= -1
 P= "SEL1" CIn= 8 NBit= 1 StBit= 0 StConnBit= 15 PId= "11c6a4bcb6a" Fixed= -1
 10 M= "ist.ac.simulador.modules.ModulePROM" Name= "Mem instruções" NPorts= 3 Conf= "8x16@3" CF= "C:\\Users\\José Delgado\\Documents\\simulacoes\\cap3\\simulação 3.3\\programa.dat" X= 656 Y= 48
 P= "ADDRESS" CIn= 10 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6a4c3a33-0" Fixed= -1
 P= "CS" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6a4c3a62" Fixed= 0
 P= "DATA" CIn= 8 NBit= 16 StBit= 0 StConnBit= 0 PId= "11c6a4c3a42"
Fixed= -1
 11 M= "ist.ac.simulador.modules.ModuleOR" Name= "OR" NPorts= 3 Conf= "2x1@3" X= 192 Y= 504
 P= "IN0" CIn= 5 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6a4d2fe6" Fixed= -1
 P= "IN1" CIn= 5 NBit= 1 StBit= 0 StConnBit= 1 PId= "11c6a4d2ff6" Fixed= -1
 P= "OUT" CIn= 12 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6a4d2fc7-0" Fixed= -1
 12 M= "ist.ac.simulador.modules.ModuleOR" Name= "OR" NPorts= 4 Conf= "3x1@3" X= 192 Y= 582
 P= "IN0" CIn= 5 NBit= 1 StBit= 0 StConnBit= 2 PId= "11c6a4d3aaf" Fixed= -1
 P= "IN1" CIn= 5 NBit= 1 StBit= 0 StConnBit= 3 PId= "11c6a4d3abf" Fixed= -1
 P= "IN2" CIn= 5 NBit= 1 StBit= 0 StConnBit= 4 PId= "11c6a4d3ade" Fixed= -1
 P= "OUT" CIn= 13 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6a4d3aa0-0" Fixed= -1
 13 M= "ist.ac.simulador.modules.ModuleOR" Name= "OR" NPorts= 4 Conf= "3x1@3" X= 192 Y= 678
 P= "IN0" CIn= 5 NBit= 1 StBit= 0 StConnBit= 5 PId= "11c6a4d4b71" Fixed= -1
 P= "IN1" CIn= 5 NBit= 1 StBit= 0 StConnBit= 6 PId= "11c6a4d4b90" Fixed= -1
 P= "IN2" CIn= 5 NBit= 1 StBit= 0 StConnBit= 7 PId= "11c6a4d4ba0" Fixed= -1
 P= "OUT" CIn= 14 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6a4d4b62-0" Fixed= -1
 14 M= "ist.ac.simulador.modules.ModuleNOR" Name= "NOR" NPorts= 4 Conf= "3x1@3" X= 336 Y= 560
 P= "IN0" CIn= 12 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6a4d641f" Fixed= -1
 P= "IN1" CIn= 13 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6a4d642f" Fixed= -1
 P= "IN2" CIn= 14 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6a4d643e" Fixed= -1
 P= "OUT" CIn= 16 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6a4d6400-0" Fixed= -1
 15 M= "ist.ac.simulador.modules.ModulePushButtons" Name= "Relógio" NPorts= 1 Conf= "1@3" X= 144 Y= 48
 P= "OUT" CIn= 15 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6a4fd3ae-0" Fixed= -1
 16 M= "ist.ac.simulador.modules.ModuleCounter" Name= "PC" NPorts= 7 Conf= "8@10" X= 504 Y= 48
 P= "CLOCK" CIn= 15 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6a52f0ce-0" Fixed= -1
 P= "DATA" CIn= 20 NBit= 4 StBit= 0 StConnBit= 0 PId= "11c6a52f10c" Fixed= -1
 P= "EN" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6a52f11c" Fixed= 1
 P= "OUT" CIn= 10 NBit= 4 StBit= 0 StConnBit= 0 PId= "11c6a52f14a" Fixed= -1
 P= "PL" CIn= 22 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6a52f0ed" Fixed= -1
 P= "TC" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6a52f12b" Fixed= -1
 P= "UP" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6a52f0dd" Fixed= 1
 17 M= "ist.ac.simulador.modules.ModuleMux" Name= "Multiplexer" NPorts= 4 Conf= "2x8@10" X= 304 Y= 128
 P= "IN0" CIn= 8 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6a564e28" Fixed= -1
 P= "IN1" CIn= -1 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6a564e37" Fixed= 0
 P= "OUT" CIn= 20 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6a564df9-0" Fixed= -1
 P= "SEL0" CIn= 11 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6a564e18" Fixed= -1
 18 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "Inicializar" NPorts= 1 Conf= "1@3" X= 144 Y= 168
 P= "OUT" CIn= 11 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6a5722c4-0" Fixed= -1
 19 M= "ist.ac.simulador.modules.ModuleMux" Name= "MUX_B" NPorts= 4 Conf= "2x8@10" X= 728 Y= 256
 P= "IN0" CIn= 8 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6a7f4222" Fixed= -1
 P= "IN1" CIn= 19 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6a7f4231" Fixed= -1
 P= "OUT" CIn= 17 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6a7f41f3-0" Fixed= -1
 P= "SEL0" CIn= 8 NBit= 1 StBit= 0 StConnBit= 9 PId= "11c6a7f4212" Fixed= -1
 20 M= "ist.ac.simulador.modules.ModuleOR" Name= "OR" NPorts= 3 Conf= "2x1@3" X= 304 Y= 288
 P= "IN0" CIn= 11 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6b1bbc6d" Fixed= -1
 P= "IN1" CIn= 21 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6b1bbc7c" Fixed= -1
 P= "OUT" CIn= 22 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6b1bbc4e-0" Fixed= -1
 21 M= "ist.ac.simulador.modules.ModuleHexaDisplay" Name= "Hexa Display" NPorts= 1 Conf= "4@3" X= 504 Y= 200
 P= "IN" CIn= 10 NBit= 4 StBit= 0 StConnBit= 0 PId= "11c6b334eee-0" Fixed= -1
Simula��es/Cap3/simula��o 3.3/programa.dat
0 d00
1 7
2 d04
3 8
4 c10c
5 810c
6 b07
7 7
8 f08
9 1901
a 8
b 4105
c 410c
d 0
e 0
f 0
10 0
11 0
12 0
13 0
14 0
15 0
16 0
17 0
18 0
19 0
1a 0
1b 0
1c 0
1d 0
1e 0
1f 0
20 0
21 0
22 0
23 0
24 0
25 0
26 0
27 0
28 0
29 0
2a 0
2b 0
2c 0
2d 0
2e 0
2f 0
30 0
31 0
32 0
33 0
34 0
35 0
36 0
37 0
38 0
39 0
3a 0
3b 0
3c 0
3d 0
3e 0
3f 0
40 0
41 0
42 0
43 0
44 0
45 0
46 0
47 0
48 0
49 0
4a 0
4b 0
4c 0
4d 0
4e 0
4f 0
50 0
51 0
52 0
53 0
54 0
55 0
56 0
57 0
58 0
59 0
5a 0
5b 0
5c 0
5d 0
5e 0
5f 0
60 0
61 0
62 0
63 0
64 0
65 0
66 0
67 0
68 0
69 0
6a 0
6b 0
6c 0
6d 0
6e 0
6f 0
70 0
71 0
72 0
73 0
74 0
75 0
76 0
77 0
78 0
79 0
7a 0
7b 0
7c 0
7d 0
7e 0
7f 0
80 0
81 0
82 0
83 0
84 0
85 0
86 0
87 0
88 0
89 0
8a 0
8b 0
8c 0
8d 0
8e 0
8f 0
90 0
91 0
92 0
93 0
94 0
95 0
96 0
97 0
98 0
99 0
9a 0
9b 0
9c 0
9d 0
9e 0
9f 0
a0 0
a1 0
a2 0
a3 0
a4 0
a5 0
a6 0
a7 0
a8 0
a9 0
aa 0
ab 0
ac 0
ad 0
ae 0
af 0
b0 0
b1 0
b2 0
b3 0
b4 0
b5 0
b6 0
b7 0
b8 0
b9 0
ba 0
bb 0
bc 0
bd 0
be 0
bf 0
c0 0
c1 0
c2 0
c3 0
c4 0
c5 0
c6 0
c7 0
c8 0
c9 0
ca 0
cb 0
cc 0
cd 0
ce 0
cf 0
d0 0
d1 0
d2 0
d3 0
d4 0
d5 0
d6 0
d7 0
d8 0
d9 0
da 0
db 0
dc 0
dd 0
de 0
df 0
e0 0
e1 0
e2 0
e3 0
e4 0
e5 0
e6 0
e7 0
e8 0
e9 0
ea 0
eb 0
ec 0
ed 0
ee 0
ef 0
f0 0
f1 0
f2 0
f3 0
f4 0
f5 0
f6 0
f7 0
f8 0
f9 0
fa 0
fb 0
fc 0
fd 0
fe 0
ff 0
Simula��es/Cap3/simula��o 3.3/simula��o-3.3.doc
Guia de Laboratório
de
Arquitetura de Computadores
Simulação 3.3 – Funcionamento do PEPE-8
1 – Objetivos
Esta simulação ilustra o funcionamento detalhado do PEPE-8 (circuito da Figura 3.17), usando o Programa 3.2 e a informação contida na Tabela 3.8 e na Tabela 3.9. Os aspectos abordados incluem os seguintes:
Funcionamento do PC, tanto em termos do endereçamento da memória de instruções, como da sua evolução, normal e por desvios;
Comportamento do PEPE-8 para cada uma das instruções do programa, com os respectivos sinais de controle;
Endereçamento das memórias, de dados e de instruções; 
Caminho percorrido pelos dados;
Funcionamento global do circuito, com uma instrução executada em cada ciclo de relógio.
2 – Circuito
O arquivo “circuito-pepe-8.cmod” implementa o circuito da Figura 3.17, em que:
A ALU está expandida tal como descrito na Simulação 3.2;
O NOR de 8 entradas está construído com portas lógicas de menos entradas (mas a funcionalidade é equivalente);
O PC é um contador cuja inicialização é feita com um multiplexador adicional, um OR e um botão (só são usados no início para colocar 0 no contador);
O botão Relógio serve de relógio para o circuito
O relógio do registrador A é o relógio global do circuito. O controle de escrita ou não, o sinal ESCR_A, é agora o sinal Enable do registrador, que só memoriza numa transição de subida do relógio se este sinal estiver com 1;
O display ligado à saída do PC facilita a visualização do seu valor atual. Dado que o programa tem menos de 15 endereços, usa-se apenas um display.
Note que os vários sinais de controle estão todos ligados à saída da memória de instruções, que é uma PROM de 16 bits (ver Tabela 3.10). No entanto, cada sinal está ligado a um conjunto de bits diferente, o que é conseguido através das propriedades de cada sinal em cada módulo. Por exemplo, o sinal SEL0 do MUX_B se liga ao bit 9 da saída da memória de instruções, tal como é indicado (implicitamente) na Tabela 3.8.
Nesta tabela, estão indicados os bits que se ligam à saída da memória de instruções, que são 16 bits. As ligações estão feitas desta forma:
		Sinal
		Bits da saída da Memória de Instruções
a que se liga
		SEL_PC
		15 e 14
		SEL_ALU
		13 e 12
		ESCR_A
		11
		SEL_A
		10
		SEL_B
		9
		WR
		8
		Constante
		7 a 0
3 – Programa na memória de instruções
Este programa é o formato binário (0s e 1s) que traduz o conteúdo da tabela 3.8. Os valores que cada sinal pode assumir estão explicados abaixo da legenda da tabela. 
Os endereços em binário começam em zero e não em um. Por esta razão, onde aparece um endereço substituiu-se pelo valor que tinha menos uma unidade. Os endereços são agora de 0 a 12 e não de 1 a 13.
Os valores em branco na Tabela 3.8 são irrelevantes (podem assumir qualquer valor). Como a memória de instruções tem de ter valores concretos, nestes casos arbitrou-se que estes bits são todos 0.
Arbitrou-se ainda que:
as células de memória “soma” e “temp” estão localizadas nos endereços 07H e 08H da memória de dados, respectivamente;
N tem o valor 4.
Estes valores poderiam ser quaisquer outros, dentro da faixa de valores admissíveis (0 a 255, pois têm 8 bits).
		RTL
		End.
		SEL_PC
 (2 bits)
		SEL_ALU
(2 bits)
		ESCR_A
(1 bit)
		SEL_A
(1 bit)
		SEL_B
(1 bit)
		WR 
(1 bit)
		Constante
(binário)
		Instrução 
(Hexadecimal)
		A 0	
		0
		00
		00
		1
		1
		0
		1
		0000 0000
		0D00H
		M[soma] A
		1
		00
		00
		0
		0
		0
		0
		0000 0111
		0007H
		A N	
		2
		00
		00
		1
		1
		0
		1
		0000 0100
		0D04H
		M[temp] A
		3
		00
		00
		0
		0
		0
		0
		0000 1000
		0008H
		(A < 0) : PC 12
		4
		11
		00
		0
		0
		0
		1
		0000 1100
		C10CH
		(A = 0) : PC 12
		5
		10
		00
		0
		0
		0
		1
		0000 1100
		810CH
		A A + M[soma]
		6
		00
		00
		1
		0
		1
		1
		0000 0111
		0B07H
		M[soma] A
		7
		00
		00
		0
		0
		0
		0
		0000 0111
		0007H
		A M[temp]
		8
		00
		00
		1
		1
		1
		1
		0000 1000
		0F08H
		A A – 1
		9
		00
		01
		1
		0
		0
		1
		0000 0001
		1901H
		M[temp] A
		10
		00
		00
		0
		0
		0
		0
		0000 1000
		0008H
		PC 5
		11
		01
		00
		0
		0
		0
		1
		0000 0101
		4105H
		PC 12
		12
		01
		00
		0
		0
		0
		1
		0000 1100
		410CH
ATENÇÃO! 
A Tabela 3.8 assume que todos os sinais de controle ficam ativos com 1, para simplificar a explicação. No entanto, o sinal de escrita (WR) na memória de dados fica ativo com 0, tal como geralmente acontece nos sistemas verdadeiros. Por essa razão, aqui se usa a seguinte convenção para a coluna WR da Tabela 3.8: Sim=0, Não=1;
Na Tabela 3.8, coluna SEL_B, no endereço 9 (nesta simulação, endereço, 8), ou seja, instrução A M[temp], a célula devia dizer “Mem” e não estar em branco. Este erro consta da errata e já está corrigido na tabela anterior.
A última coluna constitui o conteúdo da memória de instruções nos endereços 0 a 12e já foi colocado no arquivo “programa.dat”.
4 – Simulação
Carregue o circuito, se ainda não o tiver feito, e passe para simulação.
O valor de cada ligação pode ser visto colocando o cursor sobre a ligação (sem clicar)
Abra o painel da memória de instruções e carregue o arquivo “programa.dat”.
Clique em Start.
Verifique que na saída do PC (na pequena ligação com a memória de instruções) se encontra o valor Z (alta impedância, ou neste caso não inicializado).
Abra os painéis de controle do botão do relógio, do interruptor “inicializar” e do display que está por baixo do PC.
Coloque 1 no interruptor “inicializar” e pressione o botão do relógio, soltando-o em seguida. Volte a colocar zero no interruptor “inicializar”, pois não será mais usado nesta simulação.
Verifique que o PC já tem o valor 00H e que na saída da memória de instruções já está o valor 0D00H (a primeira instrução).
Como cada instrução demora apenas um ciclo de relógio, é executada na borda de subida do ciclo de relógio. A instrução 00H será executada na próxima borda de subida do relógio. Sempre que no display aparecer um endereço, a instrução correspondente será executada quando clicar no botão do relógio.
O registrador A poderá já ter o valor 0. Mas, se não tiver, será inicializado com 0. Verifique que neste momento o sinal EN do registrador (ESCR_A) está com 1 (o relógio será ativado da próxima vez que passar de 0 para 1) e que a entrada do registrador está com 0.
Clique novamente no relógio, e verifique que a saída do PC já está com 1, que na saída da memória de instruções já tem 0007H (segunda instrução) e que a saída do registrador A está com 0.
Vá clicando no botão do relógio e verificando os valores dos sinais de controle e de dados, colocando o cursor em cima do sinal.
Abra o painel de controle da memória de dados e verifique que os valores das células de memória vão mudando à medida que as instruções de escrita na memória são executadas.
Note que, quando entra numa instrução que o PEPE-8 vai executar, o conteúdo da memória muda logo. O que acontece é que uma instrução termina preparando os sinais para quando o relógio tiver uma borda de subida, incluindo ativar o sinal de WR da memória. Este fica ativo no nível 0 (escreve logo, embora só memorize o valor que estiver na entrada da memória quando o sinal WR passar de 0 para 1), em função do que a célula da memória é logo alterada. Mas isto não afeta o bom funcionamento do circuito.
Verifique que o programa termina na instrução no endereço 12 e que no endereço 7 (mas agora da memória de dados) ficou o valor que o programa calcula.
	5
Simula��es/Cap3/simula��o 3.4/pepe-8.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 5 NC= 8
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C43d5" NBits= 8 NSegments= 1
 Po= "11c6c54be1a" Pd= "11c6c5501ae" Np= 2
 X= 539 Y= 271
 X= 677 Y= 271
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C41ed" NBits= 1 NSegments= 1
 Po= "11c6c54be49" Pd= "11c6c5501fc" Np= 2
 X= 539 Y= 331
 X= 677 Y= 331
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "C81a7" NBits= 8 NSegments= 1
 Po= "11c6c54bdeb" Pd= "11c6c5501ce" Np= 2
 X= 539 Y= 311
 X= 677 Y= 311
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "C931c" NBits= 8 NSegments= 1
 Po= "11c6c54be2a" Pd= "11c6c54f466-0" Np= 6
 X= 539 Y= 291
 X= 582 Y= 291
 X= 582 Y= 220
 X= 184 Y= 220
 X= 184 Y= 359
 X= 213 Y= 359
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ca97a" NBits= 8 NSegments= 1
 Po= "11c6c54bddc" Pd= "11c6c5501be" Np= 6
 X= 429 Y= 291
 X= 395 Y= 291
 X= 395 Y= 193
 X= 834 Y= 193
 X= 834 Y= 271
 X= 787 Y= 271
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "C5dc6" NBits= 16 NSegments= 1
 Po= "11c6c54f475" Pd= "11c6c54bdfb" Np= 4
 X= 323 Y= 359
 X= 372 Y= 359
 X= 372 Y= 311
 X= 429 Y= 311
 6 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ca8be" NBits= 16 NSegments= 1
 Po= "11c6c552313-0" Pd= "11c6c54bdad-0" Np= 4
 X= 321 Y= 455
 X= 405 Y= 455
 X= 405 Y= 331
 X= 429 Y= 331
 7 C= "ist.ac.simulador.nucleo.SConnection" Name= "C2c80" NBits= 1 NSegments= 1
 Po= "11c6e96b725-0" Pd= "11c6c54bdbc" Np= 2
 X= 321 Y= 271
 X= 429 Y= 271
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModulePepe8" Name= "Pepe8" NPorts= 8 CF= "C:\\Users\\José Delgado\\Documents\\simulacoes\\cap3\\simulação 3.4\\programa3-02.asm" X= 424 Y= 256
 P= "Addr_data" CIn= 0 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c54be1a" Fixed= -1
 P= "Addr_inst"
CIn= 3 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c54be2a" Fixed= -1
 P= "Clock" CIn= 7 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c54bdbc" Fixed= -1
 P= "DataIn" CIn= 4 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c54bddc" Fixed= -1
 P= "DataOut" CIn= 2 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c54bdeb" Fixed= -1
 P= "Inst" CIn= 5 NBit= 12 StBit= 0 StConnBit= 0 PId= "11c6c54bdfb" Fixed= -1
 P= "Reset" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c54bdad-0" Fixed= -1
 P= "WR" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c54be49" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModulePROM" Name= "PROM" NPorts= 3 Conf= "8x16@3" CF= "C:\\Users\\José Delgado\\Documents\\simulacoes\\cap3\\simulação 3.4\\programa3-02.cod" X= 208 Y= 344
 P= "ADDRESS" CIn= 3 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c54f466-0" Fixed= -1
 P= "CS" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c54f485" Fixed= 0
 P= "DATA" CIn= 5 NBit= 16 StBit= 0 StConnBit= 0 PId= "11c6c54f475" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleMemoryTwoDataBusCsWr" Name= "RAM" NPorts= 5 Conf= "8@10" X= 672 Y= 256
 P= "A7..A0" CIn= 0 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c5501ae" Fixed= -1
 P= "CS" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c5501ed" Fixed= 0
 P= "DATA_IN" CIn= 2 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c5501ce" Fixed= -1
 P= "DATA_OUT" CIn= 4 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c5501be" Fixed= -1
 P= "WR" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c5501fc" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleReset" Name= "RESET" NPorts= 1 Conf= "16@20" X= 216 Y= 440
 P= "OUT" CIn= 6 NBit= 16 StBit= 0 StConnBit= 0 PId= "11c6c552313-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleClock" Name= "Relógio" NPorts= 1 Conf= "1@40" X= 216 Y= 256
 P= "OUT" CIn= 7 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6e96b725-0" Fixed= -1
Simula��es/Cap3/simula��o 3.4/programa3-4.asm
N	EQU	4	; valor pretendido para N
soma	EQU	30	; endereço da célula de memória soma
temp 	EQU	31	; endereço da célula de memória temp
início:	LD	0	; inicializa A com zero
	ST	[soma]	; inicializa soma com zero
	LD	N	; inicializa A com o valor de N
	ST	[temp]	; atualiza temp na memória
	JN	fim	; se temp for negativo, desvia para o fim
teste:	JZ	fim	; se temp for zero, desvia para o fim
	ADD	[soma]	; adiciona soma ao registrador A, que é igual a temp
	ST	[soma]	; atualiza soma na memória
	LD	[temp]	; busca temp de novo
	SUB	1	; decrementa A
	ST	[temp]	; atualiza temp na memória
	JMP	teste	; vai verificar se temp já chegou a zero
fim:	JMP	fim	; fim do programa
Simula��es/Cap3/simula��o 3.4/programa3-4.cod
Simula��es/Cap3/simula��o 3.4/simula��o-3.4.doc
Guia de Laboratório
de
Arquitetura de Computadores
Simulação 3.4 – PEPE-8: programação em assembly
1 – Objetivos
Esta simulação ilustra o funcionamento do PEPE-8 (circuito da Figura 3.18) com programação em linguagem assembly, usando o Programa 3.4 e as informações da Tabela 3.11.
Os aspectos abordados incluem os seguintes:
Montagem do circuito com um módulo que simula o PEPE-8 no nível das instruções;
Funcionamento individual das várias instruções do PEPE-8, em termos dos recursos de hardware e sinais de controle abrangidos;
Execução do programa em ambiente de desenvolvimento:
Execução das instruções passo a passo (single-step), verificando a evolução dos registradores A e PC;
Utilização de pontos de parada (breakpoints);
Modificação manual do valor dos registradores durante a execução do programa (após uma parada motivada por execução passo a passo ou ponto de parada).
2 – Circuito
O arquivo “pepe-8.cmod” implementa o circuito da Figura 3.18, mas em que o PEPE-8 está implementado num módulo, simulado funcionalmente, e não por componentes de hardware. 
O módulo Reset dá um impulso na entrada Reset do PEPE-8 quando se clica em Start na simulação, para inicializar o processador.
3 – Compilação e carga dos programas em assembly
O PEPE-8 assume que tem uma RAM na memória de dados e uma PROM na memória de instruções. Para compilar, carregar e executar um programa em assembly, tem de se executar os seguintes passos:
Carregar a arquitetura “pepe-8.cmod”
Passar para Simulação
Abrir o painel de controle do Relógio com duplo clique neste módulo e clicar em Start nessa janela
Abrir o painel de controle do PEPE-8 com duplo clique neste módulo
Clique em Compile e escolher o arquivo com o programa em assembly (nesta simulação, o arquivo “programa3-4.asm”). Aparentemente o PEPE-8 não faz nada, mas gera o arquivo “programa3-4.cod” no mesmo diretório, que contém as instruções em binário para o PEPE-8 executar.
Abrir o painel de controle da PROM com duplo clique neste módulo
No menu desta janela, use o comando Code -> Load Binary (note que NÃO é File -> Load) e especifique o arquivo “programa3-4.cod”. Neste momento, já aparece na PROM as instruções em binário a serem executadas pelo PEPE-8.
No painel do PEPE-8, clique no botão “Parse Mem”, o que faz o PEPE-8 ler a PROM e atualizar a sua janela com as instruções, que apresenta em linguagem assembly por conversão a partir das instruções em binário. No entanto, note que já não tem informações sobre os rótulos e símbolos definidos com EQU no programa fonte.
Neste momento, o programa está pronto para ser executado, o que pode ser feito de três formas:
Passo a passo (single-step), ou instrução a instrução
Execução contínua até um ponto de parada (breakpoint)
Execução contínua
O painel do PEPE-8 mostra o conteúdo do PC e do registrador A e indica ainda se o valor do A é zero (Z) ou negativo (N).
O conteúdo da memória de dados pode ser verificado com duplo clique na RAM.
4 – Execução passo a passo
Clique no botão Step do painel do PEPE-8. A cada vez que isto é feito, avança uma única instrução. A próxima instrução a ser executada aparece com uma barra azul.
Vá clicando em Step e verifique o seguinte (se necessário, execute a simulação várias vezes para ver os vários aspectos):
No painel do PEPE-8, o PC vai variando de forma consistente com a barra azul;
No painel do PEPE-8, o registrador A vai indicando o seu valor;
No painel da RAM, as instruções ST alteram o conteúdo da RAM nos endereços indicados (1EH e 1FH, que correspondem às variáveis soma e temp);
No circuito, os sinais que se ligam ao PEPE-8 (cujo valor pode ser visto colocando o cursor em cima deles) indicam o que está se passando em termos das memórias, em particular os buses de endereço e de dados das duas memórias (conferir com as Figuras 3.19 a 3.25).
Note que a qualquer momento você pode mudar o conteúdo dos registradores (até o PC, mas isso pode causar um funcionamento incorreto do programa) e da memória de dados.
5 – Execução com pontos de parada
Os pontos de parada podem ser definidos clicando em cima da instrução em que se pretende que a execução pare, fazendo aparecer uma barra roxa.
 
Clicando em Start no painel do PEPE-8, este começa a executar as instruções à sua velocidade máxima (mesmo que antes tivesse estado em passo a passo. Neste caso, a execução começa a partir do ponto em que estava).
Se e quando uma instrução com um breakpoint é atingida, o PEPE-8 pára a sua execução imediatamente antes de executá-la. Nesse momento, pode se inspecionar o registrador ou a memória, clicar em Step, etc.
Durante a execução com Start, os valores no painel do PEPE-8 não são atualizados (só quando parar).
Para eliminar um ponto de parada, basta clicar na barra roxa em questão.
6 – Execução sem pontos de parada
Neste caso o processador não pára. No entanto, pode-se clicar em Stop no painel do PEPE-8 e ele pára na instrução que estiver executando nesse momento. 
Nesse momento pode-se inspecionar ou alterar os registradores e a memória. 
A partir daí pode-se
clicar em Step, Start ou definir breakpoints e clicar em Start.
	6
Simula��es/Cap3/simula��o 3.5/pepe-8.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 5 NC= 8
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C43d5" NBits= 8 NSegments= 1
 Po= "11c6c54be1a" Pd= "11c6c5501ae" Np= 2
 X= 539 Y= 271
 X= 677 Y= 271
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C41ed" NBits= 1 NSegments= 1
 Po= "11c6c54be49" Pd= "11c6c5501fc" Np= 2
 X= 539 Y= 331
 X= 677 Y= 331
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "C81a7" NBits= 8 NSegments= 1
 Po= "11c6c54bdeb" Pd= "11c6c5501ce" Np= 2
 X= 539 Y= 311
 X= 677 Y= 311
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "C931c" NBits= 8 NSegments= 1
 Po= "11c6c54be2a" Pd= "11c6c54f466-0" Np= 6
 X= 539 Y= 291
 X= 582 Y= 291
 X= 582 Y= 220
 X= 184 Y= 220
 X= 184 Y= 359
 X= 213 Y= 359
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ca97a" NBits= 8 NSegments= 1
 Po= "11c6c54bddc" Pd= "11c6c5501be" Np= 6
 X= 429 Y= 291
 X= 395 Y= 291
 X= 395 Y= 193
 X= 834 Y= 193
 X= 834 Y= 271
 X= 787 Y= 271
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "C5dc6" NBits= 16 NSegments= 1
 Po= "11c6c54f475" Pd= "11c6c54bdfb" Np= 4
 X= 323 Y= 359
 X= 372 Y= 359
 X= 372 Y= 311
 X= 429 Y= 311
 6 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ca8be" NBits= 16 NSegments= 1
 Po= "11c6c552313-0" Pd= "11c6c54bdad-0" Np= 4
 X= 321 Y= 455
 X= 405 Y= 455
 X= 405 Y= 331
 X= 429 Y= 331
 7 C= "ist.ac.simulador.nucleo.SConnection" Name= "C2c80" NBits= 1 NSegments= 1
 Po= "11c6e96b725-0" Pd= "11c6c54bdbc" Np= 2
 X= 321 Y= 271
 X= 429 Y= 271
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModulePepe8" Name= "Pepe8" NPorts= 8 CF= "C:\\Users\\José Delgado\\Documents\\simulacoes\\cap3\\simulação 3.4\\programa3-02.asm" X= 424 Y= 256
 P= "Addr_data" CIn= 0 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c54be1a" Fixed= -1
 P= "Addr_inst" CIn= 3 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c54be2a" Fixed= -1
 P= "Clock" CIn= 7 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c54bdbc" Fixed= -1
 P= "DataIn" CIn= 4 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c54bddc" Fixed= -1
 P= "DataOut" CIn= 2 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c54bdeb" Fixed= -1
 P= "Inst" CIn= 5 NBit= 12 StBit= 0 StConnBit= 0 PId= "11c6c54bdfb" Fixed= -1
 P= "Reset" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c54bdad-0" Fixed= -1
 P= "WR" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c54be49" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModulePROM" Name= "PROM" NPorts= 3 Conf= "8x16@3" CF= "C:\\Users\\José Delgado\\Documents\\simulacoes\\cap3\\simulação 3.4\\programa3-02.cod" X= 208 Y= 344
 P= "ADDRESS" CIn= 3 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c54f466-0" Fixed= -1
 P= "CS" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c54f485" Fixed= 0
 P= "DATA" CIn= 5 NBit= 16 StBit= 0 StConnBit= 0 PId= "11c6c54f475" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleMemoryTwoDataBusCsWr" Name= "RAM" NPorts= 5 Conf= "8@10" X= 672 Y= 256
 P= "A7..A0" CIn= 0 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c5501ae" Fixed= -1
 P= "CS" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c5501ed" Fixed= 0
 P= "DATA_IN" CIn= 2 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c5501ce" Fixed= -1
 P= "DATA_OUT" CIn= 4 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c5501be" Fixed= -1
 P= "WR" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c5501fc" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleReset" Name= "RESET" NPorts= 1 Conf= "16@20" X= 216 Y= 440
 P= "OUT" CIn= 6 NBit= 16 StBit= 0 StConnBit= 0 PId= "11c6c552313-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleClock" Name= "Relógio" NPorts= 1 Conf= "1@40" X= 216 Y= 256
 P= "OUT" CIn= 7 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6e96b725-0" Fixed= -1
Simula��es/Cap3/simula��o 3.5/programa3-5-variante.asm
; constantes de dados
valor		EQU	76H	; valor cujo número de bits com 0 é para ser contado
máscaraInicial	EQU	01H	; 0000 0001 em binário (máscara inicial)
máscaraFinal	EQU	80H	; 1000 0000 em binário (máscara final)
; constantes de endereços (na memória de dados)
contador	EQU	00H	; endereço da célula de memória que guarda 
				; o valor corrente do contador de bits com 0
máscara		EQU	01H	; endereço da célula de memória que guarda 
				; o valor corrente da máscara
; programa (memória de instruções)
início:	LD	0		; inicializa o registrador A com zero
	ST	[contador]	; inicializa o contador de bits com zero
	LD	máscaraInicial	; Carrega valor da máscara inicial
	ST	[máscara]	; atualiza na memória
teste:	AND	valor		; isola o bit que se quer verificar se é 0
	JZ	maisUm		; se o bit for zero, tem de incrementar o contador
	JMP	próximo		; passa à máscara seguinte
maisUm:	LD	[contador]	; bit é 0. Busca o valor atual do contador
	ADD	1		; incrementa-o
	ST	[contador]	; e atualiza de novo na memória
próximo:LD	[máscara]	; busca de novo a máscara atual
	SUB	máscaraFinal	; subtrai para comparar com a máscara final
	JZ	fim		; se der zero, eram iguais e portanto já terminou
	LD	[máscara]	; tem de carregar a máscara de novo
	ADD	[máscara]	; soma com ela própria para multiplicá-la por 2
	ST	[máscara]	; atualiza o valor da máscara na memória
	JMP	teste		; vai fazer mais um teste com a nova máscara
fim:	JMP	fim		; fim do programa
Simula��es/Cap3/simula��o 3.5/programa3-5-variante.cod
Simula��es/Cap3/simula��o 3.5/programa3-5.asm
; constantes de dados
valor		EQU	76H	; valor cujo número de bits com 1 é para ser contado
máscaraInicial	EQU	01H	; 0000 0001 em binário (máscara inicial)
máscaraFinal	EQU	80H	; 1000 0000 em binário (máscara final)
; constantes de endereços (na memória de dados)
contador	EQU	00H	; endereço da célula de memória que guarda 
				; o valor corrente do contador de bits com 1
máscara		EQU	01H	; endereço da célula de memória que guarda 
				; o valor corrente da máscara
; programa (memória de instruções)
início:	LD	0		; inicializa o registrador A com zero
	ST	[contador]	; inicializa o contador de bits com zero
	LD	máscaraInicial	; carrega valor da máscara inicial
	ST	[máscara]	; atualiza na memória
teste:	AND	valor		; isola o bit que se quer verificar se é 1
	JZ	próximo		; se o bit for zero, passa à máscara seguinte
maisUm:	LD	[contador]	; bit é 1. Busca o valor atual do contador
	ADD	1		; incrementa-o
	ST	[contador]	; e atualiza de novo na memória
próximo:LD	[máscara]	; busca de novo a máscara atual
	SUB	máscaraFinal	; subtrai para comparar com a máscara final
	JZ	fim		; se der zero, eram iguais e portanto já terminou
	LD	[máscara]	; tem de carregar a máscara de novo
	ADD	[máscara]	; soma com ela própria para multiplicá-la por 2
	ST	[máscara]	; atualiza o valor da máscara na memória
	JMP	teste		; vai fazer mais um teste com a nova máscara
fim:	JMP	fim		; fim do programa
Simula��es/Cap3/simula��o 3.5/programa3-5.cod
Simula��es/Cap3/simula��o 3.5/simula��o-3.5.doc
Guia de Laboratório
de
Arquitetura de Computadores
Simulação 3.5 – PEPE-8: contagem de bits
1 – Objetivos
Esta simulação ilustra o funcionamento do PEPE-8 com o Programa 3.5, seguindo os passos da Tabela 3.14. Os aspectos abordados incluem os seguintes:
Montagem do circuito com um módulo que simula o PEPE-8 no nível das instruções;
Funcionamento individual das várias instruções do PEPE-8, em particular as operações lógicas;
Execução do programa em ambiente de desenvolvimento:
Execução das instruções passo a passo (single-step), verificando a evolução dos registradores A e PC;
Utilização de pontos de parada (breakpoints);
Modificação manual do valor dos registradores durante a execução
do programa (após uma parada motivada por execução passo a passo ou ponto de parada);
Exploração da variante do programa que conta o número de bits com 0 no valor a ser testado, em vez de contar o número de bits com 1.
2 – Circuito e preparação da simulação
O arquivo “pepe-8.cmod” implementa o circuito da Figura 3.18, mas em que o PEPE-8 está implementado num módulo, simulado funcionalmente, e não por componentes de hardware.
A simulação 3.4 contém os detalhes de como usar o PEPE-8, em execução passo a passo e com pontos de parada, e de como compilar os programas.
Para executar esta simulação, carregue este circuito no simulador, passe para Simulação e carregue o arquivo “programa3-5.cod” na PROM, usando Code->Load Binary. 
O arquivo “programa3-5.asm” contém o programa em assembly a partir do qual foi gerado o arquivo “programa3-5.cod”, através de sua compilação no PEPE-8.
3 – Simulação do programa 3.5
Execute o programa passo a passo, verificando que a evolução do registrador A acompanha os valores da Tabela 3.14.
Verifique a evolução dos valores na memória de dados, abrindo o seu painel de controle.
Se quiser, coloque um ponto de parada na instrução do endereço 0BH, em que o valor atual da máscara está no registrador A.
Verifique também o funcionamento da instrução AND (com o rótulo “teste:”, no endereço 04H), comparando o valor do registrador A antes e depois de executar a instrução (passo a passo).
4 – Simulação da variante do programa 3.5 para contagem de bits com 0
O arquivo “programa3-5variante.asm” contém a variante descrita no livro após o Programa 3.5.
Compile-a, carregue-a na PROM e execute o programa (não se esqueça de fazer Parse Mem no PEPE-8 para atualizar as instruções). 
Verifique o valor final da posição 0 da memória de dados, que deve conter 3 (o número de bits com 0 no valor 76H).
	2
Simula��es/Cap3/simula��o 3.6/semaforos-conflito.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 13 NC= 8
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cf3bd" NBits= 8 NSegments= 3
 Po= "11c6fb4f812" Pd= "11c6fb874fd-0" Np= 2
 X= 739 Y= 303
 X= 829 Y= 303
 Po= "11c6fb4f812" Pd= "11c6fb89a19-0" Np= 4
 X= 739 Y= 303
 X= 800 Y= 303
 X= 800 Y= 351
 X= 829 Y= 351
 Po= "11c6fb4f812" Pd= "11c6fb8c109-0" Np= 4
 X= 739 Y= 303
 X= 800 Y= 303
 X= 800 Y= 399
 X= 829 Y= 399
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cafc1" NBits= 1 NSegments= 1
 Po= "11c6fb60fb6-0" Pd= "11c6fb4b806" Np= 4
 X= 531 Y= 487
 X= 581 Y= 487
 X= 581 Y= 471
 X= 629 Y= 471
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "C17bb" NBits= 8 NSegments= 4
 Po= "11c709fb925-0" Pd= "11c6c5501ae" Np= 4
 X= 353 Y= 151
 X= 513 Y= 151
 X= 513 Y= 159
 X= 629 Y= 159
 Po= "11c709fb925-0" Pd= "11c6c5501ed" Np= 4
 X= 353 Y= 151
 X= 448 Y= 151
 X= 448 Y= 179
 X= 629 Y= 179
 Po= "11c6fb4f802" Pd= "11c709fb925-0" Np= 4
 X= 629 Y= 303
 X= 433 Y= 303
 X= 433 Y= 151
 X= 353 Y= 151
 Po= "11c6fb4b7e7-0" Pd= "11c709fb925-0" Np= 4
 X= 629 Y= 431
 X= 415 Y= 431
 X= 415 Y= 151
 X= 353 Y= 151
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cb4ad" NBits= 1 NSegments= 3
 Po= "11c709fdd67-0" Pd= "11c6c5501fc" Np= 4
 X= 353 Y= 247
 X= 540 Y= 247
 X= 540 Y= 219
 X= 629 Y= 219
 Po= "11c6fb4f7e3" Pd= "11c6fb60fc6" Np= 6
 X= 629 Y= 343
 X= 554 Y= 343
 X= 554 Y= 396
 X= 395 Y= 396
 X= 395 Y= 487
 X= 421 Y= 487
 Po= "11c709fdd67-0" Pd= "11c6fb60fc6" Np= 4
 X= 353 Y= 247
 X= 395 Y= 247
 X= 395 Y= 487
 X= 421 Y= 487
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cb2d1" NBits= 1 NSegments= 1
 Po= "11c6fb4f7e3" Pd= "11c6fb60fc6" Np= 6
 X= 629 Y= 343
 X= 554 Y= 343
 X= 554 Y= 396
 X= 395 Y= 396
 X= 395 Y= 487
 X= 421 Y= 487
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cc033" NBits= 8 NSegments= 3
 Po= "11c6fb4b835" Pd= "11c6c5501be" Np= 4
 X= 739 Y= 431
 X= 768 Y= 431
 X= 768 Y= 159
 X= 739 Y= 159
 Po= "11c70a32c9c-0" Pd= "11c6c5501be" Np= 2
 X= 805 Y= 159
 X= 739 Y= 159
 Po= "11c70a31b7c-0" Pd= "11c6c5501be" Np= 5
 X= 941 Y= 159
 X= 941 Y= 115
 X= 785 Y= 115
 X= 785 Y= 159
 X= 739 Y= 159
 6 C= "ist.ac.simulador.nucleo.SConnection" Name= "C2b2f" NBits= 8 NSegments= 1
 Po= "11c70a462a9-0" Pd= "11c6fb4b816" Np= 2
 X= 353 Y= 447
 X= 629 Y= 447
 7 C= "ist.ac.simulador.nucleo.SConnection" Name= "Caf32" NBits= 8 NSegments= 2
 Po= "11c70d2e5fd-0" Pd= "11c6c5501ce" Np= 2
 X= 353 Y= 199
 X= 629 Y= 199
 Po= "11c6fb4f7d3-0" Pd= "11c70d2e5fd-0" Np= 4
 X= 629 Y= 323
 X= 602 Y= 323
 X= 602 Y= 199
 X= 353 Y= 199
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleMemoryTwoDataBusCsWr" Name= "Memória dados" NPorts= 5 Conf= "8@10" X= 624 Y= 144
 P= "A7..A0" CIn= 2 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c5501ae" Fixed= -1
 P= "CS" CIn= 2 NBit= 1 StBit= 0 StConnBit= 7 PId= "11c6c5501ed" Fixed= -1
 P= "DATA_IN" CIn= 7 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c5501ce" Fixed= -1
 P= "DATA_OUT" CIn= 5 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c5501be" Fixed= -1
 P= "WR" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c5501fc" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleDriverIn" Name= "Per. entrada" NPorts= 4 Conf= "8@3" X= 624 Y= 416
 P= "CS" CIn= 2 NBit= 1 StBit= 0 StConnBit= 7 PId= "11c6fb4b7e7-0" Fixed= -1
 P= "IN" CIn= 6 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6fb4b816" Fixed= -1
 P= "OUT" CIn= 5 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6fb4b835" Fixed= -1
 P= "RD" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb4b806" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleDriverOut" Name= "Per. saída" NPorts= 4 Conf= "8@3" X= 624 Y= 288
 P= "CS" CIn= 2 NBit= 1 StBit= 0 StConnBit= 7 PId= "11c6fb4f802" Fixed= -1
 P= "IN" CIn= 7 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6fb4f7d3-0" Fixed= -1
 P= "OUT" CIn= 0 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6fb4f812" Fixed= -1
 P= "WR" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb4f7e3" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT" NPorts= 2 Conf= "1x1@3" X= 416 Y= 472
 P= "IN0" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb60fc6" Fixed= -1
 P= "OUT" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb60fb6-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Vermelho" NPorts= 1 Conf= "1@3" X= 824 Y= 288
 HIGHCOLOR= "Red" LOWCOLOR= "Black" ZCOLOR= "Grey" P= "IN" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb874fd-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Amarelo" NPorts= 1 Conf= "1@3" X= 824 Y= 336
 HIGHCOLOR= "Yellow" LOWCOLOR= "Black" ZCOLOR= "Grey" P= "IN" CIn= 0 NBit= 1 StBit= 0 StConnBit= 1 PId= "11c6fb89a19-0" Fixed= -1
 6 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Verde" NPorts= 1 Conf= "1@3" X= 824 Y= 384
 HIGHCOLOR= "Green" LOWCOLOR= "Black" ZCOLOR= "Grey" P= "IN" CIn= 0 NBit= 1 StBit= 0 StConnBit= 2 PId= "11c6fb8c109-0" Fixed= -1
 7 M= "ist.ac.simulador.modules.ModuleInput" Name= "Endereço" NPorts= 1 Conf= "8@3" X= 248 Y= 136
 P= "OUT" CIn= 2 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c709fb925-0" Fixed= -1
 8 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "WR" NPorts= 1 Conf= "1@3" X= 248 Y= 232
 P= "OUT" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c709fdd67-0" Fixed= -1
 9 M= "ist.ac.simulador.modules.ModuleHexaDisplay" Name= "DATA_OUT 3-0" NPorts= 1 Conf= "4@3" X= 936 Y= 144
 P= "IN" CIn= 5 NBit= 4 StBit= 0 StConnBit=
0 PId= "11c70a31b7c-0" Fixed= -1
 10 M= "ist.ac.simulador.modules.ModuleHexaDisplay" Name= "DATA_OUT 7-4" NPorts= 1 Conf= "4@3" X= 800 Y= 144
 P= "IN" CIn= 5 NBit= 4 StBit= 0 StConnBit= 4 PId= "11c70a32c9c-0" Fixed= -1
 11 M= "ist.ac.simulador.modules.ModulePushButtons" Name= "Botão" NPorts= 1 Conf= "1@3" X= 248 Y= 432
 P= "OUT" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c70a462a9-0" Fixed= -1
 12 M= "ist.ac.simulador.modules.ModuleInput" Name= "Dados" NPorts= 1 Conf= "8@3" X= 248 Y= 184
 P= "OUT" CIn= 7 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c70d2e5fd-0" Fixed= -1
Simula��es/Cap3/simula��o 3.6/semaforos-perifericos.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 14 NC= 9
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C883a" NBits= 8 NSegments= 3
 Po= "11c6fb4f812" Pd= "11c6fb874fd-0" Np= 2
 X= 739 Y= 303
 X= 829 Y= 303
 Po= "11c6fb4f812" Pd= "11c6fb89a19-0" Np= 4
 X= 739 Y= 303
 X= 800 Y= 303
 X= 800 Y= 351
 X= 829 Y= 351
 Po= "11c6fb4f812" Pd= "11c6fb8c109-0" Np= 4
 X= 739 Y= 303
 X= 800 Y= 303
 X= 800 Y= 399
 X= 829 Y= 399
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cb7fc" NBits= 1 NSegments= 2
 Po= "11c6fb6181f-0" Pd= "11c6fb4f802" Np= 4
 X= 531 Y= 327
 X= 579 Y= 327
 X= 579 Y= 303
 X= 629 Y= 303
 Po= "11c6fb6181f-0" Pd= "11c6fb4b7e7-0" Np= 4
 X= 531 Y= 327
 X= 579 Y= 327
 X= 579 Y= 431
 X= 629 Y= 431
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ca8d5" NBits= 1 NSegments= 1
 Po= "11c6fb60fb6-0" Pd= "11c6fb4b806" Np= 4
 X= 531 Y= 487
 X= 581 Y= 487
 X= 581 Y= 471
 X= 629 Y= 471
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "C3bbf" NBits= 8 NSegments= 3
 Po= "11c709fb925-0" Pd= "11c6c5501ae" Np= 4
 X= 353 Y= 151
 X= 513 Y= 151
 X= 513 Y= 159
 X= 629 Y= 159
 Po= "11c709fb925-0" Pd= "11c6c5501ed" Np= 4
 X= 353 Y= 151
 X= 448 Y= 151
 X= 448 Y= 179
 X= 629 Y= 179
 Po= "11c6fb6183e" Pd= "11c709fb925-0" Np= 3
 X= 421 Y= 327
 X= 421 Y= 151
 X= 353 Y= 151
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cf21e" NBits= 1 NSegments= 3
 Po= "11c709fdd67-0" Pd= "11c6c5501fc" Np= 4
 X= 353 Y= 247
 X= 540 Y= 247
 X= 540 Y= 219
 X= 629 Y= 219
 Po= "11c6fb4f7e3" Pd= "11c6fb60fc6" Np= 6
 X= 629 Y= 343
 X= 554 Y= 343
 X= 554 Y= 396
 X= 395 Y= 396
 X= 395 Y= 487
 X= 421 Y= 487
 Po= "11c709fdd67-0" Pd= "11c6fb60fc6" Np= 4
 X= 353 Y= 247
 X= 395 Y= 247
 X= 395 Y= 487
 X= 421 Y= 487
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "C90d7" NBits= 1 NSegments= 1
 Po= "11c6fb4f7e3" Pd= "11c6fb60fc6" Np= 6
 X= 629 Y= 343
 X= 554 Y= 343
 X= 554 Y= 396
 X= 395 Y= 396
 X= 395 Y= 487
 X= 421 Y= 487
 6 C= "ist.ac.simulador.nucleo.SConnection" Name= "C2bf8" NBits= 8 NSegments= 3
 Po= "11c6fb4b835" Pd= "11c6c5501be" Np= 4
 X= 739 Y= 431
 X= 768 Y= 431
 X= 768 Y= 159
 X= 739 Y= 159
 Po= "11c70a32c9c-0" Pd= "11c6c5501be" Np= 2
 X= 805 Y= 159
 X= 739 Y= 159
 Po= "11c70a31b7c-0" Pd= "11c6c5501be" Np= 5
 X= 941 Y= 159
 X= 941 Y= 115
 X= 785 Y= 115
 X= 785 Y= 159
 X= 739 Y= 159
 7 C= "ist.ac.simulador.nucleo.SConnection" Name= "C67ea" NBits= 8 NSegments= 1
 Po= "11c70a462a9-0" Pd= "11c6fb4b816" Np= 2
 X= 353 Y= 447
 X= 629 Y= 447
 8 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ce4ee" NBits= 8 NSegments= 2
 Po= "11c70d2e5fd-0" Pd= "11c6c5501ce" Np= 2
 X= 353 Y= 199
 X= 629 Y= 199
 Po= "11c6fb4f7d3-0" Pd= "11c70d2e5fd-0" Np= 4
 X= 629 Y= 323
 X= 602 Y= 323
 X= 602 Y= 199
 X= 353 Y= 199
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModuleMemoryTwoDataBusCsWr" Name= "Memória dados" NPorts= 5 Conf= "8@10" X= 624 Y= 144
 P= "A7..A0" CIn= 3 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c5501ae" Fixed= -1
 P= "CS" CIn= 3 NBit= 1 StBit= 0 StConnBit= 7 PId= "11c6c5501ed" Fixed= -1
 P= "DATA_IN" CIn= 8 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c5501ce" Fixed= -1
 P= "DATA_OUT" CIn= 6 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c5501be" Fixed= -1
 P= "WR" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c5501fc" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleDriverIn" Name= "Per. entrada" NPorts= 4 Conf= "8@3" X= 624 Y= 416
 P= "CS" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb4b7e7-0" Fixed= -1
 P= "IN" CIn= 7 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6fb4b816" Fixed= -1
 P= "OUT" CIn= 6 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6fb4b835" Fixed= -1
 P= "RD" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb4b806" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleDriverOut" Name= "Per. saída" NPorts= 4 Conf= "8@3" X= 624 Y= 288
 P= "CS" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb4f802" Fixed= -1
 P= "IN" CIn= 8 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6fb4f7d3-0" Fixed= -1
 P= "OUT" CIn= 0 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6fb4f812" Fixed= -1
 P= "WR" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb4f7e3" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT" NPorts= 2 Conf= "1x1@3" X= 416 Y= 472
 P= "IN0" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb60fc6" Fixed= -1
 P= "OUT" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb60fb6-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT" NPorts= 2 Conf= "1x1@3" X= 416 Y= 312
 P= "IN0" CIn= 3 NBit= 1 StBit= 0 StConnBit= 7 PId= "11c6fb6183e" Fixed= -1
 P= "OUT" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb6181f-0" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Vermelho" NPorts= 1 Conf= "1@3" X= 824 Y= 288
 HIGHCOLOR= "Red" LOWCOLOR= "Black" ZCOLOR= "Grey" P= "IN" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb874fd-0" Fixed= -1
 6 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Amarelo" NPorts= 1 Conf= "1@3" X= 824 Y= 336
 HIGHCOLOR= "Yellow" LOWCOLOR= "Black" ZCOLOR= "Grey" P= "IN" CIn= 0 NBit= 1 StBit= 0 StConnBit= 1 PId= "11c6fb89a19-0" Fixed= -1
 7 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Verde" NPorts= 1 Conf= "1@3" X= 824 Y= 384
 HIGHCOLOR= "Green" LOWCOLOR= "Black" ZCOLOR= "Grey" P= "IN" CIn= 0 NBit= 1 StBit= 0 StConnBit= 2 PId= "11c6fb8c109-0" Fixed= -1
 8 M= "ist.ac.simulador.modules.ModuleInput" Name= "Endereço" NPorts= 1 Conf= "8@3" X= 248 Y= 136
 P= "OUT" CIn= 3 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c709fb925-0" Fixed= -1
 9 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "WR" NPorts= 1 Conf= "1@3" X= 248 Y= 232
 P= "OUT" CIn= 4 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c709fdd67-0" Fixed= -1
 10 M= "ist.ac.simulador.modules.ModuleHexaDisplay" Name= "DATA_OUT 3-0" NPorts= 1 Conf= "4@3" X= 936 Y= 144
 P= "IN" CIn= 6 NBit= 4 StBit= 0 StConnBit= 0 PId= "11c70a31b7c-0" Fixed= -1
 11 M= "ist.ac.simulador.modules.ModuleHexaDisplay" Name= "DATA_OUT 7-4" NPorts= 1 Conf= "4@3" X= 800 Y= 144
 P= "IN" CIn= 6 NBit= 4 StBit= 0 StConnBit= 4 PId= "11c70a32c9c-0" Fixed= -1
 12 M= "ist.ac.simulador.modules.ModulePushButtons" Name= "Botão" NPorts= 1 Conf= "1@3" X= 248 Y= 432
 P= "OUT" CIn= 7 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c70a462a9-0" Fixed= -1
 13 M= "ist.ac.simulador.modules.ModuleInput" Name= "Dados" NPorts= 1 Conf= "8@3" X= 248 Y= 184
 P= "OUT" CIn= 8 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c70d2e5fd-0" Fixed= -1
Simula��es/Cap3/simula��o 3.6/simula��o-3.6.doc
Guia de Laboratório
de
Arquitetura de Computadores
Simulação 3.6 – Funcionamento dos periféricos
1 – Objetivos
Esta simulação ilustra o funcionamento dos periféricos.
O circuito a ser usado é basicamente o da Figura 3.26, mas o processador foi substituído por dispositivos que permitem controlar manualmente os sinais normalmente gerados pelo PEPE-8, para ilustrar o funcionamento dos periféricos em detalhe e com controle total. Os aspectos abordados incluem os seguintes:
Funcionamento básico do periférico de saída (com memorização do valor), e do periférico de entrada, com ênfase na sua interface tri-state;
Distinção entre acesso à memória e acesso a periféricos, com ilustração do que acontece quando se ativa simultaneamente a memória e um periférico, quer em leitura quer em escrita.
2 – Circuito
O arquivo “semaforos-perifericos.cmod” implementa o circuito da Figura 3.26, mas o processador foi substituído por dispositivos que permitem controlar manualmente os sinais normalmente gerados pelo PEPE-8.
O bus de endereços e de dados (de saída) do PEPE-8 são simulados pelos módulos de entrada hexadecimal “Endereço” e “Dados” (8 bits cada). O interruptor WR simula o sinal correspondente do PEPE-8.
Os displays DATA_OUT, de 4 bits cada um, permitem ver o valor lido da memória ou do periférico de entrada.
Notas:
Tanto o sinal CS da memória como o NOT de cima estão ligados ao bit mais significativo do bus de endereços. Como resultado, os endereços de 00H a 7FH (bit mais significativo com 0) ativam a memória. Os endereços 80H a FFH (bit mais significativo com 1) ativam os CS dos periféricos (os sinais CS ficam ativos com 0);
Com o interruptor WR com 0, escreve-se na memória ou no periférico de saída (o sinal CS discrimina qual). Com WR=1, lê-se a memória ou o periférico de entrada (o sinal CS discrimina qual).
A Tabela 3.15 esclarece estes aspectos.
3 – Simulação
Carregue este circuito no simulador e passe para Simulação. Abra o painel de controle do botão WR e coloque-o com 1 (para não escrever na memória). 
Clique em Start e realize as seguintes experiências.
Ler da memória
Abra (com duplo clique) os painéis de controle dos displays dos módulos de entrada e da memória;
Certifique-se que o interruptor WR está com 1;
No Endereço coloque um valor menor que 80H (clicando no seu botão OK), por exemplo, 04H. Verifique que nos displays aparece o valor que a memória tem nesse endereço.
Escrever na memória
No módulo Dados coloque um valor qualquer, em hexadecimal, entre 00H e FFH (clique em OK);
Coloque o interruptor WR com o valor 0;
Verifique que o valor que você informou aparece no painel da memória e nos displays;
Indique um novo valor no módulo Dados e clique em OK. Verifique que o novo valor aparece no painel da memória e nos displays;
Coloque o interruptor WR com o valor 1, para deixar de escrever;
Indique um novo valor no módulo Dados e clique em OK. Verifique que o novo valor não afeta nem o painel da memória nem os displays. A memória memorizou, ou seja, tem um comportamento de latch.
Escrever no periférico de saída (semáforo)
Abra os painéis de controle dos LEDs para visualizar as luzes;
Proceda da mesma forma que para escrever na memória, mas agora especificando o endereço 80H (ou outro até FFH);
Note que apenas os três bits menos significativos afetam os LEDs;
O periférico de saída também tem um comportamento de latch. Com WR=0 está transparente, com WR=1 memoriza.
Ler do periférico de entrada (botão)
Certifique-se que WR=1;
Abra o painel de controle do botão e experimente clicar no botão de pressão. Verifique que o display menos significativo passa a 1 enquanto se está pressionando o botão e volta a 0 quando deixa de se pressionar. Isto quer dizer que o periférico de entrada está lendo, e que só o bit menos significativo, aquele a que o botão se liga, é afetado.
O periférico de entrada está sempre lendo até WR deixar de estar com 1 ou o endereço ser menor que 80H (para o bit menos significativo ser 0).
4 – Conflito entre a memória e os periféricos
Uma das regras básicas de qualquer computador é um acesso a um endereço nunca ativar mais de um dispositivo na mesma operação (leitura ou escrita), sob risco do circuito funcionar incorretamente.
Para ilustrar isto, carregue no simulador o arquivo “semaforos-conflito.cmod”, em que o NOT que faz atuar os CS da memória e dos periféricos em separado foi eliminado. Todos os CS se ligam agora ao bit mais significativo do bus de endereços. Qualquer acesso a um endereço menor que 80H (para o bit mais significativo ser 0, valor com que os CS ficam ativos) faz ativar quer a memória, quer os periféricos.
Passe para Simulação, clique em Start e abra os painéis de controle de todos os dispositivos.
Com WR=0 (escrita), verifique que colocar um valor no módulo Endereço faz aparecer o valor da célula de memória desse endereço nos displays (pode alterar o valor dessa célula no painel da memória) e os três bits menos significativo nos LEDs do semáforo. Ou seja, a escrita está ocorrendo ao mesmo tempo na memória e nos semáforos. É um funcionamento incorreto.
Coloque agora WR=1, o que ativa a saída do periférico de entrada e da memória ao mesmo tempo (estão ambos em leitura). O resultado é termos dois dispositivos querendo forçar a ligação para dois valores diferentes.
Em termos de hardware, isto poderia ser o suficiente para provocar um dano permanente no circuito, por correntes excessivas. Em simulação, o simulador simplesmente reporta um erro de conflito no bus, na parte de baixo da janela do simulador, do seguinte tipo:
ERROR: Time: 63:Update elements: ist.ac.simulador.nucleo.SSignalConflictException: STRONG CONFLICT on Connection Connection between P<DATA_OUT, 8> of M<Memória dados, 8>, P<IN, 4> of M<DATA_OUT 7-4, 4>, P<IN, 4> of M<DATA_OUT 3-0, 4> and P<OUT, 8> of M<Per. entrada, 8>
O circuito não funciona bem sem corrigir este problema.
	4
Simula��es/Cap3/simula��o 3.7/programa3-6.asm
; constantes de dados
vermelho	EQU	01H	; valor do vermelho (lâmpada se liga ao bit 0 – ver
				; a Figura 3.26)
amarelo		EQU	02H	; valor do amarelo (lâmpada se liga ao bit 1)
verde		EQU	04H	; valor do verde (lâmpada se liga ao bit 2)
; constantes de endereços
semáforo	EQU	80H	; endereço 128 (periférico de saída)
; programa
início:	LD	verde		; carrega o registrador A com o valor para verde
	ST	[semáforo]	; atualiza o periférico de saída
semVerde:	
	NOP			; faz uma pausa
	NOP			; faz uma pausa
	NOP			; faz uma pausa
	LD	amarelo		; carrega o registrador A com o valor para amarelo
	ST	[semáforo]	; atualiza o periférico de saída
semAmarelo:
	LD	vermelho	; carrega o registrador A com o valor para vermelho
	ST	[semáforo]	; atualiza o periférico de saída
semVerm:NOP			; faz uma pausa
	NOP			; faz uma pausa
	NOP			; faz uma pausa
	NOP			; faz uma pausa
	JMP	início		; vai fazer mais um ciclo
Simula��es/Cap3/simula��o 3.7/programa3-6.cod
Simula��es/Cap3/simula��o 3.7/semaforos.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 13 NC= 12
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cd6a6" NBits= 8 NSegments= 3
 Po= "11c6c54be1a" Pd= "11c6c5501ae" Np= 2
 X= 491 Y= 159
 X= 629 Y= 159
 Po= "11c6c5501ed" Pd= "11c6c54be1a" Np= 4
 X= 629 Y= 179
 X= 561 Y= 179
 X= 561 Y= 159
 X= 491 Y= 159
 Po= "11c6fb6183e" Pd= "11c6c54be1a" Np= 5
 X= 421 Y= 327
 X= 421 Y= 291
 X= 561 Y= 291
 X= 561 Y= 159
 X= 491 Y= 159
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C4636" NBits= 1 NSegments= 3
 Po= "11c6c54be49" Pd= "11c6c5501fc" Np= 2
 X= 491 Y= 219
 X= 629 Y= 219
 Po= "11c6c54be49" Pd= "11c6fb60fc6" Np= 6
 X= 491 Y= 219
 X= 530 Y= 219
 X= 530 Y= 258
 X= 395 Y= 258
 X= 395 Y= 487
 X= 421 Y= 487
 Po= "11c6fb4f7e3" Pd= "11c6fb60fc6" Np= 6
 X= 629 Y= 343
 X= 554 Y= 343
 X= 554 Y= 396
 X= 395
Y= 396
 X= 395 Y= 487
 X= 421 Y= 487
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "C7915" NBits= 8 NSegments= 2
 Po= "11c6c54bdeb" Pd= "11c6c5501ce" Np= 2
 X= 491 Y= 199
 X= 629 Y= 199
 Po= "11c6fb4f7d3-0" Pd= "11c6c54bdeb" Np= 4
 X= 629 Y= 323
 X= 597 Y= 323
 X= 597 Y= 199
 X= 491 Y= 199
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "C9f9c" NBits= 8 NSegments= 1
 Po= "11c6c54be2a" Pd= "11c6c54f466-0" Np= 6
 X= 491 Y= 179
 X= 534 Y= 179
 X= 534 Y= 108
 X= 136 Y= 108
 X= 136 Y= 247
 X= 165 Y= 247
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "C79" NBits= 8 NSegments= 2
 Po= "11c6c54bddc" Pd= "11c6c5501be" Np= 6
 X= 381 Y= 179
 X= 334 Y= 179
 X= 334 Y= 81
 X= 786 Y= 81
 X= 786 Y= 159
 X= 739 Y= 159
 Po= "11c6fb4b835" Pd= "11c6c54bddc" Np= 6
 X= 739 Y= 431
 X= 770 Y= 431
 X= 770 Y= 526
 X= 334 Y= 526
 X= 334 Y= 179
 X= 381 Y= 179
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "C88ae" NBits= 16 NSegments= 1
 Po= "11c6c54f475" Pd= "11c6c54bdfb" Np= 4
 X= 275 Y= 247
 X= 305 Y= 247
 X= 305 Y= 199
 X= 381 Y= 199
 6 C= "ist.ac.simulador.nucleo.SConnection" Name= "C8d3f" NBits= 16 NSegments= 1
 Po= "11c6c552313-0" Pd= "11c6c54bdad-0" Np= 4
 X= 273 Y= 343
 X= 357 Y= 343
 X= 357 Y= 219
 X= 381 Y= 219
 7 C= "ist.ac.simulador.nucleo.SConnection" Name= "C314" NBits= 8 NSegments= 1
 Po= "11c6fb93f8b-0" Pd= "11c6fb4b816" Np= 2
 X= 273 Y= 455
 X= 629 Y= 455
 8 C= "ist.ac.simulador.nucleo.SConnection" Name= "C99e8" NBits= 8 NSegments= 3
 Po= "11c6fb4f812" Pd= "11c6fb874fd-0" Np= 2
 X= 739 Y= 303
 X= 829 Y= 303
 Po= "11c6fb4f812" Pd= "11c6fb89a19-0" Np= 4
 X= 739 Y= 303
 X= 800 Y= 303
 X= 800 Y= 351
 X= 829 Y= 351
 Po= "11c6fb4f812" Pd= "11c6fb8c109-0" Np= 4
 X= 739 Y= 303
 X= 800 Y= 303
 X= 800 Y= 399
 X= 829 Y= 399
 9 C= "ist.ac.simulador.nucleo.SConnection" Name= "C116a" NBits= 1 NSegments= 2
 Po= "11c6fb6181f-0" Pd= "11c6fb4f802" Np= 4
 X= 531 Y= 327
 X= 579 Y= 327
 X= 579 Y= 303
 X= 629 Y= 303
 Po= "11c6fb6181f-0" Pd= "11c6fb4b7e7-0" Np= 4
 X= 531 Y= 327
 X= 579 Y= 327
 X= 579 Y= 431
 X= 629 Y= 431
 10 C= "ist.ac.simulador.nucleo.SConnection" Name= "Caa90" NBits= 1 NSegments= 1
 Po= "11c6fb60fb6-0" Pd= "11c6fb4b806" Np= 4
 X= 531 Y= 487
 X= 581 Y= 487
 X= 581 Y= 471
 X= 629 Y= 471
 11 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cbc49" NBits= 1 NSegments= 1
 Po= "11c6ffa4fe3-0" Pd= "11c6c54bdbc" Np= 2
 X= 273 Y= 159
 X= 381 Y= 159
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModulePepe8" Name= "Pepe8" NPorts= 8 CF= "C:\\Users\\José Delgado\\Documents\\simulacoes\\cap3\\simulação 3.7\\programa3-06.asm" X= 376 Y= 144
 P= "Addr_data" CIn= 0 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c54be1a" Fixed= -1
 P= "Addr_inst" CIn= 3 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c54be2a" Fixed= -1
 P= "Clock" CIn= 11 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c54bdbc" Fixed= -1
 P= "DataIn" CIn= 4 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c54bddc" Fixed= -1
 P= "DataOut" CIn= 2 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c54bdeb" Fixed= -1
 P= "Inst" CIn= 5 NBit= 12 StBit= 0 StConnBit= 0 PId= "11c6c54bdfb" Fixed= -1
 P= "Reset" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c54bdad-0" Fixed= -1
 P= "WR" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c54be49" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModulePROM" Name= "PROM" NPorts= 3 Conf= "8x16@3" CF= "C:\\Users\\José Delgado\\Documents\\simulacoes\\cap3\\simulação 3.7\\programa3-06.cod" X= 160 Y= 232
 P= "ADDRESS" CIn= 3 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c54f466-0" Fixed= -1
 P= "CS" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c54f485" Fixed= 0
 P= "DATA" CIn= 5 NBit= 16 StBit= 0 StConnBit= 0 PId= "11c6c54f475" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleMemoryTwoDataBusCsWr" Name= "Memória dados" NPorts= 5 Conf= "8@10" X= 624 Y= 144
 P= "A7..A0" CIn= 0 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c5501ae" Fixed= -1
 P= "CS" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c5501ed" Fixed= -1
 P= "DATA_IN" CIn= 2 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c5501ce" Fixed= -1
 P= "DATA_OUT" CIn= 4 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c5501be" Fixed= -1
 P= "WR" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c5501fc" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleReset" Name= "RESET" NPorts= 1 Conf= "16@20" X= 168 Y= 328
 P= "OUT" CIn= 6 NBit= 16 StBit= 0 StConnBit= 0 PId= "11c6c552313-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleDriverIn" Name= "Per. entrada" NPorts= 4 Conf= "8@3" X= 624 Y= 416
 P= "CS" CIn= 9 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb4b7e7-0" Fixed= -1
 P= "IN" CIn= 7 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6fb4b816" Fixed= -1
 P= "OUT" CIn= 4 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6fb4b835" Fixed= -1
 P= "RD" CIn= 10 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb4b806" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleDriverOut" Name= "Per. saída" NPorts= 4 Conf= "8@3" X= 624 Y= 288
 P= "CS" CIn= 9 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb4f802" Fixed= -1
 P= "IN" CIn= 2 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6fb4f7d3-0" Fixed= -1
 P= "OUT" CIn= 8 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6fb4f812" Fixed= -1
 P= "WR" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb4f7e3" Fixed= -1
 6 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT" NPorts= 2 Conf= "1x1@3" X= 416 Y= 472
 P= "IN0" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb60fc6" Fixed= -1
 P= "OUT" CIn= 10 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb60fb6-0" Fixed= -1
 7 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT" NPorts= 2 Conf= "1x1@3" X= 416 Y= 312
 P= "IN0" CIn= 0 NBit= 1 StBit= 0 StConnBit= 7 PId= "11c6fb6183e" Fixed= -1
 P= "OUT" CIn= 9 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb6181f-0" Fixed= -1
 8 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Vermelho" NPorts= 1 Conf= "1@3" X= 824 Y= 288
 HIGHCOLOR= "Red" LOWCOLOR= "Black" ZCOLOR= "Grey" P= "IN" CIn= 8 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb874fd-0" Fixed= -1
 9 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Amarelo" NPorts= 1 Conf= "1@3" X= 824 Y= 336
 HIGHCOLOR= "Yellow" LOWCOLOR= "Black" ZCOLOR= "Grey" P= "IN" CIn= 8 NBit= 1 StBit= 0 StConnBit= 1 PId= "11c6fb89a19-0" Fixed= -1
 10 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Verde" NPorts= 1 Conf= "1@3" X= 824 Y= 384
 HIGHCOLOR= "Green" LOWCOLOR= "Black" ZCOLOR= "Grey" P= "IN" CIn= 8 NBit= 1 StBit= 0 StConnBit= 2 PId= "11c6fb8c109-0" Fixed= -1
 11 M= "ist.ac.simulador.modules.ModulePushButtons" Name= "Botão" NPorts= 1 Conf= "1@3" X= 168 Y= 440
 P= "OUT" CIn= 7 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb93f8b-0" Fixed= -1
 12 M= "ist.ac.simulador.modules.ModuleRTClock" Name= "Relógio 1 Hz" NPorts= 1 Conf= "1@1000" X= 168 Y= 144
 P= "OUT" CIn= 11 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6ffa4fe3-0" Fixed= -1
Simula��es/Cap3/simula��o 3.7/simula��o-3.7.doc
Guia de Laboratório
de
Arquitetura de Computadores
Simulação 3.7 – Semáforo simples
1 – Objetivos
Esta simulação ilustra o funcionamento do Programa 3.6. O circuito a ser usado é o da Figura 3.26. Os aspectos abordados incluem os seguintes:
Funcionamento do periférico de saída (com memorização do valor e atuação nas lâmpadas);
Verificação dos tempos de cada cor e sua relação com as instruções do programa;
Verificação do comportamento do periférico quando o programa começa e antes de ser inicializado.
2 – Circuito e preparação da simulação
O arquivo “semaforos.cmod”
implementa o circuito da Figura 3.26, em que o PEPE-8 está ligado a um relógio de 1 Hz (ao contrário do relógio normal, que evolui à velocidade máxima permitida pelo computador, este completa um ciclo em um período definido). 
O botão “Botão” e o periférico de entrada não são usados nesta simulação. Os LEDs simulam as lâmpadas do semáforo.
A simulação 3.4 contém os detalhes de como usar o PEPE-8, em execução passo a passo e com pontos de parada, e de como compilar os programas.
Para executar esta simulação, carregue este circuito no simulador, passe para Simulação e carregue o arquivo “programa3-6.cod” na PROM, usando Code->Load Binary. Não se esqueça de clicar em Parse Mem no PEPE-8.
O arquivo “programa3-6.asm” contém o programa em assembly a partir do qual foi gerado o arquivo “programa3-6.cod”, através de sua compilação no PEPE-8.
3 – Simulação do programa 3.6
Abra os painéis de controle dos 3 LEDs. Clique em Start no PEPE-8 (você deverá ter feito o mesmo no painel do relógio). Antes de ser inicializado, o periférico de saída está em alta impedância, o que faz os LEDs aparecerem em cinza (depois ficam ou pretos ou com a respectiva cor, quando a lâmpada correspondente está acesa).
Note que a barra azul evolui uma vez por segundo, correspondente à execução de uma instrução. Dado que o relógio tem uma temporização definida, a interface tem tempo de atualizar a barra azul.
Note o tempo de cada cor e a sua relação com as instruções executadas. A cor muda apenas quando o PEPE-8 executa uma instrução ST [80], que é quando escreve no periférico. O tempo de cada cor depende do número de instruções executadas entre estas instruções, o que é feito colocando-se mais ou menos NOPs.
Note também a cor dos sinais de 1 bit (relógio, WR, saídas dos NOTs). Elas alternam entre vermelho (1) e preto (0), conforme vão mudando de valor.
Pode-se observar este aspecto mais em detalhe, clicando em Stop no relógio e depois clicando sucessivamente em One-Shot, o que gera um ciclo de cada vez (mas dê tempo ao relógio para terminar o ciclo antes de clicar de novo).
Compare a evolução destes sinais com as Figuras 3.27 a 3.30.
	3
Simula��es/Cap3/simula��o 3.8/programa3-7.asm
; constantes de dados
vermelho	EQU	01H	; valor do vermelho (lâmpada se liga ao bit 0 – ver 
				; a Figura 3.26)
amarelo		EQU	02H	; valor do amarelo (lâmpada se liga ao bit 1)
verde		EQU	04H	; valor do verde (lâmpada se liga ao bit 2)
mascBotão	EQU	01H	; máscara a ser usada para isolar o bit do botão no 
				; periférico de entrada (ligado no bit 0)
; constantes de endereços
semáforo	EQU	80H	; endereço 128 (periférico de saída)
botão		EQU	80H	; endereço 128 (periférico de entrada)
; programa
início:	LD	verde		; carrega o registrador A com o valor para verde
	ST	[semáforo]	; atualiza o periférico de saída
semVerde:
	LD	[botão]		; lê o valor do periférico de entrada
	AND	mascBotão	; isola bit do botão (força os outros a serem 0)
	JZ	semVerde	; se for zero, o botão não foi pressionado
	LD	amarelo		; carrega o registrador A com o valor para amarelo
	ST	[semáforo]	; atualiza o periférico de saída
semAmarelo:
	LD	vermelho	; carrega o registrador A com o valor para vermelho
	ST	[semáforo]	; atualiza o periférico de saída
semVerm:NOP			; faz uma pausa
	NOP			; faz uma pausa
	NOP			; faz uma pausa
	NOP			; faz uma pausa
	JMP	início		; vai fazer mais um ciclo
Simula��es/Cap3/simula��o 3.8/programa3-7.cod
Simula��es/Cap3/simula��o 3.8/programa3-7variante.asm
; constantes de dados
vermelho	EQU	01H	; valor do vermelho (lâmpada se liga ao bit 0 – ver 
				; a Figura 3.26)
amarelo		EQU	02H	; valor do amarelo (lâmpada se liga ao bit 1)
verde		EQU	04H	; valor do verde (lâmpada se liga ao bit 2)
mascBotão	EQU	01H	; máscara a ser usada para isolar o bit do botão no 
				; periférico de entrada (ligado no bit 0)
; constantes de endereços
semáforo	EQU	80H	; endereço 128 (periférico de saída)
botão		EQU	80H	; endereço 128 (periférico de entrada)
; programa
início:	LD	verde		; carrega o registrador A com o valor para verde
	ST	[semáforo]	; atualiza o periférico de saída
semVerde:
	LD	[botão]		; lê o valor do periférico de entrada
;	AND	mascBotão	; isola bit do botão (força os outros a serem 0)
	JZ	semVerde	; se for zero, o botão não foi pressionado
	LD	amarelo		; carrega o registrador A com o valor para amarelo
	ST	[semáforo]	; atualiza o periférico de saída
semAmarelo:
	LD	vermelho	; carrega o registrador A com o valor para vermelho
	ST	[semáforo]	; atualiza o periférico de saída
semVerm:NOP			; faz uma pausa
	NOP			; faz uma pausa
	NOP			; faz uma pausa
	NOP			; faz uma pausa
	JMP	início		; vai fazer mais um ciclo
Simula��es/Cap3/simula��o 3.8/programa3-7variante.cod
Simula��es/Cap3/simula��o 3.8/semaforos-variante.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 14 NC= 12
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C301f" NBits= 8 NSegments= 3
 Po= "11c6c54be1a" Pd= "11c6c5501ae" Np= 2
 X= 491 Y= 159
 X= 629 Y= 159
 Po= "11c6c5501ed" Pd= "11c6c54be1a" Np= 4
 X= 629 Y= 179
 X= 561 Y= 179
 X= 561 Y= 159
 X= 491 Y= 159
 Po= "11c6fb6183e" Pd= "11c6c54be1a" Np= 5
 X= 421 Y= 327
 X= 421 Y= 291
 X= 561 Y= 291
 X= 561 Y= 159
 X= 491 Y= 159
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ccb4a" NBits= 1 NSegments= 3
 Po= "11c6c54be49" Pd= "11c6c5501fc" Np= 2
 X= 491 Y= 219
 X= 629 Y= 219
 Po= "11c6c54be49" Pd= "11c6fb60fc6" Np= 6
 X= 491 Y= 219
 X= 530 Y= 219
 X= 530 Y= 258
 X= 395 Y= 258
 X= 395 Y= 487
 X= 421 Y= 487
 Po= "11c6fb4f7e3" Pd= "11c6fb60fc6" Np= 6
 X= 629 Y= 343
 X= 554 Y= 343
 X= 554 Y= 396
 X= 395 Y= 396
 X= 395 Y= 487
 X= 421 Y= 487
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "C6deb" NBits= 8 NSegments= 2
 Po= "11c6c54bdeb" Pd= "11c6c5501ce" Np= 2
 X= 491 Y= 199
 X= 629 Y= 199
 Po= "11c6fb4f7d3-0" Pd= "11c6c54bdeb" Np= 4
 X= 629 Y= 323
 X= 597 Y= 323
 X= 597 Y= 199
 X= 491 Y= 199
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cbf9a" NBits= 8 NSegments= 1
 Po= "11c6c54be2a" Pd= "11c6c54f466-0" Np= 6
 X= 491 Y= 179
 X= 534 Y= 179
 X= 534 Y= 108
 X= 136 Y= 108
 X= 136 Y= 247
 X= 165 Y= 247
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cfa4a" NBits= 8 NSegments= 2
 Po= "11c6c54bddc" Pd= "11c6c5501be" Np= 6
 X= 381 Y= 179
 X= 334 Y= 179
 X= 334 Y= 81
 X= 786 Y= 81
 X= 786 Y= 159
 X= 739 Y= 159
 Po= "11c6fb4b835" Pd= "11c6c54bddc" Np= 6
 X= 739 Y= 431
 X= 770 Y= 431
 X= 770 Y= 526
 X= 334 Y= 526
 X= 334 Y= 179
 X= 381 Y= 179
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "C1a9d" NBits= 16 NSegments= 1
 Po= "11c6c54f475" Pd= "11c6c54bdfb" Np= 4
 X= 275 Y= 247
 X= 305 Y= 247
 X= 305 Y= 199
 X= 381 Y= 199
 6 C= "ist.ac.simulador.nucleo.SConnection" Name= "C2d6" NBits= 16 NSegments= 1
 Po= "11c6c552313-0" Pd= "11c6c54bdad-0" Np= 4
 X= 273 Y= 343
 X= 357 Y= 343
 X= 357 Y= 219
 X= 381 Y= 219
 7 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cb338" NBits= 8 NSegments= 2
 Po= "11c6fb93f8b-0" Pd= "11c6fb4b816" Np= 2
 X= 273 Y= 455
 X= 629 Y= 455
 Po= "11c704d0f8f-0" Pd= "11c6fb93f8b-0" Np= 4
 X= 273 Y= 527
 X= 308 Y= 527
 X= 308 Y= 455
 X= 273 Y= 455
 8 C= "ist.ac.simulador.nucleo.SConnection" Name= "C26d4" NBits= 8 NSegments= 3
 Po= "11c6fb4f812" Pd= "11c6fb874fd-0" Np= 2
 X= 739 Y= 303
 X= 829 Y= 303
 Po= "11c6fb4f812" Pd= "11c6fb89a19-0" Np= 4
 X= 739 Y= 303
 X= 800 Y= 303
 X= 800 Y= 351
 X= 829 Y= 351
 Po= "11c6fb4f812"
Pd= "11c6fb8c109-0" Np= 4
 X= 739 Y= 303
 X= 800 Y= 303
 X= 800 Y= 399
 X= 829 Y= 399
 9 C= "ist.ac.simulador.nucleo.SConnection" Name= "C3f20" NBits= 1 NSegments= 2
 Po= "11c6fb6181f-0" Pd= "11c6fb4f802" Np= 4
 X= 531 Y= 327
 X= 579 Y= 327
 X= 579 Y= 303
 X= 629 Y= 303
 Po= "11c6fb6181f-0" Pd= "11c6fb4b7e7-0" Np= 4
 X= 531 Y= 327
 X= 579 Y= 327
 X= 579 Y= 431
 X= 629 Y= 431
 10 C= "ist.ac.simulador.nucleo.SConnection" Name= "C4f4e" NBits= 1 NSegments= 1
 Po= "11c6fb60fb6-0" Pd= "11c6fb4b806" Np= 4
 X= 531 Y= 487
 X= 581 Y= 487
 X= 581 Y= 471
 X= 629 Y= 471
 11 C= "ist.ac.simulador.nucleo.SConnection" Name= "C531f" NBits= 1 NSegments= 1
 Po= "11c6ffa4fe3-0" Pd= "11c6c54bdbc" Np= 2
 X= 273 Y= 159
 X= 381 Y= 159
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModulePepe8" Name= "Pepe8" NPorts= 8 CF= "C:\\Users\\José Delgado\\Documents\\simulacoes\\cap3\\simulação 3.8\\programa3-7.asm" X= 376 Y= 144
 P= "Addr_data" CIn= 0 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c54be1a" Fixed= -1
 P= "Addr_inst" CIn= 3 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c54be2a" Fixed= -1
 P= "Clock" CIn= 11 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c54bdbc" Fixed= -1
 P= "DataIn" CIn= 4 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c54bddc" Fixed= -1
 P= "DataOut" CIn= 2 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c54bdeb" Fixed= -1
 P= "Inst" CIn= 5 NBit= 12 StBit= 0 StConnBit= 0 PId= "11c6c54bdfb" Fixed= -1
 P= "Reset" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c54bdad-0" Fixed= -1
 P= "WR" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c54be49" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModulePROM" Name= "PROM" NPorts= 3 Conf= "8x16@3" CF= "C:\\Users\\José Delgado\\Documents\\simulacoes\\cap3\\simulação 3.8\\programa3-7.cod" X= 160 Y= 232
 P= "ADDRESS" CIn= 3 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c54f466-0" Fixed= -1
 P= "CS" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c54f485" Fixed= 0
 P= "DATA" CIn= 5 NBit= 16 StBit= 0 StConnBit= 0 PId= "11c6c54f475" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleMemoryTwoDataBusCsWr" Name= "Memória dados" NPorts= 5 Conf= "8@10" X= 624 Y= 144
 P= "A7..A0" CIn= 0 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c5501ae" Fixed= -1
 P= "CS" CIn= 0 NBit= 1 StBit= 0 StConnBit= 7 PId= "11c6c5501ed" Fixed= -1
 P= "DATA_IN" CIn= 2 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c5501ce" Fixed= -1
 P= "DATA_OUT" CIn= 4 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c5501be" Fixed= -1
 P= "WR" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c5501fc" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleReset" Name= "RESET" NPorts= 1 Conf= "16@20" X= 168 Y= 328
 P= "OUT" CIn= 6 NBit= 16 StBit= 0 StConnBit= 0 PId= "11c6c552313-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleDriverIn" Name= "Per. entrada" NPorts= 4 Conf= "8@3" X= 624 Y= 416
 P= "CS" CIn= 9 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb4b7e7-0" Fixed= -1
 P= "IN" CIn= 7 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6fb4b816" Fixed= -1
 P= "OUT" CIn= 4 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6fb4b835" Fixed= -1
 P= "RD" CIn= 10 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb4b806" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleDriverOut" Name= "Per. saída" NPorts= 4 Conf= "8@3" X= 624 Y= 288
 P= "CS" CIn= 9 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb4f802" Fixed= -1
 P= "IN" CIn= 2 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6fb4f7d3-0" Fixed= -1
 P= "OUT" CIn= 8 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6fb4f812" Fixed= -1
 P= "WR" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb4f7e3" Fixed= -1
 6 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT" NPorts= 2 Conf= "1x1@3" X= 416 Y= 472
 P= "IN0" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb60fc6" Fixed= -1
 P= "OUT" CIn= 10 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb60fb6-0" Fixed= -1
 7 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT" NPorts= 2 Conf= "1x1@3" X= 416 Y= 312
 P= "IN0" CIn= 0 NBit= 1 StBit= 0 StConnBit= 7 PId= "11c6fb6183e" Fixed= -1
 P= "OUT" CIn= 9 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb6181f-0" Fixed= -1
 8 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Vermelho" NPorts= 1 Conf= "1@3" X= 824 Y= 288
 HIGHCOLOR= "Red" LOWCOLOR= "Black" ZCOLOR= "Grey" P= "IN" CIn= 8 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb874fd-0" Fixed= -1
 9 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Amarelo" NPorts= 1 Conf= "1@3" X= 824 Y= 336
 HIGHCOLOR= "Yellow" LOWCOLOR= "Black" ZCOLOR= "Grey" P= "IN" CIn= 8 NBit= 1 StBit= 0 StConnBit= 1 PId= "11c6fb89a19-0" Fixed= -1
 10 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Verde" NPorts= 1 Conf= "1@3" X= 824 Y= 384
 HIGHCOLOR= "Green" LOWCOLOR= "Black" ZCOLOR= "Grey" P= "IN" CIn= 8 NBit= 1 StBit= 0 StConnBit= 2 PId= "11c6fb8c109-0" Fixed= -1
 11 M= "ist.ac.simulador.modules.ModulePushButtons" Name= "Botão (bit 0)" NPorts= 1 Conf= "1@3" X= 168 Y= 440
 P= "OUT" CIn= 7 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb93f8b-0" Fixed= -1
 12 M= "ist.ac.simulador.modules.ModuleRTClock" Name= "Relógio 1 Hz" NPorts= 1 Conf= "1@1000" X= 168 Y= 144
 P= "OUT" CIn= 11 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6ffa4fe3-0" Fixed= -1
 13 M= "ist.ac.simulador.modules.ModuleToggleButtons" Name= "Interruptor (bit 1)" NPorts= 1 Conf= "1@3" X= 168 Y= 512
 P= "OUT" CIn= 7 NBit= 1 StBit= 0 StConnBit= 1 PId= "11c704d0f8f-0" Fixed= -1
Simula��es/Cap3/simula��o 3.8/semaforos.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 13 NC= 12
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C4d97" NBits= 8 NSegments= 3
 Po= "11c6c54be1a" Pd= "11c6c5501ae" Np= 2
 X= 491 Y= 159
 X= 629 Y= 159
 Po= "11c6c5501ed" Pd= "11c6c54be1a" Np= 4
 X= 629 Y= 179
 X= 561 Y= 179
 X= 561 Y= 159
 X= 491 Y= 159
 Po= "11c6fb6183e" Pd= "11c6c54be1a" Np= 5
 X= 421 Y= 327
 X= 421 Y= 291
 X= 561 Y= 291
 X= 561 Y= 159
 X= 491 Y= 159
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C6714" NBits= 1 NSegments= 3
 Po= "11c6c54be49" Pd= "11c6c5501fc" Np= 2
 X= 491 Y= 219
 X= 629 Y= 219
 Po= "11c6c54be49" Pd= "11c6fb60fc6" Np= 6
 X= 491 Y= 219
 X= 530 Y= 219
 X= 530 Y= 258
 X= 395 Y= 258
 X= 395 Y= 487
 X= 421 Y= 487
 Po= "11c6fb4f7e3" Pd= "11c6fb60fc6" Np= 6
 X= 629 Y= 343
 X= 554 Y= 343
 X= 554 Y= 396
 X= 395 Y= 396
 X= 395 Y= 487
 X= 421 Y= 487
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cc8b0" NBits= 8 NSegments= 2
 Po= "11c6c54bdeb" Pd= "11c6c5501ce" Np= 2
 X= 491 Y= 199
 X= 629 Y= 199
 Po= "11c6fb4f7d3-0" Pd= "11c6c54bdeb" Np= 4
 X= 629 Y= 323
 X= 597 Y= 323
 X= 597 Y= 199
 X= 491 Y= 199
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "C648c" NBits= 8 NSegments= 1
 Po= "11c6c54be2a" Pd= "11c6c54f466-0" Np= 6
 X= 491 Y= 179
 X= 534 Y= 179
 X= 534 Y= 108
 X= 136 Y= 108
 X= 136 Y= 247
 X= 165 Y= 247
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "C8061" NBits= 8 NSegments= 2
 Po= "11c6c54bddc" Pd= "11c6c5501be" Np= 6
 X= 381 Y= 179
 X= 334 Y= 179
 X= 334 Y= 81
 X= 786 Y= 81
 X= 786 Y= 159
 X= 739 Y= 159
 Po= "11c6fb4b835" Pd= "11c6c54bddc" Np= 6
 X= 739 Y= 431
 X= 770 Y= 431
 X= 770 Y= 526
 X= 334 Y= 526
 X= 334 Y= 179
 X= 381 Y= 179
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "C46ab" NBits= 16 NSegments= 1
 Po= "11c6c54f475" Pd= "11c6c54bdfb" Np= 4
 X= 275 Y= 247
 X= 305 Y= 247
 X= 305 Y= 199
 X= 381 Y= 199
 6 C= "ist.ac.simulador.nucleo.SConnection"
Name= "Cfb19" NBits= 16 NSegments= 1
 Po= "11c6c552313-0" Pd= "11c6c54bdad-0" Np= 4
 X= 273 Y= 343
 X= 357 Y= 343
 X= 357 Y= 219
 X= 381 Y= 219
 7 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cb292" NBits= 8 NSegments= 1
 Po= "11c6fb93f8b-0" Pd= "11c6fb4b816" Np= 2
 X= 273 Y= 455
 X= 629 Y= 455
 8 C= "ist.ac.simulador.nucleo.SConnection" Name= "Cac63" NBits= 8 NSegments= 3
 Po= "11c6fb4f812" Pd= "11c6fb874fd-0" Np= 2
 X= 739 Y= 303
 X= 829 Y= 303
 Po= "11c6fb4f812" Pd= "11c6fb89a19-0" Np= 4
 X= 739 Y= 303
 X= 800 Y= 303
 X= 800 Y= 351
 X= 829 Y= 351
 Po= "11c6fb4f812" Pd= "11c6fb8c109-0" Np= 4
 X= 739 Y= 303
 X= 800 Y= 303
 X= 800 Y= 399
 X= 829 Y= 399
 9 C= "ist.ac.simulador.nucleo.SConnection" Name= "C9506" NBits= 1 NSegments= 2
 Po= "11c6fb6181f-0" Pd= "11c6fb4f802" Np= 4
 X= 531 Y= 327
 X= 579 Y= 327
 X= 579 Y= 303
 X= 629 Y= 303
 Po= "11c6fb6181f-0" Pd= "11c6fb4b7e7-0" Np= 4
 X= 531 Y= 327
 X= 579 Y= 327
 X= 579 Y= 431
 X= 629 Y= 431
 10 C= "ist.ac.simulador.nucleo.SConnection" Name= "C501d" NBits= 1 NSegments= 1
 Po= "11c6fb60fb6-0" Pd= "11c6fb4b806" Np= 4
 X= 531 Y= 487
 X= 581 Y= 487
 X= 581 Y= 471
 X= 629 Y= 471
 11 C= "ist.ac.simulador.nucleo.SConnection" Name= "C3315" NBits= 1 NSegments= 1
 Po= "11c6ffa4fe3-0" Pd= "11c6c54bdbc" Np= 2
 X= 273 Y= 159
 X= 381 Y= 159
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModulePepe8" Name= "Pepe8" NPorts= 8 CF= "C:\\Users\\José Delgado\\Documents\\simulacoes\\cap3\\simulação 3.8\\programa3-7.asm" X= 376 Y= 144
 P= "Addr_data" CIn= 0 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c54be1a" Fixed= -1
 P= "Addr_inst" CIn= 3 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c54be2a" Fixed= -1
 P= "Clock" CIn= 11 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c54bdbc" Fixed= -1
 P= "DataIn" CIn= 4 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c54bddc" Fixed= -1
 P= "DataOut" CIn= 2 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c54bdeb" Fixed= -1
 P= "Inst" CIn= 5 NBit= 12 StBit= 0 StConnBit= 0 PId= "11c6c54bdfb" Fixed= -1
 P= "Reset" CIn= 6 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c54bdad-0" Fixed= -1
 P= "WR" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c54be49" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModulePROM" Name= "PROM" NPorts= 3 Conf= "8x16@3" CF= "C:\\Users\\José Delgado\\Documents\\simulacoes\\cap3\\simulação 3.8\\programa3-7.cod" X= 160 Y= 232
 P= "ADDRESS" CIn= 3 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c54f466-0" Fixed= -1
 P= "CS" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c54f485" Fixed= 0
 P= "DATA" CIn= 5 NBit= 16 StBit= 0 StConnBit= 0 PId= "11c6c54f475" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleMemoryTwoDataBusCsWr" Name= "Memória dados" NPorts= 5 Conf= "8@10" X= 624 Y= 144
 P= "A7..A0" CIn= 0 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c5501ae" Fixed= -1
 P= "CS" CIn= 0 NBit= 1 StBit= 0 StConnBit= 7 PId= "11c6c5501ed" Fixed= -1
 P= "DATA_IN" CIn= 2 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c5501ce" Fixed= -1
 P= "DATA_OUT" CIn= 4 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6c5501be" Fixed= -1
 P= "WR" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6c5501fc" Fixed= -1
 3 M= "ist.ac.simulador.modules.ModuleReset" Name= "RESET" NPorts= 1 Conf= "16@20" X= 168 Y= 328
 P= "OUT" CIn= 6 NBit= 16 StBit= 0 StConnBit= 0 PId= "11c6c552313-0" Fixed= -1
 4 M= "ist.ac.simulador.modules.ModuleDriverIn" Name= "Per. entrada" NPorts= 4 Conf= "8@3" X= 624 Y= 416
 P= "CS" CIn= 9 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb4b7e7-0" Fixed= -1
 P= "IN" CIn= 7 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6fb4b816" Fixed= -1
 P= "OUT" CIn= 4 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6fb4b835" Fixed= -1
 P= "RD" CIn= 10 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb4b806" Fixed= -1
 5 M= "ist.ac.simulador.modules.ModuleDriverOut" Name= "Per. saída" NPorts= 4 Conf= "8@3" X= 624 Y= 288
 P= "CS" CIn= 9 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb4f802" Fixed= -1
 P= "IN" CIn= 2 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6fb4f7d3-0" Fixed= -1
 P= "OUT" CIn= 8 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c6fb4f812" Fixed= -1
 P= "WR" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb4f7e3" Fixed= -1
 6 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT" NPorts= 2 Conf= "1x1@3" X= 416 Y= 472
 P= "IN0" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb60fc6" Fixed= -1
 P= "OUT" CIn= 10 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb60fb6-0" Fixed= -1
 7 M= "ist.ac.simulador.modules.ModuleNOT" Name= "NOT" NPorts= 2 Conf= "1x1@3" X= 416 Y= 312
 P= "IN0" CIn= 0 NBit= 1 StBit= 0 StConnBit= 7 PId= "11c6fb6183e" Fixed= -1
 P= "OUT" CIn= 9 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb6181f-0" Fixed= -1
 8 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Vermelho" NPorts= 1 Conf= "1@3" X= 824 Y= 288
 HIGHCOLOR= "Red" LOWCOLOR= "Black" ZCOLOR= "Grey" P= "IN" CIn= 8 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb874fd-0" Fixed= -1
 9 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Amarelo" NPorts= 1 Conf= "1@3" X= 824 Y= 336
 HIGHCOLOR= "Yellow" LOWCOLOR= "Black" ZCOLOR= "Grey" P= "IN" CIn= 8 NBit= 1 StBit= 0 StConnBit= 1 PId= "11c6fb89a19-0" Fixed= -1
 10 M= "ist.ac.simulador.modules.ModuleLeds" Name= "Verde" NPorts= 1 Conf= "1@3" X= 824 Y= 384
 HIGHCOLOR= "Green" LOWCOLOR= "Black" ZCOLOR= "Grey" P= "IN" CIn= 8 NBit= 1 StBit= 0 StConnBit= 2 PId= "11c6fb8c109-0" Fixed= -1
 11 M= "ist.ac.simulador.modules.ModulePushButtons" Name= "Botão" NPorts= 1 Conf= "1@3" X= 168 Y= 440
 P= "OUT" CIn= 7 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6fb93f8b-0" Fixed= -1
 12 M= "ist.ac.simulador.modules.ModuleRTClock" Name= "Relógio 1 Hz" NPorts= 1 Conf= "1@1000" X= 168 Y= 144
 P= "OUT" CIn= 11 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c6ffa4fe3-0" Fixed= -1
Simula��es/Cap3/simula��o 3.8/simula��o-3.8.doc
Guia de Laboratório
de
Arquitetura de Computadores
Simulação 3.8 – Semáforo de pedestres
1 – Objetivos
Esta simulação ilustra o funcionamento do Programa 3.7. O circuito usado é o da Figura 3.26. Os aspectos abordados incluem os seguintes:
Funcionamento do periférico de entrada com leitura do valor do botão;
Funcionamento do ciclo de teste e papel da instrução AND mascBotão;
Verificação do tempo de resposta à ativação do botão;
Verificação dos tempos de cada cor e sua relação com as instruções do programa.
2 – Circuito e preparação da simulação
O arquivo “semaforos.cmod” implementa o circuito da Figura 3.26, em que o PEPE-8 está ligado a um relógio de 1 Hz (ao contrário do relógio normal, que evolui à velocidade máxima permitida pelo computador, este completa um ciclo em um período definido). 
O botão “Botão” simula o botão do semáforo e os LEDs, as respectivas lâmpadas.
A simulação 3.4 contém os detalhes de como usar o PEPE-8, em execução passo a passo e com pontos de parada, e de como compilar os programas.
Para executar esta simulação, carregue este circuito no simulador, passe para Simulação e carregue o arquivo “programa3-7.cod” na PROM, usando Code->Load Binary. Não se esqueça de clicar em Parse Mem no PEPE-8.
O arquivo “programa3-7.asm” contém o programa em assembly a partir do qual foi gerado o arquivo “programa3-7.cod”, através de sua compilação no PEPE-8.
3 – Simulação do programa 3.7
Abra os painéis de controle dos 3 LEDs e do botão. Clique em Start no PEPE-8 (você deverá ter feito o mesmo no painel do relógio).
Note que o LED verde se acende e que, no painel do PEPE-8, a barra azul está em loop entre o endereço 02 e 04H. Este é o ciclo de leitura do botão. Ou seja, enquanto o usuário não clicar no botão, a lâmpada verde mantém-se acesa.
Experimente clicar no botão (no seu painel) brevemente.
O mais provável é o PEPE-8 não perceber isso. Por quê? O valor do periférico de entrada é lido para o registrador A e só depois é que é testado se o bit correspondente ao botão estava ativado.
Para garantir que o programa consiga detectar o botão, tem de se permanecer pressionando o botão até que o programa execute a instrução LD [botão], no endereço 02H.
O número de instruções executadas entre cada escrita no periférico de saída determina o tempo de cada cor.
4 – Importância da instrução AND mascBotão
Carregue agora no simulador o circuito contido no arquivo “semaforos-variante.cmod”. 
Foi acrescentado um interruptor que se liga ao bit 1 do periférico de entrada. O botão do semáforo se liga ao bit 0. Note que o botão é de pressão, enquanto o interruptor mantém o estado quando é solto.
Execute agora o programa 3.7, colocando o interruptor no estado 1. Note que o funcionamento do programa não se altera.
Compile agora o arquivo “programa3-7variante.asm” que tem a instrução AND maskBotão comentada e, portanto, não ficará no código binário gerado pelo compilador.
Carregue esta variante na PROM, execute o programa no PEPE-8 e verifique que, se o interruptor estiver com 0, o programa funciona normalmente. Mas, se estiver com 1, o programa age como se o botão do semáforo estivesse sempre pressionado, ou seja, está sempre circulando pelas três cores do semáforo.
A razão é simples. Na instrução LD [botão], o PEPE-8 lê os 8 bits do periférico de entrada, e pergunta simplesmente se o valor lido é zero, o que só acontece se todos os oito bits forem 0.
Para testar na prática apenas o bit 0, eliminando a dependência em relação aos outros bits, a instrução AND maskBotão coloca 0 em todos os bits exceto o bit 0. O teste é feito agora com a certeza de que os bits 1 a 7 são 0.
	3
Simula��es/Cap4/simula��o 4.1/add.asm
inicio:	ADD	R1, R2	; soma R1 e R2. Resultado fica em R1
	JMP	inicio	; faz a soma de novo, para experimentar outros valores
Simula��es/Cap4/simula��o 4.1/pepe.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 3 NC= 7
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C8fee" NBits= 16 NSegments= 1
 Po= "11c7f2150dd-0" Pd= "11c7f1ffa53-0" Np= 2
 X= 313 Y= 327
 X= 357 Y= 327
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C974c" NBits= 1 NSegments= 1
 Po= "11c7f1ffb47" Pd= "11c7f202e7e" Np= 4
 X= 467 Y= 327
 X= 571 Y= 327
 X= 571 Y= 267
 X= 621 Y= 267
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ce0fb" NBits= 1 NSegments= 1
 Po= "11c7f1ffb5d" Pd= "11c7f202e91" Np= 4
 X= 467 Y= 347
 X= 598 Y= 347
 X= 598 Y= 287
 X= 621 Y= 287
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "C5ad1" NBits= 1 NSegments= 1
 Po= "11c7f1ffb31" Pd= "11c7f202e3d" Np= 2
 X= 467 Y= 227
 X= 621 Y= 227
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "C1b39" NBits= 16 NSegments= 1
 Po= "11c7f1ffb1d" Pd= "11c7f202e29-0" Np= 2
 X= 467 Y= 207
 X= 621 Y= 207
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "C5067" NBits= 8 NSegments= 1
 Po= "11c7f1ffb05" Pd= "11c7f202e67" Np= 6
 X= 467 Y= 267
 X= 517 Y= 267
 X= 517 Y= 142
 X= 751 Y= 142
 X= 751 Y= 207
 X= 731 Y= 207
 6 C= "ist.ac.simulador.nucleo.SConnection" Name= "C85af" NBits= 8 NSegments= 1
 Po= "11c7f1ffaf0" Pd= "11c7f202e50" Np= 6
 X= 467 Y= 287
 X= 541 Y= 287
 X= 541 Y= 167
 X= 775 Y= 167
 X= 775 Y= 227
 X= 731 Y= 227
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModulePepe" Name= "Pepe" NPorts= 16 Conf= "cache" X= 352 Y= 192
 P= "A15-A0" CIn= 4 NBit= 16 StBit= 0 StConnBit= 0 PId= "11c7f1ffb1d" Fixed= -1
 P= "BA" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffb31" Fixed= -1
 P= "BGT" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffb8f" Fixed= -1
 P= "BRQ" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffba8" Fixed= 0
 P= "CLOCK" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffada" Fixed= -1
 P= "DATA_I" CIn= 5 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c7f1ffb05" Fixed= -1
 P= "DATA_P" CIn= 6 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c7f1ffaf0" Fixed= -1
 P= "INT0" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffa6a" Fixed= 0
 P= "INT1" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffa7f" Fixed= 0
 P= "INT2" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffa95" Fixed= 0
 P= "INT3" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffaaa" Fixed= 0
 P= "INTA" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffabf" Fixed= -1
 P= "RD" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffb47" Fixed= -1
 P= "RESET" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffa53-0" Fixed= -1
 P= "WAIT" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffb79" Fixed= 0
 P= "WR" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffb5d" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleMemoryBankCsRdWr" Name= "MemBank" NPorts= 7 X= 616 Y= 192
 P= "A15..A0" CIn= 4 NBit= 16 StBit= 0 StConnBit= 0 PId= "11c7f202e29-0" Fixed= -1
 P= "BA" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f202e3d" Fixed= -1
 P= "CS" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f202ea4" Fixed= 0
 P= "DATA_I" CIn= 5 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c7f202e67" Fixed= -1
 P= "DATA_P" CIn= 6 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c7f202e50" Fixed= -1
 P= "RD" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f202e7e" Fixed= -1
 P= "WR" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f202e91" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleReset" Name= "RESET" NPorts= 1 Conf= "16@20" X= 208 Y= 312
 P= "OUT" CIn= 0 NBit= 16 StBit= 0 StConnBit= 0 PId= "11c7f2150dd-0" Fixed= -1
Simula��es/Cap4/simula��o 4.1/simula��o-4.1.doc
Guia de Laboratório
de
Arquitetura de Computadores
Simulação 4.1 – Bits de estado
1 – Objetivos
Esta simulação ilustra o funcionamento dos bits de estado com a instrução ADD. Os aspectos abordados incluem os seguintes:
Carga manual dos registradores com os operandos, usando a Tabela 4.8 como base, mas agora com operandos de 16 bits;
Verificação do funcionamento da instrução ADD e do valor dos bits de estado após a instrução;
Repetição para vários valores de operandos.
2 – Circuito
O arquivo “pepe.cmod” implementa o circuito da Figura 4.7, em que o PEPE (16 bits) está ligado a um módulo de Reset, que faz a sua inicialização quando a simulação começa. 
O PEPE possui um relógio interno, em função do que a sua entrada de Clock pode ficar no ar. 
O banco de memória (MemBank) é constituído por duas memórias de 8 bits lado a lado, para fazerem 16 bits. DATA_I e DATA_P são os buses de dados de 8 bits cada, que se ligam a cada uma dessas memórias. Uma contém as células (de um byte) com endereços pares e outra com os endereços ímpares. A memória tem o seu chip select (CS) sempre ativo, uma vez que não há mais dispositivos no sistema, e os sinais WR e RD (só um deles pode estar ativo com 0 a cada vez) indicam se o processador está lendo da memória ou escrevendo.
Em todas as simulações do Capítulo 4, o circuito de hardware não é relevante, pois o que está em questão é a funcionalidade das instruções do PEPE.
3 – Utilização básica do circuito
Para executar este circuito, deve-se realizar os seguintes passos:
Use o comando File->Load do simulador para carregar a arquitetura "pepe.cmod"
Passe para modo Simulação
Dê um duplo clique sobre o PEPE para abrir o seu painel de controle. Clique no botão Compile&Load () e escolha o arquivo “.asm” correspondente ao programa que for executar. Possível exemplo:
Clique no botão de execução passo a passo (), se quiser executar uma instrução
de cada vez, ou no botão de execução contínua () na janela do "Pepe", de modo a executar o programa continuamente.
Em execução passo a passo, pode-se ver o resultado da execução olhando para os registradores do processador e para a memória (o painel de controle desta abre-se com um duplo clique).
4 – Simulação
Compile e carregue () o arquivo “add.asm”. O aspecto do painel de controle do PEPE deverá ficar como ilustrado anteriormente. 
Note que todos os registradores e bits de estado estão inicializados com 0. Não é isto que acontece nos processadores reais, em que os valores são aleatórios. No entanto, para simplificar, o simulador inicializa automaticamente todos os recursos internos do PEPE.
Note que o PC vale 0, dado que a primeira instrução que o PEPE executa após o reset (inicialização) é sempre no endereço 0. Nesta ocasião, esta instrução, um ADD (soma), ainda não foi executada.
Clique no botão de execução passo a passo () para executar esta instrução e parar em seguida.
Note que R1 continua com 0 (tanto R1 como R2 estavam com 0, logo a sua soma dá 0), mas, nos bits de estado, Z passou a estar ativo, indicando que a última operação da ALU deu resultado 0.
Note ainda que o PC passou para 2, onde está localizada a próxima instrução (JMP), cujo efeito é indicar ao PEPE para desviar (jump) para a instrução “inicio”. Clique de novo em () e verifique que o PC passou para 0. A barra azul vai indicando a próxima instrução a ser executada (vai executar a soma novamente)
Altere manualmente os valores dos registradores R1 e R2, para a instrução ADD poder ser observada. Coloque, por exemplo, R1=1234H e R2=385AH. IMPORTANTE: a inserção de cada número tem de terminar com Enter.
Clique de novo em () e verifique que R1 foi atualizado com o resultado (4A8EH) e que o bit de estado Z ficou inativo, pois o resultado da operação já não é zero. R2 não foi alterado.
Execute de novo o JMP e o ADD, o que faz somar 4A8EH (R1) com 385AH (R2), ficando R1 com o valor 82E8H. Se fizer as contas no papel, em hexadecimal, você poderá verificar que é isso mesmo, mas note também que os bits N (negativo) e V (overflow, ou estouro) estão ativos. Por quê?
Os números estão representados em complemento de 2 com 16 bits. Desta forma, o maior número positivo que conseguem representar é 7FFFH. O resultado excedeu assim o limite e naturalmente está incorreto. Nesta representação, é um número negativo (bit mais significativo com 1), o que nunca poderia resultar da soma de dois números positivos.
Coloque agora manualmente o valor FFFFH (-1) no registrador R1 (não se esqueça de dar Enter) e volte a executar a instrução ADD.
Note que o resultado em R1 passou a ser 3859H, que é o valor positivo que se podia esperar da expressão (– 1) + 385AH. Note também que o bit de estado C (Carry, ou transporte) ficou com 1. Isto corresponde a uma situação normal, idêntica à do caso 4 na tabela 4.9.
Se desejar, experimente com outros números.
	5
Simula��es/Cap4/simula��o 4.10/pepe.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 3 NC= 7
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C8fee" NBits= 16 NSegments= 1
 Po= "11c7f2150dd-0" Pd= "11c7f1ffa53-0" Np= 2
 X= 313 Y= 327
 X= 357 Y= 327
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C974c" NBits= 1 NSegments= 1
 Po= "11c7f1ffb47" Pd= "11c7f202e7e" Np= 4
 X= 467 Y= 327
 X= 571 Y= 327
 X= 571 Y= 267
 X= 621 Y= 267
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ce0fb" NBits= 1 NSegments= 1
 Po= "11c7f1ffb5d" Pd= "11c7f202e91" Np= 4
 X= 467 Y= 347
 X= 598 Y= 347
 X= 598 Y= 287
 X= 621 Y= 287
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "C5ad1" NBits= 1 NSegments= 1
 Po= "11c7f1ffb31" Pd= "11c7f202e3d" Np= 2
 X= 467 Y= 227
 X= 621 Y= 227
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "C1b39" NBits= 16 NSegments= 1
 Po= "11c7f1ffb1d" Pd= "11c7f202e29-0" Np= 2
 X= 467 Y= 207
 X= 621 Y= 207
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "C5067" NBits= 8 NSegments= 1
 Po= "11c7f1ffb05" Pd= "11c7f202e67" Np= 6
 X= 467 Y= 267
 X= 517 Y= 267
 X= 517 Y= 142
 X= 751 Y= 142
 X= 751 Y= 207
 X= 731 Y= 207
 6 C= "ist.ac.simulador.nucleo.SConnection" Name= "C85af" NBits= 8 NSegments= 1
 Po= "11c7f1ffaf0" Pd= "11c7f202e50" Np= 6
 X= 467 Y= 287
 X= 541 Y= 287
 X= 541 Y= 167
 X= 775 Y= 167
 X= 775 Y= 227
 X= 731 Y= 227
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModulePepe" Name= "Pepe" NPorts= 16 Conf= "cache" X= 352 Y= 192
 P= "A15-A0" CIn= 4 NBit= 16 StBit= 0 StConnBit= 0 PId= "11c7f1ffb1d" Fixed= -1
 P= "BA" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffb31" Fixed= -1
 P= "BGT" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffb8f" Fixed= -1
 P= "BRQ" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffba8" Fixed= 0
 P= "CLOCK" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffada" Fixed= -1
 P= "DATA_I" CIn= 5 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c7f1ffb05" Fixed= -1
 P= "DATA_P" CIn= 6 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c7f1ffaf0" Fixed= -1
 P= "INT0" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffa6a" Fixed= 0
 P= "INT1" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffa7f" Fixed= 0
 P= "INT2" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffa95" Fixed= 0
 P= "INT3" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffaaa" Fixed= 0
 P= "INTA" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffabf" Fixed= -1
 P= "RD" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffb47" Fixed= -1
 P= "RESET" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffa53-0" Fixed= -1
 P= "WAIT" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffb79" Fixed= 0
 P= "WR" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffb5d" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleMemoryBankCsRdWr" Name= "MemBank" NPorts= 7 X= 616 Y= 192
 P= "A15..A0" CIn= 4 NBit= 16 StBit= 0 StConnBit= 0 PId= "11c7f202e29-0" Fixed= -1
 P= "BA" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f202e3d" Fixed= -1
 P= "CS" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f202ea4" Fixed= 0
 P= "DATA_I" CIn= 5 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c7f202e67" Fixed= -1
 P= "DATA_P" CIn= 6 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c7f202e50" Fixed= -1
 P= "RD" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f202e7e" Fixed= -1
 P= "WR" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f202e91" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleReset" Name= "RESET" NPorts= 1 Conf= "16@20" X= 208 Y= 312
 P= "OUT" CIn= 0 NBit= 16 StBit= 0 StConnBit= 0 PId= "11c7f2150dd-0" Fixed= -1
Simula��es/Cap4/simula��o 4.10/programa4-11.asm
place 0h
; utilização dos registradores:
; R1 – produto dos vários fatores (valor do fatorial no fim)
; R2 – fator auxiliar que começa com N-1, depois N-2, etc., até ser 2 
; (1 já não vale a pena)
N	EQU	6	; número de que se pretende calcular o fatorial
início:	MOV	R1, N	; valor inicial do produto
	MOV	R2, R1	; valor auxiliar
maisUm:	SUB	R2, 1	; decrementa fator
	MUL	R1, R2	; acumula produto de fatores
	JV	erro	; se houve estouro, o fatorial tem de acabar aqui
	CMP	R2, 2	; verifica se o fator já chegou a 2
	JGT	maisUm	; se ainda é maior do que 2, é preciso continuar
fim:	JMP	fim	; acabou. Em R1 está o valor do fatorial
erro:	JMP	erro	; termina com erro 
Simula��es/Cap4/simula��o 4.10/simula��o-4.10.doc
Guia de Laboratório
de
Arquitetura de Computadores
Simulação 4.10 – Multiplicação e estouro: fatorial
1 – Objetivos
Esta simulação ilustra o funcionamento da multiplicação e da situação de estouro, tendo
por base o Programa 4.11. Os aspectos abordados incluem os seguintes:
Execução do programa, passo a passo e com pontos de parada;
Verificação da evolução dos registradores relevantes, iteração a iteração;
Verificação da condição de estouro;
Determinação experimental (por tentativas) de qual o valor máximo de N sem dar erro de estouro.
2 – Circuito
O arquivo “pepe.cmod” implementa o circuito da Figura 4.7. A simulação 4.1 contém indicações mais detalhadas sobre a sua utilização no simulador.
3 – Simulação do programa 4.11
Carregue este circuito no simulador e passe para Simulação. 
Abra o painel do PEPE e compile e carregue () o arquivo “programa4-11.asm”. Execute as instruções passo a passo e vá observando os registradores, entendendo o que o programa está fazendo, em particular R1 que vai acumulando o produto, até chegar a 2D0H (720, o fatorial de 6).
Imediatamente antes da execução da instrução MUL R1, R2, anote os valores de R1 e R2. Verifique que, após a instrução, o valor em R1 apresenta realmente o produto desses dois valores.
Uma alternativa é executar o programa em execução contínua, clicando no botão 
Para parar o programa, coloque primeiro um ponto de parada na instrução “fim:” (clicando lá, o que coloca lá uma barra roxa) ou pare manualmente o programa (botão ).
Para determinar experimentalmente (por tentativas) qual o valor máximo de N sem dar overflow (sem terminar com erro), você pode ir variando o valor do N no programa e ir compilando, mas é mais fácil se seguir os seguintes passos:
Depois de compilar e carregar o programa 4.11, coloque dois pontos de parada (clicando na instrução), um na instrução “fim:” e outro na instrução “erro:”;
Execute o programa, clicando no botão (o programa termina em fim, se tudo correr bem, ou em erro, se houver estouro. Com N=6, corre tudo bem);
Quando o programa termina, e para testar um novo valor: 
coloque manualmente 0 no PC e dê Enter (sem o que o novo valor não é considerado);
execute uma instrução passo a passo (botão ), o que na prática faz executar a primeira instrução, MOV R1, N
altere manualmente o R1 para o valor que se quer testar e dê Enter;
passe para modo de execução contínua (botão );
se parar em erro (a respectiva barra roxa fica azul), o valor é grande demais. Volte atrás e experimente um valor mais baixo.
Pista: o valor máximo de N não é muito elevado…
	2
Simula��es/Cap4/simula��o 4.11/pepe.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 3 NC= 7
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C8fee" NBits= 16 NSegments= 1
 Po= "11c7f2150dd-0" Pd= "11c7f1ffa53-0" Np= 2
 X= 313 Y= 327
 X= 357 Y= 327
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C974c" NBits= 1 NSegments= 1
 Po= "11c7f1ffb47" Pd= "11c7f202e7e" Np= 4
 X= 467 Y= 327
 X= 571 Y= 327
 X= 571 Y= 267
 X= 621 Y= 267
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ce0fb" NBits= 1 NSegments= 1
 Po= "11c7f1ffb5d" Pd= "11c7f202e91" Np= 4
 X= 467 Y= 347
 X= 598 Y= 347
 X= 598 Y= 287
 X= 621 Y= 287
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "C5ad1" NBits= 1 NSegments= 1
 Po= "11c7f1ffb31" Pd= "11c7f202e3d" Np= 2
 X= 467 Y= 227
 X= 621 Y= 227
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "C1b39" NBits= 16 NSegments= 1
 Po= "11c7f1ffb1d" Pd= "11c7f202e29-0" Np= 2
 X= 467 Y= 207
 X= 621 Y= 207
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "C5067" NBits= 8 NSegments= 1
 Po= "11c7f1ffb05" Pd= "11c7f202e67" Np= 6
 X= 467 Y= 267
 X= 517 Y= 267
 X= 517 Y= 142
 X= 751 Y= 142
 X= 751 Y= 207
 X= 731 Y= 207
 6 C= "ist.ac.simulador.nucleo.SConnection" Name= "C85af" NBits= 8 NSegments= 1
 Po= "11c7f1ffaf0" Pd= "11c7f202e50" Np= 6
 X= 467 Y= 287
 X= 541 Y= 287
 X= 541 Y= 167
 X= 775 Y= 167
 X= 775 Y= 227
 X= 731 Y= 227
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModulePepe" Name= "Pepe" NPorts= 16 Conf= "cache" X= 352 Y= 192
 P= "A15-A0" CIn= 4 NBit= 16 StBit= 0 StConnBit= 0 PId= "11c7f1ffb1d" Fixed= -1
 P= "BA" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffb31" Fixed= -1
 P= "BGT" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffb8f" Fixed= -1
 P= "BRQ" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffba8" Fixed= 0
 P= "CLOCK" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffada" Fixed= -1
 P= "DATA_I" CIn= 5 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c7f1ffb05" Fixed= -1
 P= "DATA_P" CIn= 6 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c7f1ffaf0" Fixed= -1
 P= "INT0" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffa6a" Fixed= 0
 P= "INT1" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffa7f" Fixed= 0
 P= "INT2" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffa95" Fixed= 0
 P= "INT3" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffaaa" Fixed= 0
 P= "INTA" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffabf" Fixed= -1
 P= "RD" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffb47" Fixed= -1
 P= "RESET" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffa53-0" Fixed= -1
 P= "WAIT" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffb79" Fixed= 0
 P= "WR" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffb5d" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleMemoryBankCsRdWr" Name= "MemBank" NPorts= 7 X= 616 Y= 192
 P= "A15..A0" CIn= 4 NBit= 16 StBit= 0 StConnBit= 0 PId= "11c7f202e29-0" Fixed= -1
 P= "BA" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f202e3d" Fixed= -1
 P= "CS" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f202ea4" Fixed= 0
 P= "DATA_I" CIn= 5 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c7f202e67" Fixed= -1
 P= "DATA_P" CIn= 6 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c7f202e50" Fixed= -1
 P= "RD" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f202e7e" Fixed= -1
 P= "WR" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f202e91" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleReset" Name= "RESET" NPorts= 1 Conf= "16@20" X= 208 Y= 312
 P= "OUT" CIn= 0 NBit= 16 StBit= 0 StConnBit= 0 PId= "11c7f2150dd-0" Fixed= -1
Simula��es/Cap4/simula��o 4.11/programa4-12.asm
place 0h
; utilização dos registradores:
; R1 – número a ser verificado se é primo
; R2 – divisor (para testar se N é múltiplo de R2)
N	EQU	7		; número a ser verificado se é primo
início:	MOV	R2, N		; divisor (primeiro valor a testar: N-1)
	CMP	R2, 0		; verifica se N é 0 ou negativo
	JLE	inválido	; se for, o número é considerado não válido
maisUm:	SUB	R2, 1		; próximo valor do divisor
	CMP	R2, 1		; verifica se divisor já chegou a 1 
	JLE	éPrimo		; se sim, já testou todos os divisores e o número 
				; é primo
	MOV	R1, N		; coloca N num registrador para se poder usar no MOD
	MOD	R1, R2		; resto da divisão de N pelo divisor em teste
	JNZ	maisUm		; se for diferente de zero, N não é divisível pelo 
				; divisor em teste. Vai testar o divisor seguinte
nãoPrimo: JMP	nãoPrimo	; N é divisível pelo divisor, logo não é primo
éPrimo:	 JMP	éPrimo		; se chegar aqui, N é primo 
inválido: JMP	inválido	; se chegar aqui, N é 0 ou negativo 
Simula��es/Cap4/simula��o 4.11/simula��o-4.11.doc
Guia de Laboratório
de
Arquitetura de Computadores
Simulação 4.11 – Divisão: números primos
1 – Objetivos
Esta simulação ilustra o funcionamento da instrução MOD, tendo por base o Programa 4.12. Os aspectos abordados incluem os seguintes:
Execução do programa, passo a passo e com pontos de parada;
Verificação da evolução dos registradores relevantes, iteração a iteração;
Verificação das situações limite de N (negativo, 0, 1 e 2).
2 – Circuito
O arquivo
“pepe.cmod” implementa o circuito da Figura 4.7. A simulação 4.1 contém indicações mais detalhadas sobre a sua utilização no simulador.
3 – Simulação do programa 4.12
Carregue este circuito no simulador e passe para Simulação. 
Abra o painel do PEPE e compile e carregue () o arquivo “programa4-12.asm”. Execute as instruções passo a passo (botão ) e vá observando os registradores, entendendo o que o programa está fazendo, considerando os comentários. Note as instruções JLE (desvia se menor ou igual). O apêndice A descreve a instrução em detalhes.
Imediatamente antes da execução da instrução MOD R1, R2, anote os valores dos registradores R1 e R2. Verifique que, após a instrução, o valor no registrador destino apresenta o resto da divisão inteira.
Depois da primeira iteração, ou quando já tiver entendido o funcionamento, coloque pontos de parada nas três últimas instruções do programa e passe para modo de execução contínua (botão ). Desta forma, você poderá saber a resposta que o programa dá para o número considerado.
Se quiser testar outros números N, terá de alterar o valor de N no arquivo em assembly, recompilar e executar de novo. Não se pode simplesmente colocar zero no PC, recomeçar e alterar o registrador que tem o valor de N, pois este é usado em dois pontos do programa, o que dificulta a sua alteração manual.
Experimente particularmente as situações limite de N (negativo, 0, 1 e 2).
	2
Simula��es/Cap4/simula��o 4.12/pepe.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 3 NC= 7
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C8fee" NBits= 16 NSegments= 1
 Po= "11c7f2150dd-0" Pd= "11c7f1ffa53-0" Np= 2
 X= 313 Y= 327
 X= 357 Y= 327
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C974c" NBits= 1 NSegments= 1
 Po= "11c7f1ffb47" Pd= "11c7f202e7e" Np= 4
 X= 467 Y= 327
 X= 571 Y= 327
 X= 571 Y= 267
 X= 621 Y= 267
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ce0fb" NBits= 1 NSegments= 1
 Po= "11c7f1ffb5d" Pd= "11c7f202e91" Np= 4
 X= 467 Y= 347
 X= 598 Y= 347
 X= 598 Y= 287
 X= 621 Y= 287
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "C5ad1" NBits= 1 NSegments= 1
 Po= "11c7f1ffb31" Pd= "11c7f202e3d" Np= 2
 X= 467 Y= 227
 X= 621 Y= 227
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "C1b39" NBits= 16 NSegments= 1
 Po= "11c7f1ffb1d" Pd= "11c7f202e29-0" Np= 2
 X= 467 Y= 207
 X= 621 Y= 207
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "C5067" NBits= 8 NSegments= 1
 Po= "11c7f1ffb05" Pd= "11c7f202e67" Np= 6
 X= 467 Y= 267
 X= 517 Y= 267
 X= 517 Y= 142
 X= 751 Y= 142
 X= 751 Y= 207
 X= 731 Y= 207
 6 C= "ist.ac.simulador.nucleo.SConnection" Name= "C85af" NBits= 8 NSegments= 1
 Po= "11c7f1ffaf0" Pd= "11c7f202e50" Np= 6
 X= 467 Y= 287
 X= 541 Y= 287
 X= 541 Y= 167
 X= 775 Y= 167
 X= 775 Y= 227
 X= 731 Y= 227
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModulePepe" Name= "Pepe" NPorts= 16 Conf= "cache" X= 352 Y= 192
 P= "A15-A0" CIn= 4 NBit= 16 StBit= 0 StConnBit= 0 PId= "11c7f1ffb1d" Fixed= -1
 P= "BA" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffb31" Fixed= -1
 P= "BGT" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffb8f" Fixed= -1
 P= "BRQ" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffba8" Fixed= 0
 P= "CLOCK" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffada" Fixed= -1
 P= "DATA_I" CIn= 5 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c7f1ffb05" Fixed= -1
 P= "DATA_P" CIn= 6 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c7f1ffaf0" Fixed= -1
 P= "INT0" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffa6a" Fixed= 0
 P= "INT1" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffa7f" Fixed= 0
 P= "INT2" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffa95" Fixed= 0
 P= "INT3" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffaaa" Fixed= 0
 P= "INTA" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffabf" Fixed= -1
 P= "RD" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffb47" Fixed= -1
 P= "RESET" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffa53-0" Fixed= -1
 P= "WAIT" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffb79" Fixed= 0
 P= "WR" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffb5d" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleMemoryBankCsRdWr" Name= "MemBank" NPorts= 7 X= 616 Y= 192
 P= "A15..A0" CIn= 4 NBit= 16 StBit= 0 StConnBit= 0 PId= "11c7f202e29-0" Fixed= -1
 P= "BA" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f202e3d" Fixed= -1
 P= "CS" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f202ea4" Fixed= 0
 P= "DATA_I" CIn= 5 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c7f202e67" Fixed= -1
 P= "DATA_P" CIn= 6 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c7f202e50" Fixed= -1
 P= "RD" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f202e7e" Fixed= -1
 P= "WR" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f202e91" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleReset" Name= "RESET" NPorts= 1 Conf= "16@20" X= 208 Y= 312
 P= "OUT" CIn= 0 NBit= 16 StBit= 0 StConnBit= 0 PId= "11c7f2150dd-0" Fixed= -1
Simula��es/Cap4/simula��o 4.12/programa4-13.asm
place 0h
; utilização dos registradores:
; R1 – número a fatorar
; R2 – divisor (para testar se N é múltiplo de R2)
; R3 – registrador auxiliar (porque o MOD destrói o primeiro operando)
; R4 – contador do número de fatores
; R5 – base da área de memória onde colocar os fatores
N	EQU	60		; número a fatorar
base	EQU	1000H		; base da área de memória onde colocar os fatores
início:	MOV	R1, N		; inicializa registrador com número a fatorar
	MOV	R4, 0		; inicializa contador do número de fatores
	CMP	R1, 1		; verifica se N é inferior a 1
	JLT	inválido	; se for o caso, sai logo com R4=0 (não fatorável)
	MOV	R5, base	; inicializa registrador com base da área de memória 
				; onde colocar os fatores
deNovo:	MOV	R2, 2		; divisor (primeiro valor a testar: 2)
maisUm:	MOV	R3, R1		; cópia do valor a fatorar (MOD destrói o 
				; 1º operando)
	MOD	R3, R2		; resto da divisão do número pelo divisor em teste
	JNZ	próximo		; se não for divisível, vai testar o próximo divisor
	DIV	R1, R2		; fator encontrado. Tira esse fator do número
	MOV	[R5], R2	; armazena o fator na área de memória
	ADD	R4, 1		; contabiliza o fator encontrado
	ADD	R5, 2		; endereço onde armazenar o próximo fator
	JMP	deNovo		; recomeça procura de fatores
próximo:CMP	R1, 1
	JZ acabou 
	ADD	R2, 1		; obtém o próximo divisor a testar
	CMP	R2, R1		; mas só vai testá-lo se …
	JLE	maisUm		; … não for superior ao próprio número a fatorar
acabou:	CMP	R4, 1		; acabou. Se só se encontrou um fator, …
	JZ	éPrimo		; … então o número era primo
nãoPrimo: JMP	nãoPrimo	; aqui há vários fatores (R4>1)
éPrimo:	 JMP	éPrimo		; se chegar aqui, N é primo (R4=1)
inválido: JMP	inválido	; se chegar aqui, N não é fatorável (R4=0)
Simula��es/Cap4/simula��o 4.12/simula��o-4.12.doc
Guia de Laboratório
de
Arquitetura de Computadores
Simulação 4.12 – Divisão: fatoração de um número
1 – Objetivos
Esta simulação ilustra o funcionamento das instruções de divisão (DIV e MOD), tendo por base o Programa 4.13. Os aspectos abordados incluem os seguintes:
Execução do programa, passo a passo e com pontos de parada;
Verificação da evolução dos registradores relevantes e da memória, iteração a iteração;
Verificação das situações limite de N (negativo, 0, 1 e 2).
2 – Circuito
O arquivo “pepe.cmod” implementa o circuito da Figura 4.7. A simulação 4.1 contém indicações mais detalhadas sobre a sua utilização no simulador.
3 – Simulação do programa 4.13
Carregue
este circuito no simulador e passe para Simulação. 
Abra o painel do PEPE e compile e carregue () o arquivo “programa4-13.asm”. Execute as instruções passo a passo (botão ) e vá observando os registradores, entendendo o que o programa está fazendo, considerando os comentários.
Imediatamente antes da execução das instruções MOD R3, R2 e DIV R1, R2, anote os valores dos registradores. Verifique que, após a instrução, o valor no registrador destino (R3 ou R1) apresenta o resto e o quociente da divisão inteira, respectivamente.
Depois da primeira iteração, ou quando já tiver entendido o funcionamento, coloque pontos de parada nas três últimas instruções do programa e passe para modo de execução contínua (botão ). Desta forma, você poderá saber a resposta que o programa dá para o número considerado.
Pode-se também colocar pontos de parada intermediários onde se quiser inspecionar o estado do programa.
Durante a execução do programa, ou após este terminar, pode-se ver os fatores primos em que o número N se decompõe a partir do endereço 1000H da memória. Abra o painel da memória e verifique os fatores. No caso do N do exemplo, 60 (decimal), o aspecto que a memória terá é o seguinte:
Pode-se verificar que os fatores primos são 2, 2, 3 e 5. 
Se quiser testar outros números N, você pode alterar o valor do N no programa e compilar de novo, mas é mais fácil se seguir os seguintes passos, quando o programa estiver parado e você quiser recomeçar com um novo valor de N:
coloque manualmente 0 no PC e dê Enter (sem o que o novo valor não é considerado);
execute uma instrução passo a passo (botão ), o que na prática faz executar a primeira instrução, MOV R1, N
altere manualmente o R1 para o valor que você quer testar e dê Enter;
passe para modo de execução contínua (botão ) ou continue passo a passo (botão ).
Experimente particularmente as situações limite de N (negativo, 0, 1 e 2).
	2
Simula��es/Cap4/simula��o 4.13/pepe.cmod
CNR2202990601001
# Module
# ******
0 CM= "ist.ac.simulador.nucleo.SCompoundModule" Name= "Arch Root" Gui= "null" NB= 0 NM= 3 NC= 7
 # Connections
 0 C= "ist.ac.simulador.nucleo.SConnection" Name= "C8fee" NBits= 16 NSegments= 1
 Po= "11c7f2150dd-0" Pd= "11c7f1ffa53-0" Np= 2
 X= 313 Y= 327
 X= 357 Y= 327
 1 C= "ist.ac.simulador.nucleo.SConnection" Name= "C974c" NBits= 1 NSegments= 1
 Po= "11c7f1ffb47" Pd= "11c7f202e7e" Np= 4
 X= 467 Y= 327
 X= 571 Y= 327
 X= 571 Y= 267
 X= 621 Y= 267
 2 C= "ist.ac.simulador.nucleo.SConnection" Name= "Ce0fb" NBits= 1 NSegments= 1
 Po= "11c7f1ffb5d" Pd= "11c7f202e91" Np= 4
 X= 467 Y= 347
 X= 598 Y= 347
 X= 598 Y= 287
 X= 621 Y= 287
 3 C= "ist.ac.simulador.nucleo.SConnection" Name= "C5ad1" NBits= 1 NSegments= 1
 Po= "11c7f1ffb31" Pd= "11c7f202e3d" Np= 2
 X= 467 Y= 227
 X= 621 Y= 227
 4 C= "ist.ac.simulador.nucleo.SConnection" Name= "C1b39" NBits= 16 NSegments= 1
 Po= "11c7f1ffb1d" Pd= "11c7f202e29-0" Np= 2
 X= 467 Y= 207
 X= 621 Y= 207
 5 C= "ist.ac.simulador.nucleo.SConnection" Name= "C5067" NBits= 8 NSegments= 1
 Po= "11c7f1ffb05" Pd= "11c7f202e67" Np= 6
 X= 467 Y= 267
 X= 517 Y= 267
 X= 517 Y= 142
 X= 751 Y= 142
 X= 751 Y= 207
 X= 731 Y= 207
 6 C= "ist.ac.simulador.nucleo.SConnection" Name= "C85af" NBits= 8 NSegments= 1
 Po= "11c7f1ffaf0" Pd= "11c7f202e50" Np= 6
 X= 467 Y= 287
 X= 541 Y= 287
 X= 541 Y= 167
 X= 775 Y= 167
 X= 775 Y= 227
 X= 731 Y= 227
 # Bridges
 # Modules
 0 M= "ist.ac.simulador.modules.ModulePepe" Name= "Pepe" NPorts= 16 Conf= "cache" X= 352 Y= 192
 P= "A15-A0" CIn= 4 NBit= 16 StBit= 0 StConnBit= 0 PId= "11c7f1ffb1d" Fixed= -1
 P= "BA" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffb31" Fixed= -1
 P= "BGT" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffb8f" Fixed= -1
 P= "BRQ" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffba8" Fixed= 0
 P= "CLOCK" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffada" Fixed= -1
 P= "DATA_I" CIn= 5 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c7f1ffb05" Fixed= -1
 P= "DATA_P" CIn= 6 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c7f1ffaf0" Fixed= -1
 P= "INT0" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffa6a" Fixed= 0
 P= "INT1" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffa7f" Fixed= 0
 P= "INT2" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffa95" Fixed= 0
 P= "INT3" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffaaa" Fixed= 0
 P= "INTA" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffabf" Fixed= -1
 P= "RD" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffb47" Fixed= -1
 P= "RESET" CIn= 0 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffa53-0" Fixed= -1
 P= "WAIT" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffb79" Fixed= 0
 P= "WR" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f1ffb5d" Fixed= -1
 1 M= "ist.ac.simulador.modules.ModuleMemoryBankCsRdWr" Name= "MemBank" NPorts= 7 X= 616 Y= 192
 P= "A15..A0" CIn= 4 NBit= 16 StBit= 0 StConnBit= 0 PId= "11c7f202e29-0" Fixed= -1
 P= "BA" CIn= 3 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f202e3d" Fixed= -1
 P= "CS" CIn= -1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f202ea4" Fixed= 0
 P= "DATA_I" CIn= 5 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c7f202e67" Fixed= -1
 P= "DATA_P" CIn= 6 NBit= 8 StBit= 0 StConnBit= 0 PId= "11c7f202e50" Fixed= -1
 P= "RD" CIn= 1 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f202e7e" Fixed= -1
 P= "WR" CIn= 2 NBit= 1 StBit= 0 StConnBit= 0 PId= "11c7f202e91" Fixed= -1
 2 M= "ist.ac.simulador.modules.ModuleReset" Name= "RESET" NPorts= 1 Conf= "16@20" X= 208 Y= 312
 P= "OUT" CIn= 0 NBit= 16 StBit= 0 StConnBit= 0 PId= "11c7f2150dd-0" Fixed= -1
Simula��es/Cap4/simula��o 4.13/programa4-14.asm
place 0h
; utilização dos registradores:
; R1 – 1º operando a testar
; R2 – 2º operando a testar
; R3 – endereço na memória do 1º operando (o 2º está logo a seguir)
início:	MOV	R3, 0000H	; inicializa R3 no início da memória
maisUm:	MOV	R1, [R3]	; obtém 1º operando
	MOV	R2, [R3 + 2]	; obtém 2º operando
	OR	R1, R2		; verifica se ambos são falsos (zero)
	JZ	achou		; se sim, achou o par pretendido
	ADD	R3, 2		; tem de continuar. Avança base da memória
	JMP	maisUm		; vai testar mais um par de operandos
achou: 	JMP	achou		; achou! Pára aqui
Simula��es/Cap4/simula��o 4.13/programa4-14AND.asm
place 0h
; utilização dos registradores:
; R1 – 1º operando a testar
; R2 – 2º operando a testar
; R3 – endereço na memória do 1º operando (o 2º está logo a seguir)
início:	MOV	R3, 0000H	; inicializa R3 no início da memória
maisUm:	MOV	R1, [R3]	; obtém 1º operando
	MOV	R2, [R3 + 2]	; obtém 2º operando
	AND	R1, R2		; verifica se o AND de ambos dá zero
	JZ	achou		; se sim, achou o par pretendido
	ADD	R3, 2		; tem de continuar. Avança base da memória
	JMP	maisUm		; vai testar mais um par de operandos
achou: 	JMP	achou		; achou! Pára aqui
Simula��es/Cap4/simula��o 4.13/programa4-15.asm
place 0h
; utilização dos registradores:
; R1 – 1º operando a testar
; R2 – 2º operando a testar
; R3 – endereço na memória do 1º operando (o 2º está logo a seguir)
início:	MOV	R3, 0000H	; inicializa R3 no início da memória
maisUm:	MOV	R1, [R3]	; obtém 1º operando
	TEST	R1, R1		; atualiza os bits de estado
	JZ	próximo		; se é falso (zero), já pode passar ao próximo
	MOV	R2, [R3 + 2]	; obtém 2º operando
	TEST	R2, R2		; atualiza os bits de estado
	JNZ	achou		; se chegou aqui e R2 é verdadeiro, então R1 e R2 
				; são verdadeiros e achou o par pretendido
próximo:ADD 	R3, 2		; tem de continuar. Avança base da memória
	JMP	maisUm		; vai testar mais um par de operandos
achou: 	JMP	achou		; achou! Pára aqui
Simula��es/Cap4/simula��o 4.13/simula��o-4.13.doc
Guia de Laboratório
de
Arquitetura de Computadores
Simulação 4.13 – Expressões booleanas
1 – Objetivos
Esta simulação ilustra o funcionamento das expressões booleanas, tendo por base o Programa 4.14 e o Programa 4.15. Os aspectos abordados incluem os seguintes:
Execução do programa, passo a passo e com pontos de parada;
Verificação do conteúdo da memória e da existência de duas células de memória seguidas com o valor zero (se não existirem, têm de se criar alterando diretamente o conteúdo de uma ou das duas células de memória);
Verificação da evolução dos registradores relevantes e da memória, iteração a iteração.
2 – Circuito
O arquivo “pepe.cmod” implementa o circuito da Figura 4.7. A simulação 4.1 contém indicações mais detalhadas sobre a sua utilização no simulador.
3 – Simulação do programa 4.14
Carregue este circuito no simulador e passe para Simulação. 
Abra o painel do PEPE e compile e carregue () o arquivo “programa4-14.asm”. Execute as instruções passo a passo (botão ) e vá observando os registradores, entendendo o que o programa está fazendo, considerando os comentários.
Imediatamente antes da execução da instrução OR R1, R2, anote os valores dos registradores R1 e R2. Verifique que, após a instrução, o valor no R1 apresenta o resultado correto da operação OR.
Depois da primeira iteração, ou quando já tiver entendido o funcionamento, coloque um ponto de parada na última instrução do programa e passe para modo de execução contínua (botão ). Desta forma, poderá se chegar mais rapidamente ao fim do programa.
Pode-se também colocar pontos de parada intermediários onde se quiser inspecionar o estado do programa.
Quando o programa terminar, terá este aspecto:
Note que R3 indica o endereço 0010H, que deverá assim ser a primeira palavra com o valor 0000H seguida de outra palavra cujo valor também é 0000H.
Isso pode ser verificado abrindo-se o painel da memória. O programa ocupa os endereços 0000H a 000FH.
Como variante, e para testar a instrução AND, substitua o OR no programa 4.14 por um AND, recompile e execute. Esta variante está disponível no arquivo “programa4.14AND.asm”.
Execute as instruções passo a passo (botão ) e imediatamente antes da execução da instrução AND R1, R2, verifique os valores dos registradores. Observe que, após a instrução, o valor no registrador destino apresenta o resultado correto da operação AND.
Neste exemplo, o resultado em R3 será ligeiramente diferente, neste caso 000EH, pois esta é a primeira palavra cujo AND pela palavra no endereço seguinte dá zero (isto porque a palavra no endereço 0010H é zero). Mas aconteceu. Nada impediria de haver um AND de duas palavras anteriores que desse zero, sendo ambas as palavras diferentes de zero (bastava os 1s numa palavra e noutra estarem desencontrados, em posições diferentes).
4 – Simulação do programa 4.15
Carregue este circuito no simulador e passe para Simulação. 
Abra o painel do PEPE e compile e carregue () o arquivo “programa4-15.asm”. Execute as instruções passo a passo (botão ) e vá observando os registradores, entendendo o que o programa está fazendo, considerando os comentários.
Imediatamente antes da execução das instruções TEST R1, R1 e TEST R2, R2, anote os valores dos registradores (R1 ou R2) e dos bits de estado. Verifique que, após a instrução, os registradores não mudaram de valor e o bit de estado está ativo se o registrador for zero.
Neste caso, o programa pára logo na primeira iteração, pois as duas primeiras palavras são diferentes de zero.
Por isso, coloque zero no PC (dê Enter) e execute uma instrução passo a passo (botão ). Coloque 20H em R3 (ou outro endereço, desde que seja depois do fim do programa). Desta forma, o programa começará a procurar com as palavras com zero.
No painel da memória, altere duas palavras consecutivas (onde quiser, mas após o valor que colocou em R3) para serem diferentes de zero.
Para exemplificar, foram alteradas as palavras da memória nos endereços 94H e 96H, tal como se pode ver.
Executou-se o programa e o resultado foi o seguinte:
Ou seja, em R3 está o endereço da primeira do par de palavras, e estas estão em R1 e R2, tal como esperado.
	6
Simula��es/Cap4/simula��o 4.14/letras.dat
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
a 0
b 0
c 0
d 0
e 0
f 0
10 0
11 0
12 0
13 0
14 0
15 0
16 0
17 0
18 0
19 0
1a 0
1b 0
1c 0
1d 0
1e 0
1f 0
20 0
21 0
22 0
23 0
24 0
25 0
26 0
27 0
28 0
29 0
2a 0
2b 0
2c 0
2d 0
2e 0
2f 0
30 0
31 0
32 0
33 0
34 0
35 0
36 0
37 0
38 0
39 0
3a 0
3b 0
3c 0
3d 0
3e 0
3f 0
40 0
41 0
42 0
43 0
44 0
45 0
46 0
47 0
48 0
49 0
4a 0
4b 0
4c 0
4d 0
4e 0
4f 0
50 0
51 0
52 0
53 0
54 0
55 0
56 0
57 0
58 0
59 0
5a 0
5b 0
5c 0
5d 0
5e 0
5f 0
60 0
61 0
62 0
63 0
64 0
65 0
66 0
67 0
68 0
69 0
6a 0
6b 0
6c 0
6d 0
6e 0
6f 0
70 0
71 0
72 0
73 0
74 0
75 0
76 0
77 0
78 0
79 0
7a 0
7b 0
7c 0
7d 0
7e 0
7f 0
80 0
81 0
82 0
83 0
84 0
85 0
86 0
87 0
88 0
89 0
8a 0
8b 0
8c 0
8d 0
8e 0
8f 0
90 0
91 0
92 0
93 0
94 0
95 0
96 0
97 0
98 0
99 0
9a 0
9b 0
9c 0
9d 0
9e 0
9f 0
a0 0
a1 0
a2 0
a3 0
a4 0
a5 0
a6 0
a7 0
a8 0
a9 0
aa 0
ab 0
ac 0
ad 0
ae 0
af 0
b0 0
b1 0
b2 0
b3 0
b4 0
b5 0
b6 0
b7 0
b8 0
b9 0
ba 0
bb 0
bc 0
bd 0
be 0
bf 0
c0 0
c1 0
c2 0
c3 0
c4 0
c5 0
c6 0
c7 0
c8 0
c9 0
ca 0
cb 0
cc 0
cd 0
ce 0
cf 0
d0 0
d1 0
d2 0
d3 0
d4 0
d5 0
d6 0
d7 0
d8 0
d9 0
da 0
db 0
dc 0
dd 0
de 0
df 0
e0 0
e1 0
e2 0
e3 0
e4 0
e5 0
e6 0
e7 0
e8 0
e9 0
ea 0
eb 0
ec 0
ed 0
ee 0
ef 0
f0 0
f1 0
f2 0
f3 0
f4 0
f5 0
f6 0
f7 0
f8 0
f9 0
fa 0
fb 0
fc 0
fd 0
fe 0
ff 0
100 0
101 0
102 0
103 0
104 0
105 0
106 0
107 0
108 0
109 0
10a 0
10b 0
10c 0
10d 0
10e 0
10f 0
110 0
111 0
112 0
113 0
114 0
115 0
116 0
117 0
118 0
119 0
11a 0
11b 0
11c 0
11d 0
11e 0
11f 0
120 0
121 0
122 0
123 0
124 0
125 0
126 0
127 0
128 0
129 0
12a 0
12b 0
12c 0
12d 0
12e 0
12f 0
130 0
131 0
132 0
133 0
134 0
135 0
136 0
137 0
138 0
139 0
13a 0
13b 0
13c 0
13d 0
13e 0
13f 0
140 0
141 0
142 0
143 0
144 0
145 0
146 0
147 0
148 0
149 0
14a 0
14b 0
14c 0
14d 0
14e 0
14f 0
150 0
151 0
152 0
153 0
154 0
155 0
156 0
157 0
158 0
159 0
15a 0
15b 0
15c 0
15d 0
15e 0
15f 0
160 0
161 0
162 0
163 0
164 0
165 0
166 0
167 0
168 0
169 0
16a 0
16b 0
16c 0
16d 0
16e 0
16f 0
170 0
171 0
172 0
173 0
174 0
175 0
176 0
177 0
178 0
179 0
17a 0
17b 0
17c 0
17d 0
17e 0
17f 0
180 0
181 0
182 0
183 0
184 0
185 0
186 0
187 0
188 0
189 0
18a 0
18b 0
18c 0
18d 0
18e 0
18f 0
190 0
191 0
192 0
193 0
194 0
195 0
196 0
197 0
198 0
199 0
19a 0
19b 0
19c 0
19d 0
19e 0
19f 0
1a0 0
1a1 0
1a2 0
1a3 0
1a4 0
1a5 0
1a6 0
1a7 0
1a8 0
1a9 0
1aa 0
1ab 0
1ac 0
1ad 0
1ae 0
1af 0
1b0 0
1b1 0
1b2 0
1b3 0
1b4 0
1b5 0
1b6 0
1b7 0
1b8 0
1b9 0
1ba 0
1bb 0
1bc 0
1bd 0
1be 0
1bf 0
1c0 0
1c1 0
1c2 0
1c3 0
1c4 0
1c5 0
1c6 0
1c7 0
1c8 0
1c9 0
1ca 0
1cb 0
1cc 0
1cd 0
1ce 0
1cf 0
1d0 0
1d1 0
1d2 0
1d3 0
1d4 0
1d5 0
1d6 0
1d7 0
1d8 0
1d9 0
1da 0
1db 0
1dc 0
1dd 0
1de 0
1df 0
1e0 0
1e1 0
1e2 0
1e3 0
1e4 0
1e5 0
1e6 0
1e7 0
1e8 0
1e9 0
1ea 0
1eb 0
1ec 0
1ed 0
1ee 0
1ef 0
1f0 0
1f1 0
1f2 0
1f3 0
1f4 0
1f5 0
1f6 0
1f7 0
1f8 0
1f9 0
1fa 0
1fb 0
1fc 0
1fd 0
1fe 0
1ff 0
200 0
201 0
202 0
203 0
204 0
205 0
206 0
207 0
208 0
209 0
20a 0
20b 0
20c 0
20d 0
20e 0
20f 0
210 0
211 0
212 0
213 0
214 0
215 0
216 0
217 0
218 0
219 0
21a 0
21b 0
21c 0
21d 0
21e 0
21f 0
220 0
221 0
222 0
223 0
224 0
225 0
226 0
227 0
228 0
229 0
22a 0
22b 0
22c 0
22d 0
22e 0
22f 0
230 0
231 0
232 0
233 0
234 0
235 0
236 0
237 0
238 0
239 0
23a 0
23b 0
23c 0
23d 0
23e 0
23f 0
240 0
241 0
242 0
243 0
244 0
245 0
246 0
247 0
248 0
249 0
24a 0
24b 0
24c 0
24d 0
24e 0
24f 0
250 0
251 0
252 0
253 0
254 0
255 0
256 0
257 0
258 0
259 0
25a 0
25b 0
25c 0
25d 0
25e 0
25f 0
260 0
261 0
262 0
263 0
264 0
265 0
266 0
267 0
268 0
269 0
26a 0
26b 0
26c 0
26d 0
26e 0
26f 0
270 0
271 0
272 0
273 0
274 0
275 0
276 0
277 0
278 0
279 0
27a 0
27b 0
27c 0
27d 0
27e 0
27f 0
280 0
281 0
282 0
283 0
284 0
285 0
286 0
287 0
288 0
289 0
28a 0
28b 0
28c 0
28d 0
28e 0
28f 0
290 0
291 0
292 0
293 0
294 0
295 0
296 0
297 0
298 0
299 0
29a 0
29b 0
29c 0
29d 0
29e 0
29f 0
2a0 0
2a1 0
2a2 0
2a3 0
2a4 0
2a5 0
2a6 0
2a7 0
2a8 0
2a9 0
2aa 0
2ab 0
2ac 0
2ad 0
2ae 0
2af 0
2b0 0
2b1 0
2b2 0
2b3 0
2b4 0
2b5 0
2b6 0
2b7 0
2b8 0
2b9 0
2ba 0
2bb 0
2bc 0
2bd 0
2be 0
2bf 0
2c0 0
2c1 0
2c2 0
2c3 0
2c4 0
2c5 0
2c6 0
2c7 0
2c8 0
2c9 0
2ca 0
2cb 0
2cc 0
2cd 0
2ce 0
2cf 0
2d0 0
2d1 0
2d2 0
2d3 0
2d4 0
2d5 0
2d6 0
2d7 0
2d8 0
2d9 0
2da 0
2db 0
2dc 0
2dd 0
2de 0
2df 0
2e0 0
2e1 0
2e2 0
2e3 0
2e4 0
2e5 0
2e6 0
2e7 0
2e8 0
2e9 0
2ea 0
2eb 0
2ec 0
2ed 0
2ee 0
2ef 0
2f0 0
2f1 0
2f2 0
2f3 0
2f4 0
2f5 0
2f6 0
2f7 0
2f8 0
2f9 0
2fa 0
2fb 0
2fc 0
2fd 0
2fe 0
2ff 0
300 0
301 0
302 0
303 0
304 0
305 0
306 0
307 0
308 0
309 0
30a 0
30b 0
30c 0
30d 0
30e 0
30f 0
310 0
311 0
312 0
313 0
314 0
315 0
316 0
317 0
318 0
319 0
31a 0
31b 0
31c 0
31d 0
31e 0
31f 0
320 0
321 0
322 0
323 0
324 0
325 0
326 0
327 0
328 0
329 0
32a 0
32b 0
32c 0
32d 0
32e 0
32f 0
330 0
331 0
332 0
333 0
334 0
335 0
336 0
337 0
338 0
339 0
33a 0
33b 0
33c 0
33d 0
33e 0
33f 0
340 0
341 0
342 0
343 0
344 0
345 0
346 0
347 0
348 0
349 0
34a 0
34b 0
34c 0
34d 0
34e 0
34f 0
350 0
351 0
352 0
353 0
354 0
355 0
356 0
357 0
358 0
359 0
35a 0
35b 0
35c 0
35d 0
35e 0
35f 0
360 0
361 0
362 0
363 0
364 0
365 0
366 0
367 0
368 0
369 0
36a 0
36b 0
36c 0
36d 0
36e 0
36f 0
370 0
371 0
372 0
373 0
374 0
375 0
376 0
377 0
378 0
379 0
37a 0
37b 0
37c 0
37d 0
37e 0
37f 0
380 0
381 0
382 0
383 0
384 0
385 0
386 0
387 0
388 0
389 0
38a 0
38b 0
38c 0
38d 0
38e 0
38f 0
390 0
391 0
392 0
393 0
394 0
395 0
396 0
397 0
398 0
399 0
39a 0
39b 0
39c 0
39d 0
39e 0
39f 0
3a0 0
3a1 0
3a2 0
3a3 0
3a4 0
3a5 0
3a6 0
3a7 0
3a8 0
3a9 0
3aa 0
3ab 0
3ac 0
3ad 0
3ae 0
3af 0
3b0 0
3b1 0
3b2 0
3b3 0
3b4 0
3b5 0
3b6 0
3b7 0
3b8 0
3b9 0
3ba 0
3bb 0
3bc 0
3bd 0
3be 0
3bf 0
3c0 0
3c1 0
3c2 0
3c3 0
3c4 0
3c5 0
3c6 0
3c7 0
3c8 0
3c9 0
3ca 0
3cb 0
3cc 0
3cd 0
3ce 0
3cf 0
3d0 0
3d1 0
3d2 0
3d3 0
3d4 0
3d5 0
3d6 0
3d7 0
3d8 0
3d9 0
3da 0
3db 0
3dc 0
3dd 0
3de 0
3df 0
3e0 0
3e1 0
3e2 0
3e3 0
3e4 0
3e5 0
3e6 0
3e7 0
3e8 0
3e9 0
3ea 0
3eb 0
3ec 0
3ed 0
3ee 0
3ef 0
3f0 0
3f1 0
3f2 0
3f3 0
3f4 0
3f5 0
3f6 0
3f7 0
3f8 0
3f9 0
3fa 0
3fb 0
3fc 0
3fd 0
3fe 0
3ff 0
400 0
401 0
402 0
403 0
404 0
405 0
406 0
407 0
408 0
409 0
40a 0
40b 0
40c 0
40d 0
40e 0
40f 0
410 0
411 0
412 0
413 0
414 0
415 0
416 0
417 0
418 0
419 0
41a 0
41b 0
41c 0
41d 0
41e 0
41f 0
420 0
421 0
422 0
423 0
424 0
425 0
426 0
427 0
428 0
429 0
42a 0
42b 0
42c 0
42d 0
42e 0
42f 0
430 0
431 0
432 0
433 0
434 0
435 0
436 0
437 0
438 0
439 0
43a 0
43b 0
43c 0
43d 0
43e 0
43f 0
440 0
441 0
442 0
443 0
444 0
445 0
446 0
447 0
448 0
449 0
44a 0
44b 0
44c 0
44d 0
44e 0
44f 0
450 0
451 0
452 0
453 0
454 0
455 0
456 0
457 0
458 0
459 0
45a 0
45b 0
45c 0
45d 0
45e 0
45f 0
460 0
461 0
462 0
463 0
464 0
465 0
466 0
467 0
468 0
469 0
46a 0
46b 0
46c 0
46d 0
46e 0
46f 0
470 0
471 0
472 0
473 0
474 0
475 0
476 0
477 0
478 0
479 0
47a 0
47b 0
47c 0
47d 0
47e 0
47f 0
480 0
481 0
482 0
483 0
484 0
485 0
486 0
487 0
488 0
489 0
48a 0
48b 0
48c 0
48d 0
48e 0
48f 0
490 0
491 0
492 0
493 0
494 0
495 0
496 0
497 0
498 0
499 0
49a 0
49b 0
49c 0
49d 0
49e 0
49f 0
4a0 0
4a1 0
4a2 0
4a3 0
4a4 0
4a5 0
4a6 0
4a7 0
4a8 0
4a9 0
4aa 0
4ab 0
4ac 0
4ad 0
4ae 0
4af 0
4b0 0
4b1 0
4b2 0
4b3 0
4b4 0
4b5 0
4b6 0
4b7 0
4b8 0
4b9 0
4ba 0
4bb 0
4bc 0
4bd 0
4be 0
4bf 0
4c0 0
4c1 0
4c2 0
4c3 0
4c4 0
4c5 0
4c6 0
4c7 0
4c8 0
4c9 0
4ca 0
4cb 0
4cc 0
4cd 0
4ce 0
4cf 0
4d0 0
4d1 0
4d2 0
4d3 0
4d4 0
4d5 0
4d6 0
4d7 0
4d8 0
4d9 0
4da 0
4db 0
4dc 0
4dd 0
4de 0
4df 0
4e0 0
4e1 0
4e2 0
4e3 0
4e4 0
4e5 0
4e6 0
4e7 0
4e8 0
4e9 0
4ea 0
4eb 0
4ec 0
4ed 0
4ee 0
4ef 0
4f0 0
4f1 0
4f2 0
4f3 0
4f4 0
4f5 0
4f6 0
4f7 0
4f8 0
4f9 0
4fa 0
4fb 0
4fc 0
4fd 0
4fe 0
4ff 0
500 0
501 0
502 0
503 0
504 0
505 0
506 0
507 0
508 0
509 0
50a 0
50b 0
50c 0
50d 0
50e 0
50f 0
510 0
511 0
512 0
513 0
514 0
515 0
516 0
517 0
518 0
519 0
51a 0
51b 0
51c 0
51d 0
51e 0
51f 0
520 0
521 0
522 0
523 0
524 0
525 0
526 0
527 0
528 0
529 0
52a 0
52b 0
52c 0
52d 0
52e 0
52f 0
530 0
531 0
532 0
533 0
534 0
535 0
536 0
537 0
538 0
539 0
53a 0
53b 0
53c 0
53d 0
53e 0
53f 0
540 0
541 0
542 0
543 0
544 0
545 0
546 0
547 0
548 0
549 0
54a 0
54b 0
54c 0
54d 0
54e 0
54f 0
550 0
551 0
552 0
553 0
554 0
555 0
556 0
557 0
558 0
559 0
55a 0
55b 0
55c 0
55d 0
55e 0
55f 0
560 0
561 0
562 0
563 0
564 0
565 0
566 0
567 0
568 0
569 0
56a 0
56b 0
56c 0
56d 0
56e 0
56f 0
570 0
571 0
572 0
573 0
574 0
575 0
576 0
577 0
578 0
579 0
57a 0
57b 0
57c 0
57d 0
57e 0
57f 0
580 0
581 0
582 0
583 0
584 0
585 0
586 0
587 0
588 0
589 0
58a 0
58b 0
58c 0
58d 0
58e 0
58f 0
590 0
591 0
592 0
593 0
594 0
595 0
596 0
597 0
598 0
599 0
59a 0
59b 0
59c 0
59d 0
59e 0
59f 0
5a0 0
5a1 0
5a2 0
5a3 0
5a4 0
5a5 0
5a6 0
5a7 0
5a8 0
5a9 0
5aa 0
5ab 0
5ac 0
5ad 0
5ae 0
5af 0
5b0 0
5b1 0
5b2 0
5b3 0
5b4 0
5b5 0
5b6 0
5b7 0
5b8 0
5b9 0
5ba 0
5bb 0
5bc 0
5bd 0
5be 0
5bf 0
5c0 0
5c1 0
5c2 0
5c3 0
5c4 0
5c5 0
5c6 0
5c7 0
5c8 0
5c9 0
5ca 0
5cb 0
5cc 0
5cd 0
5ce 0
5cf 0
5d0 0
5d1 0
5d2 0
5d3 0
5d4 0
5d5 0
5d6 0
5d7 0
5d8 0
5d9 0
5da 0
5db 0
5dc 0
5dd 0
5de 0
5df 0
5e0 0
5e1 0
5e2 0
5e3 0
5e4 0
5e5 0
5e6 0
5e7 0
5e8 0
5e9 0
5ea 0
5eb 0
5ec 0
5ed 0
5ee 0
5ef 0
5f0 0
5f1 0
5f2 0
5f3 0
5f4 0
5f5 0
5f6 0
5f7 0
5f8 0
5f9 0
5fa 0
5fb 0
5fc 0
5fd 0
5fe 0
5ff 0
600 0
601 0
602 0
603 0
604 0
605 0
606 0
607 0
608 0
609 0
60a 0
60b 0
60c 0
60d 0
60e 0
60f 0
610 0
611 0
612 0
613 0
614 0
615 0
616 0
617 0
618 0
619 0
61a 0
61b 0
61c 0
61d 0
61e 0
61f 0
620 0
621 0
622 0
623 0
624 0
625 0
626 0
627 0
628 0
629 0
62a 0
62b 0
62c 0
62d 0
62e 0
62f 0
630 0
631 0
632 0
633 0
634 0
635 0
636 0
637 0
638 0
639 0
63a 0
63b 0
63c 0
63d 0
63e 0
63f 0
640 0
641 0
642 0
643 0
644 0
645 0
646 0
647 0
648 0
649 0
64a 0
64b 0
64c 0
64d 0
64e 0
64f 0
650 0
651 0
652 0
653 0
654 0
655 0
656 0
657 0
658 0
659 0
65a 0
65b 0
65c 0
65d 0
65e 0
65f 0
660 0
661 0
662 0
663 0
664 0
665 0
666 0
667 0
668 0
669 0
66a 0
66b 0
66c 0
66d 0
66e 0
66f 0
670 0
671 0
672 0
673 0
674 0
675 0
676 0
677 0
678 0
679 0
67a 0
67b 0
67c 0
67d 0
67e 0
67f 0
680 0
681 0
682 0
683 0
684 0
685 0
686 0
687 0
688 0
689 0
68a 0
68b 0
68c 0
68d 0
68e 0
68f 0
690 0
691 0
692 0
693 0
694 0
695 0
696 0
697 0
698 0
699 0
69a 0
69b 0
69c 0
69d 0
69e 0
69f 0
6a0 0
6a1 0
6a2 0
6a3 0
6a4 0
6a5 0
6a6 0
6a7 0
6a8 0
6a9 0
6aa 0
6ab 0
6ac 0
6ad 0
6ae 0
6af 0
6b0 0
6b1 0
6b2 0
6b3

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?