18
Aulas 7-8 – Programação do Processador Cleópatra em Hardware LABORG 29/abril/2008 César Augusto Missio Marcon Ney Laert Vilar Calazans

Aulas 7-8 – Programação do Processador Cleópatra em Hardware LABORG 29/abril/2008 César Augusto Missio Marcon Ney Laert Vilar Calazans

Embed Size (px)

Citation preview

Page 1: Aulas 7-8 – Programação do Processador Cleópatra em Hardware LABORG 29/abril/2008 César Augusto Missio Marcon Ney Laert Vilar Calazans

Aulas 7-8 – Programação do Processador Cleópatra em

Hardware

LABORGLABORG

29/abril/2008

César Augusto Missio Marcon

Ney Laert Vilar Calazans

Page 2: Aulas 7-8 – Programação do Processador Cleópatra em Hardware LABORG 29/abril/2008 César Augusto Missio Marcon Ney Laert Vilar Calazans

2Fernando Moraes / César Marcon / Ney Calazans

Obtendo os Arquivos

1. Ir na página da disciplina, parte de Conteúdos, no dia da Aula 7 e baixar o material do link Arquivos da Aula 7.

2. Descompactar o arquivo em uma área de trabalho. Use um disco local (por exemplo, C:\Temp\Aula7-8\), pois discos de rede como do disco H: da área de usuários podem gerar problemas para o software de síntese ISE.

Page 3: Aulas 7-8 – Programação do Processador Cleópatra em Hardware LABORG 29/abril/2008 César Augusto Missio Marcon Ney Laert Vilar Calazans

3Fernando Moraes / César Marcon / Ney Calazans

Conteúdo dos Arquivos

Ler atentamente o conteúdo do arquivo README_First.txt, que explica a natureza dos arquivos contidos no pacote da Aula. São ao todo 17 arquivos além do README_First.txt: – 1 programa em linguagem de montagem da Cleópatra (Incremento.asm)

– 1 arquivo de configuração de pinos do FPGA da placa Nexys (top.ucf)

– 15 arquivos VHDL contendo:

» a descrição do Processador Cleópatra (9 arquivos: Cleopatra.vhd, PacoteCleopatra.vhd, BlocoDeControle.vhd, Datapath.vhd, Ula.vhd, Flags.vhd, Registrador.vhd, DecodificadorEscrita.vhd, DecodificadorLeitura.vhd)

» a descrição da memória RAM do processador e de seu conteúdo (MemoriaRam.vhd e obj_code.vhd, respectivamente)

» um testbench simples, apenas para simulação (Tb.vhd)

» a descrição de um hardware que habilita o processador a realizar operações de entrada e saída mapeadas em memória (2 arquivos: Decoder.vhd e Display.vhd)

» um arquivo que instancia todo o sistema composto pelo Processador Cleópatra, sua memória e periféricos (Top.vhd)

Page 4: Aulas 7-8 – Programação do Processador Cleópatra em Hardware LABORG 29/abril/2008 César Augusto Missio Marcon Ney Laert Vilar Calazans

4Fernando Moraes / César Marcon / Ney Calazans

Prototipando o Processador

Ao prototipar o sistema fornecido na placa Nexys, tem-se acesso, a partir do software executando na Cleópatra, aos seguintes periféricos e controles:

