Skip to content

LordWalace/PBL_SD2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

148 Commits
 
 
 
 
 
 

Repository files navigation

Programação Assembly e Construção de Driver de Software.

Universidade Estadual de Feira de Santana (UEFS)

Disciplina: Sistemas Digitais (TEC499) - 2025.2, UEFS

Equipe: Luis Felipe Carneiro Pimentel e Walace de Jesus Venas


Índice


1. Descrição e Objetivo do Projeto

Este projeto integra um sistema completo de processamento de zoom de imagens em escala de cinza (8 bits/pixel) para o kit DE1-SoC. A lógica central reside na divisão funcional:

  • O HPS (ARM) cuida da interface com o usuário, da manipulação de arquivos BMP, comandos via menu interativo e comunicação com o hardware através de Assembly.
  • O FPGA (Cyclone V) implementa o coprocessador dedicado, recebendo comandos, processando algoritmos de zoom, e retornando dados e flags de estado. O objetivo é criar uma solução robusta, modular e expansível, documentada de forma que futuros usuários/engenheiros possam compreender, replicar, manter e aprimorar.

2. Levantamento de Requisitos e Solução

Requisitos Gerais

  • Manipulação correta de imagens BMP e integração com o coprocessador.
  • Implementação de ISA enxuta para operações de zoom, replicação e decimação.
  • Comunicação eficiente entre HPS e FPGA via barramentos PIO (Parallel Input/Output), com controle de delays e sinalização de status.
  • Interface de usuário clara e facilitada.
  • Resultados visíveis em monitor VGA.

Solução Adotada

  • HPS e FPGA conectados via sistema Qsys(Platform Designer).
  • Separação total entre lógica de interface/controle (HPS) e lógica de processamento (FPGA).
  • Estrutura modular, favorecendo manutenção e expansão.

Diagrama de Interconexão HPS ↔️ FPGA via AXI BRIDGE

Mais detalhes sobre os requisitos e solução específica em cada componente estão nos seus respectivos READMEs:
README HPS
README FPGA


3. Arquitetura Geral da Solução

    U[Usuário]
    M[Menu de Alta Nível (HPS)]
    BMP[BMP Loader]
    ASM[API Assembly]
    PIO[Registradores PIO]
    FPGA[Coprocessador FPGA]
    VGA[Monitor VGA]

    U --> M
    M --> BMP
    M --> ASM
    ASM --> PIO
    PIO --> FPGA
    FPGA --> VGA
    FPGA --> PIO
    PIO --> ASM

Descrição:

  • O usuário interage com o menu HPS.
  • Imagens BMP são selecionadas e carregadas pelo HPS.
  • API Assembly monta e envia comandos via registradores PIO.
  • FPGA recebe a instrução, processa e retorna status/resultados.
  • A imagem processada é visualizada via monitor VGA.

4. Estrutura dos Módulos (HPS e FPGA)

HPS (ARM)

  • Interface de navegação via menus.
  • Gerenciamento de arquivos BMP.
  • API Assembly para controle direto do hardware e sincronização.

Mais detalhes: README HPS

FPGA (Cyclone V)

  • Implementação da ISA customizada.
  • FSM e Datapath para zoom e manipulação de VRAM.
  • Flags de status para monitoramento e depuração.

Mais detalhes: README FPGA


5. Instalação, Configuração e Integração

Resumo dos passos principais:

  1. Instalar ambiente Linux e ferramentas ID/compilação HPS.
  2. Realizar upload do bitstream do FPGA (projeto pronto e validado).
  3. Instalar, compilar e executar o software HPS conforme instruções individuais.
  4. Verificar conexão física HPS ↔ FPGA.
  5. Testar operações iniciais (carregar imagem, zoom, reset, status).

Para instruções detalhadas de instalação/configuração, acesse:


6. Fluxo de Dados Entre HPS e FPGA

Resumo do protocolo:

  • HPS monta instrução (LOAD, STORE, ZOOM) em formato de 32 bits.
  • A instrução é escrita em registrador PIO na FPGA.
  • Pulso de enable ativa o processamento.
  • FPGA processa, atualiza flags de status, retorna resultado.
  • HPS lê flags, exibe resultados para usuário e/ou manipula imagem conforme saída.

Diagrama de sinalização PIO (ver detalhes em cada README):

Sinal Direção Finalidade Largura
instruct Entrada Palavra de comando 32 bits
enable Entrada Disparo de processamento 1 bit
flags Saída Status do processamento 4 bits
data_out Saída Dados lidos pelo HPS 8 bits

7. Testes, Resultados e Validação

  • Testes unitários e integrados validaram todas operações existentes.
  • Erros identificados e corrigidos incluem dimensionamento inadequado de imagens, erros de sincronização entre HPS/FPGA e limites de zoom atingidos corretamente.
  • Resultados detalhados com logs, imagens e exemplos estão disponíveis nas seções específicas dos respectivos READMEs.

8. Referências Cruzadas: Documentação Específica

  • Documentação HPS (interface, menus, API Assembly): README HPS
  • Documentação FPGA (coprocessador, ISA, blocos internos): README FPGA
  • Este README serve como visão geral e guia para integração entre os dois sistemas.

Para dúvidas sobre integração, arquitetura e fluxograma do sistema, consulte os documentos da referência.
Para detalhes de implementação, operação ou depuração, acesse os READMEs específicos de HPS e FPGA acima.

About

Problema 2(P1) - TEC499 (MI - Sistemas Digitais)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors