Buscar

Processadores Embarcados e NIOS II

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 21 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 21 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 21 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

LÓGICA PROGRAMÁVEL 
AULA 6 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Prof. Ederson Cichaczewski 
 
 
2 
CONVERSA INICIAL 
Nesta aula, abordaremos os conceitos de processadores embarcados, o 
processador NIOS II e o microprocessador em VHDL ‒ além de sua 
arquitetura, sua operação e seu teste. 
Em lógica programável é possível fazer o projeto completo de um 
microprocessador, chamado de processador embarcado. 
A ferramenta de desenvolvimento permite realizar o projeto de duas 
formas: 
1. utilizando um bloco IP core; 
2. utilizando a descrição VHDL. 
TEMA 1 – PROCESSADOR EMBARCADO 
1.1 Processador embarcado em FPGA (field programmable gate array) 
Um sistema embarcado realiza um conjunto de tarefas predefinidas, 
geralmente com requisitos específicos. 
Por meio da lógica programável, pode-se aperfeiçoar um projeto, além 
de reduzir o tamanho, os recursos computacionais e o custo do produto. 
Com a implementação em hardware da lógica programável baseada em 
FPGA (field programmable gate array), é possível alcançar maiores eficiência e 
rapidez na execução de determinadas tarefas. 
1.1.1 Processamento digital 
O processamento digital de sinais DSP (digital signal processor) é 
necessário para realizar operações aritméticas intensas, tais como 
multiplicação, adição e divisão. 
Essas operações, dependendo de seu tamanho e complexidade, podem 
ser executadas por dois tipos de hardwares: 
 processadores DSP tradicionais; 
 dispositivos FPGA (field programmable gate array). 
Quando for necessário utilizar alta velocidade de processamento, a 
opção de hardware deve ser um dispositivo FPGA. 
O uso de FPGA é mais vantajoso que o de DSP, porque ele: 
 
 
3 
 é mais rápido; 
 tem menor consumo; 
 possui mais recursos para simulação e teste; 
 implementa algoritmos DSP com uso paralelo de recursos, como blocos 
MAC; 
 implementa algoritmos em pipeline, ou seja, todas as partes do algoritmo 
são executadas ao mesmo tempo. 
1.1.2 Sistemas SoC 
Para a implementação em hardware de um sistema embarcado, 
diferentes soluções podem ser adotadas. 
Para aplicações com produção em grande escala, usa-se o sistema SoC 
(system-on-chip, "sistema em uma única pastilha"). 
A arquitetura de hardware de um SoC pode conter um ou mais 
processadores, memórias, interfaces para periféricos e blocos IP dedicados 
(intellectual property cores). 
1.1.3 IP cores (intellectual property cores) 
Consistem em blocos de hardware que executam tarefas especificas e 
que são definidos de modo a permitir o seu reuso em diferentes sistemas. 
A tecnologia SOPC possibilita projetar dispositivos FPGA (field 
programmable gate array) com memória, elementos lógicos e um processador 
IP core em sua arquitetura interna. 
Os processadores IP cores disponíveis em FPGAs podem ser 
classificados em: 
 hardware core: possui maior desempenho, mas não é reconfigurável. 
Ex: Altera Excalibur ARM; 
 software core: é reconfigurável. Ex: NIOS II. 
TEMA 2 – PROCESSADOR NIOS II 
O NIOS II é o processador software core da Altera. Ele pode ser 
implementado em alguns dispositivos FPGA (field programmable gate array) da 
 
 
4 
Altera por meio dos softwares Quartus II e Qsys Builder (também chamado de 
SOPC Builder em versões anteriores da ferramenta). 
A figura a seguir apresenta a arquitetura do processador software core 
NIOS II da Altera. 
Figura 1 ‒ Arquitetura do processador software core NIOS II da Altera 
 
