Você está na página 1de 16

Projeto de um Processador Digital (Microcontrolador)

- Proposições possíveis
● Quanto ao tipo de processador:
● Processador de propósito geral (orientado a programa)
● Processador de propósito mais específico (quase sempre orientado a
programa)
● Processador dedicado (quase sempre não orientado a programa)
● Quanto a conjunto de instruções
● RISC ou CISC
● Quanto a localização de programas e dados
● Harvard ou Von Neumann
● Quanto ao tempo de execução de suas instruções
● De ciclo de máquina único
● De múltiplos ciclos de máquina

1
Concepção a partir do conhecimento da Arquitetura do
seu Conjunto de Instruções (ISA)

2
Concepção a partir do conhecimento da Arquitetura do
seu Conjunto de Instruções (ISA)
● Operações envolvidas na execução de qualquer instrução
● Busca, Decodificação e Execução

● Sintaxe de instruções de alto nível


● Var3 := Var1 + Var2
● Sintaxe de baixo nível (linguagem Assembly)
● LD Ra,[Var1] ; Ra := [Var1]
● LD Rb,[Var2] ; Rb := [Var2]
● ADD Ra, Rb ; Ra := Ra + Rb
● (ADD Ra, Rb, d ; onde d diz o destino, d=0 é Ra, d=1 é Rb)
● (ADD Rc, Ra, Rb ; onde Rc é destino e Ra e Rb são fontes de dados)
● ST [Var3], Ra ; [Var3] := Ra
● ST [Var3], Rc ; Opção quando Rc é usado como destino no ADD.

3
Concepção a partir do conhecimento da Arquitetura do
seu Conjunto de Instruções (ISA)
● Exemplo de possíveis representações em linguagem de máquina:
● Caso sejam considerados as referências:
● Para identificação dos registradores Ra = 01 e Rb = 10
● Como endereços de Var1 = 0000, de Var2 = 0001 e de Var3= 0011
● Como códigos de instruções LD = 0001, ADD = 0011 e ST = 0010
● Para o formato da instrução:
Código de operação Operando 1 Operando 2
(4 bits) (rRg - 2 bits) (rRg – 2bits ou EndMem – 4 bits)

● 0001 01 0000 ; LD Ra,[Var1] (EndVar1 = 0000)


● 0001 10 0001 ; LD Rb,[Var2] (EndVar2 = 0001)
● 0011 01 10- - ; ADD Ra, Rb
● 0010 01 0011 ; ST [Var3, Ra] (EndVar3 = 0011)

4
Concepção a partir do conhecimento da Arquitetura do
seu Conjunto de Instruções (ISA)
● Exemplo de possíveis representações em linguagem de máquina:
● Para identificação dos registradores Ra = 01 e Rb = 10 e Rc = 11
● Como endereços de Var1 = 0000, de Var2 = 0001 e de Var3= 0011
● Como códigos de instruções LD = 0001, ADD = 0011 e ST = 0010
● Formatos das instruções:
Código de Oper. destino Operando fonte 1 Oper. fonte 2 (Rs2 de 2 bits
operação de 4 bits (Rd de 2 bits) (Rs1 - 2 bits) ou EndMem de 4 bits)
Código de Operando fonte ou destino Operando 2
operação de 4 bits (Rs ou Rd de 2 bits) (EndMem de 4 bits)

● 0001 01 0000 ; LD Ra,[Var1] (EndVar1 = 0000)


● 0001 10 0001 ; LD Rb,[Var2] (EndVar2 = 0001)
● 0011 11 0110 ; Para opção ADD Rc, Ra, Rb
● 0010 11 0011 ; Para a opção ST [Var3], Rc
5
Concepção a partir do conhecimento da Arquitetura do
seu Conjunto de Instruções (ISA)
● Sintaxes mais comuns na representação de instruções de microcontroladores
● Exemplos de instruções sem nenhum operando
● NOP
● SLEEP
● Exemplos de instruções com 1 operando
● INC Rd
● NOT Rd
● Exemplos de instruções com 2 operandos
● ADD Rd, Rs
● XOR Rd, Rs
● Exemplos de instruções com 3 operandos
● ADD Rd, Rs1, Rs2

