Tópicos Especiais em Sistemas Digitais I

Slides:



Advertisements
Apresentações semelhantes
Estratégias Pipelined
Advertisements

SISTEMAS OPERACIONAIS (SO) Aula 5 Luciana A. F. Martimiano 2002
MATRIZES DE PORTAS PROGRAMÁVEIS NO CAMPO (FPGA)
Sistemas Digitais Projeto RTL – Unidade de Controle
Métodos de Transmissão
Redes de computadores I
Arquitetura e organização de computadores
Barramentos Introdução.
Entrada e Saída Introdução.
Técnicas para operações E/S
Porta Paralela Prof.Almir.
Modelos de Troca de Dados em Nível Elétrico
Chip-Select e Controle de Interrupção
Chip-Select e Controle de Interrupção Sistemas Embarcados.
Unidades de Execução e de Controle Sistemas Digitais.
Sincronização com Posix Threads
MC542 Organização de Computadores Teoria e Prática
MC542 Organização de Computadores Teoria e Prática
Sistemas Operacionais
Maria Aparecida Castro Livi
Maria Aparecida Castro Livi
Walfredo Cirne Threads Walfredo Cirne
“Programação de Periféricos”
Aluno: Guilherme Guindani
Bruno Souza de Oliveira e Rodrigo Nardi
Vinicius Pessil Bohrer Programação de Periféricos
Sensor de Temperatura Digital TMP75
Programação de Periféricos I²C
Plataforma RENESAS, I2C, Smart Card
Sistemas Operacionais
Professor: Carlos Roberto da Silva Filho, M. Eng.
Suprimento de Energia Microcontrolado
Professor Victor Sotero
Experimentos Práticos Introdução aos Sistemas Embarcados
Tratamento de Ficheiros
Revisão da Linguagem C.
Professor Robson Campos
Arquitetura de Computadores
Interfaces SUMÁRIO: Fundamentos de Comunicação
Diagrama de Componentes
HARDWARE do CLP Os controladores lógicos programáveis são equipamentos com uma aplicação muito vasta dentro dos diversos processos de automação. Desta.
Professor Felipe Monteiro Lima
Adinan Southier Soares Senai – São Lourenço do Oeste
Módulo MSSP Jadsonlee da Silva Sá
Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte III Jadsonlee da Silva Sá
Sistemas Distribuídos
Sistemas Operacionais
Fundamentos da arquitetura de computadores
FONTES DE ALIMENTAÇÃO Aula 03.
Abr-17 Projetar Cápsulas Aula de Laboratório Projetar classes.
Sergio Cavalcante Centro de Informática – UFPE
Experimentos Práticos Arquitetura de Software para Celulares
Introdução à Automação
Entrada e Saída (E/S ou I/O)
Prof. Remy Eskinazi - Microcontroladores
CONTROLE E MONITORAMENTO DE PRESSÃO DE UM SISTEMA USANDO UM COMPRESSOR HERMÉTICO COM O GÁS R134A
Unidade Central De Processamento: Processador
Implementação de um Ohmímetro Utilizando PIC16F877A
Sistemas Operacionais
Entrada e Saída (E/S).
Carlos Roberto da Silva Filho, M. Eng.
Processador 2014/2015 Comunicação de Dados Ricardo Bento 12ºL.
Estrutura Básica de um CLP
Arquitetura de ComputadoresProf a Luiza Mourelle Entrada e Saída O processo de fornecer informações ou obtê-las dos computadores é chamado entrada/saída.
Arquitetura de Sistemas Operacionais
Modelos de Troca de Dados em Nível Elétrico ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon.
Por Cássio Mello e André Luis.  É a parte inteligente do circuito, onde sinais de controle serão recebidos e enviados e o processamento será efetuado.
Clique para editar o título Arduino seu primeiro microcontrolador PMR
Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI
DsPIC – Aula 3 Prof. Ricardo Teixeira Especialização em Sistemas Embarcados POLI – UPE.
Transcrição da apresentação:

Tópicos Especiais em Sistemas Digitais I Projeto Braço Mecânico Lucas Eduardo Waechter Lucas Rosa Cruz Reginato

Sumário Visão geral do projeto Interface com a Porta Paralela Dados do joystick; Bloco VHDL; Interface com a Porta Serial Especificação do Braço Mecânico; Protocolo de Comunicação; Limitações; Interface com o Sensor Térmico Especificação do Sensor Térmico; Protocolo I2C;

Visão Geral do Projeto Braço Mecânico Porta Serial (CPLD) Sensor Térmico FPGA Gerência das Interfaces Interface com a serial Interface c/ térmico sensor Paralela Porta Interface com a paralela Joystick Display