Todos os componentes estão interligados no barramento interno de 
dados chamado Avalon Switch Fabric. 
Os blocos de interface de memória permitem acessar chips de memórias 
externas, e as interfaces serial e paralela permitem aplicações de E/S. 
O bloco JTAG debug permite o download de programas e o debug com 
breakpoints e watches. 
A figura a seguir apresenta o fluxo de projeto SOPC com FPGA. 
Figura 2 ‒ Fluxo de projeto SOPC com FPGA 
 
 
 
5 
São necessárias três ferramentas de software para o projeto: 
 SOPC/Qsys Builder: configura o hardware do processador core; 
 NIOS II IDE: configura o software do processador core; 
 Quartus II: compila o HDL e configura o FPGA. 
Para o programa da aplicação que roda no NIOS II, utiliza-se as 
linguagens C ou C++. 
2.1 Exemplo prático de processador SOPC 
O processador NIOS II será configurado na família FPGA Cyclone II, 
dispositivo EP2C35F672C6. Ele é constituído de: 
 uma CPU de 32 bits; 
 duas portas PIO (paralela de E/S): uma porta de entrada para oito 
chaves tipo pushbuttons e uma porta de said́a para oito LEDs; 
 uma memória on-chip (RAM) com capacidade de 4 Kbytes arranjados 
em palavras de 32 bits; 
 uma interface "JTAG UART" para comunicação com o computador host. 
1º Passo 
Primeiro é preciso criar um novo projeto no Quartus II, e depois ir ao 
menu Tools  Qsys/SOPC Builder para fazer a configuração do processador 
NIOS II. 
Deverão ser adicionados os seguintes itens da janela "Component 
Library": 
 Item Library  Processors  Nios II Processor; 
 Item Memories and Memory Controllers  On-Chip  On-Chip Memory 
(RAM or ROM); 
 Item Peripherals  Microcontroller Perpherals  PIO (Parallel IO); tem 
de ser adicionado duas vezes: um para a entrada e outro para a saída; 
 Item Interface Protocols  Serial  JTAG UART. 
A especificação final do processador é apresentada a seguir. 
 
 
 
6 
Figura 3 ‒ Especificação final do processador NIOS II 
 
 
Salve a configuração com o nome "Nios_system1", clique na aba 
“System Generation” e, depois, no botão "Generate". 
2º Passo 
Nessa etapa, é necessário criar um diagrama de blocos no Quartus II 
para o NIOS II. 
 crie um novo "Block Diagram"/"Schematic File" (.bdf) e insira o 
processador NIOS II gerado ("Nios_system1"); 
 insira os terminais de entrada e saída; 
 compile e programe no dispositivo o arquivo .sof. 
O projeto completo do processador NIOS II em arquivo .bdf é 
apresentado a seguir. 
 
 
 
7 
Figura 4 ‒ Projeto completo do processador NIOS II em arquivo .bdf 
 
3º Passo 
Nessa fase é preciso projetar o programa no NIOS II IDE Eclipse. Para 
isso, você deve: 
 Criar um novo projeto do tipo “Nios II Application and BSP from 
Template” no software NIOS II IDE; 
 Especificar o arquivo de configuração do processador; 
 Dar um nome para o projeto e deixar marcado o template “Hello World”; 
 Compilar o projeto; 
 Clicar com o botão direito do mouse no nome do projeto, ir até “Run As” 
e clicar em “Nios II Hardware”. 
Estando com o kit FPGA conectado via "JTAG", o programa rodará e, 
então, será vista a mensagem de retorno "Hello World" no console. 
A figura a seguir apresenta a tela de projeto do ambiente NIOS II IDE. 
 
 
 
8 
Figura 5 ‒ NIOS II IDE com o projeto "Hello World" 
 
 
Saiba mais 
Acesse <https://www.altera.com/en_US/pdfs/literature/tt/tt_my_first_nios
_sw.pdf> para ver um exemplo completo de configuração e execução utilizando 
o ambiente NIOS II IDE, também chamado NIOS II SBT (software build tools), 
parte do NIOS II EDS (embedded design suite). Acesso em: 26 nov. 2017. 
TEMA 3 – MICROPROCESSADOR VHDL 
Agora, faremos a completa descrição de um microprocessador didático. 
Assim, entenderemos as partes que o compõem: a arquitetura, os modos de 
endereçamento e o conjunto de instruções. 
Alguns conceitos sobre a operação de microprocessadores em geral são 
pré-requisitos para a melhor compreensão deste conteúdo. 
A arquitetura permite analisar situações triviais em um 
microprocessador, como: 
 operações dos sinais de controle com a memória; 
 operações de instruções que acessam a memória; 
 instruções de desvios; 
 chamadas de sub-rotinas. 
