Buscar

sap 1 fpga

Prévia do material em texto

IMPLEMENTAÇÃO DO MICROPROCESSADOR SAP-1 EM FPGA PARA 
USO EDUCACIONAL 
Giovanni DIAS (1); Cleonilson PROTÁSIO (2) 
Instituto Federal do Maranhão, IFMA, Av. Getulio Vargas, 4, Monte Castelo. São Luís/MA, 65030-000, (98)32189046 
(1) IFMA, e-mail: giovamec@hotmail.com 
(2) IFMA, e-mail: protasio@ieee.org 
 
RESUMO 
O estudo de microprocessadores em cursos de Engenharia Elétrica é um dos pilares fundamentais para a 
formação acadêmica do estudante. Do ponto de vista didático, a escolha da arquitetura que será utilizada 
como base de ensino é uma das etapas mais importantes, na qual deve ser escolhida de forma criteriosa, 
sempre observando a capacidade didática que essa arquitetura pode oferecer. Nesta pesquisa descreve-se o 
projeto e a construção de um microprocessador de arquitetura simples, mas capaz de oferecer o entendimento 
geral das operações dos microprocessadores. A arquitetura projetada é baseada no microprocessador SAP-1 
(Simple As Possible) por contribui significativamente para o aprendizado dos conceitos e operações básicas 
dos microprocessadores. O projeto do SAP-1 foi baseado em FPGA utilizando a linguagem VHDL para a 
construção dos módulos básicos e conexões. Após, o SAP-1 foi implementado na placa de desenvolvimento 
Altera Cyclone II DSP e realizado simulações utilizando as ferramentas do QUARTUS II para comprovar seu 
funcionamento. 
Palavras-chave: Microprocessadores, FPGA, VHDL, Projeto de Sistemas Digitais. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1. INTRODUÇÃO 
Um dos principais usos da computação é o de encontrar soluções para problemas complexos de diversas 
áreas de conhecimento principalmente nas áreas de ciências exatas e engenharia. Sendo que grande parte das 
soluções encontradas estão baseadas em algum tipo de sistema digital. A escolha do tipo de processador que 
será utilizado durante a fase de implementação do sistema, definirá diversas características, tais como: tempo 
de resposta, consumo de potencia e eficiência (NASCIMENTO, 2006). 
Sistemas digitais baseados em microprocessadores apresentam maior flexibilidade e menor custo de 
implementação, porém perdem em desempenho por não serem especificamente projetado para a tarefa a qual 
está sendo utilizado. Para contornar essa desvantagem, faz-se a utilização dos ASICs (Application Specific 
Integrated Circuits). Estes dispositivos, por serem projetados somente para uma dada atividade específica, 
apresentam desempenho superior aos microprocessadores. Entretanto, possuem alto custo de construção, que 
às vezes é inviável do ponto de vista econômico (MESQUITA, 2002). 
Uma solução intermediária que representa a flexibilidade dos microprocessadores com o desempenho dos 
ASICs são os FPGAs (Field Programmable Gate Arrays). FPGAs são, em geral, mais lentos que os ASICs, 
mas têm a vantagem de poderem ter seu hardware reprogramado em campo (e.g. correção de erros e melhoria 
do sistema após implementação) (HAUCK; DEHON, 2008). 
Os FPGAs combinam a flexibilidade de dispositivos programáveis (como PLDs e microprocessadores de 
finalidade geral) com o desempenho dos ASICs. Com a tecnologia FPGA, pode-se construir blocos de 
processamentos independentes de acordo com a aplicação, ou seja, uma arquitetura mais otimizada 
(BROWN, 1997). Atualmente, há diferentes métodos para implementação de um sistema que utiliza a 
arquitetura FPGA. HDLs (hardware description languages) são os métodos mais viáveis devido a resultar 
em tempo de implementação reduzido e baixo custo de projeto (JANISZEWSKI, 1999). Uma das mais 
importantes HDLs é a VHDL (VHSIC3 Hardware Description Language) é uma linguagem usada para 
facilitar o design (projeto/concepção) de circuitos digitais em FPGAs e ASICs. 
Neste artigo será apresentada a implementação do microprocessador de 8-bits, denominado de SAP-1 o qual 
é amplamente utilizado para o ensino de microprocessadores em todo o mundo e proposto por Malvino 
(1985). Todo projeto e concepção foram baseados em FPGA cuja programação foi escrita em VHDL. 
Pretende-se assim contribuir para o ensino de técnicos e engenheiros eletricistas transpondo a teoria dos 
microprocessadores para a prática de forma simples e didática. 
2. ARQUITETURA 
O microprocessador SAP-1 foi originalmente projetado para fins educacionais em Malvino (1985) e é 
amplamente utilizada em cursos técnicos e de engenharia por ter uma arquitetura bastante simples, mas que 
contribui significativamente para o aprendizado de conceitos e operações básicas de microprocessadores. Sua 
arquitetura pode ser vista na Figura 1. A principal finalidade do SAP-1 consiste em introduzir todas as idéias 
cruciais além da operação do microprocessador sem sobrecarregá-lo com detalhes desnecessários. Entretanto, 
até mesmo um simples microprocessador como o SAP-1 engloba muitos conceitos avançados. 
 
