Baixe o app para aproveitar ainda mais
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.
Compartilhar