06/08/2017
1. 2. 3. 4. 5. 6.
Parte 10 BÔNUS
06/08/2017
06/08/2017
1
I2C
1
I2 C USART OPERAÇÕES ARITMÉTICAS DSP APLICAÇÕES DE DSP INTEL® 8051
2
I2C
1
Diagrama
• A gigantesca complexidade do circuito empregado na implementação do protocolo I2C™ na PIC16F877 em relação ao protocolo SPI™ revela que a maior parte do circuito do módulo MSSP presta-se ao uso exclusivo do protocolo I2C™ e que a implementação do protocolo SPI™ não acarreta aumento de custo no sistema.
I2C
06/08/2017
3
I2C
1
06/08/2017
4
I2C
1
SPI™/I2C™ – Pinagem
Diagrama glitch filter
• Os dois pinos devem ser configurados como entrada. • 18 RC3/SCL • 23 RC4/SDA
glitch filter
• TRISC = 1 SCL Entrada • TRISC = 1 SDA Entrada SCL
SDA 06/08/2017
5
• O mesmo pino (SDA) é usado para entrada e para saída. • Para a entrada, existe um buffer ST para filtragem de altas frequências. • O deslocamento é feito a partir do bit mais significativo. • Esses dois pinos devem ser configurados como entrada. 06/08/2017
6
06/08/2017
I2C
1
I2C
1
Diagrama
SFR’s – MSSP SSPCON
SSPSTAT glitch filter SSPCON2
glitch filter
• O buffer register é o mesmo usado na função SPI™. • O shift register é o mesmo usado na função SPI™.
06/08/2017
7
I2C
1
06/08/2017
8
I2C
1
SSPCON SSP
0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
SSPCON
BSSP I2C™
MSSP
VEREMOS
Slave
I2C™
0110
Master
0111
Reservado
1000
I2C™
Master
1001
Reservado
Reservado I2C™
Slave I2C™
1010 1011
Master
Reservado
06/08/2017
9
I2C
VEREMOS
I2C™ Firmware Controlled Master mode, 7-bit address with START and STOP bit interrupts enabled I2C™ Firmware Controlled Master mode, 10-bit address with START and STOP bit interrupts enabled
11xx
06/08/2017
1
Modo I2C™ Slave mode, 7-bit address I2C™ Slave mode, 10-bit address I2C™ Master mode, clock = fOSC/(4(SSPADD+1)) I2C™ Firmware Controlled Master mode (slave idle)
10
I2C
1
Slave address
Diagrama
• No SPI™, se vários slaves estão presentes, então o master precisa usar bits de portas paralelas para executar a função slave select, uma para cada slave. • No I2C™, não existe a função slave select, economizando, assim, os bits de portas paralelas. • Cada slave possui um exclusivo slave address, enviado juntamente com as palavras de dados, em SDA. • Este endereço pode ser de 7 (128 slaves) ou de 10 bits (1024 slaves). • Este endereço é enviado antes das palavras de dados. 0110 06/08/2017
11
06/08/2017
0111
Modo I2C™ Slave mode, 7-bit address 2 I C™ Slave mode, 10-bit address
12
06/08/2017
I2C
1
I2C
1
Slave address 0110 0111
7-bit Slave address SSPSR
Modo I2C™ Slave mode, 7-bit address I2C™ Slave mode, 10-bit address
8 shifts
• Em 7-bit address, o endereço é fornecido por SSPADR. • Em 10-bit address, o endereço é fornecido por um GPR seguido por SSPADR. 7-bit address
10-bit address 06/08/2017
SCL
7-bit COMPARATOR
SSPADR
Acknowledge
X 6 5 4 3 2 1 0
GPR
SSPADR
1 1 1 1 0 9 8 0
7 6 5 4 3 2 1 0 13
I2C
1
06/08/2017
14
SSPADD
I2C
1
7-bit Slave address
7-bit Slave address
• Cada slave possui um endereço próprio. • O endereço é armazenado em SSPADD.
• O slave address precisa ser configurado em SSPADR antes do início da comunicação. • A primeira palavra enviada na comunicação é o slave address. • Se o slave address recebido na comunicação corresponde a SSPADR, então a palavra de dado recebia em seguida em SSPSR é copiada para SSPBUF.
• O slave verifica se o endereço enviado pelo master corresponde ao seu endereço. • Em caso afirmativo (reconhecimento), é gerado o pulso /ACK. • SSPCON2 ACKEN: Acknowledge Sequence Enable bit. • SSPCON2 ACKDT: Acknowledge Data bit. • SSPCON2 ACKSTAT: Acknowledge Status bit. 06/08/2017
15
I2C
1
• Se o slave address recebido na comunicação não corresponde a SSPADR, então a palavra de dado recebia em seguida em SSPSR não é copiada para SSPBUF. • Várias palavras de dados podem ser sequencialmente no mesmo slave address. 06/08/2017
recebidas 16
I2C
1
Comunicação
Comunicação Recepção do slave address
Nenhum dado Start bit Recepção do slave address
Recepção do slave address
Stop bit
Recepção/envio do dado
Um dado Start bit
Recepção do slave address
Recep/env do dado 1
Recep/env do dado 2
17
Recepção/envio do dado
Stop bit
Dois dado Start bit
06/08/2017
Recepção do slave address
Recepção do slave address
06/08/2017
Recepção/envio do dado 1
Recepção/envio do dado 2
Stop bit
18
06/08/2017
I2C
1
I2C
1
SSPCON
SSPCON
• SSPCON CKP: Clock Polarity Select bit. • 1: Relógio habilitado. • 0: Relógio em nível baixo (reset default). • Usado, apenas, no modo Master. • Em nível baixo, é usado no clock stretch, visto mais adiante.
06/08/2017
Synchronous Serial Port Enable bit. Receive Overflow Indicator bit. Write Collision Detect bit.
• Possuem a mesma função vista no SPI™.
19
I2C
1
• SSPCON SSPEN: • SSPCON SSPOV: • SSPCON WCOL:
06/08/2017
20
I2C
1
SSPSTAT
SSPSTAT
• SSPSTAT BF: Buffer full status bit. • 1: Recepção completada ou transmissão em progresso. • 0: Nada recebido ou transmissão completada (reset default). • SSPSTAT UA: Update address (10-bit address). • 1: Precisa atualizar o endereço em SSPADD. • 0: Não precisa atualizar o endereço (reset default). • SSPSTAT R_W: Read/Write bit information. • 1: Read. • 0: Write (reset default).
• SSPSTAT S: Start bit. • 1: Start bit has been detected last. • 0: Start bit was not detected last (reset default). • SSPSTAT P: Stop bit. • 1: Stop bit has been detected last. • 0: Stop bit was not detected last (reset default). • SSPSTAT D_NOT_A: Data/Address bit. • 1: A última palavra recebida é um dado. • 0: A última palavra recebida é um endereço (reset default).
06/08/2017
21
I2C
1
06/08/2017
22
I2C
1
SSPSTAT
SSPCON2
• SSPSTAT CKE: Edge select bit. • 1: Níveis de entrada conforme especificação SMBus™. • 0: Níveis de entr. conf. espec. I2C™ (reset default). • SSPSTAT SMP: Sample bit. • 1: Slew rate control disabled. • 0: Slew rate control enabled (reset default).
06/08/2017
23
• • • • • • • •
SSPCON2 SSPCON2 SSPCON2 SSPCON2 SSPCON2 SSPCON2 SSPCON2 SSPCON2 06/08/2017
SEN: START Condition Enable bit. RSEN: Repeated START Condition Enable bit. PEN: STOP Condition Enable bit. RCEN: Receive Enable bit. ACKEN: Acknowledge Sequence Enable bit. ACKDT: Acknowledge Data bit. ACKSTAT: Acknowledge Status bit. GCEN: General Call Enable bit.
• Bits 0 a 6: Somente no modo master. • Bits 7: Somente no modo master.
24
06/08/2017
I2C
1
I2C
1
General call address
Modo multi-master
• Após o início da comunicação, o primeiro byte recebido identifica qual slave precisa copiar o SSPSR para o SSPBUF. • O general call address é um modo especial de operação, no qual todos os slave´s fazem esta cópia. • SSPCON2 GCEN = 1 • SSPSTAT R_W = 0 • Slave address = 00h
• O protocolo SPI™ permite a existência de, apenas, um master. • O protocolo I2C™ permite a existência de mais de um master. • É necessário procedimento para determinar se o barramento está ocupado por uma comunicação efetuada por outro master. • Arbitration logic: Lógica para determinação de prioridade. • O master que iniciou a comunicação antes tem preferência. • Quando dois master´s iniciam a comunicação ao mesmo tempo, algum critério de desempate precisa ser determinado. • Todos os master´s precisam estar operando no modo multimaster.
06/08/2017
2
25
USART
06/08/2017
2
26
USART Introdução • USART Universal Synchronous Asynchronous Receiver Transmitter. • Também conhecido como: • SCI Serial Communications Interface . • Dois modos de operação: • Assíncrono. • Síncrono.
USART
06/08/2017
2
27
2
USART Pinagem na
06/08/2017
28
USART
PIC
Modo assíncrono
Multiplexação
RX/DT TX/CK
06/08/2017
• • • •
TX RX CK DT
Asynchronous Transmit Asynchronous Receive Synchronous Clock Synchronous Data 29
• • • • • •
TXSTA SYNC=0 (reset default) Não é usado serial clock. Uma via é o envio (TX) e a outra via é o recebimento (RX). Os dados trafegam em duas vias, como no SPI™. Como há duas vias de dados, é permitido full-duplex. Como não existe serial clock, não existe master e slave.
06/08/2017
30
06/08/2017
2
2
USART
USART Modo síncrono
Modo assíncrono
RX TX
• • • •
TXSTA TXSTA TRISC TRISC
SCRC=X SYNC=0 = 1 RX = 0 TX
• • • • • • • •
• 0: • 1:
Entrada Saída
06/08/2017
USART
• TXSTA SCRC=1 • TXSTA SYNC=0 • TRISC = 0 CK
USART Modo síncrono slave
DT CK
Saída
06/08/2017
2
32
2
Modo síncrono master
DT CK
Síncrono Slave (reset default). Síncrono Master.
06/08/2017
31
2
TXSTA SYNC=1 É usado serial clock, tal como no SSP. Uma via é o relógio (CK) e a outra via é o dado (DT). Os dados trafegam em uma única via, como no I2C™. Como há uma única via de dados, não é permitido full-duplex. É permitida comunicação half-duplex e simplex. Como existe serial clock, existe master e slave. TXSTA SCRC: Clock Source Select bit.
33
USART
• TXSTA SCRC=0 • TXSTA SYNC=0 • TRISC = 1 CK
Entrada
06/08/2017
34
2
USART
BRG
BRGH
• Baud Rate Generator. • Baud: Bits transmitidos por segundo. • Usado nos modos: • Assíncrono • Síncrono Master. • Controlado pelo SFR SPBGR. • 8 bits. • SPBGR é um period register para um 8-bit timer. • O cálculo do Baud Rate em função de SPBGR é diferente nos modo síncrono e assíncrono.
• TXSTA BRGH: High Baud Rate Select bit. • 0: Baixa velocidade (reset default). • 1: Alta velocidade. • Somente para modo assíncrono. • A alta velocidade é o quádruplo da baixa.
06/08/2017
Low
35
06/08/2017
High
36
06/08/2017
2
USART
2
USART
SFR’s • • • • •
TXSTA RCSTA TXREG RCREG SPBRG
Transmit Status Receive Status Transmit Data Register Receive Data Register Baud Rate Generator Register
SFR’s 098h 018h 019h 01Ah 099h
TXSTA
RCSTA
06/08/2017
37
2
USART
06/08/2017
38
2
USART
Configurações
Configurações
• RCSTA SPEN: Serial Port Enable bit. • 0: Desabilitado (reset default). • 1: Habilitado. • TXSTA SYNC: USART Mode Select bit.
• TXSTA TXEN: Transmit Enable bit. • 0: Transmissão desabilitada (reset default). • 1: Transmissão habilitada. • RCSTA SREN: Single Receive Enable bit*. • 0: Desabilitad0 (reset default). • 1: Habilitado. • RCSTA CREN: Continuous Receive Enable bit.
• 0: Assíncrono (reset default). • 1: Síncrono. • TXSTA SCRC: Clock Source Select bit. • 0: • 1:
Síncrono Slave (reset default). Síncrono Master.
• 0: • 1:
Desabilitad0 (reset default). Habilitado.
* Somente no modo síncrono master. 06/08/2017
2
39
USART
2
Data / Address • • • • • •
40
USART Address Detection • TXSTA TX9: 9-bit Transmit Enable bit. • 0: Transmissão de 8 bits (reset default). • 1: Transmissão de 9 bits. • CXSTA RX9: 9-bit Receive Enable bit.
Dois tipos de informação podem ser enviados: Dado 8 bits. Endereço 9 bits. O USART permite o envio de palavras de 8 ou 9 bits. O nono bit também pode ser usado como paridade. O controle de paridade não está implementado em hardware mas pode ser implementado em software.
06/08/2017
06/08/2017
• 0: Recepção de 8 bits (reset default). • 1: Recepção de 9 bits. • TXSTA TX9D: 9th bit of transmit data. • RCSTA RX9D: 9th bit of received data. • RCSTA ADDEN: Address Detect Enable bit.
41
• 0: Desabilitado. • 1: Habilitado. 06/08/2017 • O bit 9D é o mais significativo do endereço.
42
06/08/2017
2
2
USART
USART Modos
Data / Address
• No modo assíncrono, os pinos TX e RX garantem a comunicação full-duplex, tal como ocorre com o protocolo SPI™. • No modo síncrono, é necessária a comunicação do sinal de relógio (pino CK), a comunicação é feita por um único pino (DT), half-duplex, tal como ocorre com o protocolo I2C™. • O modo assíncrono é mais utilizado. • Um exemplo de aplicação assíncrona é a comunicação com PC por meio do protocolo RS-232 (requer adequação das tensões).
AN547
06/08/2017
2
06/08/2017
43
USART
2
44
USART Ethernet na PIC
MAX232 e RS-232 • Dual EIA-232 drivers/receivers. • O protocolo RS232 não emprega níveis TTL. • Interface entre níveis TTL e RS232.
http://www.ti.com/lit/ds/symlink/max232.pdf
06/08/2017
2
• • • • •
06/08/2017
45
USART
Presente na PIC18 ou superior. 10Base-T Ethernet transceiver. 8KB dedicated Ethernet buffer RAM. Up to 128KB of Flash, easily accommodating a TCP/IP stack. Advanced analog and communication peripherals.
2
46
USART
Modo Assíncrono – Desocupado
Modo Assíncrono – Transmissão
• Quando não há transmissão nem recepção, o pino permanece em nível lógico alto. • Ao iniciar uma transmissão ou recepção, o procedimento é identificado por meio do start bit. • O start bit é ativo em nível baixo. • Se o pino RX recebe o start bit, é iniciada uma recepção. • Se é iniciada uma transmissão, o pino TX recebe o start bit
• Ao escrever em TXREG, os oito bits do dado ou os nove bits do endereço são copiados para o transmit shift register. • Os bits são enviados ao pino TX. • Inicialmente, é enviado o start bit. • A palavra é enviada (8 ou nove bits). • O bit 0 é enviado primeiramente. • Para finalizar, é enviado o stop bit.
06/08/2017
47
06/08/2017
48
06/08/2017
2
USART
2
USART
Modo Assíncrono – Transmissão
Modo Assíncrono – Transmissão
• A existência do TXREG e do transmit shift register permite que a segunda palavra seja escrita antes do término do envio da primeira palavra.
Transmit Shift Register
06/08/2017
2
49
USART
06/08/2017
2
50
USART
Modo Assíncrono – Transmissão
Modo Assíncrono – Recepção
Dado = 00100101b
• • • • • •
Endereço = 100100101b
06/08/2017
2
06/08/2017
51
USART
O start bit é identificado no pino RX. Os bits são enviados ao receive shift register. O bit 0 é recebido primeiramente. O stop bit é identificado no pino RX. A palavra é copiada a um registrador provisório (buffer). O buffer é copiado para RXREG e RX9D.
2
52
USART
Modo Assíncrono – Recepção
Modo Assíncrono – Recepção
Receive Shift Register
06/08/2017
53
06/08/2017
54
06/08/2017
2
USART
3
OPERAÇÕES ARITMÉTICAS
EUSART • Enhanced USART. • Presente na PIC18 ou superior. • Possui recursos adicionais como: • Automatic baud rate detection. • Automatic baud rate calibration. • Automatic wake-up on Sync Break reception. • 12-bit Break character transmit.
06/08/2017
3
OPERAÇÕES ARITMÉTICAS
55
OPERAÇÕES ARITMÉTICAS
06/08/2017
3
56
OPERAÇÕES ARITMÉTICAS
Algoritmos
1 – Multiplicação por 2
Máximo: 127
Dois opcodes
• Em fundo rosa, são apresentados os algoritmos que aplicam as rotações. • Quando rotações são usadas (RRF e RLF), e se presume que o argumento seja um número inteiro de 8 bits, é preciso colocar o carry em zero previamente. • BCF STATUS, C
; 01 - Multiplicação por 2 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
• Quando várias rotações são realizadas, é preciso reiniciar o carry antes de cada rotação. • Em fundo verde, são apresentados os algoritmos que não aplicam as rotações, não requerendo limpeza do carry. • Em fundo branco, são apresentadas outras opções. • Todos esses programas usam, apenas, um GPR. 06/08/2017
3
57
OPERAÇÕES ARITMÉTICAS 2 – Multiplicação por 3
;multiplica por 2 BCF STATUS,C RLF ondecadê,F
;multiplica por 2 MOVF ondecadê,W ADDWF ondecadê,F
end
end
06/08/2017
3
58
OPERAÇÕES ARITMÉTICAS
Máximo: 85
3 – Multiplicação por 4
Três opcodes
; 02 - Multiplicação por 3 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
; 01 - Multiplicação por 2 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
Máximo: 63
Quatro opcodes
; 02 - Multiplicação por 3 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
;multiplica por 3 BCF STATUS,C RLF ondecadê,W ADDWF ondecadê,F
;multiplica por 3 MOVF ondecadê,W ADDWF ondecadê,F ADDWF ondecadê,F
end
end
; 03 - Multiplicação por 4 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
; 03 - Multiplicação por 4 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
;multiplica por 2 BCF STATUS,C RLF ondecadê,F
;multiplica por 2 MOVF ondecadê,W ADDWF ondecadê,F
;multiplica por 2 BCF STATUS,C RLF ondecadê,F
;multiplica por 2 MOVF ondecadê,W ADDWF ondecadê,F
end
end
Outras opções:
06/08/2017
59
06/08/2017
MOVF ADDWF ADDWF ADDWF
ondecadê,W ondecadê,F ondecadê,F ondecadê,F
BCF BCF RLF RLF
STATUS,C STATUS,0x7 ondecadê,F ondecadê,F
60
06/08/2017
3
OPERAÇÕES ARITMÉTICAS
3
OPERAÇÕES ARITMÉTICAS
Máximo: 55
4 – Multiplicação por 5
5 – Multiplicação por 6
Quatro opcodes ; 04 - Multiplicação por 5 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
; 04 - Multiplicação por 5 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
;multiplica por 2 BCF STATUS,C RLF ondecadê,W
;multiplica por 2 MOVF ondecadê,W ADDWF ondecadê,F
ADDWF ADDWF
ADDWF ADDWF
ondecadê,F ondecadê,F
end
; 05 - Multiplicação por 6 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
ondecadê,W ondecadê,F
end
; 05 - Multiplicação por 6 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
;multiplica por 2 BCF STATUS,C RLF ondecadê,F
;multiplica por 2 MOVF ondecadê,W ADDWF ondecadê,F
;multiplica BCF RLF ADDWF
;multiplica MOVF ADDWF ADDWF
por 3 STATUS,C ondecadê,W ondecadê,F
end
06/08/2017
3
61
OPERAÇÕES ARITMÉTICAS
06/08/2017
3
62
OPERAÇÕES ARITMÉTICAS 7 – Multiplicação por 8
Cinco opcodes
BCF RLF ADDWF ADDWF ADDWF
MOVF ADDWF ADDWF ADDWF ADDWF
end
Máximo: 31
Cinco opcodes
; 06 - Multiplicação por 7 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
STATUS,C ondecadê,W ondecadê,F ondecadê,F ondecadê,F
por 3 ondecadê,W ondecadê,F ondecadê,F
end
Máximo: 36
6 – Multiplicação por 7 ; 06 - Multiplicação por 7 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
Máximo: 42
Cinco opcodes
; 07 - Multiplicação por 8 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
ondecadê,W ondecadê,F ondecadê,W ondecadê,W ondecadê,F
BCF RLF ADDWF ADDWF ADDWF
end
; 07 - Multiplicação por 8 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
STATUS,C ondecadê,W ondecadê,F ondecadê,W ondecadê,F
MOVF ADDWF ADDWF ADDWF ADDWF
end
ondecadê,W ondecadê,F ondecadê,W ondecadê,F ondecadê,F
end
Outras opções:
06/08/2017
3
63
OPERAÇÕES ARITMÉTICAS
06/08/2017
3
; 08 - Multiplicação por 9 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20 ;multiplica por 3 MOVF ondecadê,W ADDWF ondecadê,F ADDWF ondecadê,F
;multiplica por 3 BCF STATUS,C RLF ondecadê,W ADDWF ondecadê,F
;multiplica por 3 MOVF ondecadê,W ADDWF ondecadê,F ADDWF ondecadê,F
end
end
ADDWF ADDWF 06/08/2017 ADDWF ADDWF
ondecadê,F ondecadê,F ondecadê,W ondecadê,F
;multiplica por 2 MOVF ondecadê,W ADDWF ondecadê,F ADDWF ADDWF ADDWF ADDWF
ondecadê,W ondecadê,W ondecadê,W ondecadê,F
STATUS,C STATUS,0x7 ondecadê,F ondecadê,F
64
Máximo: 25
Seis opcodes
;multiplica por 3 BCF STATUS,C RLF ondecadê,W ADDWF ondecadê,F
;multiplica por 2 MOVF ondecadê,W ADDWF ondecadê,F
BCF BCF RLF RLF
9 – Multiplicação por 10
Seis opcodes ; 08 - Multiplicação por 9 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
ondecadê,W ondecadê,F ondecadê,F ondecadê,F
OPERAÇÕES ARITMÉTICAS
Máximo: 28
8 – Multiplicação por 9
MOVF ADDWF ADDWF ADDWF
; 09 - Multiplicação por 10 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20 BCF RLF ADDWF ADDWF ADDWF ADDWF
STATUS,C ondecadê,W ondecadê,W ondecadê,F ondecadê,F ondecadê,F
MOVF ADDWF ADDWF ADDWF ADDWF ADDWF
end
ondecadê,F 65 ondecadê,F ondecadê,F
ondecadê,W ondecadê,F ondecadê,F ondecadê,W ondecadê,W ondecadê,F
end ;multiplica por 2 MOVF ondecadê,W ADDWF ondecadê,F
;multiplica por 3 BCF STATUS,C RLF ondecadê,W ADDWF ondecadê,F ADDWF ADDWF ADDWF
; 09 - Multiplicação por 10 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
06/08/2017
;multiplica por 5 (não isolado) MOVF ondecadê,W ADDWF ondecadê,F ADDWF ondecadê,W ADDWF ondecadê,F
66
06/08/2017
3
OPERAÇÕES ARITMÉTICAS
3
OPERAÇÕES ARITMÉTICAS
Máximo: 23
10 – Multiplicação por 11
11 – Multiplicação por 12
Seis opcodes ; 10 - Multiplicação por 11 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20 BCF RLF ADDWF ADDWF ADDWF ADDWF
; 10 - Multiplicação por 11 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
STATUS,C ondecadê,W ondecadê,F ondecadê,W ondecadê,W ondecadê,F
MOVF ADDWF ADDWF ADDWF ADDWF ADDWF
end
; 11 - Multiplicação por 12 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
ondecadê,W ondecadê,F ondecadê,W ondecadê,F ondecadê,F ondecadê,F
BCF RLF ADDWF ADDWF ADDWF ADDWF
end
67
OPERAÇÕES ARITMÉTICAS
STATUS,C ondecadê,W ondecadê,F ondecadê,F ondecadê,W ondecadê,F
3
68
OPERAÇÕES ARITMÉTICAS 13 – Multiplicação por 14
; 12 - Multiplicação por 13 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
STATUS,C ondecadê,W ondecadê,F ondecadê,W ondecadê,F ondecadê,F
MOVF ADDWF ADDWF ADDWF ADDWF ADDWF
; 13 - Multiplicação por 14 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
ondecadê,W ondecadê,F ondecadê,W ondecadê,F ondecadê,W ondecadê,F
end
; 13 - Multiplicação por 14 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
;multiplica por 7 BCF STATUS,C RLF ondecadê,W ADDWF ondecadê,F ADDWF ondecadê,F ADDWF ondecadê,F
;multiplica por 7 MOVF ondecadê,W ADDWF ondecadê,F ADDWF ondecadê,W ADDWF ondecadê,W ADDWF ondecadê,F
;multiplica por 2 BCF STATUS,C RLF ondecadê,F
;multiplica por 2 MOVF ondecadê,W ADDWF ondecadê,F
end
06/08/2017
69
OPERAÇÕES ARITMÉTICAS 14 – Multiplicação por 15
end MOVF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF
06/08/2017
3
; 14 - Multiplicação por 15 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
por 5 STATUS,C ondecadê,W ondecadê,F ondecadê,F
;multiplica MOVF ADDWF ADDWF ADDWF
por 5 ondecadê,W ondecadê,F ondecadê,W ondecadê,F
;multiplica BCF RLF ADDWF
por 3 STATUS,C ondecadê,W ondecadê,F
;multiplica MOVF ADDWF ADDWF
por 3 ondecadê,W ondecadê,F ondecadê,F
end
end ondecadê,W ondecadê,F ondecadê,W ondecadê,F ondecadê,F ondecadê,F ondecadê,F
MOVF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF
ondecadê,W ondecadê,W ondecadê,W ondecadê,F ondecadê,W ondecadê,W ondecadê,F
MOVF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF
ondecadê,W ondecadê,F ondecadê,F ondecadê,F ondecadê,W ondecadê,F ondecadê,F
70
15 – Multiplicação por 16
Máximo: 15
Um opcode
;multiplica BCF RLF ADDWF ADDWF
MOVF ADDWF ADDWF ADDWF ADDWF 06/08/2017 ADDWF ADDWF
ondecadê,W ondecadê,F ondecadê,W ondecadê,F ondecadê,F ondecadê,F ondecadê,F
OPERAÇÕES ARITMÉTICAS
Máximo: 17
Sete opcodes ; 14 - Multiplicação por 15 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
Máximo: 18
Sete opcodes
end
3
ondecadê,W ondecadê,F ondecadê,W ondecadê,W ondecadê,F ondecadê,F
06/08/2017
Seis opcodes
BCF RLF ADDWF ADDWF ADDWF ADDWF
MOVF ADDWF ADDWF ADDWF ADDWF ADDWF end
Máximo: 19
12 – Multiplicação por 13 ; 12 - Multiplicação por 13 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
; 11 - Multiplicação por 12 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
end
06/08/2017
3
Máximo: 21
Seis opcodes
; 15 - Multiplicação por 16 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20 SWAPF
ondecadê,F
end
; 14 - Multiplicação por 15 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20 MOVLW ANDWF SWAPF SWAPF SUBWF end
0x0f ondecadê,F ondecadê,F ondecadê,W ondecadê,F
71
06/08/2017
72
06/08/2017
3
OPERAÇÕES ARITMÉTICAS 16 – Multiplicação por 17
3
OPERAÇÕES ARITMÉTICAS
Máximo: 15
17 – Multiplicação por 18
Máximo: 13
Três opcodes
Quatro opcodes
; 16 - Multiplicação por 17 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
; 17 - Multiplicação por 18 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
SWAPF SWAPF ADDWF
ondecadê,F ondecadê,W ondecadê,F
SWAPF SWAPF ADDWF ADDWF
ondecadê,F ondecadê,W ondecadê,F ondecadê,F
end end 06/08/2017
3
73
OPERAÇÕES ARITMÉTICAS 18 – Multiplicação por 19
3
74
OPERAÇÕES ARITMÉTICAS
Máximo: 13
19 – Multiplicação por 20
Máximo: 12
Cinco opcodes
Cinco opcodes
; 18 - Multiplicação por 19 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
; 19 - Multiplicação por 20 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
SWAPF SWAPF ADDWF ADDWF ADDWF
ondecadê,F ondecadê,W ondecadê,F ondecadê,F ondecadê,F
MOVF ADDWF SWAPF ADDWF ADDWF MOVF ADDWF ADDWF SWAPF ADDWF
end 06/08/2017
3
06/08/2017
ondecadê,W ondecadê,W ondecadê,W ondecadê,F ondecadê,F 75
OPERAÇÕES ARITMÉTICAS 20 – Multiplicação por 21
ondecadê,W ondecadê,W ondecadê,F ondecadê,F ondecadê,F
end 06/08/2017
3
76
OPERAÇÕES ARITMÉTICAS
Máximo: 12
21 – Multiplicação por 22
Máximo: 11
Sete opcodes
Seis opcodes
; 20 - Multiplicação por 21 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
; 21 - Multiplicação por 22 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
MOVF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF end
ondecadê,W ondecadê,F ondecadê,W ondecadê,F ondecadê,W ondecadê,F ondecadê,F
MOVF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF
MOVF ADDWF ADDWF SWAPF ADDWF ADDWF
ondecadê,W ondecadê,W ondecadê,F ondecadê,W ondecadê,F ondecadê,W ondecadê,F
ondecadê,W ondecadê,W ondecadê,W ondecadê,F ondecadê,F ondecadê,F
end 06/08/2017
77
06/08/2017
78
06/08/2017
3
OPERAÇÕES ARITMÉTICAS 22 – Multiplicação por 24
3
OPERAÇÕES ARITMÉTICAS
Máximo: 10
23 – Multiplicação por 25
Quatro opcodes
Máximo: 10
Oito opcodes ; 23 - Multiplicação por 25 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
; 22 - Multiplicação por 24 ; Argumento inteiro, desprezar parte fracionária #include constant ondecadê = 0x20 ;multiplicação por 16 SWAPF ondecadê,F ;multiplicação por 1,5 BCF STATUS,C RRF ondecadê,W ADDWF ondecadê,F
; 23 - Multiplicação por 25 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
;multiplica BCF RLF ADDWF ADDWF
por 5 STATUS,C ondecadê,W ondecadê,F ondecadê,F
;multiplica MOVF ADDWF ADDWF ADDWF
por 5 ondecadê,W ondecadê,F ondecadê,W ondecadê,F
;multiplica BCF RLF ADDWF ADDWF
por 5 STATUS,C ondecadê,W ondecadê,F ondecadê,F
;multiplica MOVF ADDWF ADDWF ADDWF
por 5 ondecadê,W ondecadê,F ondecadê,W ondecadê,F
end
end
end 06/08/2017
3
79
OPERAÇÕES ARITMÉTICAS 24 – Multiplicação por 32
06/08/2017
3
80
OPERAÇÕES ARITMÉTICAS
Máximo: 7
25 – Multiplicação por 33
Três opcodes
Seis opcodes
; 25 - Multiplicação por 33 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
; 24 - Multiplicação por 32 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20 SWAPF BCF RLF
MOVLW ANDWF SWAPF SWAPF ADDWF ADDWF
ondecadê,F STATUS,C ondecadê,F
end
06/08/2017
3
81
OPERAÇÕES ARITMÉTICAS
06/08/2017
3
0x0f ondecadê,F ondecadê,F ondecadê,W ondecadê,W ondecadê,F
end
82
OPERAÇÕES ARITMÉTICAS
26 – Multiplicação por 34
27 – Multiplicação por 35
Sete opcodes
Sete opcodes
; 26 - Multiplicação por 34 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
; 27 - Multiplicação por 35 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
MOVLW ANDWF SWAPF SWAPF ADDWF MOVF ADDWF 06/08/2017
end
0x0f ondecadê,F ondecadê,F ondecadê,W ondecadê,F ondecadê,W ondecadê,F
MOVLW ANDWF SWAPF SWAPF ADDWF ADDWF ADDWF 83
06/08/2017
end
0x0f ondecadê,F ondecadê,F ondecadê,W ondecadê,F ondecadê,W ondecadê,F 84
06/08/2017
3
OPERAÇÕES ARITMÉTICAS
3
OPERAÇÕES ARITMÉTICAS
28 – Multiplicação por 49
Sete opcodes
; 28 - Multiplicação por 49 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
; 29 - Multiplicação por 50 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
MOVLW ANDWF SWAPF SWAPF ADDWF ADDWF ADDWF 06/08/2017
3
29 – Multiplicação por 50
Sete opcodes
0x0f ondecadê,F ondecadê,F ondecadê,W ondecadê,W ondecadê,W ondecadê,F
MOVLW ANDWF SWAPF SWAPF ADDWF ADDWF ADDWF 85
end
OPERAÇÕES ARITMÉTICAS
06/08/2017
3
0x0f ondecadê,F ondecadê,F ondecadê,W ondecadê,W ondecadê,F ondecadê,F 86
end
OPERAÇÕES ARITMÉTICAS
30 – Multiplicação por 64
31 – Multiplicação por 128
Quatro opcodes
Quatro opcodes
; 30 - Multiplicação por 64 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
; 31 - Multiplicação por 128 ; Argumento inteiro, desprezar overflow #include constant ondecadê = 0x20
RLF RLF MOVLW ANDWF SWAPF
RLF RLF RLF MOVLW ANDWF SWAPF
ondecadê,F ondecadê,F 0x0c ondecadê,F ondecadê,F
ondecadê,F ondecadê,F ondecadê,F 0x08 ondecadê,F ondecadê,F
end
end 06/08/2017
3
87
OPERAÇÕES ARITMÉTICAS
06/08/2017
3
88
OPERAÇÕES ARITMÉTICAS
32 – Multiplicação por 0,5
33 – Multiplicação por 1,5
Dois opcodes
Três opcodes
; 32 - Multiplicação por 0,5 ; Argumento inteiro, desprezar parte fracionária #include constant ondecadê = 0x20
; 33 - Multiplicação por 1,5 ; Argumento inteiro, desprezar parte fracionária #include constant ondecadê = 0x20
06/08/2017
;divide por 2 BCF STATUS,C RRF ondecadê,F
BCF RRF ADDWF
end
end
89
06/08/2017
STATUS,C ondecadê,W ondecadê,F
90
06/08/2017
3
OPERAÇÕES ARITMÉTICAS
3
OPERAÇÕES ARITMÉTICAS
34 – Multiplicação por 2,5
35 – Multiplicação por 3,5
Quatro opcodes
Cinco opcodes
; 35 - Multiplicação por 3,5 ; Argumento inteiro, desprezar parte fracionária #include constant ondecadê = 0x20
; 34 - Multiplicação por 2,5 ; Argumento inteiro, desprezar parte fracionária #include constant ondecadê = 0x20 BCF RRF ADDWF ADDWF
BCF RRF ADDWF ADDWF ADDWF
STATUS,C ondecadê,W ondecadê,W ondecadê,F
end
end
06/08/2017
3
91
OPERAÇÕES ARITMÉTICAS
06/08/2017
3
92
OPERAÇÕES ARITMÉTICAS
36 – Multiplicação por 4,5
38 – Multiplicação por 0,25
Seis opcodes
Quatro opcodes
; 38 - Multiplicação por 0,25 ; Argumento inteiro, desprezar parte fracionária #include constant ondecadê = 0x20
; 36 - Multiplicação por 4,5 ; Argumento inteiro, desprezar parte fracionária #include constant ondecadê = 0x20 BCF RRF ADDWF ADDWF ADDWF ADDWF
STATUS,C ondecadê,W ondecadê,W ondecadê,W ondecadê,W ondecadê,F
end
06/08/2017
3
;divide por 2 BCF STATUS,C RRF ondecadê,F ;divide por 2 BCF STATUS,C RRF ondecadê,F
Outra opção:
BCF RRF BCF RLF ADDWF ADDWF
STATUS,C ondecadê,W STATUS,C ondecadê,F ondecadê,W 93 ondecadê,F
OPERAÇÕES ARITMÉTICAS
end 06/08/2017
3
94
OPERAÇÕES ARITMÉTICAS
39 – Multiplicação por 0,75
40 – Multiplicação por 1,25
Cinco opcodes
Seis opcodes
; 40 - Multiplicação por 1,25 ; Argumento inteiro, desprezar parte fracionária #include constant ondecadê = 0x20
; 39 - Multiplicação por 0,75 ; Argumento inteiro, desprezar parte fracionária #include constant ondecadê = 0x20 BCF RRF BCF RRF ADDWF
BCF RRF BCF RRF ADDWF ADDWF
STATUS,C ondecadê,F STATUS,C ondecadê,W ondecadê,F
end
06/08/2017
STATUS,C ondecadê,W ondecadê,W ondecadê,W ondecadê,F
STATUS,C ondecadê,F STATUS,C ondecadê,W ondecadê,W ondecadê,F
end
95
06/08/2017 *Contribuição de Diego Fernandes Almeida Silva e João Paulo Vieira Cordeiro
Outra opção*:
MOVF BCF RRF BCF RRF ADDWF
ondecadê,W STATUS,C ondecadê,F STATUS,C ondecadê,F 96 ondecadê,F
06/08/2017
3
OPERAÇÕES ARITMÉTICAS
3
OPERAÇÕES ARITMÉTICAS
41 – Multiplicação por 1,75
42 – Multiplicação por 40
Sete opcodes
Sete opcodes
; 41 - Multiplicação por 1,75 ; Argumento inteiro, desprezar parte fracionária #include constant ondecadê = 0x20
; 42 - Multiplicação por 40 ; Argumento inteiro, desprezar parte fracionária #include constant ondecadê = 0x20
BCF RRF BCF RRF ADDWF ADDWF ADDWF
;multiplicação por 16 MOVLW 0x0f ANDWF ondecadê,F SWAPF ondecadê,F
STATUS,C ondecadê,F STATUS,C ondecadê,W ondecadê,W ondecadê,W ondecadê,F
;multiplicação por 2,5 BCF STATUS,C RRF ondecadê,W ADDWF ondecadê,W ADDWF ondecadê,F
end 06/08/2017
3
97
OPERAÇÕES ARITMÉTICAS
06/08/2017
3
OPERAÇÕES ARITMÉTICAS 44 – Multiplicação por 56
Seis opcodes
Sete opcodes ; 44 - Multiplicação por 56 ; Argumento inteiro, desprezar parte fracionária #include constant ondecadê = 0x20 ;multiplicação por 16 MOVLW 0x0f ANDWF ondecadê,F SWAPF ondecadê,F
;multiplicação por 16
MOVLW ANDWF SWAPF
0x0f ondecadê,F ondecadê,F
;multiplicação por 3 BCF STATUS,C RLF ondecadê,W ADDWF ondecadê,F
3
end
;multiplicação por 3,5 BCF STATUS,C RRF ondecadê,W ADDWF ondecadê,W ADDWF ondecadê,W ADDWF ondecadê,F
Outra opção:
MOVLW ANDWF SWAPF SWAPF ADDWF ADDWF
0x0f ondecadê,F ondecadê,W ondecadê,F ondecadê,F 99 ondecadê,F
OPERAÇÕES ARITMÉTICAS
06/08/2017
3
end
xx – Multiplicação por 96
Sete opcodes
Sete opcodes ; xx - Multiplicação por 96 ; Argumento inteiro, desprezar parte fracionária #include constant ondecadê = 0x20
; 45 - Multiplicação por 56 ; Argumento inteiro, desprezar parte fracionária #include constant ondecadê = 0x20 MOVLW ANDWF SWAPF SWAPF ADDWF ADDWF ADDWF
100
OPERAÇÕES ARITMÉTICAS
45 – Multiplicação por 80
;multiplicação por 32 RLF ondecadê,F MOVLW 0x0e ANDWF ondecadê,F SWAPF ondecadê,F
0x0f ondecadê,F ondecadê,W ondecadê,F ondecadê,W ondecadê,F ondecadê,F
;multiplicação por 3 BCF STATUS,C RLF ondecadê,W ADDWF ondecadê,F
end 06/08/2017
98
43 – Multiplicação por 48 ; 43 - Multiplicação por 48 ; Argumento inteiro, desprezar parte fracionária #include constant ondecadê = 0x20
06/08/2017
end
101
06/08/2017
end
102
06/08/2017
3
OPERAÇÕES ARITMÉTICAS
4
DSP
xx – Multiplicação por 192 Oito opcodes ; xx - Multiplicação por 96 ; Argumento inteiro, desprezar parte fracionária #include constant ondecadê = 0x20 ;multiplicação por 64 RLF ondecadê,F RLF ondecadê,F MOVLW 0x0c ANDWF ondecadê,F SWAPF ondecadê,F
DSP
;multiplicação por 3 BCF STATUS,C RLF ondecadê,W ADDWF ondecadê,F 06/08/2017
4
end
103
DSP
06/08/2017
4
DSP
Significado • • • • •
Significado
DSP – Digital Signal Processor. Processador digital para sinais. Sinal: Grandeza física que retrata uma informação. Processador específico para tratamento digital de sinais. Neste tipo de aplicação, é muito mais rápido do que a MCU.
• O processamento digital de sinais também pode ser realizado por um P, MCU ou, até mesmo, um computador, porém de forma mais lenta. • A vantagem do uso de computador é a facilidade na alteração de parâmetros e da programação. • A resposta de um DSP é sempre mais lenta do que a proveniente de um processamento analógico. • A vantagem do processamento digital é a menor sensibilidade a interferências externas ao processo.
• O ponto forte da DSP é a alta capacidade de realização de operações matemáticas complexas que permitam a transformação de um sinal original em um sinal desejado.
06/08/2017
4
105
DSP
106
DSP Exemplos de DSP’s
Analógico DSP MCU P Computador • Comparação entre DSP, MCU e P com igual capacidade de processamento (MIPS).
06/08/2017
4
Performance em aplicação específica
06/08/2017
104
107
32-BIT FLOATING POINT (5% do mercado): – TI TMS320C3X, TMS320C67xx – AT&T DSP32C – ANALOG DEVICES ADSP21xxx – Hitachi SH-4 16-BIT FIXED POINT (95% do mercado): – TI TMS320C2X, TMS320C62xx – Infineon TC1xxx (TriCore1) – MOTOROLA DSP568xx, MSC810x – ANALOG DEVICES ADSP21xx – Agere Systems DSP16xxx, Starpro2000 – LSI Logic LSI140x (ZPS400) – Hitachi SH3-DSP 06/08/2017– StarCore SC110, SC140 http://meseec.ce.rit.edu/eecc722-fall2003/722-10-8-2003.pdf, página 13, 2003
108
06/08/2017
4
DSP
4
DSP
Exemplos de aplicações
06/08/2017
• • • • • • • • • • • •
Real/Non-real time procesing Simulação Radares militares Controle Computadores Processamento de imagem/som Internet/redes de computadores Comunicação digital Telefonia (móvel, VOIP) Modem’s (dial-up, 2G/3G, cable) Televisão digital Instrumentos musicais
Tipos de aquisição de dados • • • • • •
Non-real time procesing Um arquivo é gerado com o sinal adquirido. A aquisição do sinal é feita por um certo tempo. O processamento é feito sobre o arquivo. O processamento do arquivo pode ser lento. A exigência de performance é menor.
• Real time procesing • Não há geração de arquivo. • A aquisição do sinal é feita por um tempo indefinido. • O processamento é feito sobre o sinal continuamente. 06/08/2017 110 • A exigência de performance é maior.
109
http://meseec.ce.rit.edu/eecc722-fall2003/722-10-8-2003.pdf, página 15, 2003
4
4
DSP
DSP Exemplos
Dados para o processamento
• Arquivo de amostragem – Sample • Non-real time procesing • Sinal contínuo infinito – Stream • Real time procesing
06/08/2017
111
06/08/2017
112 http://meseec.ce.rit.edu/eecc722-fall2003/722-10-8-2003.pdf, página 18, 2003
4
DSP
4
DSP
Programação mais comum
Sinal analógico intensidade
• P: Linguagens de alto nível – Exemplo: Java • MCU: Linguagens de baixo nível – Exemplo: C • DSP: Linguagens de baixo nível – Exemplo: C • P: Multitarefa • MCU: Monotarefa • DSP: Monotarefa
t
• Exemplos de sistemas P multitarefa: smartphone, smartTV. • Exemplos de sistemas MCU ou DSP monotarefa: telefone e TV convencionais. 06/08/2017
113
06/08/2017
• • • •
Pode mudar em qualquer instante. Pode assumir qualquer valor. Não possui descontinuidade. A função é derivável em todos os pontos.
114
06/08/2017
4
DSP
4
DSP
Sinal analógico amostrado
Sinal analógico amostrado http://www.spectrum-soft.com/news/winter97/sample2.gif
intensidade
http://www.eecs.tufts.edu/~dsculley/tutorial/opamps/sampleAndHold.JPG
t
• • • •
Pode mudar, apenas, em instantes determinados. Pode assumir qualquer valor analógico. É descontínuo no tempo. Proveniente de circuito de amostra e retenção (sample/hold) 06/08/2017 115
4
DSP
06/08/2017
116
4
Sinal analógico quantizado
DSP Sinal analógico amostrado e quantizado
intensidade
intensidade
t
t
• Pode mudar em qualquer instante. • Pode assumir, apenas, valores pré-determinados. • É descontínuo em intensidade. 06/08/2017
4
• Pode mudar, apenas, em instantes determinados. • Pode assumir, apenas, valores pré-determinados. • É descontínuo no tempo e na intensidade. • Proveniente de um conversor D/A. 06/08/2017
117
DSP
4
118
DSP
Parâmetros do sinal analógico processado
Exemplo 1 • • • •
• Sampling rate. • Taxa de amostragem. • Frequência de amostragem.
Tempo de 16 horas diárias. Conversor A/D com resolução de 4 bits. Período de amostra de 8ms. Determine o tamanho do arquivo diário.
• Bit rate. • Taxa de bits. • Bits usados na quantização. • Exemplo: CD-DA. • 44,1 kHz • 16 bits 06/08/2017
119
06/08/2017
120
06/08/2017
4
DSP
4
DSP
Quantização não linear • • • •
Quantização não linear
O intervalo entre os valores quantizados não é constante. Valores baixos recebem intervalos baixos. A resolução é proporcional ao valor instantâneo sinal. Isto melhora a relação sinal/ruído em sinais alternados.
• Escala logarítmica. • Usado em som e imagem.
nível 7
intensidade nível 6 nível 5
t
06/08/2017
121
4
DSP
nível 4 nível 3 nível 2 nível 1122
06/08/2017
4
DSP
Exemplo 2 • • • •
Controle Linear • • • • • • •
Quantização logarítmica. O nível 3 vale 6mV. O nível 4 vale 8mV. Determine n1, n2, n5 e n6. 14,22mV
ASP – Analog Signal Processor Emprega dispositivos analógicos. Pode ser elétrico, mecânico, ótico, etc. Pode ser proporcional, integral, derivativo, etc. Proporciona o controle mais rápido. O projeto envolve transformada de Laplace. Operações matemáticas podem ser feitas or AMP-OP.
10,67mV
• • • •
8mV 6mV 4,5mV 3,375mV 06/08/2017
4
123
DSP
06/08/2017
4
• • • • •
Radiciação Logaritmação Exponencial Derivação Integração
124
DSP
Controle discreto
Controle
Discreto. • Emprega eletrônica digital. • O projeto envolve transformada Z. • A resposta é mais lenta do que no controle analógico. • Problemas: Histereses, propagação de atraso, harmônicos. • Operações matemáticas executadas por uma ULA.
06/08/2017
Adição Subtração Multiplicação Divisão
125
Processado. • Para que a resposta seja rápida, usa-se DSP. • Para resposta lenta, pode-se usar P ou MCU. • O controle envolve tomadas de decisão. • Limiares são definidos para a decisão. Processado por faixas. • O controle envolve tomadas de decisão. • Limiares são definidos para a decisão. • Faixas de valores para a entrada analógica são definidas. • Para cada faixa, é determinado o valor da saída analógica. 06/08/2017
126
06/08/2017
4
DSP
4
DSP
Exemplo de controle processado por faixas • • • • • •
Vantagens do controle processado
Sistema de refrigeração por ventilador. Abaixo de 20C, o motor é desligado. Entre 20C e 25C, o motor recebe 1/4 da potência máxima. Entre 25C e 30C, o motor recebe 2/4 da potência máxima. Entre 30C e 35C, o motor recebe 3/4 da potência máxima. Entre 35C e 40C, o motor recebe a potência máxima.
• • • • • • •
• O controle processado por faixas pode gerar oscilações na seleção da faixa por tempo indeterminado. 06/08/2017
4
127
DSP
Facilidade na alteração de parâmetros. Facilidade de projeto. Facilidade no acréscimo de novas variáveis. Pequena variação nos requisitos de hardware. Facilidade na deteção de defeitos. Possibilidade de monitoramento computacional. Grande repetibilidade.
06/08/2017
128
4
DSP
Desvantagens do controle processado
Controle digital
• Lentidão – Inviável para processos que requerem monitoramento de muita informação em pouco tempo. • Limitada faixa de temperatura de operação. • Para projetos pequenos, a versão analógica pode ser mais barata. • Menor liberdade de escolha dos conceitos envolvidos no projeto.
06/08/2017
4
Input
Sensores
129
DSP
Processamento Digital
06/08/2017
4
Output
Atuadores
130
DSP
Controle
ULA
• O controle é feito por meio da aplicação de funções determinadas. • No controle analógico, estas funções são obtidas, de forma aproximada, por meio de circuitos analógicos. • No controle processado, estas funções são obtidas a partir das funções básicas contidas na ULA. • Nas DSP’s, a ULA pode conter funções mais sofisticadas, a fim de facilitar a programação e a rapidez de execução do programa.
MCU ou P: • ULA com poucas funções. • Funções sofisticadas requerem vários ciclos de instrução.
06/08/2017
131
DSP: • ULA com muitas funções. • ULA com as funções específicas (DSP específica). • Um ou poucos ciclos para realizar operações sofisticadas.
06/08/2017
132
06/08/2017
4
DSP
4
DSP
Realimentação
Controle digital
• Se nenhum sensor é afetado pelos atuadores, o controle é de malha aberta. • Se, pelo menos, um sensor é afetado por, pelo menos, um atuador, o controle é de malha fechada. • Um controle de malha aberta é transformado em controle de malha fechada por meio da realimentação (feedback).
06/08/2017
Input
DSP
06/08/2017
DSP Conversão analógico-digital
Atuadores • Motor • Válvula solenóide • Aquecedor/Forno • Lâmpada • Alto-falante
06/08/2017
Barramento Analógico
DSP
4
Sensores
06/08/2017
Conversores A/D
Conversor paralelo / serial
1 bit
Digital
136
DSP Sensoriamento de longa distância
• Para pequenas distâncias ou para sensores espalhados, a transmissão pode ser feita de forma paralela. • Para longas distâncias ou para sensores concentrados, a transmissão pode ser feita de forma serial. Barramento Digital
Processamento
Opções: • Conversor A/D separado. • Conversor A/D embutido no sensor. 06/08/2017 • Conversor A/D embutido na DSP ou MCU.
Sensoriamento de longa distância
Barramento Analógico
Barramento Digital
Conversores A/D
Sensores
135
4
134
4
Exemplos Sensores • De posição • De temperatura • De pressão • De umidade • De luz • De força • De Ph • De som • De concentração • De viscosidade
Atuadores
Digital Feedback
133
4
Output
Processamento
Sensores
Processamento Digital Inlcui entrada serial
137
Barramento Analógico Sensores
Barramento Digital
Conversores A/D
Conversor paralelo / serial
1 bit
Processamento Digital Inlcui entrada serial
Opções: • Conversores A/D e serial separados. • Conversor A/D embutido no sensor e serial separado. • Conversores A/D e serial embutidos no sensor. • Como o conversor serial é simplex, há, apenas, uma via de saída de dados, mesmo se o protocolo for Microwire, SPI, etc. 06/08/2017
138
06/08/2017
4
DSP
4
DSP
Derivadas • Muitas vezes, o valor médio ou instantâneo de uma grandeza não é interessante. • Há casos em que a variação desta grandeza é mais importante. • Como exemplo, tem-se o gradiente térmico, que pode ser mais prejudicial a um sistema elétrico/mecânico do que uma temperatura alta. • Sensores especiais conseguem aplicar a derivada primeira no valor instantâneo da grandeza medida. • A forma mais fácil de obter a derivada é por meio do uso de amplificadores derivadores a AMP-OP. • Outras funções, como logarítmo ou derivada segunda, também podem ser obtidos. 06/08/2017
4
Derivadas – Exemplo
• Em elevadores, a sacudida é o que determina o conforto para os usuários. • Em robótica, a sacudida é o que determina o estresse mecânico das partes móveis e do objeto manipulado. 139
DSP
06/08/2017
4
DSP
Adequação do sensoriamento
Adequação do sensoriamento
• A adequação do valor medido ao processamento através da aplicação de alguma função de transformação (derivação, integração, logaritmação, etc) geralmente é feita de forma analógica diretamente no sinal fornecido pelo sensor. • Esta operação pode ser feita por meio de um AMP-OP. • Caso esta manipulação precise receber parâmetros configuráveis ou precise ser alterada livremente, pode ser mais interessante aplicar a alteração nos valores digitais. 06/08/2017
5
140
Opção 1 Sensores
Derivação Integração Logaritmação Potenciação etc
Conversores A/D
Processamento Digital
Opção 2 Sensores
141
APLICAÇÕES DE DSP
Conversores A/D
Processamento Digital Inlcui derivação, integração logaritmação, potenciação, etc
06/08/2017
5
142
APLICAÇÕES DE DSP Exemplo: Som em computação
• Exemplo do computador pessoal. • A CPU poderia lidar com o tratamento de som. • Isso tornaria a performance do computador muito baixa para outras tarefas durante o tratamento do áudio. • Uma placa de som (off-borad ou on-board) faz o tratamento do som, liberando a CPU para outras tarefas. • A placa de som possui um DSP (se for on-board, esta DSP está incorporada ao chipset. • O tratamento do som pode incluir desde a conversão D/A, como a decodificação de algoritmos de compactação e a colocação de efeitos de áudio.
APLICAÇÕES DE DSP
06/08/2017
143
06/08/2017
144
06/08/2017
Audio Processor:
5
APLICAÇÕES DE DSP
5
Exemplo: Som em computação
Sound Core3D
APLICAÇÕES DE DSP
Exemplo: Som em computação
Audio Resolution:
24-Bit
Digital Audio Conv ertor (DAC):
Cirrus Logic
Signal to Noise Ratio (SNR) (20kHz Low-pass f ilter, A-Wgt):
116dB
Maximum Play back Quality :
5.1 : Up to 96kHz Stereo Direct: Up to 192kHz
Frequency Response @96kHz:
Front Channel Out : 10Hz to 45kHz Rear Channel Out : 15Hz to 45kHz Center Out : 10Hz to 45kHz Headphone (33 ohms): 10Hz to 45kHz
Frequency Response @192kHz (Stereo Direct Only ):
Front Channel Out : 10Hz to 88kHz
16-bit to 24-bit Recording Sample 8,11.025,16, 22.05, 24, 32, 44.1, Rates: 48, 96 (kHz)
16-bit to 24-bit Play back Sample Rates:
8,11.025,16, 22.05, 24, 32, 44.1, 48, 96, 192 (kHz)
Maximum Recording Quality :
Up to 24-bit/96kHz
I/O Ports (Main Card):
Headphone : 1 x Amplif ied 3.5mm jack Speaker Out : 3 x 3.5mm jacks(F/R/C-Sub) Line / Mic In : 1x shared 3.5mm jack Optical Out : 1x TOSLINK Optical In : 1x TOSLINK
Audio Control Module / Front Panel Connectiv ity:
Volume Control Knob Built-in Beam-Forming Microphone Headphone-Out : 1x 3.5mm jack, 1x 1/4” jack Microphone-In : 1x 3.5mm jack, 1x 1/4” jack
600 Ohm Amplif ied Headphone Output:
Maxim MAX97220A
http://www.soundblaster.com/images/desktop/products/zx_pdtimg1.png
06/08/2017
5
145
06/08/2017
5
APLICAÇÕES DE DSP
APLICAÇÕES DE DSP Exemplo: Imagem em computação
Exemplo: Imagem em computação • Exemplo do computador pessoal. • A CPU poderia lidar com o tratamento de imagem. • O tratamento de imagem é muito mais crítico do que o tratamento de som. • Jogos 3D têm impulsionado a indústria de placas de processamento de imagem (on-board e, principalmente, off-board). • O processamento é tão grande que essas placas utilizam GPU (CPU para gráficos), que consomem muita energia, aquecem bastante e podem, até mesmo, ser mais caras do que a placa-mãe ou a CPU. • O processamento de imagem é tão intenso que as placas-mãe possuem barramento para uso específico 06/08/2017 147 do tratamento de imagem.
5
146
APLICAÇÕES DE DSP
http://www.nvidia.com/content/titan/us/img/titan_angle-view.png
http://www.geforce.com/Active/en_US/shared/images/products/geforce-gt-610/geforce-gt-610-3qtr_gallery_preview.png http://images.productwiki.com/upload/images/nvidia_geforce_gt_520m.png
06/08/2017
5
148
APLICAÇÕES DE DSP
Exemplo: IMGLIB
Classes de operações com imagem – IMGLIB
• C6000 Image Processing Library (IMGLIB) is an optimized image/video processing function library for C programmers. • It includes C-callable general-purpose image/video processing routines that are typically used in computationally intensive real-time applications. • With these routines, you can achieve higher performance than equivalent code written in standard ANSI C language. • By providing ready-to-use DSP functions with source code, IMGLIB can significantly shorten your application development time.
• Análise de imagem. • Filtragem. • Compressão/descompressão.
06/08/2017
http://www.ti.com/tool/sprc264
149
06/08/2017
http://www.ti.com/lit/ug/spruf30a/spruf30a.pdf
150
06/08/2017
5
APLICAÇÕES DE DSP
5
APLICAÇÕES DE DSP
Exemplos de operações de análise de imagem
Arquitetura de câmera DSP
http://www.electronicproducts.com/images2/z32texad0202.gif
06/08/2017
5
http://www.ti.com/lit/ug/spruf30a/spruf30a.pdf
151
APLICAÇÕES DE DSP
06/08/2017
5
APLICAÇÕES DE DSP
Exemplos de funções de câmera DSP • • • • • • • • • •
Exemplo: SGTL5000
Ajuste à luminosidade. Ajuste da temperatura de cor. Ajuste de posicionamento. Foco automático. Flash automático. Zoom máximo automático em função da macro. Identificação de padrões (ex: sorriso). Disparo automático por movimento ou som. Compressão (JPG, LZH, MPEG, outros). Redução de ruído (som e imagem).
06/08/2017
152
• The SGTL5000 is a Low Power Stereo Codec with Headphone Amp from Freescale, and is designed to provide a complete audio solution for portable products needing line-in, mic-in, line-out, headphone-out, and digital I/O. • Target markets include portable media players, GPS units, and smart phones.
153
06/08/2017
154 http://cache.freescale.com/files/analog/doc/data_sheet/SGTL5000.pdf?pspll=1
5
APLICAÇÕES DE DSP
5
APLICAÇÕES DE DSP
Exemplo: SGTL5000
Exemplo: SGTL5000
Analog Inputs Stereo Line In Support for external analog input Codec bypass for low power MIC MIC bias provided Programmable MIC gain Auto volume control ADC 85 dB SNR and -70 dB THD+N (VDDA=1.8 V) 93 dB SNR and -73 dB THD+N (VDDA = 3.3 V) Analog Outputs DAC/Line Out 100 dB SNR and -85 dB THD+N (VDDA=3.3 V) DAP/HP Output 98 dB SNR and -80 dB THD+N(VDDA=1.8 V 16 Ohm load, DAC to headphone) 45 mW max into 16 Ohm load @ 3.3 V Capless design Best in class PSRR without Lin Reg. Only two external components needed for digital playback Ramped digital volumes Popless volume 0.5 db analog volume steps (0 db to – 64 db) Integrated Digital Audio Processing Surround, bass, tone control/parametric equalizer/graphic equalizer Digital I/O I2S port to allow routing to applications processor
06/08/2017
155 http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=SGTL5000&nodeId=01435959C059C3
06/08/2017
156 http://cache.freescale.com/files/graphic/block_diagram/SGTL5000_BD.gif
06/08/2017
5
APLICAÇÕES DE DSP
5
Exemplo: SGTL5000
APLICAÇÕES DE DSP Exemplo de sistema programável com DSP
http://line6.com/tcddk/images/devbackground.jpg
06/08/2017
157
06/08/2017
158
http://cache.freescale.com/files/analog/doc/data_sheet/SGTL5000.pdf?pspll=1
5
APLICAÇÕES DE DSP
5
APLICAÇÕES DE DSP
Exemplo de sistema programável com DSP
06/08/2017
dsPIC30F
159
06/08/2017
160
http://www.cuk-audio.com/uploads/images/8x8DSPFront_MF.jpg http://www.cuk-audio.com/uploads/images/SymNet_Designer_Glamour3o.png
5
http://www.microchip.com/_images/dsPIC30FArchblkdgrm.jpg
APLICAÇÕES DE DSP
5
dsPIC33F/E
APLICAÇÕES DE DSP ADSP-21367/ADSP-21368/ADSP-21369
SUMMARY • High performance 32-bit/40-bit floating-point processor optimized for high performance audio processing • Single-instruction, multiple-data (SIMD) computational architecture • On-chip memory—2M bits of on-chip SRAM and 6M bits of on-chip mask programmable ROM • Code compatible with all other members of the SHARC family • The ADSP-21367/ADSP-21368/ADSP-21369 are available with a 400 MHz core instruction rate with unique audiocentric peripherals such as the digital applications interface, S/PDIF transceiver, serial ports, 8-channel asynchronous sample rate converter, precision clock generators, and more.
06/08/2017
161 http://www.microchip.com/_images/dsPIC33FArchblkdgrm.jpg
DEDICATED AUDIO COMPONENTS • S/PDIF-compatible digital audio receiver/transmitter • 4 independent asynchronous sample rate converters (SRC) • 16 PWM outputs configured as four groups of four outputs • ROM-based security features include • JTAG access to memory permitted with a 64-bit key • Protected memory regions that can be assigned to limit access under program control to sensitive code • 06/08/2017 PLL has a wide variety of software and hardware multiplier/divider ratios
162
06/08/2017
5
163
APLICAÇÕES DE DSP
http://media.digikey.com/photos/Analog%20Devices%20Photos/ADZS-21369-EZLITE.JPG
http://media.digikey.com/photos/Analog%20Devices%20Photos/ADZS-21369-EZLITE.JPG
06/08/2017
5
APLICAÇÕES DE DSP
ADZS-21369-EZLITE-ND
APLICAÇÕES DE DSP ADZS-21369-EZLITE-ND
5
06/08/2017
5
164
APLICAÇÕES DE DSP
VisualDSP++
VisualDSP++
http://www.automation-drive.com/EX/05-13-10/visualdsp_01_b.gif
06/08/2017
5
165
06/08/2017
5
APLICAÇÕES DE DSP
166
APLICAÇÕES DE DSP Sistema embarcado
Exemplo de aplicação • • • • • • •
Embedded system. Permite o uso de apenas alguns aplicativos. Possui aplicação específica. Tem baixo custo. Performance facilmente medida. Ideal para DSP. Exemplo: Windows Embedded.
http://www.ferrofish.de/gfx/b4000.jpg
06/08/2017
Processadores: • Sharc DSP • Cortex 3 ARM
167
06/08/2017
168 http://www.microchip.com/_images/dsPIC33FArchblkdgrm.jpg
06/08/2017
5
APLICAÇÕES DE DSP
5
APLICAÇÕES DE DSP
Exemplo de sistema embarcado com P
Exemplo de sistema embarcado com P
Placa-mãe de PC rodando Windows™
Placa-mãe dedicada 06/08/2017
Sistema operacional dedicado
169
INTEL® 8051
6
06/08/2017
170
INTEL® 8051
6
Siglas
• • • • • •
INTEL® 8051
06/08/2017
171
INTEL® 8051
6
R0, R1, R2, R3,R4, R5, R6, R7: GPR´s (8 bits). A: Acumulador (work register) (8 bits). IRAM: Internal RAM address (8 bits). #data: Palavra fornecida na instrução (8 bits). PC: Program Counter (16 bits). DPTR: Data Pointer: GPR (16 bits).
06/08/2017
172
INTEL® 8051
6
Instruction Set
Arquitetura File registers
Program & Data
data bus
data bus
data bus
06/08/2017
173
00
01
02
00 10 20 30
NOP
AJMP
LJMP
JBC
ACALL
LCALL
JB
AJMP
JNB
ACALL
40 50 60 70 80 90 a0
JC
04
05
06
07
08
09
0a
0b
0c
0d
0e
0f
RR
INC
INC
INC
INC
INC
INC
INC
INC
INC
INC
INC
INC
RRC
DEC
DEC
DEC
DEC
DEC
DEC
DEC
DEC
DEC
DEC
DEC
DEC
RET
RL
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
RETI
RLC
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
AJMP
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
JNC
ACALL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
JZ
AJMP
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
JNZ
ACALL
ORL
JMP
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SJMP
AJMP
ANL
MOVC
DIV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
ACALL
MOV
MOVC
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
ORL
AJMP
MOV
INC
MUL
?
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
CPL
CPL
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CLR
CLR
SWAP
XCH
XCH
XCH
XCH
XCH
XCH
XCH
XCH
XCH
XCH
XCH
SETB
SETB
DA
DJNZ
XCHD
XCHD
DJNZ
DJNZ
DJNZ
DJNZ
DJNZ
DJNZ
DJNZ
DJNZ
MOVX
MOVX
CLR
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOVX
MOVX
CPL
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV 174 MOV
b0 ANL ACALL c0 PUSH AJMP ACALL d0 POP e0 MOVX AJMP MOVX ACALL f0 06/08/2017
03
06/08/2017
INTEL® 8051
6
INTEL® 8051
6
Instruction Set – Parte 1 Mnem ACALL ADD ADDC AJMP ANL CJNE CLR CPL DA DEC DIV DJNZ INC
Mnem JB JBC JC JMP JNB JNC JNZ JZ LCALL LJMP MOV MOVC MOVX MUL NOP ORL
Significado Absolute Call Add Accumulator (With Carry) Add Accumulator (With Carry) Absolute Jump Bitwise AND Compare and Jump if Not Equal Clear Register Complement Register Decimal Adjust Decrement Register Divide Accumulator by B Decrement Register and Jump if Not Zero Increment Register
Instruction Set – Parte 2
Significado Jump if Bit Set Jump if Bit Set and Clear Bit Jump if Carry Set Jump to Address Jump if Bit Not Set Jump if Carry Not Set Jump if Accumulator Not Zero Jump if Accumulator Zero Long Call Long Jump Move Memory Move Code Memory Move Extended Memory Multiply Accumulator by B No Operation Bitwise OR
06/08/2017
Mnem POP PUSH RET RETI RL RLC RR RRC SETB SJMP SUBB SWAP XCH XCHD XRL
175
INTEL® 8051
6
06/08/2017
06/08/2017
INTEL® 8051 Operações entre o acumulador e o GPR
R0 08
R1 09
R2 0a
R3 0b
R4 0c
R5 0d
R6 0e
R7 0f
00 10 20 30 40 50
INC
INC
INC
INC
INC
INC
INC
INC
DEC
DEC
DEC
DEC
DEC
DEC
DEC
DEC
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
60 70 80 90 a0 b0 c0
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
R0 08
R1 09
R2 0a
R3 0b
R4 0c
R5 0d
R6 0e
R7 0f
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
20
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
ADDC
MOV
MOV
MOV
MOV
MOV
MOV
MOV
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
ANL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
XCH
XCH
XCH
XCH
XCH
XCH
XCH
XCH
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
d0 e0 f0
DJNZ
DJNZ
DJNZ
DJNZ
DJNZ
DJNZ
DJNZ
DJNZ
30 40 50 60 90
ADDC ADDC ADDC ADDC ADDC ADDC ADDC ADDC
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
• • • • •
177
SUBB SUBB SUBB SUBB SUBB SUBB SUBB SUBB
00 10
R1 09
R2 0a
R3 0b
R4 0c
R5 0d
R6 0e
R7 0f
INC
INC
INC
INC
INC
INC
INC
INC
INC
DEC
DEC
DEC
DEC
DEC
DEC
DEC
DEC
DEC
INTEL® 8051 Operações de gravação de GPR • • • •
Incremento Decremento 70
06/08/2017
SUBB
Adição Adição com carry OR AND XOR Subtração com borrow 178
6
A resposta vai para o GPR. Um operando. R = op (R) 1 byte (sem argumentos).
R0 08
ADD
06/08/2017
Operações com o GPR • • • •
A resposta vai para o acumulador. O acumulador é o primeiro operando. O GPR é o segundo operando. A = R op A 1 byte (sem argumentos).
MOV
INTEL® 8051
6
176
6
General Purpose Registers
• Oito registradores. • R0, R1, R2, R3, R4, R5, R6, R7. • Selecionados através do opcode.
Significado Pop Value From Stack Push Value Onto Stack Return From Subroutine Return From Interrupt Rotate Accumulator Left Rotate Accumulator Left Through Carry Rotate Accumulator Right Rotate Accumulator Right Through Carry Set Bit Short Jump Subtract From Accumulator With Borrow Swap Accumulator Nibbles Exchange Bytes Exchange Digits Bitwise Exclusive OR
179
06/08/2017
O 8-bit data é copiado no GPR. O dado é o operando. R byte 2 bytes (um argumento). R0 08
R1 09
R2 0a
R3 0b
R4 0c
R5 0d
R6 0e
R7 0f
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
180
06/08/2017
INTEL® 8051
6
Operações de movimentação entre GPR e A
Operações de movimentação com GPR e IRAM • • • •
• O segundo operando é copiado no primeiro operando. • 1 byte (sem argumentos).
e0 f0
R0 08
R1 09
R2 0a
R3 0b
R4 0c
R5 0d
R6 0e
R7 0f
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
181
INTEL® 8051
c0
R0 08
R1 09
R2 0a
R3 0b
R4 0c
R5 0d
R6 0e
R7 0f
XCH
XCH
XCH
XCH
XCH
XCH
XCH
XCH
b0
06/08/2017
R4 0c
R5 0d
R6 0e
R6 0e
R7 0f
MOV
MOV
MOV
MOV
a0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
IRAM R R IRAM
182
INTEL® 8051
R2 0a
R3 0b
R4 0c
R5 0d
R6 0e
R7 0f
DJNZ DJNZ DJNZ DJNZ DJNZ DJNZ DJNZ DJNZ
184
INTEL® 8051 Resumo das operações sobre GPR R0-7
08-0f
• 128 instruções. • Metade das instruções.
R7 0f
CJNE CJNE CJNE CJNE CJNE CJNE CJNE CJNE
185
R1 09
06/08/2017
6
Compare and Jump If Not Equal. O segundo operando é comparado com primeiro operando. O primeiro operando é o GPR. O segundo operando é o 8-bit data. O primeiro argumento é o 8-bit data. O segundo argumento é o 8-bit relative address. 3 bytes (dois argumentos). R3 0b
R5 0d
MOV
d0
Operação de comparação com GPR – CJNE
R2 0a
R4 0c
MOV
R0 08
INTEL® 8051
R1 09
R3 0b
MOV
Operações de decremento de GPR – DJNZ
183
R0 08
R2 0a
MOV
• Decrement and Jump if Not Zero. • O argumento é o 8-bit relative address da program memory. • 2 bytes (um argumento).
06/08/2017
• • • • • • •
R1 09
MOV
6
Exchange bytes. A R. R A. 1 byte (sem argumentos).
6
R0 08 80
06/08/2017
Operações de permutação entre GPR e A – XCH • • • •
O segundo operando é copiado no primeiro operando. Somente a memória interna pode ser acessada. O argumento é o 8-bit IRAM address. 2 bytes (um argumento).
AR RA
06/08/2017
6
INTEL® 8051
6
06/08/2017
Endereçamento direto
Bytes
00 10
INC
R inc
R
1
DEC
R dec
R
1
20 30 40 50 60 70
ADD
AA+
R
1
ADDC
AA+
R
1
ORL
A A or
R
1
ANL
A A and R
1
XRL
A A xor R
1
MOV
R
#data
2
80 90 a0 b0 c0 d0
MOV
IRAM
R
2
SUBB
AA-
R
1
MOV
R
IRAM
2
CJNE
Compara R e #data
3
XCH
A R, R A
1
DJZN
R R-1
e0 f0
MOV
A
R
MOV
R
A
2 1 186 1
06/08/2017
INTEL® 8051
6
INTEL® 8051
6
Endereçamento indireto
Endereçamento indireto R0-7
08-0f
• • • •
Um GPR contém o 8-bit IRAM address. O endereçamento indireto é sinalizado por @. O GPR pode ser R0 ou R1. O argumento é @R0 ou @R1.
06/08/2017
187
INTEL® 8051
6 Operação
43 53 63 75
Bytes
ORL
IRAM = IRAM or
data
3
ANL
IRAM = IRAM and
data
3
XRL
IRAM = IRAM xor
data
3
MOV
IRAM data
3
Operação ADD
A=A +
data
2
ADDC
A=A +
data
2
44 54 64 74 94 b4
ORL
A = A or
data
2
ANL
A = A and data
2
XRL
A = A xor
data
2
MOV
A
data
2
SUBB
A=A-
data
2
CJNE
Compara A e data
Nibble menos signific.
ORL
IRAM = IRAM or
A
2
ANL
IRAM = IRAM and
A
2
XRL
IRAM = IRAM xor
A
2
MOV
IRAM
A
3 Bytes 2 2
Operação no bit(address)
Bytes
CPL
bit(address) /bit(address)
2
CLR
bit(address) 0
2
SETB
bit(address) 1
2
Operação no carry
DEC
@R dec @R
ADD
ADD
AA+
@R
ADDC
ADDC
AA+
@R
ORL
ORL
A A or
@R
ANL
ANL
A A and @R
XRL
XRL
A A xor @R
MOV
MOV
@R
byte
MOV
MOV
IRAM
@R
SUBB
SUBB
AA-
@R
MOV
MOV
@R
IRAM
Compara R e data
60 70 80 90 a0 b0
CJNE
CJNE
Compara @R e data
XCH
A R, R A
c0
XCH
XCH
A @R, @R A
DJZN
R R-1
MOV
A
R
MOV
A
@R
R
A
e0 f0
MOV
MOV
MOV
MOV
@R
A
DEC
R dec
R
ADD
AA+
R
ADDC
AA+
R
ORL
A A or
R
ANL
A A and R
60 70 80 90 a0 b0
XRL
A A xor R
MOV
R
data
MOV
IRAM
R
SUBB
AA-
R
MOV
R
RAM
CJNE
c0 d0 e0 06/08/2017 f0
Operação
04
Bytes
25 35 45 55 65 e5
ADD
A=A +
IRAM
2
ADDC
A=A +
IRAM
2
ORL
A = A or
IRAM
2
ANL
A = A and IRAM
2
XRL
A = A xor
IRAM
2
MOV
A
IRAM
2
95 c5 b5 85
SUBB
A=A-
IRAM
2
XCH
A IRAM, IRAM A
2
CJNE
Compara A e IRAM
MOV
IRAM IRAM
3 189 3
Bytes
b3
CPL
C /C
1
c3 d3
CLR
C0
1
SETB
C1
1
Operação no C e no b
72 82 a0 b0 92 A2
Bytes
INC
A inc
A
1
DEC
A dec
A
1
CLR
A 0
1
f4
CPL
AA+ 1
1
05
Operação
Bytes
00 10 d0
INC
IRAM inc IRAM
2
DEC
IRAM dec IRAM
2
DJZN IRAM IRAM-1
3
190
INTEL® 8051 Outras operações lógicas/aritméticas
Bytes
C C or bit address
2
ANL
C C and bit address
2
ORL
C C or /bit address
2
C C and /bit address
Operação
00 10 e4
06/08/2017
6
ORL
ANL
188
INTEL® 8051
2
Operações sobre bits b2 c2 d2
DEC
00 10 20 30 40 50
Bytes
INTEL® 8051
6
00 10 20 30 40 50
@R inc @R
Bytes
24 34
d6 XCHD A @R, @R A 06/08/2017 d7 XCHD A @R, @R A
07 INC
R
Operações sobre A ou sobre IRAM
Operação
42 52 62 f5
Endereçamento indireto
06 INC
R inc
6
Operações entre A, IRAM e data
@R0 @R1
Endereçamento direto
INC
Operação
00 84 a4 c4 d4
2
MOV
bit address C
2
MOV
C bit address
2
Bytes
NOP
None
1
DIV
Divide Accumulator by B
1
MUL
Multiply Accumulator by B
1
SWAP Swap Accumulator Nibbles DA
Decimal Adjust Accumulator
1 1
Operação com acumulador Bytes
06/08/2017
03
RR
13
RRC
23
RL
33
RLC
Rotate Accumulator Right Rotate Accumulator Right Through Carry Rotate Accumulator Left Rotate Accumulator Left Through Carry
1 1 1 1
191
06/08/2017
192
06/08/2017
INTEL® 8051
6
INTEL® 8051
6
DPTR • • • • •
External Memory
Data pointer. 16-bit GPR @DPTR: Endereçamento indireto. @DPTR indica o 16-bit address da memória externa. @(A+DPTR) indica o 16-bit address da memória de programa. Operação
Bytes
73 A3 90 93
JMP
Jump to DPTR + A
1
INC
Increment DPTR
1
MOV
DPTR data16
3
MOVC A @(A + DPTR)
1
E0 F0
MOVX A @DPTR
1
MOVX @DPTR A
1
• • • •
Operação
06/08/2017
193
INTEL® 8051
6
XRAM 16-bit program counter A program memory também é chamada de code memory. Parte da program memory pode ser externa.
Operação
1
MOVC A @(A + DPTR)
1
A @R1
MOVX
@DPTR
A
1
f2 f3
MOVX
@R0
A
1
MOVX
@R1
A
1
1
194
Long call – Long jump. Três bytes de instrução. A program memory possui 16 bits de endereço. São 64k bytes de memória. O low byte é escrito pelo terceiro byte da instrução. • O high byte é escrito pelo segundo byte da instrução. • Na instrução ACALL, a pilha sofre um push de dois bytes com o endereço da instrução seguinte a ACALL.
195
INTEL® 8051
06/08/2017
6
Jump / Call
196
INTEL® 8051 AJMP / ACALL
Operação no carry
Bytes
02 12 80 C0 D0 22
LJMP
Long jump within 2K block
3
LCALL
Long call within 2K block
3
SJMP
Short Jump
2
PUSH
Push Value Onto Stack
2
POP
Pop Value From Stack
2
RET
Return From Subroutine
1
32
RETI
Return From Interrupt
1
• • • • • • • •
06/08/2017
1
MOVX
LJMP / LCALL
06/08/2017
6
1
A @R0
• • • • •
Bytes
MOVC A @(A + PC)
A @DPTR
MOVX
INTEL® 8051
6
8-bit program memory 16-bit program counter A program memory também é chamada de code memory. Parte da program memory pode ser externa.
83 93
MOVX
06/08/2017
Program Memory • • • •
Bytes
e0 e2 e3 f0
197
• •
Absolute call – Absolute jump. Dois bytes de instrução. A program memory possui 16 bits de endereço. São 64k bytes de memória. O low byte provém do segundo byte da instrução. Os três bits menos significativos do high byte são escritos pelo primeiro byte da instrução. Os cinco bits mais significativos do high byte não são alterados. São alterados os 11 bits menos significativos totalizando 2k bytes. O salto está restrito a 1/32 da program memory. 06/08/2017 198 Na instrução ACALL, a pilha sofre um push de dois bytes.
06/08/2017
INTEL® 8051
6
INTEL® 8051
6
AJMP / ACALL
AJMP / ACALL
Absolute call – Absolute jump. A program memory é dividida em oito páginas. Cada página possui 256 endereços. Cada página utiliza oito bits de endereço. A seleção da página é feita por três bits. Os três bits de seleção de página estão contidos no opcode. As instruções ACALL e AJMP consomem dois bytes.
• • • • •
O primeiro byte identifica a instrução e a página. O segundo byte identifica o endereço dentro da página. A palavra “absolute” indica que é permitido mudar de página. São usados 11 (3+8) bits de endereço. 06/08/2017 199 O tamanho máximo de programa acessável é de 2k bytes.
INTEL® 8051
6
Mnem
Absolute call within 2K block Absolute jump within 2K block
• • • • • • •
06/08/2017
01 11 21 31
AJMP ACALL AJMP ACALL
41 51 61 71 81 91 a1
AJMP ACALL AJMP ACALL AJMP ACALL
b1 c1 d1 e1 f1
AJMP ACALL AJMP ACALL AJMP ACALL
Page A10:A09 0
000
1
001
2
010
3
011
4
100
5
101
6
110
7
111 200
INTEL® 8051
6
Outros jumps
Sintaxe Operações aritméticas entre A e GPR
Jump if not equal
b4 b5
Bytes
CJNE Compara A e data
3
CJNE Compara A e IRAM
3
b6-b7 CJNE Compara @R e data b8-bf CJNE Compara R e data
Jump if not zero
d5
DJZN Decrementa IRAM
28
Bytes 3
3
d6-d7 DJZN Decrementa @R
3
3
d8-df DJZN Decrementa R
3
29 2a 2b
Jump
Bytes
2c
10 20 30
JBC
Jump if Bit Set and Clear Bit
3
JB
Jump if Bit Set
3
2d
JNB
Jump if Bit Not Set
3
2e
40 50 60 70 73
JC
Jump if Carry Set
2
JNC
Jump if Carry Not Set
2
JZ
Jump if Accumulator Zero
2
JNZ
Jump if Accumulator Not Zero
2
JMP
Jump to Data Pointer + Accumulator
1
2f
06/08/2017
201
INTEL® 8051
6 48 49 4a 4b 4c 4d 4e 4f
06/08/2017
ORL A,R0 A A orl R0 ORL A,R1 A A orl R1 ORL A,R2 A A orl R2 ORL A,R3 A A orl R3 ORL A,R4 A A orl R4 ORL A,R5 A A orl R5 ORL A,R6 A A orl R6 ORL A,R7 A A orl R7
ADD A,R0 A A add R0 ADD A,R1 A A add R1 ADD A,R2 A A add R2 ADD A,R3 A A add R3 ADD A,R4 A A add R4 ADD A,R5 A A add R5 ADD A,R6 A A add R6 ADD A,R7 A A add R7
1
38
1
39
1
3a
1
3b
1
3c
1
3d
1
3e
1
3f
ADDC A,R0 A A addc R0 ADDC A,R1 A A addc R1 ADDC A,R2 A A addc R2 ADDC A,R3 A A addc R3 ADDC A,R4 A A addc R4 ADDC A,R5 A A addc R5 ADDC A,R6 A A addc R6 ADDC A,R7 A A addc R7
1
98
1
99
1
9a
1
9b
1
9c
1
9d
1
9e
1
9f
SUBB A,R0 A A addc R0 SUBB A,R1 A A addc R1 SUBB A,R2 A A addc R2 SUBB A,R3 A A addc R3 SUBB A,R4 A A addc R4 SUBB A,R5 A A addc R5 SUBB A,R6 A A addc R6 SUBB A,R7 A A addc R7
Sintaxe
1
59
1
5a
1
5b
1
5c
1
5d
1
5e
1
5f
1
68
1
69
1
6a
1
6b
1
6c
1
6d
1
6e
1
6f
XRL A,R0 A A xrl R0 XRL A,R1 A A xrl R1 XRL A,R2 A A xrl R2 AXRLDD A,R3 A A xrl R3 XRL A,R4 A A xrl R4 XRL A,R5 A A xrl R5 XRL A,R6 A A xrl R6 XRL A,R7 A A xrl R7
1
c8
1
c9
1
ca
1
cb
1
cc
1
cd
1
ce
1
cf
203
1 1 1 1 1
INTEL® 8051
6
Operações de movimentação entre A e GPR
ANL A,R0 A A anl R0 ANL A,R1 A A anl R1 ANL A,R2 A A anl R2 ANL A,R3 A A anl R3 ANL A,R4 A A anl R4 ANL A,R5 A A anl R5 ANL A,R6 A A anl R6 ANL A,R7 A A anl R7
1
202
Sintaxe 58
1
06/08/2017
Operações lógicas entre A e GPR 1
1
06/08/2017
XCH A,R0 AR0, R0A XCH A,R1 AR1, R1A XCH A,R2 AR2, R2A XCH A,R3 AR3, R3A XCH A,R4 AR4, R4A XCH A,R5 AR5, R5A XCH A,R6 AR6, R6A XCH A,R7 AR7, R7A
1
e8
1
e9
1
ea
1
eb
1
ec
1
ed
1
ee
1
ef
MOV A,R0 A R0 MOV A,R1 A R1 MOV A,R2 A R2 MOV A,R3 A R3 MOV A,R4 A R4 MOV A,R5 A R5 MOV A,R6 A R6 MOV A,R7 A R7
1
f8
1
f9
1
fa
1
fb
1
fc
1
fd
1
fe
1
ff
MOV R0,A R0 A MOV R1,A R1 A MOV R2,A R2 A MOV R3,A R3 A MOV R4,A R4 A MOV R5,A R5 A MOV R6,A R6 A MOV R7,A R7 A
1 1 1 1 1 1 1 1
204
06/08/2017
INTEL® 8051
6
Sintaxe
Sintaxe
Operações com GPR´s
Operações com a IRAM – endereçamento indireto
INC R0 R0 R0 + 1 INC R1 R1 R1 + 1 INC R2 R2 R2 + 1 INC R3 R3 R3 + 1 INC R4 R4 R4 + 1 INC R5 R5 R5 + 1 INC R6 R6 R6 + 1 INC R7 R7 R7 + 1
08 09 0a 0b 0c 0d 0e 0f
1
18
1
19
1
1a
1
1b
1
1c
1
1d
1
1e
1
1f
DEC R0 R0 R0 – 1 DEC R1 R1 R1 – 1 DEC R2 R2 R2 – 1 DEC R3 R3 R3 – 1 DEC R4 R4 R4 – 1 DEC R5 R5 R5 – 1 DEC R6 R6 R6 – 1 DEC R7 R7 R7 – 1
26
1
27
1
ADDC A,@R0 36 A A addc @R0 ADDC A,@R1 37 A A addc @R1
1 1 1 1
55 52 65 62
7c 7d 7e 7f
DEC @R0 16 @R0 @R0 – 1 DEC @R1 17 @R1 @R1 – 1
1 1
XCH A,@R0 c6 A@R0, @R0A XCH A,@R1 c7 A A add @R1
INC @R0 @R0 @R0 + 1 INC @R1 @R1 @R1 + 1
MOV A,@R0 e6 A @R0 MOV A,@R1 e7 A @R1
1 1
MOV @R0,A f6 @R0 A MOV @R1,A f7 @R1 A
1
ADD A,iram A A add iram ADDC A,iram 35 A A addc iram SUBB A,iram 95 A A subb iram XCH A,iram c5 A iram, iram A
25
2 2 2 2
2 2 2 2
INC iram iram iram + 1 DEC iram 15 iram iram – 1 MOV A,iram e5 A iram MOV iram,A f5 iram A
2
05
2 2 2
2 2
• • • • •
Internal data RAM. 256 bytes. 2-bit instruction. O segundo byte é o 8-bit address. O endereço é fornecido no opcode. 207
88 89 8a 8b 8c 8d 8e 8f
MOV iram,R0 iram R0 MOV iram,R1 iram R1 MOV iram,R2 iram R2 MOV iram,R3 iram R3 MOV iram,R4 iram R4 MOV iram,R5 iram R5 MOV iram,R6 iram R6 MOV iram,R7 iram R7
MOV iram,@R0 86 iram @R0 MOV iram,@R1 87 iram @R1
06/08/2017
2
a8
2
a9
2
aa
2
ab
2
ac
2
ad
2
ae
2
af 2 2
MOV R0,iram R0 iram MOV R1,iram R1 iram MOV R2,iram R2 iram MOV R3,iram R3 iram MOV R4,iram R4 iram MOV R5,iram R5 iram MOV R6,iram R6 iram MOV R7,iram R7 iram
MOV @R0,iram a6 @R0 iram MOV @R1,iram a7 @R1 iram
Sintaxe Operações com dados de 8 bits e a IRAM
2
34
2
44
2
54
2
64
2
74
2
94
2
• • • •
ADD A,#data A A add #data ADDC A,#data A A addc #data ORL A,#data A A orl #data ANL A,#data A A anl #data XRL A,#data A A xrl #data MOV A,#data A #data SUBB A,#data A A subb #data
2 2
MOV @R0,#data @R0 @R0 add #data MOV @R1,#data 77 @R1 @R0 add #data
76
1 1 1 1 1 1
2 2 2 2 2 2 2 2 2 2
208
INTEL® 8051
6
Sintaxe 24
1
INTEL® 8051
Operações com dados de 8 bits 2
1
06/08/2017
Sintaxe
MOV R0,#data R0 #data MOV R1, #data R1 #data MOV R2, #data R2 #data MOV R3, #data R3 #data MOV R4, #data R4 #data MOV R5, #data R5 #data MOV R6, #data R6 #data MOV R7, #data R7 #data
06/08/2017
07
1
6
INTEL® 8051
7b
06
1
Operações de movimentação na IRAM – endereçamento direto e indireto
6
7a
1
SUBB A,@R0 96 A A subb @R0 SUBB A,@R1 97 A A subb @R1
1
Sintaxe
06/08/2017
79
1
XLR @R0,A A A xlr @R0 XLR @R1,A A A xlr @R1
Operações com a IRAM – endereçamento direto ORL A,iram A A orl iram ORL iram,A iram iram orl A ANL A,iram A A anl iram ANL iram,A iram iram anl A XLR A,iram A A xlr iram XLR iram,A iram iram xlr A
78
67
• O endereço da Internal data RAM é fornecido por @R.206
205
• O segundo byte é o 8-bit address. • O endereço é fornecido no opcode.
42
66
1
1
ANL A,@R0 56 A A anl @R0 ANL A,@R1 57 A A anl @R1
1
1
1
ORL A,@R0 46 A A orl @R0 ORL A,@R1 47 A A orl @R1
INTEL® 8051
45
ADD A,@R0 A A add @R0 ADD A,@R1 A A add @R1
1
06/08/2017
6
INTEL® 8051
6
ORL iram,#data iram iram orl #data ANL iram,#data iram iram anl #data XRL iram,#data 63 iram iram xrl #data MOV iram,#data 75 iram #data
2
43
3
2
53
3
2 2
3 3
2 2 2
8-bit #data. 2-bit instruction. O segundo byte é o 8-bit #data. O valor é fornecido no opcode.
209
06/08/2017
• • • •
8-bit #data. 3-bit instruction. O segundo byte é o 8-bit address. O terceiro byte é o 8-bit #data.
210
06/08/2017
INTEL® 8051
6
Sintaxe Operações com dados de 8 bits e a IRAM 01 AJMP page0
2
11 ACALL page0
2
AJMP page1
2
ACALL page1
2
AJMP page2
2
ACALL page2
2
AJMP page3
2
ACALL page3
2
AJMP page4
2
ACALL page4
2
AJMP page5
2
ACALL page5
2
AJMP page6
2
ACALL page6
2
AJMP page7
2
31 51 71 91 b1 d1 f1
ACALL page7
2
21 41 61 81 a1 b1 c1
06/08/2017
211