O conjunto de instruções prevê modos de endereçamento direto, indireto 
e imediato. 
 
 
9 
3.1 Exemplo prático: microprocessador em VHDL 
A seguir é apresentado o diagrama de blocos do processador. 
Figura 6 ‒ Diagrama de blocos do processador VHDL 
 
Osbarramentos de dados e endereços são de 8 bits. São previstos 
cinco registradores: 
 Acumulador (Acc): armazena o resultado das operações realizadas com 
a ALU (arithmetic logic unit, "unidade lógica e aritmética"), recebe dados 
da memória e fornece dados para a ALU; 
 Condições; 
 Página (Pg): em conjunto com os 4 bits menos significativos da instrução 
forma um ponteiro para 16 endereços de memória. Esses 16 endereços 
operam como registradores auxiliares do microprocessador; 
 Contador de programa (Pc): indica o endereço da instrução, e o seu 
valor pode ser incrementado (execução de código), alterado (instruções 
 
 
10 
de desvio) e armazenado na memória ou recuperado da memória 
(instruções de sub-rotinas); 
 Ponteiro da pilha (St): aponta para o local da memória que armazena o 
endereço de retorno da chamada seguinte nas operações com sub-
rotina. 
A figura a seguir apresenta os modos de endereçamento do 
processador. 
Figura 7 ‒ Modos de endereçamento do processador VHDL 
 
3.2 Conjunto de instruções 
Na tabela a seguir são apresentadas as instruções previstas para carga, 
armazenamento e aritméticas. 
 
 
 
11 
Tabela 1 ‒ Conjunto de instruções de carga, armazenamento e aritméticas 
 
Na tabela, 
 [Pc+1] = conteúdo do endereço de memória apontado pelo valor do 
registrador Pc + 1; 
 [Pg & n] = conteúdo do endereço de memória apontado pelo registrador 
Pg concatenado com os 4 bits menos significativos da instrução n; 
 [[Pg & n]] = endereçamento indireto; o conteúdo do endereço de 
memória [Pg & n] armazena o endereço efetivo em que será realizada 
uma operação de carga ou armazenamento. 
Na tabela a seguir são apresentadas as instruções previstas para 
desvio, desvio condicional e sub-rotina. 
Tabela 2 ‒ Conjunto de instruções de desvio, desvio condicional e sub-rotina 
 
 
 
12 
3.3 Operações de leitura e escrita na memória 
Os ciclos de leitura e escrita demoram quatro ciclos de clock cada uma. 
Há duas máquinas de estado: uma para borda de subida (mestre) e uma 
para borda de subida (escrava) do clock. 
A figura a seguir apresenta um diagrama das conexões entre o 
processador e a memória. 
Figura 8 ‒ Diagrama de conexões entre o processador e a memória 
 
A figura a seguir apresenta os ciclos de leitura e escrita. 
Figura 9 ‒ Ciclos de leitura e escrita na memória com quatro ciclos cada 
 
