180 likes | 299 Views
César Augusto Missio Marcon Ney Laert Vilar Calazans. LABORG. Aulas 7-8 – Programação do Processador Cleópatra em Hardware. 29/abril/2008. Obtendo os Arquivos. 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 .
E N D
César Augusto Missio MarconNey Laert Vilar Calazans LABORG Aulas 7-8 – Programação do Processador Cleópatra em Hardware 29/abril/2008
Obtendo os Arquivos • 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. • 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.
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)
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: Escrita no endereço0FFh (STA #0FFh) Escrita no endereço0FDh (STA #0FDh) Escrita no endereço0FEh (STA #0FEh) Inicialização do Sistema (Reset) Leitura do endereço 0FDH (LDA #0FDh) Leitura do endereço 0FCH (LDA #0FCh)
Prototipando o Processador • 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 • Abra o arquivo Incremento.asm no Ambiente Cleosim. • 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”, ) • 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.
Prototipando o Processador • 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. • 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.
Prototipando o Processador - Síntese: ISE • 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. Cuidado: Não podem haver espaços em branco no nome do caminho para o projeto, nem no nome do projeto
Definição do FPGA da Placa de Prototipação • Para a placa que estamos trabalhando, o FPGA é um dispositivo da família Spartan3, escolher na janela como abaixo: Características do dispositivo FPGA
Inclusão dos Fontes • A próxima janela é para criar arquivos-fonte novos. Ignorar e selecionar Next • 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):
Ambiente ISE – Browser do Projeto • Se todos os passos de criação foram corretamente seguidos, deve-se ter: Top do projeto
Passo 1 da Síntese: Síntese Lógica Transforma o VHDL em portas lógicas • 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 A RAM da Cleópatra! Tamanho total do Circuito: ~68K portas
Passo 2 da Síntese: Síntese Física Realiza o posicionamento e as conexão no FPGA • Dar duplo click em “Implement Design” • 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.
Baixar para o FPGA (1/3) • Executar o software ExPort ( ), ligar a placa, conectar o cabo USB e inicializar a cadeia. Resultado aparece abaixo.
Baixar para o FPGA (2/3) • 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.
Baixar para o FPGA (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!
Testando o projeto no FPGA Antes 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 • Inicialmente, o programa fica em laço, executando suas 3 primeiras instruções repetidamente, até que o botão BTN1 seja pressionado; • 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; • 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; • 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).
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.