Aluno: Guilherme CardosoProfessor: Felipe Pedroso ORGANIZAÇÃO DE COMPUTADORES Projeto - Processador 13 de junho de 2014. Vila Velha - ES Esse processador realiza operações de 4 bits. 2 . além de conter uma memória ROM e uma memória RAM. que serão estudados a seguir. uma ULA. IR e AC). como mostra a figura 01. PROCESSADOR Um processador é um dispositivo de extrema importância em qualquer circuito. conta com três registradores (PC. além de apresentar dispositivos de entrada e saída.1. ele é capaz de executar diversas funções de cálculos e tomar inúmeras decisões. foi proposto a criação de um processador de 4 bits ao longo do semestre utilizando o software “Logisim” para descrevermos o funcionamento do mesmo. Para entendermos a fundo como funciona um processador. Figura 01: Layout de um processador utilizando o Logisim. uma unidade de controle. ou seja. quanto mais você dividir um ciclo de clock. toda lógica da unidade de controle foi feita utilizando portas lógicas assim como em todo o processador. Figura 02: Visão geral da unidade de controle. ele também é responsável pela velocidade de execução do processador. entrada e saída de dados e dois registradores para os flag’s (ver tópico 4). UNIDADE DE CONTROLE A unidade de controle é responsável por administrar todo o processador. no caso do divisor de clock utilizado nesse processador mostrado na figura 03. Como podemos ver na figura 02. faz com que a cada ciclo de clock ele execute dois clock’s.1. 2.2. mais tarefas serão executadas. tornando assim o processador mais rápido. 3 . além de dizer a hora que cada componente deve ser ativado. contando com um divisor de clock. Divisor de clock O divisor de clock é responsável por “quebrar” o clock de entrada em vários clock’s. 0 1 2 3 4 5 6 7 8 9 A B C D E F Conjunto de Instruções Função OPC+E Descrição MOV 0000 AC <= X MOV 0001 AC <= M(X) ADD 0010 AC <= AC + X ADD 0011 AC <= AC + M(X) SUB 0100 AC <= AC – X SUB 0101 AC <= AC – M(X) OR 0110 AC <= AC OR X OR 0111 AC <= AC OR M(X) NOT 1000 AC <= AC NOT X NOT 1001 AC <= AC NOT M(X) IN 1010 AC <= AC << USB 3. a ULA (Unidade Lógica Aritmética) foi toda projetada para executar as operações MOV. C2. ADD. ela define tudo o que será feito pela unidade de controle. OR e NOT. SUB.2. e algumas funções. gerando um contador “Gray” (faz com que a cada clock só atualize um bit por vez) de 2 bits. Esse divisor de clock foi feito utilizando dois flip-flops do tipo D. 2. como por exemplo. Cod. Conjunto de instruções O conjunto de instruções é o que dá um “norte” para a unidade controle. gerando C1.0 OUT 1011 AC <= AC >> HDMI JPZ 1100 PC <= X SE FLAG Z JPO 1101 PC <= X SE FLAG O GO 1110 PC <= X STR 1111 M(X) <= AC Tabela 01: Conjunto de Instruções. C3 e C4. filtrando a saída do contador com portas AND. 4 .Figura 03: Unidade de Controle – Divisor de clock. são baseadas nessa tabela. onde o mesmo informa se deve ser usado o valor “X” ou usar o valor “M(X)” (memória RAM). e por fim o “X” que é a informação Os dois flag’s da unidade de controle que aparecem no canto inferior direito da figura 04. 5 . o “E” que é referente à atribuição para a maioria das vezes.2. que estudaremos mais adiante. Figura 04: Unidade de Controle – Entrada de dados.3. eles existem para que eles não venham a gerar algum tipo de interferência referente ao ciclo atual. mais duas entradas para flag’s (ver tópico 4) e uma entrada para instrução (Essa entrada é o que defini o que o processador tem que fazer). pois estes flag’s ativam uma determinada função baseados no ciclo anterior. o “OPC” – Operation Code (Código de Operação) que é constituído de 3 bits. sendo que ela é dívida em três partes. A Instrução vem do acumulador IR. duas entradas reservadas para alimentação e reinicialização da unidade de controle. ela é composta de 8 bits. estão acompanhados de flip-flop’s do tipo D. ou seja. Entradas A unidade de controle conta com 5 entradas de dados. o CLK (clock) e o CLR (reset). as saídas filtradas da “Instrução” (OPC. E. Saídas As saídas da unidade de controle são responsáveis pela ativação de todos os outros componentes. a ULA. Figura 05: Unidade de controle – Saídas. fazendo com que as saídas obedeçam certas condições. 6 . os acumuladores. X) e algumas delas são saídas que ativam determinadas ações.4. toda a lógica por de trás das saídas da unidade de controle está baseada em portas lógicas. os reset’s. que podemos chama-las de especiais (store.2. buffer e load). as memórias ROM e RAM. ACUMULADORES 3. 7 . ao invés de fazer códigos sequências.3. pois o PC é responsável pela posição que a ROM irá tomar (a ROM é onde o código será inserido pelo programador.1. constituído de um sistema baseado mais uma vez em portas lógicas. baseado no conjunto de instruções da tabela 01). onde o que estiver na posição X irá aparecer na saída se e somente se Load for 1 junto com um pulso de clock. PC – Program Counter (Contador de Programa) Os acumuladores são mecanismos que recebem uma informação e passam a mesma adiante só quando recebem o clock. nos dando a possibilidade de manipular as posições da ROM. Esse acumulador é constituído de um contador de 4 bits além de um sistema de inserção de dados (usado pelas funções GoTo e Jump). só que o PC recebe alguns componentes a mais. Figura 06: PC – Program Counter. Foi utilizado um contador síncrono com flip-flop’s JK. realimentar a ULA e mostra no display de 7 segmentos. um acumulador simples com a única diferença que os seus dados têm 4 bits. 8 .2.3. quando a OUT é ativada a saída faz um paralelo com o AC). para que assim a unidade de controle possa executar a instrução.3. IR – Instruction Register (Registrador de Instruções) O IR é um acumulador simples com a única diferença que os seus dados têm 8 bits. a sua função é pegar o que está na ROM como instrução e transferir para a unidade de controle. Figura 07: IR – Instruction Register. 3. e com a adição de componentes de entrada e saída. a sua função é pegar o que está na saída da ULA e alimentar o buffer. AC – Accumulator (Acumulador) O AC é igual ao IR. o AC também alimenta a saída de dados (se olharmos a figura 01. fazendo com que entrou vá para a saída e só se atualize com um novo pulso de clock. que tem como característica principal de memorizar o valor recebido pela entrada D após um pulso de clock. que fica no processador. aqui usamos o flip-flop do tipo D. 9 . Podemos citar também a memória de todos os acumuladores. IR e AC) contém uma entrada em todos eles referente ao reset. na qual todos eles são ligados à um Master Reset.Figura 07: IR – Instruction Register. podemos observar o mesmo na figura 01. Um ponto importante a ser lembrado é de que todos os acumuladores do nosso processador (PC. 10 . O Flag de Zero indica que na saída do resultado não há nenhum bit ativo (quando a saída retorna zero). a outra entrada sendo a que seleciona a operação. Basicamente a ULA é constituída de três entradas e três saídas. chamada de “Gerador de Produtos Canônico”). SUB. como mostra a figura 08. Iremos dividir a nossa ULA em basicamente três componentes: 4. seja ele o de MOV. ADD.4. NOT Gerador de Produtos Canônicos – GPC Saidas – Flag’s e Saída Enable Antes de começar a falar sobre as operações. SUB. sendo duas entradas para os dados a serem trabalhados. o circuito que faz com que as operações sejam liberadas depois de terem sido escolhidas pelo Gerador de Produtos Canônicos – GPC. circuito esse que fica dentro de cada circuito de operação. por exemplo. AND. as duas entradas de 4 bits retornam uma saída de 5 bits sendo que a saída suporta apenas 4 bits. conhecida como “Operation Code” (Essa entrada leva a um circuito responsável pela seleção da função a ser executada. uma saída para o resultado e as outras duas saídas usadas como indicadores. fazendo com que o indicador retorne “1”.1. OR ou NOT) na saída final da ULA. Basicamente esse circuito auxilia a ULA a não deixar com que haja mais de uma saída de operadores (MOV. ULA – UNIDADE LÓGICA ARITMÉTICA Um dos componentes indispensáveis de um processador é a ULA. impedindo que haja conflitos de informações no resultado. já o Flag de Overflow indica quando há um estouro na saída. que nada mais é do que uma calculadora que efetua diversas operações. OR ou NOT. SUB. ADD. OR. ADD. fazendo com que retorne “1” para o indicador. isso acontece quando. abordaremos um ponto importante da ULA. AND. chamadas de “Flag de Zero” e “Flag de Overflow”. Operadores – MOV. para esse circuito foi feito uma simples “Tabela Verdade”: Função MOV ADD SUB OR NOT OPC 000 001 010 011 100 Tabela 02: Tabela verdade e suas referentes funções. 4.2. o circuito abaixo foi feito baseado na Tabela 1: Figura 09: Circuito GPC 11 . Operation Code (OPC) e Gerador de Produtos Canônicos (GPC) OPC: Circuito responsável pela definição da função a ser realizada pela ULA.Figura 08: ULA – Enable. GPC: Circuito responsável por receber o OPC e habilitar a função programada. MOV . formando assim um somador de 4 bits.4.Mover O circuito MOV nada mais é do que um circuito passador. 12 . 4. como mostra a figura 10: Figura 10: ULA – Circuito MOV. a primeira parte foi um somador de 1 bit. segue a Tabela Verdade e os mapas de Karnaugh referente ao circuito somador de 1 bit: Vem 0 0 0 0 1 1 1 1 A 0 0 1 1 0 0 1 1 B 0 1 0 1 0 1 0 1 Saída 0 1 1 0 1 0 0 1 Vai 0 0 0 1 0 1 1 1 Tabela 03: Tabela verdade de um somador de 1 bit. ADD – Somador O circuito somador foi feito em duas partes. ou seja.3.4. foi feito uma associação com 4 deles. mas como falado anteriormente o mesmo já está subordinado ao circuito Enable. e depois dele pronto. o que entra sai. nesse circuito em sua saída foi adicionado mais uma vez o circuito “Enable”. na figura 14 podemos observar como foi feito essa associação.Figura 11: Mapa de Karnaugh referente à Saída do somador de 1 bit. 13 . Figura 12: Mapa de Karnaugh referente ao “Vai Um” do somador de 1 bit. Figura 13: Circuito somador de 1 bit. Logo após ter concluído o circuito somador de 1 bit. fazendo com que se tornasse um circuito somador de 4 bits. foi associado 4 circuitos somadores de 1 bit. ele invertesse a parte negativa. O complemento dois nada mais é do que inverter os bits da parte negativa e somar mais um bit: Carry-Out: Aciona o Flag de Overflow Figura 15: Demonstração de complemento dois. 14 . mas foi implementado o complemento dois. o flag de overflow.5. 4. mas não alterando o “vai um” do último circuito. Dessa forma foi utilizado um método para que sempre que fosse ativado o SUB pelo GPC.Figura 14: Circuito somador de 4 bits. SUB – Subtrator Para este circuito foi utilizado um circuito somador. Podemos notar que para este circuito foi “isolado” de certa forma o “vem um” forçando a sempre entrar zero. quando SUB estiver ativado e B for 0100 (número quatro em binário) e na outra entrada for 1111 (número quinze em binário). fazendo com que retorne 1 apenas quando uma das entradas forem nível alto. 4. por exemplo. o mesmo retorna nível alto para o Enable do SUB. e para finalizar o “Complemento 2”. Em uma das entradas chega “B” de 4 bits. e sabendo como a porta XOR funciona. Quando a OPC libera a função SUB para o GPC.6. Figura 17: Circuito OR de 4 bits. OR – OU O circuito OR faz um “ou lógico” entre A e B (todos os dois de 4 bits). e para inverter os bits de B foi feito um XOR com uma entrada de 4 bits. o inverso de B. dessa forma o valor de B está pronto para ser somado com A. 15 .Figura 16: Circuito subtrator de 4 bits. uma saída nível alto entra no “Vem Um” do primeiro somador de 1 bit fazendo com que agora o valor de B seja 1100. um detalhe importante que podemos observar na figura 16 é que a mesma entrada do Enable serve para ativar (retornar um) ao vem um e ativar a segunda entrada do XOR. a saída será o valor 1011. A figura 16 mostra que foi utilizado uma porta XOR (essa porta faz com que retorne 1 apenas quando as entradas forem diferentes) da seguinte forma. todas elas em nível Alto (número quinze 1111). 7.4. fazendo com que retorne o valor inverso da entrada. NOT – NÃO O circuito NOT faz uma negação do que entra em B (4 bits). Figura 18: Circuito NOT de 4 bits. 16 . o PC libera um endereço na entrada “A” da ROM. a memória ROM utilizada nesse processador é uma ROM com 16 posições que são acessadas por um endereço de 4 bits e 8 bits para dados. a unidade de controle libera o clock fazendo com que a saída “D” alimente o IR. 17 .2. é importante lembrar que a programação na ROM é feita em hexadecimal. 5.1. MEMÓRIA ROM E MEMÓRIA RAM 5. Memória ROM A memória ROM é um componente capaz armazenar instruções a serem realizadas pelo processador.5. Memória RAM A memória RAM é utilizada para alojar valores resultantes das desições da unidade de controle. Figura 19: Memória ROM 8x16. Ela funciona da seguinte forma. seguindo o mesmo tamanha da ROM. Figura 20: Memória RAM 8x16. Entradas O dispositivo de entrada deste processador. 18 . ele tem por finalidade a entrada de dados.0” – visão interna e visão geral.1.6. Quando a função é escrita na ROM. abaixo podemos ver como foi feito tal dispositivo.0 tem 16 entradas de dados. foi intitulado de “USB 3. DISPOSITIVO DE ENTRADAS E SAÍDAS 6.0”. todas elas no tamanho de 4 bits. o USB 3. Figura 21: Dispositivo de Entrada – “USB 3. fazendo com que primeiramente ele ative um MUX para que o valor de AC não seja contaminado pelos outros quatro bits da ROM. pois a função do dispositivo de entrada é pegar o que estiver na posição descrita e transferi-la para o AC. em seus primeiros quatros número a unidade de controle define que tem que ativar o dispositivo de entrada. 6. para o circuito de acionamento do “HDMI”. o dispositivo de saída necessitou de um DMX (Demultiplexador) e de 16 flip-flop’s do tipo D (com a mesma finalidade dos registradores dos flag’s). sua função é transferir o que estiver no AC para a saída. 19 . na figura podemos observar o dispositivo. respeitando a posição descrita na ROM.2. Saídas O dispositivo de saída desse processador foi intitulado de “HDMI”. Figura 22: Dispositivo de Saída – “HDMI” – visão geral. para que as saídas não fiquem “flutuando” além de uma porta AND.