270 likes | 390 Views
Unidade Central de Processamento. Sistemas Digitais CIn-UFPE. Unid. controle. Memória Programas + Dados. Vídeo. IR. PC. MAR. Teclado. Gerais. MBR. ALU. E/S. Unid. processamento. Buffers. Como funciona um computador simples. IR – Instruction Register PC – Program Counter
E N D
Unidade Central de Processamento Sistemas Digitais CIn-UFPE
Unid. controle Memória Programas + Dados Vídeo IR PC MAR Teclado Gerais MBR ALU E/S • Unid. processamento Buffers Como funciona um computador simples IR – Instruction Register PC – Program Counter MAR – Memory Address Register MBR – Memory Bus Register
Início Término Como funciona um computador? Busca a próxima instrução Executa a instrução
Busca instrução Decodifica instrução Incrementa PC Busca operando Executa instrução Armazena resultado Executando um programa
acumulador saída Y Ty entrada Z A +/- X Tz Tula Tx controle clk Exemplo – Declarações simples Muitas vezes o processamento de uma informação exige uma seqüência de transferência até que a tarefa seja terminada. Exemplo 01: /* Programa que a função (a+b-c) e mostra o resultado (z = a+b-c) Sigad: CLRLD /* Clear acumulador Y, Z e carrega valor de A em X ADD /*ADD 1o. valor, guarda resultado e lê novo valor ADD /*ADD 2o .valor, guarda resultado e lê novo valor SUB /*SUB 3o .valor, guarda resultado DISP Sigad /*mostra resultado e repete cálculo em Z Como construir uma unidade de controle que implemente este programa? Estado Estado/saída QA Sigad: QB/CLRLD QB QC/ADD QC QD/ADD QD QE/SUB QE QA/DISP
- 0 0 a 0 - b a - A = b A = a A = c 0 a+b c A=a Y=- X=- Z=- Ty=0 Tx=1 Tz=0 Tula=0 A=b Y=0 X=a Z=0 Ty=1 Tx=1 Tz=2 Tula=0 A=c Y=a X=b Z=0 Ty=1 Tx=1 Tz=2 Tula=0 A=- Y=a+b X=c Z=0 Ty=1 Tx=1 Tz=2 Tula =1 A=- Y=a+b-c X=- Z=0 Ty=0 Tx=0 Tz=1 A=- Y=- X=- Z= a+b-c A = - a+b-c 0 - a+b-c - - A = - A = - Q Q Q Q D C E A ADD ADD SUB CLRLD DISP Q B Q A Clk Z = a+b-c a Y - saída - a+b-c a+b QA Sigad: QB/CLRLD QB QC/ADD QC QD/ADD QD QE/SUB QE QA/DISP Ty Z entrada +/- X Tz A = a Tz Tula Tx controle Clk T [0] = clear [1] = load [2] = hold Tula [0] = + [1] = - Instruções Ty, Tx, Tz Tula CLRLD = [ 0, 1, 0, x ] ADD = [ 1, 1, 2, 0 ] SUB = [ 1, 1, 2, 1 ] DISP = [ 0, 0, 1, x ] Clk
Instruções Ty, Tx, Tz Tula CLRLD = [ 0, 1, 0, x] ADD = [ 1, 1, 2, 0] SUB = [ 1, 1, 2, 1] DISP = [ 0, 0, 1, x] Contador de programa Execução de um progama 00 [0,1,0,x] CLRLD end+0(a) X = a; Y=0; Z= 0; 01 [1,1,2,0] ADD end+1(b) 02 [1,1,2,0] ADD end+2(c) X = b; Y=a; Z= 0; X = c ; Y= a+b; Z =0; 03 [1,1,2,1] SUB - 04 [0,0,1,x] DISP - X = -; Y= a+b-c; Z =0; X = -; Y= a+b-c; Z =a+b-c; Z = a+b-c memória Y saída cpu Ty entrada Z memória memória A +/- X Tz cpu Tula Inst |dados Tx controle clk memória Contador do Programa (PC) Z = a + b - c Memória: Instruções end(dados) cpu X = -; Y=-; Z= -; 05 - -------
15 3 4 0 Opcode Endereço Memória • Dado 0 15 sinal magnitude • Instrução Opcode 0001 AC <- Mem. 0010 Mem. <- AC 0101 AC <- AC + Mem.
Memória Opcode | endereço dados Executando um programa Registradores da CPU 1 9 4 0 3 0 0 PC (endereço) 3 0 0 3 0 1 5 9 4 1 AC (operando) 2 9 4 1 3 0 2 1 9 4 0 IR (Instrução) ... 0 0 0 3 9 4 0 0 0 0 2 9 4 1 0001 AC <- Mem. 0010 Mem. <- AC 0101 AC <- AC + Mem.
Memória Opcode | endereço dados Executando um programa Registradores da CPU 1 9 4 0 3 0 0 PC 3 0 0 3 0 1 5 9 4 1 0 0 0 3 AC 2 9 4 1 3 0 2 1 9 4 0 IR ... 0 0 0 3 9 4 0 0 0 0 2 9 4 1 0001 AC <- Mem. 0010 Mem. <- AC 0101 AC <- AC + Mem.
Memória Opcode | endereço dados Executando um programa Registradores da CPU 1 9 4 0 3 0 1 PC 3 0 0 3 0 1 5 9 4 1 0 0 0 3 AC 2 9 4 1 3 0 2 5 9 4 1 IR ... 0 0 0 3 9 4 0 0 0 0 2 9 4 1 0001 AC <- Mem. 0010 Mem. <- AC 0101 AC <- AC + Mem.
Memória Opcode | endereço dados Executando um programa Registradores da CPU 1 9 4 0 3 0 1 PC 3 0 0 3 0 1 5 9 4 1 0 0 0 5 AC 2 9 4 1 3 0 2 5 9 4 1 IR ... 0 0 0 3 9 4 0 0 0 0 2 9 4 1 0001 AC <- Mem. 0010 Mem. <- AC 0101 AC <- AC + Mem.
Memória Opcode | endereço dados Executando um programa Registradores da CPU 1 9 4 0 3 0 2 PC 3 0 0 3 0 1 5 9 4 1 0 0 0 5 AC 2 9 4 1 3 0 2 2 9 4 1 IR ... 0 0 0 3 9 4 0 0 0 0 2 9 4 1 0001 AC <- Mem. 0010 Mem. <- AC 0101 AC <- AC + Mem.
Memória Opcode | endereço dados Executando um programa Registradores da CPU 1 9 4 0 3 0 2 PC 3 0 0 3 0 1 5 9 4 1 0 0 0 5 AC 2 9 4 1 3 0 2 2 9 4 1 IR ... 0 0 0 3 9 4 0 0 0 0 5 9 4 1 0001 AC <- Mem. 0010 Mem. <- AC 0101 AC <- AC + Mem.
Arquitetura do computador Dispositivo de entrada e saída(E/S) Memória Processor Memory Input/Ouput PC IR AC Address Bus MAR Data Bus MDR ALU PC = Program counter IR = Instruction register AC = Acumulador MAR = Memory Address Register MDR = Memory Data Register ALU = Arithmetic & Logic Unit Control Unit
Arquitetura do computador • PC - program counter – indica a próxima instrução a ser executada. • IR - Instruction register – recebe a instrução a ser decodificada pela CPU. • AC – Acumulador (registrador auxiliar). Guarda temporariamente valores sendo calculados. • MAR – Registrador que indica a próxima posição de memória a ser referenciada. Conectado ao barramento de endereços. • MDR – Registrador usado para receber ou transmitir dados. Conectado ao barramento de dados. • ALU (ULA) – Unidade Lógica
Instruções básicas Formato da instrução do computador
CPU - P1 • Conjunto de instruções básicas • Exemplo de um programa no P1: • A = B+C • A (acumulador), B e C são endereços de memória Assembly Language MachineLanguageLOAD B 0211ADD C 0012 LOAD address AC <= contents of memory address (02) B(11) ADD address AC <= AC + contents of memory address (00) C(12)
CPU - P1 • Fluxo de execução de instruções
CPU - P1 • Fluxo de execução de instruções detalhada
A = B+C • A (acumulador), • B e C são endereços de memória Assembly Language MachineLanguageLOAD B 0211ADD C 0012 00 00 07 01 00 12 Load B 1. 2. ADD C CPU - P1 02 11 00 12 00 03 00 04 PC Opcode address 00 04 00 07 1. 2. LOAD B 02 11 00 04 02 11 00 04 00 03 00 12 ADD C 01 01 01 12 12 11 12 11 01 00 12 00 03 00 04 02 11 Load address AC<- conteúdo do endereço de memória
Projeto 1:Máquina de vender bombons • Implementar uma máquina que vende bombons, com as seguintes funcionalidades: • A máquina aceita moedas de 5 e 10 centavos • O valor de cada bombom é de 15 centavos • A máquina não dá troco, mas guarda os 5 centavos caso o cliente deposite duas moedas de 10 Centavos • O bombom é liberado automaticamente assim que o valor atinge um valor igual ou maior que 15C. • Os valores acumulados são apresentados no display. • Desenvolver todo o projeto por escrito, no papel • Diagrama de estados • Tabelas verdade • Esquemático • Mostra simulação na ferramenta Quartus+II • Implementar na placa FPGA
a a f f g g e e c c Decoder BCD 7-Segm. b b d d Projeto Dispositivo de I/O Saída Entrada 4 reset 4 clk Controle 5C Moedas 10C Liberar bombom
a f g e c b d Projeto 2: CPU Instrução Dados CPU acumulador 4 bits 4 bits Dispositivo de saída Y Memória Ty Z Barramento de dados Tz ULA X Status Tula Tx Instruções | Dados Controle Decodificador de instruções decodificador clk Barramento de Endereços PC 0 1 ……..n Barramento de dados (Instruções)
Projeto • Implementar as seguintes funções na arquitetura computacional projetada • A = B+C-D • A = (B+C)/2 Onde: A é o acumulador B, C e D são endereços de memória que armazenam os dados (positivo ou negativos) a serem processados A, B, C e D possuem 4 bits