Enviado por Marco Jorge em
100%
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