Leitura do endereço 0FDH (LDA #0FDh)

Escrita no endereço0FDh (STA #0FDh)

Leitura do endereço 0FCH (LDA #0FCh)

Inicialização do Sistema (Reset)

Escrita no endereço

0FFh (STA #0FFh)

Escrita no endereço

0FEh (STA #0FEh)

Page 5: Aulas 7-8 – Programação do Processador Cleópatra em Hardware LABORG 29/abril/2008 César Augusto Missio Marcon Ney Laert Vilar Calazans

5Fernando Moraes / César Marcon / Ney Calazans

Prototipando o Processador

1. Antes de prototipar o processador, é necessário gerar o código objeto do programa a executar. O arquivo Incremento.asm tem um programa exemplo de acesso aos periféricos

2. Abra o arquivo Incremento.asm no Ambiente Cleosim.

3. Selecione a opção de geração automática de listagem VHDL (Opção de menu Listagem VHDL – garanta que o item de menu VHDL está selecionado, ou seja, precedido por um “tick”, )

4. Monte o programa (Tecla F5, ou opção de menu Executar Montar). O texto “Sucesso” deve aparecer no canto inferior esquerdo da tela do ambiente.

Page 6: Aulas 7-8 – Programação do Processador Cleópatra em Hardware LABORG 29/abril/2008 César Augusto Missio Marcon Ney Laert Vilar Calazans

6Fernando Moraes / César Marcon / Ney Calazans

Prototipando o Processador

5. Sair do ambiente. No diretório onde está o arquivo Incremento.asm deve agora existir um arquivo Incremento.txt, gerado pelo processo de montagem do Cleosim. Abra este arquivo com um editor de texto que tenha capacidade de seleção de colunas (tal como TextPad, Word ou mesmo o editor de textos do ISE). Abra também o arquivo obj_code.vhd no mesmo editor.

6. Selecione apenas as colunas 4 e 5 de todo o arquivo Incremento.txt (são exatamente 88 linhas) e copie para as colunas 19 e 20 das linhas 18 a 105 do arquivo obj_code.vhd. Isto completa o processo de criação dos arquivos para síntese. A próxima transparência mostra o resultado do processo.

Page 7: Aulas 7-8 – Programação do Processador Cleópatra em Hardware LABORG 29/abril/2008 César Augusto Missio Marcon Ney Laert Vilar Calazans

7Fernando Moraes / César Marcon / Ney Calazans

Prototipando o Processador

Page 8: Aulas 7-8 – Programação do Processador Cleópatra em Hardware LABORG 29/abril/2008 César Augusto Missio Marcon Ney Laert Vilar Calazans

8Fernando Moraes / César Marcon / Ney Calazans

Prototipando o Processador - Síntese: ISE

7. Abrir a ferramenta ISE( ) e criar um novo projeto (File New Project), como abaixo. Crie o projeto no seu diretório de trabalho do disco local.

Xilinx ISE 9.1i.lnk

Cuidado: Não podem haver espaços em branco no nome do caminho para o projeto, nem no nome do projeto

Page 9: Aulas 7-8 – Programação do Processador Cleópatra em Hardware LABORG 29/abril/2008 César Augusto Missio Marcon Ney Laert Vilar Calazans

9Fernando Moraes / César Marcon / Ney Calazans

Definição do FPGA da Placa de Prototipação

8. Para a placa que estamos trabalhando, o FPGA é um dispositivo da família Spartan3, escolher na janela como abaixo:

Características do dispositivo FPGA

Page 10: Aulas 7-8 – Programação do Processador Cleópatra em Hardware LABORG 29/abril/2008 César Augusto Missio Marcon Ney Laert Vilar Calazans

10Fernando Moraes / César Marcon / Ney Calazans

Inclusão dos Fontes

9. A próxima janela é para criar arquivos-fonte novos. Ignorar e selecionar Next

10. A próxima janela é para inclusão dos fontes, incluir todos os VHDL exceto Tb.vhd, e incluir o top.ucf.

Copia para o diretório do projeto ISE e preserva os arquivos originais

• Ao final há um resumo do projeto(com detecção da função do UCF):

Page 11: Aulas 7-8 – Programação do Processador Cleópatra em Hardware LABORG 29/abril/2008 César Augusto Missio Marcon Ney Laert Vilar Calazans

11Fernando Moraes / César Marcon / Ney Calazans

Ambiente ISE – Browser do Projeto

11. Se todos os passos de criação foram corretamente seguidos, deve-se ter:

Top do projeto

Page 12: Aulas 7-8 – Programação do Processador Cleópatra em Hardware LABORG 29/abril/2008 César Augusto Missio Marcon Ney Laert Vilar Calazans

12Fernando Moraes / César Marcon / Ney Calazans

Passo 1 da Síntese: Síntese Lógica

Transforma o VHDL em portas lógicas

12.Para executar, dá-se duplo click em “Synthesize XST”

– Ao final tem-se o relatório no lado direito

257 LUTs usadas, das 3840 do FPGA

33 pinos de E/S

Tamanho total do Circuito: ~68K portas

A RAM da Cleópatra!

Page 13: Aulas 7-8 – Programação do Processador Cleópatra em Hardware LABORG 29/abril/2008 César Augusto Missio Marcon Ney Laert Vilar Calazans

13Fernando Moraes / César Marcon / Ney Calazans

Passo 2 da Síntese: Síntese Física

Realiza o posicionamento e as conexão no FPGA

13.Dar duplo click em “Implement Design”

14.Após terminada a síntese, dar duplo click em “Generate Programming File”

Após este passo, deve ter sido gerado na raiz do projeto um arquivo de nome “Top.bit” que contém a implementação do hardware sob a forma de um arquivo de programação do FPGA da placa Nexys. O próximo passo é descarregar o conteúdo deste arquivo para o FPGA da placa Nexys via o cabo USB.

Page 14: Aulas 7-8 – Programação do Processador Cleópatra em Hardware LABORG 29/abril/2008 César Augusto Missio Marcon Ney Laert Vilar Calazans

14Fernando Moraes / César Marcon / Ney Calazans

Baixar para o FPGA (1/3)

1. Executar o software ExPort ( ), ligar a placa, conectar o cabo USB e inicializar a cadeia. Resultado aparece abaixo.

Shortcut to ExPort.exe.lnk

Page 15: Aulas 7-8 – Programação do Processador Cleópatra em Hardware LABORG 29/abril/2008 César Augusto Missio Marcon Ney Laert Vilar Calazans

15Fernando Moraes / César Marcon / Ney Calazans

Baixar para o FPGA (2/3)

2. Marcar a check-box do chip de denominado XCF02S (para fazer não programar ele ao programar o FPGA, bypass). O resultado vê-se abaixo.

Page 16: Aulas 7-8 – Programação do Processador Cleópatra em Hardware LABORG 29/abril/2008 César Augusto Missio Marcon Ney Laert Vilar Calazans

16Fernando Moraes / César Marcon / Ney Calazans

Baixar para o FPGA (3/3)

3. Clicar na opção Browse ao lado do FPGA (ícone de nome XC3S200) e achar/selecionar o arquivo de nome somador.bit, gerado pela síntese. Em seguida escolha a opção Program Chain. Pronto!

Page 17: Aulas 7-8 – Programação do Processador Cleópatra em Hardware LABORG 29/abril/2008 César Augusto Missio Marcon Ney Laert Vilar Calazans

17Fernando Moraes / César Marcon / Ney Calazans

Testando o projeto no FPGAAntes de testar o programa na placa, deve-se estudar seu código

fonte, para entender como este funciona:

Descrição geral da funcionalidade do programa Incrementa.asm

1. Inicialmente, o programa fica em laço, executando suas 3 primeiras instruções repetidamente, até que o botão BTN1 seja pressionado;

2. Após BTN1 ser pressionado uma vez, o programa sai do laço inicial, lê o valor das 8 chaves SW7-SW0, escreve este valor nos leds e inicializa um contador de 16 bits com o valor lido nos 8 bits inferiores, e 00h nos 8 bits superiores;

3. Imediatamente a seguir, o programa entra em um laço onde se incrementa o contador, exibe-se o valor do contador nos 4 mostradores de 7 segmentos e chama-se uma rotina que aguarda cerca de 130 mil ciclos de relógio (2 milissegundos a 50MHz) e retorna, para dar tempo do usuário ver os valores;

4. Se o usuário apertar BTN2 a qualquer momento, o programa simplesmente pára a execução e suspende a operação do processador (instrução hlt).

Page 18: Aulas 7-8 – Programação do Processador Cleópatra em Hardware LABORG 29/abril/2008 César Augusto Missio Marcon Ney Laert Vilar Calazans

18Fernando Moraes / César Marcon / Ney Calazans

Testando o projeto no FPGA

Depois de entender como o programa funciona, interaja com o projeto na placa, inicializando o sistema (com BTN0) inicializando o contador com um valor, disparando o processo de contagem (com BTN1) e suspendendo a contagem com BTN2.

A FAZER, VALENDO NOTA:

Elabore um programa que inicialmente espere que o usuário aperte a tecla BTN3. A partir daí o programa calcula os termos da Série de Fibonacci (0, 1, 1, 2, 3, 5, 8, 13, ...) da seguinte maneira: Inicialmente (depois que BTN3 foi apertada a primeira vez), o programa mostra o primeiro termo (0) nos mostradores de sete segmentos e aguarda que o usuário aperte BTN2. Quando isto acontecer, o programa calcula e mostra o segundo termo, e aguarda que o usuário aperte BTN2 novamente. E assim por diante...

Mostre o programa funcionando ao professor até o dia 12/05/2008 e envie o projeto completo até este mesmo dia por e-mail ao professor.