6
Modelo conceitual básico para microcontroladores
orientados a programa (de uso geral ou específico)

7
Operações típicas de movimentação em um datapath

De transferência de endereço de memória Operativas através da ALU com De transferência de registrador de


para registrador de trabalho dados armazenados em registradores trabalho para endereço de memória

8
Operações típicas de movimentação em um datapath

De transferência de registrador de T De transferência de registrador de


trabalho para registrador de saída entrada para registrador de trabalho

9
Dicas
● Modelo de FSMD

Ref. Vahid

10
Dicas
● Modelo correspondente para a FSM

Ref. Vahid

11
Projeto RTL de um microcontrolador de 16 bits:
Atividades propostas
● Parte 1
● Definição do conjunto de instruções (a serem sugeridas)
● Definição do formato das instruções com 32 bits (a ser sugerido)
● Propor uma MdED (FSMD) para o microcontrolador
● Descrever a máquina de estado de dados por ASMChart
● Procurar identificar blocos que possam compor o Datapath

● Sugestões: ler o capítulo 8 do Vahid, o capítulo 9 do Hamblen e o capítulo 5 do


Navabi.
● Procurar conhecer os conjuntos de instruções dos microcontroladores
PIC 16F84 e Atmega328p e a proposição da ISA RISC V.

12
Projeto RTL de um microcontrolador de 16 bits:
Sugestões para definição do conjunto de instruções
● Instruções de operação com registradores:
● ADD, SUB, AND, OR, XOR, SHL, SHR Exs: ADD rd, rs1, rs2
● SHR Rd, Rs1, DImd
● Instruções de operação com registradores e dado imediato
● ADDI, SUBI, ANDI, ORI, XORI Ex: ADDI rd, rs1, DImd
● Instruções de transferência entre endereço de memória e registrador
● LD, ST Ex: LD rd, [EndMD]
● Instruções de desvio condicional
● JEQ, JLT Ex. JEQ Rd, Rs1, EndMP
● Instruções de desvio incondicional, chamada e retorno de subrotina (função)
● JMP, CALL, RET Ex. JMP EndMP
● Instruções de transferência entre registradores de E/S e registradores de trabalho
● IN, OUT Exs. IN rd, RegIn
● OUT rs1, RegOut

13
Projeto RTL de um microcontrolador de 16 bits:
Sugestões para definição do formato das instruções
● Formato das instruções, todas com 32 bits:
31 28 23 19 15 3 0
Ident. Op Code Rd Rs1 Complemento Rs2
de 3 de 5 de 4 de 4 de 12 bits de 4
bits bits bits) bits) bits)
DImed

EndMD

EndMP

● Registradores de trabalho (todos de 16 bits):


● R0, R1, R2, R3, R4 R0 sempre terá como valor todos os bits em 0 (zero)
● Registradores de E/S (todos de 16 bits)
● RIN, ROUT
● Registrador de Endereço de retorno (de 16 bits)
● RR

14
Atividades
● Parte 2
● Construir o Datapath
● Identificar sinais de controle e de status para o conjunto
Datapath/Controlador
● Transformar a FSMD em uma FSM que possa controlar o fluxo de
dados

15
Atividades
● Parte 3
● Descrever por HDL o controlador, seguindo modelo a ser sugerido
● Descrever por HDL os blocos construtivos do Datapath
● Descrever por HDL o Datapath, instanciando seus blocos construtivos
● Instanciar o Datapath e o controlador no Microcontrolador
● Sugestões: procurar fazer simulações e testes de todos os módulos
projetados no Quartus II
● Escrever um pequeno programa em Assembly para testes e simulações.
● Sugestões*: usar as chaves do kit DE2 para entrada de instruções e dados
e os LEDS da DE2 para visualizar os resultados. Usar push-buttons ou
chaves da DE2 para sinais de clock e de comando necessários a
sincronização das operações desejadas. * Se possível usar a DE2.

16

Você também pode gostar