Relatório do Modulo Integrador de Sistemas Digitais
Por: Alisson Vilas Verde • 1/6/2017 • Relatório de pesquisa • 2.382 Palavras (10 Páginas) • 397 Visualizações
Problema #1 - Debaixo do Capô
Abstract. The IP-SoC company presented a proposal for the development of an ALTERA FPGA system using the Nios II processor, in order to evaluate the level of programming complexity and device limitations using assembly language associated with the processor. In this sense, a solution adopted to evaluate the processor for an elaboration of five test programs, with the aid of the open source software JNIOSEmu. These programs tested various functionalities such as factorial calculation until a vector ordering using the Bubble Sort algorithm. In this sense, the main objective of this report is to present the results obtained from the evaluation of Nios II, and to present a methodology is not a development of the project.
Resumo. A empresa IP-SoC apresentou uma proposta de desenvolvimento de um sistema em FPGA ALTERA usando o processador Nios II, com o objetivo de avaliar o nível de complexidade de programação e limitações do dispositivo usando linguagem assembly associada ao processador. Neste sentido, a solução adotada para avaliar o processador foi a elaboração de cinco programas de teste, com o auxílio do software open source JNIOSEmu. Estes programas testes possuem diversas funcionalidades como cálculo de fatoriais até a ordenação de vetores usando o algoritmo de Bubble Sort. Nesse sentido, o presente relatório tem como objetivo principal apresentar os resultados obtidos da avaliação do Nios II, bem como apresentar a metodologia utilizada no desenvolvimento do projeto.
1. Introdução
A pedido da empresa IP-SoC, que atua no desenvolvimento de IP-cores digitais licenciáveis, que tem o intuito de investigar tecnologias de processadores para dispositivos reconfiguráveis, foi feito um levantamento de informações a respeito do projeto de sistemas em FPGAs ALTERA, usando o processador NIOS.
Com o propósito de entrar no mercado de plataformas embarcadas, inteirar-se sobre à tecnologia do processador NIOS e analisar o seu potencial uso aplicado em soluções tecnológicas, foram solicitados softwares de testes que devem ter como foco principal fazer uma avaliação do processador NIOS, utilizando o software open source JNIOSEmu como auxiliador.
O produto desenvolvido pela força tarefa deve avaliar o processador NIOS utilizando os parâmetros de nível de complexidade de programação e limitações do dispositivo, a partir do desenvolvimento de uma serie de rotinas de códigos, para isso foram desenvolvidos os seguintes programas de teste:
- Gerador da sequência de Fibonacci (recursivo);
- Ordenação de vetor usando o algoritmo Bubble Sort;
- Cálculo do fatorial de um número de inteiro (recursivo);
- Geração de números primos;
- Cálculo da potência de um número inteiro
O trabalho está dividido da seguinte forma: a 2ª seção apresenta a base teórica que fundamentou a elaboração do produto final, a 3ª seção conta como foi o andamento da implementação dos programas de teste, além disso descreve e discute as decisões tomadas no desenvolvimento dos programas, bem como seu funcionamento mais detalhado. Por fim a seção 4 apresenta as conclusões deste projeto.
2. Fundamentação teórica
2.1 Assembly
O assembly surgiu em meados dos anos 50 quando os computadores ainda eram movidos a válvula. Ela é uma linguagem de programação de baixo nível, uma linguagem entendida por seres humanos para o código de máquina que uma arquitetura de computador específica usa. (PATERSON, 2016)
Cada assembly é específico para uma determinada arquitetura de computador. Em contraste, a maioria das linguagens de programação de alto nível geralmente são portáveis em várias arquiteturas, mas requerem interpretação ou compilação (TANENBAUM, 2007).
O assembly é convertido em código de máquina executável por um programa chamado de assembler. O processo de conversão é chamado de montagem do código-fonte. Assembly usa um mnemônico para representar cada instrução de máquina de baixo nível, que serve para facilitar o entendimento do ser humano, removendo a necessidade de utilizar números o tempo inteiro. (PATERSON, 2016)
Na imagem 1 se encontra um exemplo de uma instrução que realiza a adição de dois números em Assembly, bem como sua respectiva descrição.
[pic 1]
Figura 1 - Instrução de soma do NIOS II
Como dito anteriormente, cada arquitetura tem um assembly diferente. Neste caso, foi utilizado o assembly associado ao processador NIOS II
2.2 Processador Nios II
O Nios II é um processador RICS 32 bits desenvolvido pela ALTERA com arquitetura Harvard. Além disso, o Nios II é um processador do tipo softcore, ou seja, é descrito em linguagem de máquina, o que permite que o mesmo sofra alterações e possa ser sintetizado em dispositivos lógicos programáveis que suportam implementação de hardware, como uma FPGA por exemplo. Esta característica softcore apresenta diversas vantagens, dentre elas está a possibilidade de realizar alterações nas estruturas do processador como a memória. (Chu, 2011)
Dentre as características do Nios II, pode-se citar que ele possui 32 registradores de propósito geral, com instruções e endereçamento de 32 bits. Além disso, o cache é dividido entre endereços de dados e de instruções, sendo possível a configuração do tamanho da memória dedicado para endereçamento e instruções.
[pic 2]
Figura 2: Arquitetura interna do processador Nios II.
Na figura 2 é mostrada a arquitetura interna do Nios, como o sistema de memórias (SDRAM, SRAM e Flash), o núcleo de processamento e os periféricos.
2.3 Software JNIOSEmu
Tendo em vista que o desenvolvimentos dos códigos assemblies foi para o processador Nios II, foi utilizada a ferramenta JNiosEmu (Disponível em: http://stpe.github.io/jniosemu/) como ambiente de trabalho. O JNiosEmu é um ambiente de desenvolvimento e emulador desenvolvido para permitir programação em assembly, facilitando assim a montagem e execução do código. Outro objetivo com o desenvolvimento do JNiosEmu foi permitir programação em Assembly sem a necessidade de conhecimento prévio de um conjunto de ferramentas complexas.
...