Interface com a Porta Paralela Joystick usado : MegaDrive da Sega Por que usar a porta paralela : Conector do joystick é do tipo DB9 usado em interfaces seriais. Usamos um conector DB25 para adaptar o joystick para o porta paralela. Assim é possivel prototipar os dois módulos na mesma plataforma de prototipação visto que esta possui apenas uma interface serial e uma interface paralela.

Interface com a Porta Paralela Conector tipo DB25 Para conexão com a porta pararela Para conexão com o joystick

Interface com a Porta Paralela Pinos do Joystick do MegaDrive Select 1 Power Up Down Ground Select 2 Rigth Left Motivação do uso deste Joystick: Cada pino do joystick representa um botão. Quando um botão é pressionado é lido o nível lógico ‘1’. Caso o botão não é acionado é lido o nivel lógico ‘0’. Pino ‘Select’ seleciona se será apertado os botões ‘A’ e ‘B‘ ou ‘C‘ e ‘Start’. 5 1 6 9 Conector Fêmea do joystick

Interface com a Porta Paralela Mapeamento dos pinos DB9 para DB25 5 1 13 1 6 14 9 25 Porta serial do Joystick Porta paralela da FPGA

Interface com a Porta Paralela Pinos do Joystick do MegaDrive usados Tabela de Mapeamento da porta serial do joystick para a porta paralela do FPGA Joystick Function DB9 Pinos DB25 Pinos Cores Tipo em relação ao joystick Up 1 12 Branco In Down 2 15 Azul Left 3 10 Cinza Rigth 4 11 Laranja Power 5 3 a 9 Vermelho Button1 6 13 Marron Select 7 Amarelo Out Ground 8 18 a 19 Preto Button 2 9 Roxo

Interface com a Porta Paralela Caracteristicas da Porta Paralela Quando um pino se encontra no nível lógico ‘1’, este possui 5V de tensão, e um pino em nível lógico ‘0’ possui tensão inferior a 0,5V. Caracteristicas do Joystick Para alimentar o pino ‘Power do Joystick’ com os 5V necessários conectamos os pinos 3 a 9 da porta paralela com diodos, para certificar que não ocorresse uma inversão acidental da corrente elétrica. Código C para leitura da da porta paralela Aplicação desenvolvida em ambiente Linux, compilado com o GNU Compiler, certifica se os pinos foram corretamente conectados.

Interface com a Porta Paralela Código C para leitura do Joystick (1) # includes <…> #define LPT1_DATA 0x378+0 #define LPT1_CTRL 0x378+1 void *monitor(); pthread_t monitor_id; int main(int argc, char* argv[]) { /* Chama alguns métodos de inicialização */ /* Verifica permissao para trabalhar com a porta desejada */ if (ioperm(LPT1_DATA, 3, 1)) { perror("Cannot obtain access to write on port LPT1"); exit(1); } pthread_create(&monitor_id, NULL, (void *)monitor, NULL); pthread_join(monitor_id, NULL); exit(0);