Figura 1. Arquitetura do Microprocessador SAP-1. 
O SAP-1 possui um caminho de dados composto de registradores de 8 bits, memória de 16 bytes que serve 
para armazenamento de dados e instruções, ULA de 8 bits com operação de soma e subtração e uma unidade 
de controle responsável pela execução e sincronismo das instruções. 
 
2.1 COMPONENTES PRINCIPAIS 
As operações dos blocos funcionais do microprocessador SAP-1 são descritas como se segue: 
 
• Contador de Programa 
O programa é armazenado no começo da memória com a primeira instrução no endereço binário 0000, a 
segunda instrução no endereço 0001, a terceira no endereço 0010 etc. O contador de programa, que é parte da 
unidade de controle, conta de 0000 a 1111. Sua tarefa é enviar à memória o endereço da instrução seguinte a 
ser buscada e executada. 
• REM (Registrador de Endereços de Memória) 
O registrador de endereços na memória (REM) é parte da memória do microprocessador. Durante um 
processamento no microprocessador, o endereço no contador de programa é retido no REM. O REM aplica 
este endereço de 4 bits à RAM, onde uma operação de leitura é realizada. 
 
• Memória RAM 
Durante um processamento do microprocessador, a RAM recebe endereços de 4 bits do REM e é executada 
uma operação de leitura. Desta maneira, a instrução ou palavra de dados armazenada na RAM é colocada no 
barramento para uso em algum outro componente do microprocessador. 
• Registrador de Instruções 
O registrador de instruções constitui parte da unidade de controle. Para buscar uma instrução da memória o 
microprocessador realiza uma operação de leitura da memória. Isto coloca o conteúdo do local de memória 
endereçado no barramento. Ao mesmo tempo, o registrador de instruções é preparado para carregamento na 
próxima transição positiva de relógio. O conteúdo do registrador de instruções é dividido em dois nibbles 
(meios-bytes). O nibble superior é uma saída de dois estados que vai diretamente para unidade de controle. O 
nibble inferior é uma saída de três estados que é lida no barramento quando necessário. 
• Unidade de Controle 
Bloco responsável pelo sincronismo do microprocessador, ou seja, determina como os registradores se 
comportarão na próxima transição positiva de clock. 
• Acumulador 
O acumulador (A) é um registrador de memória intermediária que armazena respostas intermediárias durante 
um processamento no microprocessador. O acumulador tem duas saídas. A saída de dois estados vai 
diretamente para ULA. A saída de três estados vai ao barramento. 
• Unidade Lógica Aritmética (ULA) 
Bloco responsável em realizar operações aritméticas (Adição e Subtração). 
• Registrador de Saída 
Bloco utilizado para fornecer ao mundo exterior o resultado do processamento do microprocessador. 
 
2.3 INSTRUÇÕES 
 
O conjunto de instruções do SAP-1 se resume em apenas cinco, sendo duas aritméticas, duas de 
deslocamento de dados e uma de parada, conforme resumo na Tabela 1. 
 
Mnemônicos Operação Op CódigoLDA Carrega os dados da RAM no Acumulador 0000 
ADD Soma os dados da RAM com o Acumulador 0001 
SUB Subtrai os dados da RAM com o Acumulador 0010 
OUT Carrega os dados do Acumulador no registrador de saída 1100 
HLT Para o processamento 1111 
 
Tabela 1. Conjunto de instruções do SAP-1. 
 
O formato das instruções do SAP-1 é dividido em duas seções de 4-bits, conforme mostrado na Figura 2. Os 
quatro MSBs especificam o código da instrução (opcode) e os quatro LSBs especificam o endereço. 
 
Figura 2. Formato das instruções do SAP-1. 
2.3 CICLO DE PROGRAMAÇÃO 
O ciclo de programação do microprocessador funciona em dois ciclos bem distintos: o ciclo de busca (fetch) 
e o ciclo de execução. Cada ciclo tem três períodos de clock totalizando assim, seis períodos para cada 
instrução. Todo sincronismo do SAP-1 é controlado pela unidade de controle (ver Figura 1) que fornece uma 
palavra de controle composta por 12 bits conforme mostrada a Figura 3, em que: 
 
