Agenda
! Visão Geral sobre Sistemas Embarcados
!
Disciplinas da UFPE!
Disciplinas da UFSC! Proposta de um Currículo em Sistemas
Embarcados
! Estudos de Casos
!
Conversor de cores RGB para YCrCb!
Desenvolvimento de um testbench em SW paratestar um módulo de HW descrito em VHDL
!
Novos Experimentos! Conclusão
Sistemas Embarcados
! Computadores invisíveis em dispositivos
usados diariamente, por exemplo, leitor de música, telefone celular, carros, trens,
equipamentos médicos, etc.
! Um sistema de computador para fins especiais de sistemas embarcados, que faz parte de um sistema maior
! Em breve, o número de dispositivos será maior do que o de seres humanos no planeta
! 40 bilhões de dispositivos em 2020
! 99% de processadores são utilizados em sistemas embarcados
! 4 bilhões de processadores embarcados vendidos no ano passado
! € 70 bilhões do mercado global em 2013, crescimento de 10 - 15% em 2014
o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o
Sistemas Embarcados Estão em Toda Parte
Nossa vida diária depende de sistemas
embarcados
Produto: Sonicare Plus toothbrush.
Microprocessador: 8-bit Zilog Z8.
Até Marte ...
! Produto: NASA's
Mars Sojourner
Rover
! Microprocessador:
8-bit Intel 80C85
5Características dos Sistemas Embarcados
! Uma função
! Dedicado a executar uma única função
! Funcionalidade complexa
! Muitas vezes precisa executar um ou mais algoritmos sofisticados
! Telefone celular, impressora laser ! Restrições
! Baixo custo, baixo consumo de energia, pequeno, rápido, etc.
! Tempo real e reativo
! Continuamente reage a mudanças no ambiente do sistema
! Deve calcular resultados em tempo real, sem atraso
! Sistemas críticos
! Não deve pôr em perigo vidas humanas e do meio ambiente
Agenda
! Visão Geral sobre Sistemas Embarcados
!
Disciplinas da UFPE!
Disciplinas da UFSC! Proposta de um Currículo em Sistemas
Embarcados
! Estudos de Casos
!
Conversor de cores RGB para YCrCb!
Desenvolvimento de um testbench em SW paratestar um módulo de HW descrito em VHDL
!
Novos Experimentos! Conclusão
Universidade Federal de Pernambuco (UFPE)
! http://www.ufpe.br ! Fundada em 1962 ! 3 Campi ! 128 cursos de pós-graduação ! 69 Mestrados Acadêmicos, ! 10 Mestrados Profissionais ! 49 Doutorados ! Cursos de excelência (6 ou 7) ! Física ! Ciência da Computação ! Química ! 99 cursos de graduação ! Aproximadamente 22000 estudantes 8Centro de Informática
! http://cin.ufpe.br ! Fundado em 1971 ! 85 professores
! Curso de pós- graduação desde 1974 ! http://cin.ufpe.br ! Áreas de pesquisa ! Engenharia de Software ! Banco de Dados ! .... ! Sistemas Embarcados ! Sistemas de Comunicação ! Aprox. 1.334 dissertações de 9
10
Computação
• hardware • softwareControle
Comunicações
Engenharia da Computação
Engenharia da Computação
! Curso de graduação de 5 anos, diurno.
! Estrutura Semestral das Disciplinas.
! Formação Profissional Básica:
!
Disciplinas básicas e profissionais.! Formação Especializada:
!
Disciplinas profissionais específicas.! Formação Complementar:
!
Disciplinas de formação complementar ou outrasatividades.
Engenharia da Computação
Engenharia da Computação
Formação Profissional Básica:
disciplinas obrigatórias que compõem a formação comum a todos os alunos 65% do total
Formação Especializada:
disciplinas eletivas com formação específica em áreas de conhecimento 30% do total
Formação Complementar: disciplinas fora do programa do curso, de outros centros, e atividades credenciadas
5% do total
Graduação em Engenharia da Computação
no Centro de Informática da UFPE (CIn/
EC no CIn –Disciplinas Obrigatórias
Matemática Física
Matemática Discreta para Computação Álgebra Vetorial e Linear
para Computação Cálculo
1 Introdução à Programação(120h) Introdução à Computação(45h)
Algoritmos e
Estruturas de Dados
Física 1 Sistemas
Digitais Lógica para Computação
Trabalho de Graduação (150h) Estágio (300h) Infra-Estrutura de Software Infra-Estrutura de Hardware Cálculo 3 Infra-Estrutura de Comunicação Metodologia e Expressão Técnico-Científica
Circuitos Paradigmas de Linguagens Computacionais
Informática Teórica Teoria e Implementação de Linguagens Inglês para Computação Sinais e Sistemas Engenharia de Software e Sistemas Eletrônica Informática e Sociedade Projeto de Hardware-Software-Comunicação Métodos Numéricos
Computacionais Interface Hardware-Software Física 2 Gerenciamento de Dados e Informação Sistemas Inteligentes Princípios de Comunicação História e Futuro da Computação (45) Física 3 Física Experimental 1 Servomecanismo Dispositivos Semicondutores Eletromagnetismo Cálculo 2 Probabilidade e Estatística Disciplinas Eletivas (900h) Computação Controle Comunicações Física Matemática
Melhorando Ensino de Programação….
! Implementação das
funcionalidades dos sistemas
embarcados
! Implementação da
comunicação entre
equipamentos
Para Engenheiros da
Computação….
Aprendendo Programação de um
modo diferente….
! Desenvolvimento de pequenos sistemas que
interagem ou controlam o ambiente
! Comportamento do sistema implementado
através de um programa (software)
! Formação Básica
•
Exatas: ! Matemática ! Física•
Computação: ! Hardware ! Software ! Comunicações•
Engenharia: ! Eletrônica ! Telecomunicações! Formação Especializada
•
Controle e Automação•
Processamento de Sinais•
Comunicações em Computadores•
Segurança de Sistemas•
Sistemas Embarcados
•
Sistemas InteligentesEngenharia da Computação
Engenharia da Computação
Sistemas Embarcados
18! Disciplina: Engenharia de Sistemas Embarcados
! Aprox. 30 estudantes por semestre
! Projeto de sistemas embarcados, Implementação em Software
! Disciplina: Prototipação de Sistemas Digitais
! Aprox. 30 alunos
! Projeto de módulos de hardware com prototipação em FPGA
! Disciplina: Projeto de Sistemas Embarcados
! Aprox. 20 estudantes por semestre
! Assembly, 8051, ARM7, desenvolvimento de hardware em FPGA
Agenda
! Visão Geral sobre Sistemas Embarcados
!
Disciplinas da UFPE!
Disciplinas da UFSC! Proposta de um Currículo em Sistemas
Embarcados
! Estudos de Casos
!
Conversor de cores RGB para YCrCb!
Desenvolvimento de um testbench em SW paratestar um módulo de HW descrito em VHDL
!
Novos Experimentos! Conclusão
Universidade Federal de Santa Catarina (UFSC)
! http://www.ufsc.br ! Fundada em 1962
! CAPES 6 ou 7 (Nível de Excelência)
! Química ! Engenharia Mecânica ! Engenharia Elétrica ! Farmacologia ! Direito ! 56 cursos de pós-graduação ! 3882 nível de mestrado ! 2360 nível de doutorado ! 83 cursos de graduação ! Aproximadamente 25000 estudantes 20
Departamento de Engenharia Elétrica e Eletrônica
! http://deel.ufsc.br/ ! Fundado em 1966 ! 52 professores
! Curso de pós-graduação desde 1971
! http://ppgeel.ufsc.br ! Áreas de pesquisa
! Circuitos e sistemas integrados
! Comunicações e processamento de sinais ! Eletrônica de potência ! Engenharia biomédica ! Sistemas de energia ! Aprox. 1.127 dissertações de mestrado e 324 teses de doutorado 21
Atividades de Ensino
22! Disciplina: Sistemas Embarcados
! Aprox. 30 estudantes por semestre
! Projeto de sistemas embarcados, SystemC, Verificação
! Disciplina: Microprocessadores
! Aprox. 50 estudantes por semestre
Agenda
! Visão Geral sobre Sistemas Embarcados
!
Disciplinas da UFPE!
Disciplinas da UFSC! Proposta de um Currículo em Sistemas
Embarcados
! Estudos de Casos
!
Conversor de cores RGB para YCrCb!
Desenvolvimento de um testbench em SW paratestar um módulo de HW descrito em VHDL
!
Novos Experimentos! Conclusão
Currículo em Sistemas Embarcados
24 Projeto Linguagem SystemC Electronic Design Automation 1 Verificação Simulação Formal Semiformal 2 Projeto baseado em plataforma Intel-Altera (DE2i-150) Barramento PCIe Co-projeto de HW e SW Estudos de casos 3 Desenvolvi mento de projetos 4Labs. Utilizando a Plataforma Intel-Altera
25 Intel-Altera (DE2i-150) Barramento PCIe Qsys & SDK 1 e 2 Estudo de caso RGB -> YCrCb Gprof 3 Projeto do HW Ponto-fixo Somadores Multiplicado res 4 e 5 Integração HW e SW Análise dos resultados 6Agenda
! Visão Geral sobre Sistemas Embarcados
!
Disciplinas da UFPE!
Disciplinas da UFSC! Proposta de um Currículo em Sistemas
Embarcados
! Estudos de Casos
!
Conversor de cores RGB para YCrCb!
Desenvolvido um testbench em SW para testar ummódulo de HW descrito em VHDL
! Conclusão
Aulas 1 e 2
! Conhecer a estrutura interna do kit DE2i-150
! Conhecer o processador Atom da Intel e a
FPGA Cyclone IV
! Conhecer o barramento PCIe
! Executar demos
!
“Control_Panel” para explorar o funcionamento doscomponentes da FPGA
!
“PCIe_Fundamental” para estabelecer acomunicação entre o processador Atom e a FPGA
Arquitetura do kit DE2i-150
31! PCIe framework
Barramento PCIe
32- PCI express system será implementado na FPGA utilizando o software Qsys
Builder da Altera.
- PCI express software
development kit (SDK) será
implementado no processador.
OS (Yocto) embarcado
Aula 3
! Aula 3: Introdução do estudo de caso
!
Apresentação do estudo de caso!
Explicar o funcionamento teórico da conversãoRGB -> YCrCb -> Limiarizado
!
Executar o programa Gprof e analisar o custocomputacional de cada função do programa e determinar quais devem ser implementadas em hardware
YCrCb
! Y’ é o componente de luminância e CB e CR são as componentes de croma.
! A crominância refere-se ao valor das cores, enquanto a luminância refere-se às luzes, i.e., branco e preto
! Y'CbCr não é um espaço de cor absoluto, ao contrário, é uma forma de codificação de informações RGB
Apresentação do Estudo de Caso
35Vídeo Cores RGB
(Red / Green / Blue)
Vídeo Limiarizado Cor Preto e Branco
Software da conversão de cor
(Linguagem C) ! Descrição geral
Apresentação do Estudo de Caso
36Frames do vídeo Cores RGB
(Red / Green / Blue)
Vídeo (frames) Limiarizado Cor Preto e Branco
Software da conversão de cor
(Linguagem C)
Conversão de
RGB -> YCrCb Limiarizado
Conversão da Cor RGB -> YCrCb
37 Conversão de RGB -> YCrCb Limiarizado R G B Y Cr Cb Y = 0.299*R + 0.587*G + 0.114*B Cr = (R - Y)*0.713 + 128 Cb = (B - Y)*0.564 + 128 Black WhiteLimiarização
38 Conversão de RGB -> YCrCb Limiarizado R G B Y Cr Cb 50<Y 115<Cr<180 85<Cb<135 Y Cr Cb Black White Black White Yes NoSoftware para Conversão de Cor (Linguagem C)
39Início
Fim Ler imagem
readPPM(const char *filename)
Converter: RGB -> YCrCb
converteYCRCB(PPMImage *img)
Limiarização
limiarizacaoYCRCB(PPMImage *img)
Todas as imagens foram
processadas?
Salvar a imagem resultante
writePPM(const char *filename,
PPMImage *img)
Não
Software Gprof
! Resultados de desempenho do software,
executado em PC.
Função com Maior Custo Computacional
41Inicio
Fim Ler imagem
readPPM(const char *filename)
Converter: RGB -> YCrCb
converteYCRCB(PPMImage *img)
Limiarização
limiarizacaoYCRCB(PPMImage *img)
Todas as imagens foram
processadas?
Salvar a imagem resultante
writePPM(const char *filename, PPMImage *img)
Não
Sim
Função a ser projetada
em Hardware
Aulas 4 e 5
! Aula 4 e 5: Hardware “conversor YCrCb”
!
Explicar a representação em ponto fixo e amultiplicação
!
Implementação do multiplicador em VHDL/SystemVerilog
!
Simular seu funcionamento no ModelSim!
Estrutura do somador – subtrator em ponto fixoArquitetura da Função
converteYCRCBem Hardware
43Y = 0.299*R + 0.587*G + 0.114*B
Cr = 0.713*R + 128 - 0.713*Y
Aula 6
! Aula 6: Integração dos módulos de hardware e
software
!
Criar projeto no Qsys com os componentesnecessários
!
Modificar o código em C adicionando as funções deacesso ao PCIe e substituindo a função em C pela versão implementada em hardware
!
Execução do exemplo na placa!
Análise de resultadosResumo do Estudo de Caso (1/4)
45Frames do vídeo Cores RGB
(Red / Green / Blue)
Vídeo (frames) Limiarizado Cor Preto e Branco
SW / HW da conversão de cor (Linguagem C) Conversão de RGB -> YCrCb Limiarizado
! Diagrama de blocos
Resumo do Estudo de Caso (2/4)
46Início
Fim Ler imagem
readPPM(const char *filename)
Conversão: RGB -> YCrCb
Limiarização
limiarizacaoYCRCB(PPMImage *img)
Todas as imagens foram
processadas?
Salvar a imagem resultante
writePPM(const char *filename,
PPMImage *img) Não Sim SW executado no Atom HW executado Na FPGA
Resumo do Estudo de Caso (3/4)
47 FPGA Cyclone IV É implementado o hardware para executar a função RGB -> YCrCb Processador Atom Executa o “software conversor de cor” Barramento PCIePCI express software development kit (SDK)
PCI express system
Descrição da arquitetura (1/2)
48! Arquitetura do conversor ponto fixo em VHDL
m1: fpmul m2: fpmul m3: fpmul a1: fpadd a2: fpadd m4: fpmul m5: fpmul m6: fpmul m7: fpmul a3: fpadd a4: fpadd a5: fpadd a6: fpadd c3: FxP2FtP c2: FxP2FtP c1: FxP2FtP cte cte cte cte cte cte cte cte cte R G B Y Cr Cb converteYCRCB rgb
! Topo do sistema
Descrição da Arquitetura (2/2)
49 rgb(23:0) de2i_150_qsys.qsys converteYCRCB y(31:0) cr(31:0) cb(31:0) rgb(23:0) y(31:0) cr(31:0) pcie_ip_pcie_rstn_export pcie_ip_refclk_export pcie_ip_rx_in_rx_datain_0 clk_clk PCIE_TX_P pcie_ip_tx_out_tx_dataout_0 PCIE_PERST_N PCIE_REFCLK_P PCIE_RX_P topConverteYCRCB CLOCK_50Componente de2i_150_qsys.qsys no Qsys
50Software Conversor de Cor (user application)
51 app.c Código da aplicação implementada. Aqui são utilizadas as funções, definidas no PCIE.c, para acessar ao barramento PCIE.Funções para Acessar o Barramento PCIe (1/5) 52
Início
Fim Ler imagem
readPPM(const char *filename)
Conversão: RGB -> YCrCb
Limiarização
limiarizacaoYCRCB(PPMImage *img)
Todas as imagens foram
processadas?
Salvar a imagem resultante
writePPM(const char *filename,
PPMImage *img)
Não
Funções para Acessar o Barramento PCIe (2/5) 53
Início
Ler imagem
readPPM(const char *filename)
Todas as imagens foram
processadas?
Salvar a imagem resultante
writePPM(const char *filename,
PPMImage *img) Não Sim PCIE_Write32(pixelRGB) PCIE_Load( ) PCIE_Open(0,0,0) PCIE_Read32( Y ) PCIE_Read32(Cr) PCIE_Read32(Cb) Conversão RCB -> YCrCb Hardware (FPGA) PCIE_Close( ) PCIE_Unload( )
Funções para Acessar o Barramento PCIe (3/5) 54
#include<stdio.h> #include<stdlib.h> #include <string.h> #include "PCIE.h“
#define DEMO_PCIE_USER_BAR PCIE_BAR0
#define ESCRITA 0x00 #define YLER 0x20 #define CRLER 0x40 #define CBLER 0x60 int main(){ int j;
char nomearquivoin[] = "./videoInPPM/exemploCamera_0X.ppm";
char nomearquivoout[] = "./videoOutPPM/exemploCamera_0X.ppm";
char nomearquivoycbcr[] = "./videoYCBCR/exemploCamera_0X.ppm";
PPMImage *image;// PPMImage 'e uma estrutura
PPMImage *imageycrcb;
PPMImage *imagelimiar;
//--- Variaveis do PCIE ---
void *lib_handle; //ponteiro
PCIE_HANDLE hPCIE; //typedef int PCIE_HANDLE
//---Carregando o driver do PCIE ---
lib_handle = PCIE_Load();
if (!lib_handle){
printf("PCIE_Load failed!\r\n");
return 0;
}
//--- Abrindo o PCIE ---
hPCIE = PCIE_Open(0,0,0);
Esses endereços devem corresponder com os endereços atribuídos no Qsys
• ESCRITA = endereço do RGB • YLER = endereço do Y • CRLER = endereço do Cr • CBLER = endereço do Cb
Funções para Acessar o Barramento PCIe (4/5) 55 if (!hPCIE){
printf("PCIE_Open failed\r\n");
}else{
for(j=49;j<55;j++){//48=0, 49=1, 50=2, ... , 57=9
nomearquivoin[28] = j;
image = readPPM(nomearquivoin);
imageycrcb = converteYCRCB(image, hPCIE,j);
nomearquivoycbcr[28] = j;
writePPM(nomearquivoycbcr,imageycrcb);
imagelimiar = limiarizacaoYCRCB(imageycrcb);
nomearquivoout[29] = j;
writePPM(nomearquivoout,imagelimiar);
}
PCIE_Close(hPCIE);
}
printf("x = %d y=%d\n",image->x,image->y); printf("...Final\n"); //--- Unload PCIE --- PCIE_Unload(lib_handle); return 0; }
Funções para Acessar o Barramento PCIe (5/5) 56
static PPMImage *converteYCRCB(PPMImage *img , PCIE_HANDLE hPCIE, int j) {
...
for(i=0;i<img->x*img->y;i++)
{ ...
bPass = PCIE_Write32(hPCIE, DEMO_PCIE_USER_BAR, ESCRITA,(DWORD)Mask);
bPass = PCIE_Read32(hPCIE, DEMO_PCIE_USER_BAR, YLER,&reciever);
if(bPass){
Y = (unsigned char)(*(float*)&reciever);
} ... } fclose(fileout_hw_pfixo); } return img; }
Trabalho de aula...
Resultados
57Resultados
58Resultados
59Resultados
60! Erro quadrático dos resultados em SW e HW
eq = (result_SW – result_HW)^2
Resultados Gprof
61!
Hardware (ponto fixo)
Agenda
! Visão geral sobre Sistemas Embarcados
!
Disciplinas da UFPE!
Disciplinas da UFSC! Proposta de um Currículo em Sistemas
Embarcados
! Estudos de Caso
!
Conversor de cores RGB para YCrCb!
Desenvolvido um testbench em software paratestar um módulo somador descrito em VHDL
!
Novos Experimentos! Conclusão
Projeto Final
! Descrição funcional: Deve-se desenvolver um testbench em software para testar um módulo somador (sem sinal e sem detecção de overflow) descrito em VHDL.
! Devem ser gerados 1000 vetores de teste. Cada par de argumentos (Arg1 e Arg2 em 32 bits) deve ser enviado para o modulo somador (em HW) via PCIe.
! Os vetores devem somados e o resultado (Resp em 32 bits) deve ser retornado para o testbench via PCIe.
! Os resultados devem ser exibidos no console e gravados em um arquivo texto.
63
The image cannot be displayed. Your computer may not have enough memory to open the image, or the image may have been corrupted. Restart your computer, and then open the file again. If the red x still appears, you may have to delete the image and then insert it again.
Novos Experimentos: Interface Hardware-Software
! Desenvolvimento de sistemas controlados pelo
FPGA
! Desenvolvimento de módulo para FPGA
! Desenvolvimento de driver para comunicação
com módulo via PCI
! Integração Hardware e Software
Interface Hardware-Software– Snake Game
68Agenda
! Visão geral sobre Sistemas Embarcados
!
Disciplinas da UFPE!
Disciplinas da UFSC! Proposta de um Currículo em Sistemas
Embarcados
! Estudos de Caso
!
Conversor de cores RGB para YCrCb!
Desenvolvimento de um testbench em software paratestar um módulo somador descrito em VHDL