Interface com a Porta Paralela Código C para leitura do Joystick (2) void *monitor() { /*Porta que estamos trabalhando */ unsigned char data; while(1) { /*Seta em '1' o sinal select */ write_data(0xFF); data = inb(LPT1_CTRL); /* Se o pino 10 (esquerda) */ if((data & 0x40) == 0) draw_arrow('L'); else clear_arrow('L'); /* Se o pino 11 (direita) */ if((data & 0x80) == 0) draw_arrow('R'); else clear_arrow('R'); ... refresh(); usleep(1); }

Interface com a Porta Paralela Bloco VHDL criado para esta tarefa Interface com a paralela ACK Send Arm Hand Base LR . Dados recebidos da porta paralela

Interface com a Porta Paralela Máquina de estados do Bloco VHDL Polling Read Recebendo sinais Decodificação dos sinais Enviando sinais para o bloco serial Write

Interface com a Porta Serial Especificação do Braço Mecânico Criado pela Fischer Technik ( http://www.fischertechnik.de/ ), empresa alemã, na década de 90. Basicamente, é um lego. Possui 3 motores para comandar o braço mecânico Possui sensores que indicam que um determinado comando não pode mais executar, caso contrário o braço mecânico pode se desmontar. Possui uma interface ( placa ) que interpreta os movimentos do braço. Esta placa possui um processador 8051 a ser detalhado mais adiante.

Interface com a Porta Serial Figura do Braco Mecânico Motor que gira a mão Motor que gira o braço Motor que gira a base

Interface com a Porta Serial Protocolo de comunicação do Braço Mec. Bits da palavra enviada para o Braço Mec. Comando Função 8 7 6 5 4 3 2 1 1L Move Base p/ Esquerda 1R Move Base p/ Direita 2L Move Braço p/ Baixo 2R Move Braço p/ Cima 3L Abre a mão 3R Fecha a mão 4L Acende a Luz 4R

Interface com a Porta Serial Código C++ para controlar o Braço Mec. (1) #includes <...> class Robo{ char Motorword; /* Palavra a ser enviada p/ o robo */ char serial[4]; /* O Nome da porta serial aberta */ /* Abre a serial COM"ser" para o envio e recepção de Comandos do Robo*/ int abreSerial(int ser) { const char *com1="COM1",*com2="COM2",*com3="COM3",*com4="COM4"; switch(ser){ case 1: strcpy(serial,com1); break; case 2: strcpy(serial,com2); case .... } Fischer_install(); return 1;

Interface com a Porta Serial Código C++ para controlar o Braço Mec. (2) /* Seta parametros para a porta serial e abre a conexão com a mesma */ void Fischer_install(){ .... int hCom = CreateFile( serial, /* nome da COM */ GENERIC_READ | GENERIC_WRITE, /* acesso de RW */ 0, /* não usado */ NULL, /* não usado */ OPEN_EXISTING, /* requerido */ 0, /* não usado */ NULL); /* não usado */ fSuccess = GetCommState(hCom, &dcb); dcb.BaudRate = 9600; // 9600 Baud dcb.ByteSize = 8; // 8 Bits dcb.Parity = NOPARITY; // no parity dcb.StopBits = ONESTOPBIT; // 1 stopbit fSuccess = SetCommState(hCom, &dcb); motors_off(); }

Interface com a Porta Serial Código C++ para controlar o Braço Mec. (3) /* Define o comando a ser executado */ void motor(int num, char dir){ char Result; switch (dir){ case 'L': Motorword = clearBit(Motorword, (num * 2)); // seta bit em 1 Motorword = setBit(Motorword, (num * 2 - 1)); // seta bit em 0 break; case 'R': .... case ‘....’: } Result = input_word(); // escreve o comando para a interface Motorword = '0x00'; // zera-se o comando para o próximo comando // Demais métodos..........

Interface com a Porta Serial Bloco VHDL para decodificação dos comandos Braço Mecânico (Serial) ACK Send Arm Hand Base LR word

Interface com a Porta Serial Máquina de estados do Blobo VHDL Wait Read Recebendo sinais Decodificação dos sinais Enviando sinais para a porta serial Write

Interface com a Porta Serial Bloco VHDL para comunicação com a serial Interface Serial tx_data (8 bits) word (8 bits) tx_av (1 bit) Onde : tx_data representa os dados a serem enviados para a serial tx_av indica que existe dado disponível em tx_data

Interface com a Porta Serial Máquina de estados do Bloco VHDL Recebendo sinais Read Write Enviando sinais

Interface com a Porta Serial Bloco VHDL completo Braço Mecânico (Serial) ACK Send Arm Hand Base LR Interface Serial tx_data (8 bits) word (8 bits) tx_av (1 bit)

Interface com o Sensor Térmico Digital Temperature Sensor with I2C Interface Modelo TMP101 – 2 fios, saída serial Não requer nenhum componente externo para funcionamento Resolução máxima de 0.0625°C. Comunicação pelas interfaces SMBus e I2C™ Comporta até 8 sensores no mesmo barramento. O TMP101 oferece função SMBus de alerta com até 3 sensores por barramento

Interface com o Sensor Térmico Características: Opera entre –55°C a +125°C. Saída digital: I2C Serial 2-vias. Resolução: 9 a 12-Bits, selecionável. Margem de Erro: ±2.0°C em –25°C a +85°C (max) e ±3.0°C de -55°C a +125°C (max) Fornecimento: 2.7V a 5.5V. TINY SOT23-6 PACKAGE.

Interface com o Sensor Térmico Aplicações: Monitoração de fontes de energia Proteção contra superaquecimento de periféricos em computadores Notebooks Telefones Celulares Controle de baterias Máquinas de escritório Controles termostáticos Monitoramento de ambientes Controle de temperatura de componentes eletro-mecânicos

Interface com o Sensor Térmico Esquemático do Sensor Térmico

Interface com o Sensor Térmico Características Elétricas

Interface com o Sensor Térmico Características Típicas (1)

Interface com o Sensor Térmico Características Típicas (2)

Interface com o Sensor Térmico Estrutura de registros Pointer Register Temperature Register I/O Control Interface SCL Configuration Register Tlow Register SDA Thigh Register

Interface com o Sensor Térmico Registradores (1): Pointer Register P1 P0 Register 0 0 1 1 0 1 0 1 Temperature Register (r) Configuration Register (rw) Tlow (rw) Thigh (rw) P7 P5 P6 P4 P3 P1 Register Bits P2 P0 Temperature Register D7 T11 D5 T9 D6 T10 D4 T8 D3 T7 D1 T5 D2 T6 D0 T4 D7 T3 D5 T1 D6 T2 D4 T0 D3 D1 D2 D0

Interface com o Sensor Térmico Registradores (2): Configuration Register D7 Alert D5 R0 D6 R1 D4 F1 D3 F0 D1 TM D2 POL D0 SD Tlow e Thigh Registers D7 H11 D5 H9 D6 H10 D4 H8 D3 H7 D1 H5 D2 H6 D0 H4 D7 H3 D5 H1 D6 H2 D4 H0 D3 D1 D2 D0 D7 L11 D5 L9 D6 L10 D4 L8 D3 L7 D1 L5 D2 L6 D0 L4 D7 L3 D5 L1 D6 L2 D4 L0 D3 D1 D2 D0

Interface com o Sensor Térmico Registrador de Configurações (1) D7 Alert D5 R0 D6 R1 D4 F1 D3 F0 D1 TM D2 POL D0 SD Shutdown mode Thermostat mode Polarity Fault Queue Resolution R1 R0 Resolution Conversion Time 0 0 1 1 0 1 0 1 9 bits (0.5) 10 bits (0.25) 11 bits (0.125) 12 bits (0.0625) 40 ns 80 ns 160 ns 320 ns T1 T0 Consecutive Faults 0 0 1 1 0 1 0 1 1 2 4 6 SD Consecutive Faults 0 0 1 1 1 2 4 6

Interface com o Sensor Térmico Registrador de Configurações (2) Controle de Alertas

Interface com o Sensor Térmico Protocolo I2C (1) Introdução: O custo de comunicação entre componentes tem que ser sempre o mínimo possível A eficiência geral depende dos componentes e da estrutura de interconexão Para satisfazer essa necessidade, uma conexão serial é a melhor escolha Por que? Menos fios e menos pinos de conexão

Interface com o Sensor Térmico Protocolo I2C (2) O I2C comporta ICs NMOS, CMOS, I2L, entre outros 2 fios (2 wires concept), Serial Data (SDA) e Clock Serial (SCL), Carry Information entre os ICs conectados ao mesmo barramento Cada IC tem um endereço único no barramento

Interface com o Sensor Térmico Protocolo I2C (3) Cada IC pode operar como transmissor ou receptor, não importando se é um keyboard, um LCD, Sensor, Memória ou qualquer outra coisa Conceito de Master/Slave Multi-Masters em um barramento

Interface com o Sensor Térmico Protocolo I2C (4) Micro computador A SDA Micro computador B SCL LCD Driver I2C BUS Sensor Térmico RAM Estática ou EEPROM

Interface com o Sensor Térmico Protocolo I2C (5) Transmissor: o I2C que manda dados para o barramento Receptor: o I2C que recebe dados do barramento Master: inicia a transmissão, gera o clock e acaba a transmissão Slave: IC endereçado pelo Master Multi-Master: mais que um Master pode tentar controlar o barramento sem corromper as mensagens Arbritration: Procedimento que garante que se mais de um Master tentar simultaneamente ganhar o controle do barramento, somente um é permitido o fazer e não corromper as mensagens de ambos Sincronização: sincroniza clocks de 2 ou mais Ics

Interface com o Sensor Térmico Transferência de dados no barramento I2C Protocolo I2C (6) Ack signal from receiver Ack from Receiver SDA MSB SCL 1 2 7 8 9 1 2 3-8 9 Ack Ack Byte complete. Interrupt within receiver Start Clock line held low while interrupts are serviced End

Interface com o Sensor Térmico Acoplagem do Sensor a um FPGA Braço Mecânico ST FPGA Pinos

Conclusão Limitações e Futuras implementações O braço mecânico é incapaz de efetuar uma rotação de 360 graus na base e na mão. Possui pouco mobilidade em seu braço, ou seja, não podemos levantar ou baixar demais o braço mecânico. Esperamos que este trabalho sirva de incentivo para trabalhos futuros. Esperamos ter uma maior mobilidade do braço mecânico. Código portável para qualquer placa FPGA.