As linhas “mrq_n”, “rd_n” e “wr_n” são ativas em niv́el baixo, e estão 
associadas às seguintes informações: endereço válido no barramento, ciclo de 
leitura e ciclo de escrita. No ciclo de leitura, o dado fornecido pela memória 
deve estar válido na borda de subida do terceiro periódo do sinal de clock. No 
 
 
13 
ciclo de escrita, o dado fica válido para o armazenamento na memória durante 
o intervalo de tempo que “mrq_n” está ativo. 
A figura a seguir apresenta em detalhes as operações das duas 
máquinas de estados. 
Figura 10 ‒ Máquinas de estados para os ciclos de leitura e escrita 
 
 
A máquina controlada pela borda de subida (mestra) executa as 
operações conforme a instrução decodificada pelo processador. Caso uma 
instrução necessite uma leitura ou escrita na memória, o sinal “Ler” ou 
“Escrever” é ativado, e a máquina escrava aciona os sinais de controle da 
memória em quatro passos definidos pelo sinal “Passo_rd_wr”. O sinal 
“Passo_rd_wr” é monitorado pela máquina mestra, que executa as operações 
necessárias na borda de subida do sinal de clock. 
A figura a seguir apresenta a descrição VHDL da máquina mestre. 
Figura 11 ‒ Descrição VHDL da máquina mestre 
 
 
 
 
 
14 
A figura a seguir apresenta a descrição VHDL da máquina escrava. 
Figura 12 ‒ Descrição VHDL da máquina escrava 
 
A operação das máquinas pode ser entendida na busca de uma 
instrução na memória. O ciclo tem inićio com os comandos da linha 5 da 
máquina mestre; na borda de subida de “ck”, o sinal “Ler” é ativado e o valor do 
registrador “Pc” é armazenado no registrador “end_mem” ligado ao barramento 
de endereços. Com o sinal “Ler” ativado, a máquina escrava leva os sinais de 
controle da memória “mrq_b” e “rd_b” para o niv́el baixo na borda de descida 
de “ck”, conforme descrição da máquina escrava. O estado da máquina 
escrava, definido pelo sinal “Passo_rd_wr”, é também alterado. No estado “2” 
da máquina escrava, a máquina mestre realiza a leitura do dado, armazenando 
o valor presente no sinal “Dt” (barramento de dados) no registrador “Ir” 
(registrador de instruções) na borda de subida de “ck”, conforme descrição da 
máquina mestre. O ciclo termina quando a máquina mestre detecta que a 
máquina escrava atingiu o estado “3”. 
TEMA 4 – OPERAÇÃO DO MICROPROCESSADOR VHDL 
A figura a seguir apresenta o diagrama de blocos completo do 
microprocessador. 
 
 
 
15 
Figura 13 ‒ Diagrama de blocos do microprocessador 
 
São previstos os seguintes registradores e circuitos de seleção: 
 "Ir": armazena a instrução em execução que foi obtida no ciclo de busca; 
 "Pc": contador de programa associado a um somador e um circuito de 
seleção para operações em endereços relativos ao endereço atual 
apontado pelo contador de programa; 
 "St": semelhante ao "Pc", mas para sub-rotinas, tendo associada uma 
unidade de soma e subtração, pois "St" é decrementado na chamada e 
incrementado no retorno da sub-rotina. 
4.1 Operação da instrução load indirect acc (LDiA,n) 
O diagrama de tempo da instrução LDiA,n (load indirect acc) é 
apresentado na figura a seguir. 
 
 
 
16 
Figura 14 ‒ Diagrama de tempo da instrução LDiA,n 
 
Após a busca da instrução, o registrador “Ir” armazena o valor “2” nos 4 
bits mais significativos. 
O valor 78 está na posição 34, cujo endereço é apontado pela 
concatenação do registrador de página, valor "3", com os 4 bits menos 
significativos da instrução (valor "2"). 
A figura a seguir apresenta a descrição VHDL da instrução LDiA,n. 
Figura 15 ‒ Descrição VHDL da instrução LDiA,n 
 
 As instruções são divididas em dois passos: “Passo_op_cod=0” e 