CP: Incrementa o contador de programa nas transições positivas do clock, para que o mesmo 
possa ler a próxima instrução. 
EP: Habilita a saída do contador de programa. 
LM: Habilita carregamento do REM. 
CE: Habilita memória RAM. 
LI: Habilita carregamento do registrador de instruções. 
EI: Habilita saída do registrador de instruções. 
LA: Habilita carregamento do acumulador. 
EA: Habilita saída do acumulador. 
SU: Determina o tipo de operação da ULA (adição ou subtração). 
EU: Habilita saída da ULA. 
LB: Habilita carregamento do registrador B. 
LO: Habilita carregamento do registrador de saída. 
 
 
Figura 3. Palavra de controle do SAP-1. 
 
O ciclo de busca é representado por 3 (três) estados (T1, T2 e T3) conforme Tabela 2. 
 
Estado Sinais de Controle 
T1 5E3H 
T2 BE3H 
T3 263H 
Tabela 2. Sinais de controle no ciclo de busca. 
 
No ciclo de execução, as transferências de dados dependem da instrução particular que está sendo executada. 
Na Tabela 3 são mostrados os sinais de controle durante a execução das instruções do SAP-1. De acordo com 
a Tabela 3, cada instrução apresenta três estados (T4, T5 e T6) com sua respectiva palavra de controle. 
 
Instruções Estado Sinais de Controle 
T4 1A3H 
T5 2C3H LDA 
T6 3E3H 
T4 1A3H 
T5 2E1H ADD 
T6 3C7H 
T4 1A3H 
T5 2E1H SUB 
T6 3CFH 
T4 3F2H 
T5 3E3H OUT 
T6 3E3H 
Tabela 3. Sinais de controle das instruções no ciclo de execução. 
3. RESULTADOS EXPERIMENTAIS 
Para implementar o projeto proposto, todas as unidades do microprocessador foram codificadas em VHDL, 
simuladas no ambiente QUARTUS II e testadas em FPGA de forma separada. Uma vez verificada a 
funcionalidade de cada unidade, estas foram reunidas formando assim a arquitetura do microprocessador 
proposto. 
 
A seguir é visualizado o teste de cada unidade do microprocessador: 
 
Unidade de controle: Na Figura 4 é mostrada a simulação em ambiente Quartus II da instrução LDA com os 
respectivos sinais de controle gerados durante a execução da instrução. De acordo com o resultado da 
simulação podemos observar que 12 sinais de controle referente a instrução LDA controla todos os blocos 
básicos do microprocessador. 
 
ULA: Na Figura 5 é ilustrada a operacionalidade da unidade lógica aritmética. Um exemplo de 
processamento realizado na ULA é visto na Figura 5 a qual mostra a seguinte operação: 
 
100000002+000010002=100010002 
(12810+810=13610) 
100000012-000010002=011110012 
(12910-810=12110) 
Contador de Programa: De acordo com a Figura 6, temos o funcionamento do contador de programa sendo 
que o mesmo é incrementado quando o sinal CP for alto e quando o sinal EP for alto o conteúdo e retido. 
 
Registrador de Endereços de Memória (REM): Observando a Figura 7 podemos analisar o funcionamento 
do REM, que basicamente funciona como um registrador de 8bits, ou seja, quando o sinal LM for alto o 
REM armazena a informação. 
Registrador de Instruções: Na Figura 8 é ilustrado o funcionamento do registrador de instruções, de acordo 
com a figura podemos observar que os 8 bits armazenados são divididos em 2 blocos de sinais (Q e S) sendo 
que os sinais de Q que são os 4 bits MSB vão diretamente para unidade de controle onde será decodificada a 
instrução e o sinais de S que são os 4 bits LSB vão diretamente para a memória para a busca do dado a ser 
processado. 
 
 
Registrador B: Usado para operações aritméticas. Na Figura 9 é mostrado o funcionamento do registrador 
B. Basicamente funciona do mesmo modo do REM. 
 
Acumulador: Na Figura 10 é mostrado o funcionamento do acumulador. De acordo com a figura o 
acumulador possui 2 saídas (T e TQ) que fornece os dados para a operação na ULA. E o sinal A é de tristate 
pois tem comunicação com o barramento de 8 bits. 
 
