ARQUITECTURA DE COMPUTADORES
2º Trabalho de Laboratório
Unidade de Controlo Hardwired
Objectivo: Pretende-se que os alunos compreendam a metodologia usada na síntese, implementação e programação de um computador elementar de Ciclo Único, constituído por uma Unidade de Controlo “Hardwired” e por uma Unidade de Processamento. O trabalho terá uma duração de 2 semanas, devendo o relatório ser entregue na aula de laboratório da segunda semana. O trabalho deverá ser preparado (projecto e edição de esquemático) fora do horário de laboratório, destinando-se as 4 horas de laboratório à resolução de eventuais problemas e demonstração do trabalho realizado. Aconselha-se, para facilitar a execução do trabalho, a consulta dos textos “Manual de Introdução ao Xilinx” e “Notas sobre utilização de Símbolos e Buses em Xilinx” disponíveis na página da cadeira.
1 I
NTRODUÇÃOPretende-se projectar um computador elementar de Ciclo Único, constituído por uma Unidade de Controlo Hardwired, uma Unidade de Processamento de 4 bits e ainda pelos registos, memória e lógica adicional necessárias à sua operação.
2 U
NIDADE DEP
ROCESSAMENTO(UP)
A Unidade de Processamento (UP) a controlar é uma versão expandida daquela que foi projectada e implementada no primeiro trabalho de laboratório. Esta UP (datapath) será fornecida pelo corpo docente. O seu diagrama de blocos é o seguinte:
MA 0 1 0 1 MB MUX A MUX B Input A Input B Address out Data out UA (R0,R1,R2,R3) RW A B X Y Z UF FS Z N 4 4 4 4 4 4 4 4 4 3 Bsel 2 Asel 2 DA 2 Bus A Bus B
Aspectos importantes relativos ao funcionamento da UP:
Existem 4 registos na Unidade de Armazenamento (UA), denominados R0, R1, R2 e R3. Cada um destes registos tem 4 bits.
Asel selecciona qual dos 4 registos da UA é colocado no Bus A da UP: Asel=00 selecciona R0, Asel=01 selecciona R1, etc. Do mesmo modo, Bsel selecciona qual dos 4 registos da UA é colocado no Bus B da UP: Bsel=00 selecciona R0, Bsel=01 selecciona R1, etc.
A entrada RW determina se a saída da Unidade Funcional (UF) é escrita num dos registos (RW=1) ou não (RW=0). Quando RW=1, as linhas DA (Destination Address) seleccionam qual dos registos é escrito: DA=00 selecciona R0, DA=01 selecciona R1, etc.
Os dados para cada um dos operandos X e Y da UF são provenientes, ou do banco de registos da UA , ou das entradas externas Input A e Input B: quando MA=0 o operando X da UF é lido do Bus A e quando MA=1 o operando X da UF provém da entrada externa Input A; o operando Y da UF é controlado de forma similar pela entrada MB.
As linhas FS (Function Selection) determinam qual a microoperação executada pela UF:
FS2 FS1 FS0 Microoperação Descrição 000 Z = X Transferência de X 001 Z = Y Transferência de Y 010 Z = X+1 Incremento de X 011 Z = Y+1 Incremento de Y 100 Z = X-1 Decremento de X 101 Z = Y-1 Decremento de Y 110 Z = X+Y Adição 111 Z = X-Y Subtracção
A micro-operação executada na UF afecta 2 flags: Zero (Z) e Negative (N). Estas flags são guardadas num registo de Flags após a execução de cada instrução. Dessa forma, elas ficam acessíveis para serem testadas durante a instrução seguinte.
3 A
RQUITECTURA DOC
OMPUTADOR E DAU
NIDADE DEC
ONTROLO(UC)
O computador de Ciclo Único a projectar utilizará instruções de 12 bits e operará dados de 4 bits. A Unidade de Controlo (UC) a implementar será do tipo Hardwired. A memória de instruções tem uma dimensão 64x12, ou seja, é constituída por 64 palavras de 12 bits cada. A memória de dados tem uma dimensão 16x4, ou seja, é constituída por 16 palavras de 4 bits. Ambas as memórias serão fornecidas sob a forma de um símbolo.
O seguinte diagrama de blocos apresenta a arquitectura do computador a projectar e implementar:
MA 0 1 0 1 MB
MUX A MUX B
Mem. Address Bus
Mem. Data Out Bus Mem. Data Out Bus
Mem. Data In Bus UA (R0,R1,R2,R3) RW J Z,N A B X Y Z UF FS Z N Bsel Asel DA Memoria Dados (16 x 4) MW Descodificador de Instrucoes PC Memoria Instrucoes (64 x 12) Controlo de Salto
Mem. Address Bus
DA RW Asel Bsel MA MB FS MW J Jsel Jsel
Bus Salto Input A Bus
No diagrama de blocos é possível identificar as variáveis de controlo da UP indicadas na secção anterior, e ainda as seguintes variáveis adicionais:
MW (1 bit): Memory Write. Controla a operação de escrita na memória de dados: se MW=1 o conteúdo de Mem. Data In Bus é escrito na posição de memória indicada no Mem. Address Bus; se MW=0, a memória não é escrita.
J (1 bit): Jump. Indica se existe um salto (J=1), ou se o PC (Program Counter) é simplesmente incrementado de uma unidade (J=0);
Jsel (2 bits): Jump Select. Quando J=1, as linhas Jsel indicam o tipo de salto a executar:
Jsel Condição de Salto 00 Salto incondicional 10 Salta se N = 1 01 Salta se Z = 1
O sequenciamento das instruções do programa é efectuado através do Contador do Programa (PC), do bloco identificado como “Controlo de Salto”, das flags Z e N e ainda através das instruções de salto dedicadas especialmente para esse efeito, as quais controlam as variáveis J e JSel. O funcionamento do “Controlo de Salto” pode ser descrito da seguinte forma:
Se J=0, então o PC deve ser incrementado uma unidade;
Se J=1:
Se JSel=00, então ao valor de PC deve ser adicionado ou decrementado o valor de 6 bits presente no bus Salto. Como esse valor está sob a forma de complemento para 2, então pode-se realizar um salto de até 31 posições de memória para a frente, ou até 32 para trás;
Se JSel=10,01 então se N ou Z (respectivamente) estiverem inactivos, incrementa-se o PC 1 unidade; se estiverem activos deve ser adicionado ou decrementado ao PC o valor presente nos 6 bits do bus Salto. Pode assim efectuar-se um salto condicional de até +31 ou -32 posições de memória.
4 C
ONJUNTO DEI
NSTRUÇÕESO conjunto de instruções que se pretende implementar está contido na tabela seguinte. Para cada instrução indica-se o seu OpCode, sua designação simbólica, descrição e tipo de endereçamento utilizado.
Notação usada na tabela: o símbolo (RA) representa o conteúdo do registo RA e M[(SR)] denota a posição de memória cujo endereço é dado pelo conteúdo do registo RB. Note que, nas instruções de salto, o campo Offset está sob a forma de complemento para 2.
OpCode Operação Descrição Endereçamento
0000 LD DR, M[RB] (DR) ← M[(RB)] Registo
0001 STR M[RB], RA M[(RB)] ← (RA) Registo
0010 SUM DR, RA, RB (DR) ← (RA)+(RB) Registo
0011 SUB DR, RA, RB (DR) ← (RA)-(RB) Registo
0100 CMP RA, RB (RA) – (RB) Registo
0101 DEC DR (DR) ← (DR)-1 Registo
0110 INC DR (DR) ← (DR) + 1 Registo
0111 MOVI DR, Op (DR) ← Op Imediato
1000 SUMI DR, SR, Op (DR) ← (SR)+Op Imediato
1001 CMPI Op, SR Op – (SR) Imediato
1010 SWAP DR, M[RB] (DR) ↔ M[(RB)] Registo
1011 DECM DR, M[RB] (DR) ← M[(RB)]-1 Registo
1100 INCM DR, M[RB] (DR) ← M[(RB)]+1 Registo
1101 JMP Offset (PC) ← (PC) + Offset Relativo
1110 JN Offset N: (PC) ← (PC) + Offset Relativo
As instruções são armazenadas na memória das instruções de acordo com os seguintes formatos:
Endereçamento Imediato:
4 2 2 4
OpCode DR SR OP
Endereçamento por Registo:
4 2 2 2 2
OpCode DR RA RB 00
Endereçamento Relativo (saltos condicionais e incondicionais):
4 2 6
OpCode 00 Offset
em que:
OpCode (4 bits): código da operação a executar;
DR (2 bits), SR (2 bits), RA(2 bits), RB(2 bits): qualquer destes campos pode valer 00(R0), 01(R1), 10(R2) ou 11(R3);
Op (4 bits): operando (constante) de 4 bits;
Offset (6 bits): constante em formato de complemento para 2 que indica o diferencial usado no salto relativo.
5 P
ROJECTO5.1 Conjunto de Instruções e palavra de controlo (1ª Semana)
Apresente um exemplo para cada uma das 16 instruções tabeladas, a forma como ela deve ser armazenada na memória de instruções, e qual a palavra de controlo necessária para que essa instrução seja executada na arquitectura computacional proposta. Por exemplo:
Instrução Representação na Memória de Instruções
DA RW Asel BSel MA MB FS MW J Jsel
SUM R3,R1,R2 1001 11 01 10 00 11 1 01 10 0 0 110 0 0 XX
CMP R3,M[R0] 0111 00 11 00 00 XX 0 11 00 0 1 111 0 0 XX
JZ –13 1110 00 110011 X 0 X X X X X 0 1 10
5.2 Descodificador de Instruções (1ª Semana)
Como foi indicado anteriormente, o Descodificador de Instruções deverá ser do tipo hardwired, ou seja, deverá ser implementado como um circuito combinatório. Projecte e implemente no Xilinx o Descodificador de Instruções. Crie um símbolo a partir do circuito implementado.
5.3 Controlo de Salto (1ª Semana)
Projecte e implemente no Xilinx o bloco de Controlo de Salto e o Program Counter. Crie um símbolo a partir do circuito implementado. Pode utilizar os circuitos que lhe parecerem mais adequados.
5.4 Computador de Ciclo Único (2ª Semana)
Utilize o Xilinx para ligar todos os módulos disponíveis (Memórias, UP, UC, Controlo de Salto...) de forma a obter o Computador de Ciclo Único.
6 F
ASEAMENTO ER
ELATÓRIOO trabalho decorrerá durante 2 semanas, devendo ser discutido e apresentado a correr no computador durante a segunda aula de laboratório. As aulas de laboratório destinam-se, essencialmente, à correcção de erros e bugs e a tirar dúvidas que possam existir sobre a implementação do projecto. O trabalho deverá ser planeado e desenvolvido, tanto quanto possível, fora do horário de laboratório, sendo impossível realizá-lo sem qualquer preparação prévia e apenas durante as 3 horas de laboratório. Tendo em consideração estes aspectos, o trabalho desenvolvido será avaliado por fases. Assim:
1ª SEMANA
• No início da 1ª aula de laboratório os alunos deverão apresentar o trabalho correspondente às alíneas 5.1, 5.2 e 5.3, quer a nível de preparação e projecto (diagrama de blocos e tabelas), quer a nível de implementação em Xilinx. Deverão igualmente ter projectado o Computador de Ciclo Único (5.4) a nível de diagrama de blocos.
• O trabalho será apresentado, testado e discutido (através de questões individuais dirigidas). 2ª SEMANA
• No início da 2ª aula deverão trazer todo o projecto implementado em Xilinx, de preferência completamente funcional, mas admite-se que poderão existir alguns erros que necessitem da ajuda do docente (não esquecer que existem aulas de dúvidas).
• O trabalho será apresentado, testado e discutido (através de questões individuais dirigidas).
• No fim da aula deverá ser entregue o relatório (que deverá vir impresso e pronto a entregar com excepção de pontos referentes a alterações de última hora e conclusões). Este deverá ser sucinto (dispensam-se introduções teóricas alongadas), mas terá obrigatoriamente que conter:
o Um diagrama de blocos geral do Computador de Ciclo Único e um esquemático de todas as unidades projectadas;
o As etapas de projecto e as opções gerais e tomadas no desenho das diversas unidades; o A resposta a todas as questões colocadas no enunciado;
o O programa que requerido no seu computador;
o Conclusões e um anexo indicando alterações de última hora.
7 A
VALIAÇÃO DOS ESQUEMASDe modo a testar-se o funcionamento do descodificador e Unidade de controlo de salto, estes esquemas deverão seguir as seguintes regras:
O esquema do descodificador de instruções dever-se-á chamar decod_inst o Este esquema deverá ter o seguinte sinal de entrada:
DI_instrucao(11:0)
o Os alunos deverão tomar a decisão acerca dos sinais de saída que deverão existir e quais os seus nomes (estas decisões contaro para a avaliação final do trabalho).
o Para testar e verificar o descodificador de instruções os alunos deverão usar o ficheiro de teste teste_di.tbw
O esquema do controlo de salto dever-se-á chamar controlo_salto o Este esquema deverá ter os seguintes sinais de entrada:
CLK J JSel(1:0) Offset(5:0) N Z
o Os alunos deverão tomar a decisão acerca de dos sinais de saída que deverão existir e quais os seus nomes (estas decisões contarão para a avaliação final do trabalho).
o Para testar e verificar o descodificador de instruções os alunos deverão usar o ficheiro de teste teste_c_salto.tbw
O computador de ciclo Único será avaliado na 2ª semana. Para tal, serão fornecidas as memorias (dados e instruções). Também será fornecido um documento com as indicações necessárias à programação das memorias e teste do computador de ciclo único.
8 A
VALIAÇÃOA avaliação do projecto será realizada parcelarmente e de acordo com os seguintes pontos:
Relatório com Projecto (10 Val.)
Funcionamento do Descodificador de Instruções (2.5 Val.)
Funcionamento da Unidade de Controlo de Salto (2.5 Val.)
Funcionamento do computador (2.5 Val.)
Programa de implementado (2.5Val.)
9 B
IBLIOGRAFIA[1] M. Morris Mano, Charles R. Kime, “Logic and Computer Design Fundamentals”, Second Edition, Prentice-Hall International, Inc. (Capítulo 8)
[2] N. Horta, J.P. Carvalho, “Microprocessadores – Unidade de Controlo”, Aulas Teóricas, 2005.
[3] A. Parreira, H. Neto, “Introdução ao Editor de Esquemáticos e Simulador Lógico da Xilinx TM” (Manual de Introdução ao Xilinx), Aulas de Laboratório, 2005.