“Passo_op_cod=1”. 
O primeiro passo ("Passo_op_cod=0") é ler o dado do endereço 32 e 
armazenar no registrador "Aux". De acordo com a linha 4, o sinal “Ler” é 
ativado e o valor “32” é transferido para o registrador “End_mem” na borda de 
subida de “ck”. Na linha 5, o valor presente no barramento de dados (valor 
contido no endereço “32”) é armazenado no registrador “Aux” na borda de 
subida de “ck”. A operação de leitura é finalizada com “Passo_rd_wr” igual a 
“3”. 
O segundo passo ("Passo_op_cod=1") é ler o dado do endereço 34 e 
armazenar no registrador Acc. O contador de programa é incrementado na 
 
 
17 
linha 10 para a busca da próxima instrução. O sinal “pc_inc” é a said́a de um 
circuito somador cujo valor é “Pc+1”. A segunda operação de leitura é 
finalizada com “Passo_rd_wr” igual a “3”. 
A figura a seguir apresenta as unidades do processador envolvidas na 
instrução LDiA,n para "Passo_op_cod=0". 
Figura 16 ‒ Unidades envolvidas na instrução LDiA,n para Passo_op_cod=0 
 
 A figura a seguir apresenta as unidades do processador envolvidas na 
instrução LDiA,n para "Passo_op_cod=1". 
Figura 17 ‒ Unidades envolvidas na instrução LDiA,n para Passo_op_cod=1 
 
 
 
 
18 
TEMA 5 – TESTE DO MICROPROCESSADOR VHDL 
A descrição é composta por uma entidade "cpu_8bits" e um pacote 
"cpu_aux". 
A memória com instruções do programa de teste é uma "ram_8x8", que 
recebe os dados de um arquivo que contém os mnemônicos das instruções. 
A entidade "conjunto_5" interliga esses componentes, permitindo 
visualizar a execução do código contido na memória RAM. 
No início da execução do teste, o arquivo é lido, e os mnemônicos são 
interpretados e convertidos no hexadecimal correspondente. 
Durante a conversão, os dados são armazenados na entidade da 
memória RAM e a execução do programa testeé realizada após o término da 
leitura do arquivo. 
A figura a seguir apresenta o diagrama do esquema de conexões do 
teste do microprocessador. 
Figura 18 ‒ Diagrama do teste do microprocessador 
 
 A figura a seguir apresenta a descrição VHDL da entidade "conjunto_5", 
que interliga o processador e a memória. 
 
 
 
19 
Figura 19 ‒ Descrição VHDL da entidade conjunto_5 
 
 A figura a seguir apresenta o fluxo e as unidades envolvidas na 
execução da instrução "Call,mm" ("Passo_op_cod=1"). 
Figura 20 ‒ Unidades envolvidas na instrução Call,mm (Passo_op_cod=1) 
 
 
 
20 
A figura a seguir apresenta a descrição da parte do código com o 
controle do sinal “st_novo” na instrução “Call,mm”, parte da ALU (arithmetic 
logic unit, "unidade lógica aritmética"). 
Figura 21 ‒ Descrição VHDL do controle do sinal st_novo na instrução Call,mm 
 
Saiba mais 
Acesse o seguinte link para ver um detalhamento completo da operação 
do microprocessador VHDL, por Roberto D'Amore: 
<http://www.ele.ita.br/~damore/vhdl/v012_exemplos/cpu1/>. Acesso em: 26 
nov. 2017. 
 
FINALIZANDO 
Nesta aula, vimos conceitos de processadores embarcados, o 
processador NIOS II e o microprocessador em VHDL ‒ além de sua 
arquitetura, sua operação e seu teste. 
A compreensão do conteúdo desta aula é fundamental para a sua 
formação em lógica programável. 
 
 
 
21 
REFERÊNCIAS 
COSTA, C. Projetos de circuitos digitais com FPGA. 3. ed. São Paulo: Érica, 
2014. Capítulo 7. 
D’AMORE, R. VHDL: descrição e síntese de circuitos digitais. 2. ed. Rio de 
Janeiro: LTC, 2012. cap. 17 (apêndice). 
MY FIRST NIOS II Software: tutorial. Altera. San Jose, CA: Altera 2012. 
Disponível em: <https://www.altera.com/en_US/pdfs/literature/tt/tt_my_first_nios
_sw.pdf>. Acesso em: 26 nov. 2017.

Continue navegando