Professional Documents
Culture Documents
processador
PREPARAO
HDL_3
OBJETIVOS
Conhecer as funes realizadas pela Unidade de Controle
Implementar uma unidade de controle para o datapath estudado, completando um
processador simples
Entender a codificao de instrues em campos de bits
Conhecer a sequncia bsica de execuo de instrues e os mecanismos que alteram
esta sequncia, como tambm como estes afetam a implementao do contador de
programa (PC)
Compreender a formao de sinais de controle a partir das instrues armazenadas
em memria
Implementar uma memria ROM completamente combinacional atravs de uma
descrio em Verilog
Verificar o funcionamento de um processador atravs da execuo de algumas
instrues
INTRODUO
Neste experimento ser implementada uma unidade de controle, que juntamente com
o datapath desenvolvido nos experimentos anteriores, define um processador MIPS bastante
simples, capaz de executar 10 instrues. Este processador, apesar de muito simples, possui
algumas caractersticas tpicas de projetos mais modernos, e servir como base para o estudo
de outros processadores existentes.
Uma instruo uma coleo de bits que instrui o computador a realizar uma
operao especfica. Chamamos a coleo de instrues de um computador seu conjunto de
instrues e a descrio detalhada do conjunto de instrues a sua arquitetura do conjunto de
instrues (ISA, do ingls Instruction Set Architecture). Arquiteturas de conjunto de instrues
simples possuem trs componentes principais: os recursos de armazenamento, os formatos de
instrues e as especificaes das instrues.
RECURSOS DE ARMAZENAMENTO
FORMATOS DE INSTRUO
Tipo Registrador: Instrues tipo-R utilizam trs registradores como operandos: dois
como fonte e um como destino. A Figura 2 mostra o formato de instruo de mquina
tipo-R. a instruo de 32-bits possui seis campos: op, rs, rt, rd, shamt e funct. Cada
campo de cinco ou seis bits, como indicado.
A operao que a instruo realiza codificada nos dois campos destacados em azul:
op (tambm chamado opcode, ou cdigo de operao) e funct (tambm chamado de
funo). Todas as instrues tipo-R possuem um opcode de 0. A operao especfica
tipo-R determinada pelo campo field. Por exemplo, os campos opcode e funct para a
instruo add so 0 (0000002) e 32 (1000002), respectivamente. Similarmente, a
instruo sub possui os campos opcode e funct de 0 e 34.
Tipo Jump: O nome tipo-J uma abreviao para tipo salto (jump). Esse formato
de instruo utiliza um nico operando de endereo de 26-bits, addr, como mostrado
na Figura 4. Assim como outros formatos, as instrues tipo-J iniciam-se com um
opcode de 6 bits. Os bits remanescentes so utilizados para especificar o endereo,
addr.
LINGUAGEM ASSEMBLY
A memria de instruo tem uma nica porta de leitura. Recebe uma entrada de
endereo de 8-bits, A, e escreve as instrues de 32 bits na sada de dados de leitura, RD.
ilustrado na Figura 5 um exemplo de programa armazenado em uma memria de instrues.
Perceba que o cdigo assembly convertido para cdigo de mquina antes de ser
armazenado.
Neste ponto, vital reconhecer a diferena entre uma operao do computador e uma
microoperao do hardware. Uma operao especificada por uma instruo armazenada em
binrio na memria do computador. A unidade de controle do computador utiliza o endereo
ou endereos fornecidos pelo contador de programa para recuperar a instruo da memria.
Ela ento decodifica os bits do opcode e outras informaes na instruo para realizar as
microoperaes necessrias para a execuo da instruo. Diferentemente, uma
microoperao especificada pelos bits que formam uma palavra de controle, que
determinar ao hardware do computador as aes que devem ser implementadas para
executar a microoperao. A execuo de uma operao do computador normalmente requer
uma sequncia ou programa de microoperaes no lugar de uma nica microoperao.
clk
rs ra1 we3
rd1 SrcA clk
clk
0 rt ra2 Z
1
0
PC PC PC A
Inst.
RD
Register ULA we
1 Mem. wa3 File ULAResult A 0
MuxPCSrc Data
MuxJump rd2 0 RD 1
wd3 1
SrcB Mem.
WD
Imm MuxULASrc
MuxDDest
Adder 1
1'b1 rt 0
rd 1
Branch
Adder
MuxWR
Imm
Observe que no h lgica seqencial na parte de controle alm do PC. Logo, afora
fornecer o endereo para a memria de instrues, a lgica de controle combinacional. Este
fato, combinado com a estrutura do datapath e o uso de memrias de instrues de dados
separadas, permitem que o computador de ciclo nico obtenha e execute uma instruo da
memria de instrues, tudo em um nico ciclo de clock.
DECODIFICADOR DE INSTRUES
IMPLEMENTAO EM VERILOG
O mdulo do PC um circuito sequencial que guarda um vetor de 8 bits cada vez que
uma borda de subida do clock detectada. Usar always @(posedge clock).
MEMRIA COMBINACIONAL
Para que este processador opere com um nico ciclo de clock, necessrio que a
memria de instrues se comporte como um circuito puramente combinacional. Neste
experimento, isto exatamente o que vai ser feito. Uma memria de apenas leitura
combinacional basicamente um decodificador que tem os endereos como entrada e os
dados como sada. A sua implementao feita da mesma forma que o decodificador de sete
segmentos implementado nos experimentos anteriores. Deve-se lembrar que, como o nmero
de bits de endereo muito grande (16) havero diversos cdigos no definidos, que precisam
ter valor default.
Esta memria deve ser definida como um mdulo separado porque nos prximos
experimentos ela ser implementada usando uma ferramenta especfica do Quartus. Para isto,
preciso tambm que o mdulo da CPU possua uma sada adicional de endereos (Code Addr)
e uma entrada para as instrues (Inst In).
MODULARIDADE E INSTANCIAO
O mdulo TOP (Mod_Teste) o nico que deve conhecer detalhes da placa, ou seja,
nomes de chaves e de LEDs. Este mdulo instancia a CPU, a memria e os circuitos de teste e
os conecta nestas interfaces da placa.
Questes de Preparao
1. Quais as conexes que devem ser feitas entre a unidade de controle e o datapath, de
acordo com a Figura 6?
2. Implemente em Verilog o decodificador de instrues da Figura 6. Este decodificador
transforma os 32 bits de uma instruo nos 10 bits da palavra de controle.
3. Determine o cdigo binrio do conjunto de instrues abaixo:
ADD $2, $0, $1 SUB $3, $2, $1 AND $2, $1, $3
OR $2, $1, $3 SLT $1, $0, $2 LW $1, 9($0)
SW $1, 9($0) BEQ $X, $Y, i ADDi $2, $0, 7
J6
4. Descreva em Verilog uma memria de instrues de 256 posies. Deve existir uma
entrada de endereos e uma sada de instrues de 32 bits.
5. Analise o seguinte trecho de cdigo e informe o valor dos registradores $1 e $2
quando PC = 5:
Posio Instruo
0000 ADDi $1, $0, 5
0001 ADDi $2, $0, 0
0002 ADDi $2, $2, 1
0003 BEQ $1, $2, 1
0004 J2
0005 FIM
6. Escreva um programa de teste para esta CPU e converta cada instruo para o
equivalente em binrio. Este programa deve testar as diversas classes de instruo da
CPU. Por exemplo, uma instruo para teste de operaes com registradores e
operaes de desvio e jump;