Para definir a freqüência ideal de operação do microprocessador, foi feita a simulação de acordo com os 
parâmetros de configuração gerados pelo ambiente Quartus II, conforme vistos na Figura 11, em que: 
TSU (Time Setup) - Tempo de preparação do sinal de entrada. 
TCO (Time Clock-to-output-delay) – Tempo de resposta na saída. 
TH (Time Hold) - Tempo de manutenção para o sinal de entrada. 
Para garantir uma resposta satisfatória do microprocessador adotou-se um período de clock acima do tempo 
de atraso TCO em virtude que períodos abaixo do especificado por esse parâmetro ocasionaria em uma 
operação aleatória do microprocessador. Foi testado o funcionamento em freqüências de 70MHz, 60MHz, 
50MHz e 25MHz, obtendo assim melhor resposta na freqüência de 25MHz, definindo assim a freqüência de 
operação do microprocessador. Os dados após a síntese completa em FPGA são mostrados na Tabela 4. 
 
Resultado da Síntese Configurações 
Flow Status Successful-Fri May - 15 - 2009 
Quartus II Version 6.0 Build 178 04/27/2006 
Revision Name Microprocessador 
Top-Level Entity Name Microprocessador 
Family Cyclone II 
Device EP2C70F672C6 
Total logic elements 429 / 68416 
Total registers 92 
Total Pins 30 
 
Tabela 4. Resultado da Síntese FPGA 
 
 
Após a construção e simulação de todos os módulos básicos do microprocessador foi realizado a construção 
do microprocessador como um todo, ou seja, todos os blocos foram unidos formando assim a arquitetura 
proposta conforme ilustra a Figura 12, sendo que está arquitetura foi testada e emulada na placa de 
desenvolvimento da Altera Cyclone II, obtendo os mesmos resultados observados durante a simulação em 
Quartus II do microprocessador. 
 
 
Figura 4. Sinais da unidade de controle para a instrução LDA. 
 
 
 
 
Figura 5. ULA. 
 
 
 
 
 
 
Figura 6. Funcionamento do contador de programa. 
 
 
 
 
Figura 7. Funcionamento do REM. 
 
 
 
 
Figura 8. Registrador de Instruções. 
 
 
 
 
Figura 9. Registrador B. 
 
 
Figura 10. Acumulador. 
 
 
Figura 11. Parâmetros de configuração. 
 
 
 
 
Figura 12. Arquitetura construída 
 
4. CONCLUSÕES 
Este artigo apresentou a implementação da arquitetura do microprocessador SAP-1 em FPGA. Para reduzir a 
complexidade do desenvolvimento do processador, a arquitetura foi decomposta e implementada em módulos 
separados, aos quais foram inseridos sinais de testes para simular sua funcionalidade e controlabilidade. 
Todos os módulos foram codificados em VHDL e simulados no ambiente QUARTUS II. De acordo as 
respostas aos estímulos de teste durante a simulação, conclui se que o projeto funcionou de acordo com teoria 
de funcionamento proposta por Malvino (1985). Cada módulo foi implementado em um kit de 
desenvolvimento para FPGA Cyclone II comprovando seu funcionamento de acordo com o resultado da 
simulação. 
REFERÊNCIAS 
 
BROWN, S.; ROSE, J. FPGA and CPLD architectures: A tutorial. IEEE Des. Test, IEEE Computer Society 
Press, Los Alamitos, CA, USA, v. 13, n. 2, p.42–57, 1996. 
 
HAUCK. S, DEHON, A. Reconfigurable Computing: The Theory and Practice of FPGA Based 
Computation. Morgan Kaufmann/Elsevier, 2008. 
 
JANISZEWSKI, I. Baraniecki, R., Siekierska, K. A reusable microcontroller core’s design. In: IEEE, 
VHDL International Users Forum Fall Workshop (VIUF ’99). Proceedings… pp. 14-21,1999. 
 
MALVINO, A. P. Microcomputadores e Microprocessadores. Editora McGraw-Hill, SP, 1985. 
 
MESQUITA, D. G. (2002). Contribuições para reconfiguração parcial, remota e dinâmica de FPGA. 
Dissertação (mestrado), Pontifícia Universidade Católica do Rio Grande do Sul, Porto Alegre, RS, Brasil. 
 
NASCIMENTO P. S. B, Lima. E. M, Seixas. J. L. Sistemas reconfiguráveis: novo paradigma para o 
desenvolvimento de aplicações de computação massiva de dados. Recife, PE: Universidade Federal de 
Pernambuco, 2006. 
 
AGRADECIMENTOS 
Ao apoio financeiro do Conselho Nacional de Desenvolvimento Científico e Tecnológico – CNPq – Brasil. 
Ao Instituto Federal do Maranhão pelo apoio e ao Laboratório de Sistemas Digitais (LaDiG-DEE) pelos 
equipamentos de testes e kits de desenvolvimentos.

Outros materiais