Controle Digital - Felipe Machado - Atividade 3

27
  EAD: Controle Digital  3º. Módulo 4 – Sub-rotinas aritméticas de 8, 16 e 32 bits: Soma, Subtração , Multiplicação e Divisão com múltiplos registrador es para cálculo em algoritmos de controle digital rodados em circuito integrado ( on – board ) Registradores são áreas trabalhos especiais dentro do processador que são mais rápidas que operandos de memória. Estas áreas foram projetadas para trabalharem com códigos operacionais. Os registradores de um processador Intel ou compatível representam um recurso muito limitado quando se escreve assembly. Existem apenas 8 registradores de uso geral : EAX, EBX, ECX, EDX, ESI, EDI, ESP e EBP. Na maioria dos casos, ESP e EBP não deveriam ser utilizados porque são usados principalmente para entrada e saída de procedimento. Na prática, isto significa que você possui apenas 6 registradores de 32 bits para escrever seu código, além de outras localizações de memória que sejam úteis ao procedimento. ESI e EDI podem ser usados normalmente na maior parte sas vezes, porém nem um dos dois pode ser acessado em nível de BYTE. Você pode fazer a leitura do WORD menos significativo (baixo) de ESI como SI e de WORD menos significativo de EDI como DI. É muito importante entender o tamanho dos registradores e os dados que lês podem armazenar. Um processador de 32 bits (INTEL ou compatível) tem três tamanhos nativos de dados que podem ser utilizados pelas instruções normais com números inteiros: BYTE, WORD e DWORD que correspondem a 8 bits, 16 bits e 32 bits. Isto pode ser mostrado através da notação HEXADECIMAL. BYTE 00 WORD 00 00 DWORD 00 00 00 00 Em termos de registradores, isto corresponde aos três tamanhos que podem ser endereçados com os registradores normais para números inteiros. Os processadores Intel são compatíveis com código mais antigo

Transcript of Controle Digital - Felipe Machado - Atividade 3

Page 1: Controle Digital - Felipe Machado - Atividade 3

5/10/2018 Controle Digital - Felipe Machado - Atividade 3 - slidepdf.com

http://slidepdf.com/reader/full/controle-digital-felipe-machado-atividade-3 1/27

 EAD: Controle Digital   3º. Módulo

4 – Sub-rotinas aritméticas de 8, 16 e 32 bits: Soma,Subtração , Multiplicação e Divisão com múltiplos

registradores para cálculo em algoritmos de controle

digital rodados em circuito integrado ( on – board )

Registradores são áreas trabalhos especiais dentro do processadorque são mais rápidas que operandos de memória. Estas áreas foramprojetadas para trabalharem com códigos operacionais.

Os registradores de um processador Intel ou compatível representamum recurso muito limitado quando se escreve assembly. Existem apenas 8registradores de uso geral : EAX, EBX, ECX, EDX, ESI, EDI, ESP e EBP.Na maioria dos casos, ESP e EBP não deveriam ser utilizados porque sãousados principalmente para entrada e saída de procedimento. Na prática,isto significa que você possui apenas 6 registradores de 32 bits paraescrever seu código, além de outras localizações de memória que sejamúteis ao procedimento. ESI e EDI podem ser usados normalmente na maiorparte sas vezes, porém nem um dos dois pode ser acessado em nível deBYTE. Você pode fazer a leitura do WORD menos significativo(baixo) de ESI como SI e de WORD menos significativo de EDI como DI.

É muito importante entender o tamanho dos registradores e os dadosque lês podem armazenar. Um processador de 32 bits (INTEL oucompatível) tem três tamanhos nativos de dados que podem ser utilizadospelas instruções normais com números inteiros: BYTE, WORD e DWORDque correspondem a 8 bits, 16 bits e 32 bits.

Isto pode ser mostrado através da notação HEXADECIMAL.

BYTE 00

WORD 00 00DWORD 00 00 00 00

Em termos de registradores, isto corresponde aos três tamanhos quepodem ser endereçados com os registradores normais para númerosinteiros. Os processadores Intel são compatíveis com código mais antigo

Page 2: Controle Digital - Felipe Machado - Atividade 3

5/10/2018 Controle Digital - Felipe Machado - Atividade 3 - slidepdf.com

http://slidepdf.com/reader/full/controle-digital-felipe-machado-atividade-3 2/27

que ainda usa registradores de 8 e 16 bits. Esta compatibilidade é obtidaacessando qualquer um dos registradores de uso geral de três modosdiferentes. Usando o registrador EAX como exemplo:

AL ou AH = 8 bitsAX = 16 bitsEAX = 32 bits

Este é o esquema de um registrador de 32 bits de uso geral:

31 <- 16 15 <- 8 7 <- 0

  AH AL

AX

EAX

Este esquema é mais fácil de entender em nível de bit. Lendo dadireita para esquerda, você tem 32 bits no registrador (bit 0 a 31). Devido áposição dos bits de cada porção de dados que pode ser acessada numregistrador de 32 bits, AL é chamado de byte menos significativo ou baixo(LOW byte), AH é chamado de byte mais significativo ou alto (HIGH byte) eAX é chamado de palavra (WORD) menos significativa (LOW Word).Existem também oito registradores de 80 bits que são utilizados para pontoflutuante e para a execução de instruções MMX de 64 bits. Processadores

mais atuais também possuem oito registradores XMM de 128 bits XMMcapazes de utilizar plenamente as instruções SSE e SSE2. Osregistradores para realizar tarefas em particular; algumas instruções sãomais rápidas se determinados registradores forem usados: emprocessadores mais antigos nem todos os registradores podem realizartodas as tarefas que os registradores de processadores mais atuais sãocapazes de realizar. Estes três fatos, associados ao uso tradicional que osprogramadores estabeleceram ao longo dos anos, acabaram ditando omodo como os registradores devem ser utilizados. Não é lei, mas sãoregras que podem ajudar muito. Veja abaixo:

Use EAX para passar dados para um procedimento e para retornardados do procedimento para o código que fez a chamada. As APIS doWindows também usam EAX para retornar um valor para o chamados, AL,AX e EAX também deveriam ser usados, na medida do possível, parareceber usados, na medida do possível, para receber e para transferirdados de e para a memória porque são ligeiramente mais rápidos que

Page 3: Controle Digital - Felipe Machado - Atividade 3

5/10/2018 Controle Digital - Felipe Machado - Atividade 3 - slidepdf.com

http://slidepdf.com/reader/full/controle-digital-felipe-machado-atividade-3 3/27

outros registradores. Por exemplo, use MOV, AL, [ESI] ao invés de MOVDL, [ESI]. Também nos casos de ADD, AND, ADC, CMP, MOV, OR, SUB,TEST, XCHG, XOR, com um valor imediato (isto é, um número como MOVAL, 23h), se possível, use AL, AX ou EAX porque o número de códigosoperacionais destas instruções destas instruções é menor do que se usadascom outros registradores, Use o registrador EDX como um backup paraEAX se o último em uso. Use o registrador ECX como contador. JECXZ éuma instrução especial que indica se o valor de ECX é zero e a série deinstruções LOOP, SCAS e MOVS usam ECX como contador. Use EBX paraarmazenar dados em geral ou para endereços de memória, por exemplo,MOV EAX, [EBX] ou MOV [EBX],EDX. Use ESI quando precisar ler amemória, por exemplo, MOV EAX, [ESI], e EDI quando precisar escrever namemória, por exemplo, MOV [EDI], EAX. Isto é consistente com asinstruções LODSD, STOSD e MOVSD. Use qualquer um dos registradores

como base ou registrador index em instruções de memória complexas, porexemplo, MOV EAX, [MemPtr+ESI*4+ECX]. Nunca use ESP para outracoisa que não seja um ponteiro da pilha, a não ser que sua rotina não tenhaabsolutamente nenhuma atividade de pilha. Neste caso você pode salvar ovalor de ESP na memória e restaura - lo antes de voltar para a rotinachamadora. Tradicionalmente o EBP é usado para endereçar dados locaisna pilha em rotinas de callback. O EBP e seu componente de 16 bits BPpodem ser usados como um registrador geral na programação Windows,mas deve tomar muito cuidado se estiver usando frames de pilha (stackframes – Frame no GoAsm ) ou dados locais ( Local no Goasm ). Istoporque parâmetros de frames de pilha e dados locais são endereçadosusando o valor positivo ou negativo de EBP. Depois do EBP ter sidoalterado, os parâmetros e os dados locais não podem se acessados até queo valor original de EBP tenha sido restaurado. CS, DS e SS ainda sãoutilizados pelo Windows, mesmo se o código for de 32 bits, por isso nãodevem ser usados. Atualmente, nem ES, FS ou GS podem ser utilizados.Depois do Windows 98 isto gera uma execução. Se precisar usar osregistradores comuns para armazenar uma informação de 64 bits use EDX:EAX, onde EDX guarda os bits mais significantes. Isto está de acordo com

as instruções shifts de 64 bits SHLD e SHRD, como também comCDQ.Todos os microprocessadores modernos utilizam a tecnologia detransistores CMOS para implementar as operações lógicas. Neste tipo detecnologia os níveis lógicos 0 e 1 são representados por tensões. O nível 1corresponde a uma tensão alta, próxima da alimentação VDD, quenormalmente é de cerca de 5 Volts. Chamaremos o nível 1 de nível alto. Onível lógico 0, que chamaremos de nível baixo, corresponde a uma tensão

Page 4: Controle Digital - Felipe Machado - Atividade 3

5/10/2018 Controle Digital - Felipe Machado - Atividade 3 - slidepdf.com

http://slidepdf.com/reader/full/controle-digital-felipe-machado-atividade-3 4/27

VSS, que é próxima de zero. Os transistores tipo MOS comportam-se comorelés ultra-rápidos, ou como chaves controladas por tensão. Eles tembasicamente 3 terminais: o terminal G (Gate) controla se o transistor conduzou não entre os outros dois terminais, chamados D (Drain) e S (Source).Nos circuitos integrados tipo CMOS existem 2 tipos de transistores: oNMOS e o PMOS. Estes transistores operam de forma complementar.

O transistor NMOS conduz entre D e S quando Gestá em nível alto, enquanto o PMOS conduzquando G está em nível baixo. Na figura ao lado sãomostrados os símbolos usados para representar ostransistores NMOS e PMOS.Transistores NMOS e PMOS são usados para fazercom que os transistores conectem a saída à tensão

alta VDD ou à tensão baixa VSS dependendo do sinalde entrada. Na figura ao lado temos um inversorCMOS. Quando o sinal de entrada é alto (Lógica 1),o transistor NMOS conduz, conectando a saída aVSS, fazendo aparecer 0 na saída. Quando a entradaestá em nível baixo, é o transistor PMOS quemconduz, conectando a saída a VDD.

Lógica de três estados (tristate)

Normalmente as portas lógicas CMOS geram o sinal de saída criandoum caminho de baixa impedância para VDD ou VSS. Desta forma a saídapode ficar em nível alto ou em nível baixo. Em certas situações é útil que asaída de uma porta lógica não fique conectada nem a VDD nem a VSS. Nestecaso a saída não teria um nível determinado, ficando em alta impedância.Portas cuja saída pode ficar em nível alto, baixo ou de alta impedância sãochamadas portas de três estados ou three-state . Saídas three-state podemser conectadas juntas, desde que não mais do que uma delas fique embaixa impedância.

Page 5: Controle Digital - Felipe Machado - Atividade 3

5/10/2018 Controle Digital - Felipe Machado - Atividade 3 - slidepdf.com

http://slidepdf.com/reader/full/controle-digital-felipe-machado-atividade-3 5/27

A figura ao lado mostra um inversor comsaída tristate. Quando G=1 a saída estáhabilitada e o inversor funciona normalmentede modo que Y=não X. Quando G=0 os dois

transistores (PMOS e NMOS) são impedidosde conduzir. Neste caso a saída Y fica emalta impedância, desconectada do resto docircuito.

Conjuntos de fios aos quais várias entradas e saídas three-state sãoconectadas são chamados barramentos. Tipicamente osmicroprocessadores usam dois barramentos para se comunicar com amemória ou a outros componentes periféricos: o barramentos de dados e obarramentos de endereços.

Memória de 8 bits

Iniciando pelo tipo mais simples de interface com a memória, vamosconsiderar a conexão entre um microprocessador de 8 bits (o Z80) e umamemória de 8 bits: a memória tipo 62256. (veja a figura a seguir)

Page 6: Controle Digital - Felipe Machado - Atividade 3

5/10/2018 Controle Digital - Felipe Machado - Atividade 3 - slidepdf.com

http://slidepdf.com/reader/full/controle-digital-felipe-machado-atividade-3 6/27

No circuito acima, não foram mostrados os circuitos que geram o sinalde CLOCK e de RESET apesar de estes sinais serem essenciais para ofuncionamento do microprocessador. Foi feitas assim para mostrar de formaclara apenas a interface com a memória. O Z80 é um dosmicroprocessadores que tem a interface com a memória mais simples queexistem. Basicamente conectam-se os pinos correspondentes dosendereços e dados entre a CPU e a memória. Os sinais /RD e /Wr indicamo momento em que o microprocessador está fazendo uma operação deleitura ou de escrita na memória. O sinal /MREQ indica que o processadorquer fazer um acesso à memória. Estes sinais podem ser resumidos naseguinte tabela:

CPU Z80

/RD /WR /MREQ Operação

X X 1Ocioso, altaimpedância.

1 1 XOcioso, altaimpedância.

1 0 0Escrita: A CPUescreve namemória

0 1 0 Leitura: A CPUlê a memória

O sinal /CS (Chip Select) da memória éconectado em uma lógica que ativa-oquando A15=1 e /MREQ=0. Destaforma a memória pode ser acessadanos endereços de 0x8000 a 0xFFFF.

A memória é selecionada e ativada para leitura ou para escrita pelospinos /CS, /OE e /WE de acordo com a tabela abaixo:

Memória 64256

/CS /OE /WE Operação

1 X XChip não Selecionado: Barramentos de dados em altaimpedância

0 1 1Chip selecionado, mas não lê nem escreve. Barramentos dedados em alta impedância

0 1 0Escrita na memória: O barramentos de dados é lido earmazenado pela memória.

0 0 1 Leitura da memória: A memória coloca o byte lido no

Page 7: Controle Digital - Felipe Machado - Atividade 3

5/10/2018 Controle Digital - Felipe Machado - Atividade 3 - slidepdf.com

http://slidepdf.com/reader/full/controle-digital-felipe-machado-atividade-3 7/27

barramentos de dados, que fica em baixa impedância.

0 0 0 Isto nunca deve acontecer.

Vários componentes de memória ou E/S podem ser conectados a um

mesmo barramento de dados, mas não mais do que um destescomponentes pode escrever dados no barramento em um dado momento.Através de uma lógica de decodificação de endereços os chips de memóriapodem ser selecionados, um de cada vez. As linhas de endereço domicroprocessador formam o número da memória a ser acessada. Ummicroprocessador com n linhas de endereço pode selecionar 2 n  bytes dememória. Por exemplo, o Z80, com as suas 16 linhas de endereço podeselecionar 2 16 =65536 bytes de memória. Iniciando pelo endereço maissignificativo, (A15 no Z80) pode-se considerar que cada linha de endereço

divide ao meio o espaço de endereçamento. Para ilustrar, considere que sedeseja conectar 3 memórias tipo 6264 a um microprocessador Z80 de modoque elas apareçam nos endereços iniciais do processador (de 0000H a5FFFH). Estas memórias serão designadas como 6264-0 6264-1 e 6264-2.A memória tipo 6264 tem 64Kbits, organizados como 8192 palavras de 8bits. Ela tem 13 linhas de endereço, de A0 até A12. Devemos projetar umalógica externa usando os sinais /MREQ e os endereços A15, A14 e A13 paraativar os pinos /CS que habilitam as memórias. O primeiro passo pararesolver o problema é fazer o mapa de memória, que é a tabela a seguir:

A15 A14 A13 A12 até A0 decodificados dentro do 6264

1

11 E000H - FFFFH

0 C000H - DFFFH

01 A000H - BFFFH

0 8000H - 9FFFH

0

11 6000H - 7FFFH

0 4000H - 5FFFH (6264-2)

01 2000H - 3FFFH (6264-1)

0 0000H - 1FFFH (6264-0)

O mapa de memória permite determinar qual é a operação lógica quedeve ser usada para gerar o sinal /CS que serve para ativar cada uma dasmemórias. Observa-se que:

Page 8: Controle Digital - Felipe Machado - Atividade 3

5/10/2018 Controle Digital - Felipe Machado - Atividade 3 - slidepdf.com

http://slidepdf.com/reader/full/controle-digital-felipe-machado-atividade-3 8/27

A15=0, A14=0 e A13=0 ativa a memória 6264-0, levando a zero o seu /CS.

A15=0, A14=0 e A13=1 ativa a memória 6264-1.

A15=0, A14=1 e A13=0 ativa a memória 6264-2.

Isto significa que os sinais /CS das memórias podem ser descritospelas seguintes equações lógicas:

 /CS (6264-0) = /(//MREQ * /A15 * /A14 * /A13)

 /CS (6264-1) = /(//MREQ * /A15 * /A14 * A13)

 /CS (6264-2) = /(//MREQ * /A15 * A14 * /A13)

Memória de 16 bits

A utilização de um barramento de dados de 16 bits permite acessar 2bytes simultaneamente, duplicando a largura de banda da comunicaçãoentre a CPU e a memória. A figura a seguir mostra como 2 memórias sãoconectadas a um barramento de 16 bits.

Observe que no microprocessador não existe o endereço A0. O

endereço A1 do microprocessador conecta-se ao A0 da memória; o A2 domicroprocessador conecta-se ao A1 da memória, e assim sucessivamenteaté que o A15 do microprocessador conecta-se ao A14 da memória. O motivodeste deslocamento é que no microprocessador os endereços contambytes, enquanto na memória os endereços contam palavras de 16 bits,correspondentes a 2 bytes. A memória da esquerda contém os byteslocalizados em endereços pares, que correspondem aos 8 bits mais

Page 9: Controle Digital - Felipe Machado - Atividade 3

5/10/2018 Controle Digital - Felipe Machado - Atividade 3 - slidepdf.com

http://slidepdf.com/reader/full/controle-digital-felipe-machado-atividade-3 9/27

significativos D15 a D8 do barramento de dados. A memória da direita contémos bytes localizados em endereços pares, que correspondem aos 8 bitsmenos significativos D7 a D0 do barramento de dados.

O microprocessador seleciona se vai acessar o byte de endereço par,impar ou os dois usando os sinais /BLE e /BHE:

• /BLE significa Bus Low Enable . Este sinal, quando em nível baixoativa a memória par, que fornece os 8 bits menos significativos dosdados D7 a D0. O sinal /BLE equivale ao A0 dos microprocessadoresde 8 bits.

• /BHE significa Bus High Enable . Este sinal ativo o byte maissignificativo D15 a D8, que reside no endereço ímpar da memória vistapelo microprocessador.

O microprocessador com barramento de dados de 16 bits pode lernúmeros de 16 bits, com 2 bytes em apenas um ciclo de acesso à memória,desde que este número esteja armazenado em um endereço par.

A tabela a seguir ilustra como o microprocessador acessa a memória de 16bits.À parte A=xxxx indica o endereço visto pelo microprocessador.À parte D=xx indica o valor do byte armazenado neste endereço. Os valoresdos dados nesta tabela são aleatórios apenas a título de exemplo.

A coluna palavra# indica o endereço visto pela memória, que é metade doendereço visto pelo microprocessador.

Palavra#MEM

IMPARMEM PAR

802A=1005HD=54H

A=1004HD=45H

801A=1003H

D=12H

A=1002H

D=34H800

A=1001HD=ABH

A=1000HD=CDH

Suponha que a memória contenha dadosde acordo com a tabela a esquerda, (osvalores na memória são apenasexemplos). Então a instrução:MOV AX, [1002H]pode ler os 2 bytes de AX (AH e AL) em

apenas um acesso à memória. A tabela aolado mostra que os dois bytes lidos,mostrados com fundo vermelho, residemna mesma palavra de da memória. Istoacontece quando número lido começanum endereço par. O valor lido será:AX=1234H

Page 10: Controle Digital - Felipe Machado - Atividade 3

5/10/2018 Controle Digital - Felipe Machado - Atividade 3 - slidepdf.com

http://slidepdf.com/reader/full/controle-digital-felipe-machado-atividade-3 10/27

AH=12H e AL=34H

Palavra#MEM

IMPARMEM PAR

802 A=1005HD=54H

A=1004HD=45H

801A=1003HD=12H

A=1002HD=34H

800A=1001HD=ABH

A=1000HD=CDH

Consideremos agora a situação em quequeremos ler um número de 16 bits que

está armazenado em um endereço ímpar.Então a instrução:MOV AX, [1003H]vai necessitar de dois acessos à memóriaporque os bytes lidos estão em palavrasdiferentes. O valor lido será:AX=4512HAH=45H e AL=12H

Conclui-se que no desenvolvimento de software paramicroprocessadores de 16 bits é muito melhor armazenar números de 16bits em endereço par do que em endereço impar. Algunsmicroprocessadores de 16 bits tornam obrigatório o armazenamento emendereço par.

Memória de 32 bits

Processadores com barramento de dados de 32 bits podem acessar 4 bytesde memória simultaneamente. São necessárias 4 memórias de 8 bits para

formar as palavras de 32 bits. Estas memórias, designadas na figura aseguir como MEM3, MEM2, MEM1 e MEM0 tem os seus bits de dados emD31 a D24, D23 a D16, D15 a D8 e D7 a D0 respectivamente.

Page 11: Controle Digital - Felipe Machado - Atividade 3

5/10/2018 Controle Digital - Felipe Machado - Atividade 3 - slidepdf.com

http://slidepdf.com/reader/full/controle-digital-felipe-machado-atividade-3 11/27

Observe que o endereço A2 do microprocessador conecta-se ao A0 damemória, A3 do microprocessador conecta-se ao A1 da memória e A16 domicroprocessador conecta-se ao A14 da memória. As memórias são ativadaspelos sinais /BE0, /BE1, /BE2 e /BE3. Como cada uma das 4 memórias temseus próprios bits de dados conectados ao microprocessador, de modo queelas podem ser ativadas simultaneamente sem que haja conflito. Omicroprocessador pode acessar a memória como bytes individualmenteendereçáveis, porém a comunicação com a memória é feita através depalavras de 4 bytes (32 bits). Endereços múltiplos de 4 são ditos alinhados,porque ocorrem no inicio de uma palavra de 4 bytes. O valor armazenadona memória pode ser interpretado da seguinte maneira:

Palavra# MEM3 MEM2 MEM1 MEM0

0204 A=0813D=97 A=0812D=21 A=0811D=57 A=0810D=29

0203A=080FD=23

A=080ED=54

A=080DD=35

A=080CD=3A

0202A=080BD=84

A=080AD=40

A=0809D=2E

A=0808D=32

0201A=0807D=E2

A=0806D=6E

A=0805D=07

A=0804D=4B

0200

A=0803

D=1B

A=0802

D=93

A=0801

D=87

A=0800

D=63

A tabela ao lado ilustracomo o microprocessador

acessa a memória de 32bits.À parte A=xxxx indica oendereço visto pelomicroprocessador.À parte D=xx indica o valordo byte armazenado nesteendereço. Os valores dosdados nesta tabela são

aleatórios apenas a título deexemplo.A coluna palavra# indica oendereço visto pelamemória, que é 1/4 doendereço visto pelomicroprocessador.

Quando um número de 32 bits é lido em um endereço múltiplo de 4,

todos os 4 bytes podem ser lidos simultaneamente, como mostra a tabela aseguir:

Palavra# MEM3 MEM2 MEM1 MEM0

0204A=0813D=97

A=0812D=21

A=0811D=57

A=0810D=29

Dados em vermelho sãolidos quando a instruçãoMOV EAX, [080Ch]é executada.

Page 12: Controle Digital - Felipe Machado - Atividade 3

5/10/2018 Controle Digital - Felipe Machado - Atividade 3 - slidepdf.com

http://slidepdf.com/reader/full/controle-digital-felipe-machado-atividade-3 12/27

0203A=080FD=23

A=080ED=54

A=080DD=35

A=080CD=3A

0202A=080BD=84

A=080AD=40

A=0809D=2E

A=0808D=32

0201A=0807D=E2

A=0806D=6E

A=0805D=07

A=0804D=4B

0200A=0803D=1B

A=0802D=93

A=0801D=87

A=0800D=63

Todos os dados podem serlidos de uma vez porqueestá na mesma palavranúmero 0203.

O microprocessadorseleciona o endereço dapalavra 0203 e ativa

 /BE3, /BE2, BE1 e /BE0para ler os quatro bytessimultaneamente.O valor de lido pelainstrução é:EAX = 2354353Ah

Quando um número de 32 bits é lido em um endereço que não émúltiplo de 4, o microprocessador precisa acessar duas palavras diferentesda memória. Portanto dois acessos à memória são necessários. Além disto,o microprocessador precisa deslocar os bits lidos para alinhá-los com oregistrador.

Palavra# MEM3 MEM2 MEM1 MEM0

0204A=0813

D=97

A=0812

D=21

A=0811

D=57

A=0810

D=290203

A=080FD=23

A=080ED=54

A=080DD=35

A=080CD=3A

0202A=080BD=84

A=080AD=40

A=0809D=2E

A=0808D=32

0201A=0807D=E2

A=0806D=6E

A=0805D=07

A=0804D=4B

0200A=0803D=1B

A=0802D=93

A=0801D=87

A=0800D=63

Dados em vermelho sãolidos quando a instruçãoMOV EAX, [080Bh]é executada.Os dados precisam ser lidosem duas etapas.Na palavra 0202 é lido odado no endereço 080Bativando apenas /BE3.Na palavra 0203 são lidosos endereços 080C, 080D e080E, ativando /BE2, /BE1

e /BE0.O valor de lido pelainstrução é:EAX = 54353A84h

Números de 16 bits podem ser lidos com apenas um acesso se osdois bytes estiverem na mesma palavra. Isto ocorre em endereços múltiplos

Page 13: Controle Digital - Felipe Machado - Atividade 3

5/10/2018 Controle Digital - Felipe Machado - Atividade 3 - slidepdf.com

http://slidepdf.com/reader/full/controle-digital-felipe-machado-atividade-3 13/27

de 4, múltiplos de 4 mais um e múltiplos de 4 mais dois. Se o endereço formúltiplos de 4 mais três, serão necessários dois acessos porque o númerofica dividido entre duas palavras.

Palavra# MEM3 MEM2 MEM1 MEM0

0204A=0813D=97

A=0812D=21

A=0811D=57

A=0810D=29

0203A=080FD=23

A=080ED=54

A=080DD=35

A=080CD=3A

0202A=080BD=84

A=080AD=40

A=0809D=2E

A=0808D=32

0201A=0807D=E2

A=0806D=6E

A=0805D=07

A=0804D=4B

0200A=0803D=1B

A=0802D=93

A=0801D=87

A=0800D=63

A instruçãoMOV AX [0809h]·pode ler amemória de uma só vez,porque, apesar de estarnum endereço ímpar, osdois bytes do númeroencontram-se na mesmapalavra (número 0202) damemória.O microprocessador acessa

a palavra 0202, ativando /BE2 e /BE1.O valor lido será:AX=402Eh

Palavra# MEM3 MEM2 MEM1 MEM0

0204A=0813D=97

A=0812D=21

A=0811D=57

A=0810D=29

0203

A=080F

D=23

A=080E

D=54

A=080D

D=35

A=080C

D=3A

0202A=080BD=84

A=080AD=40

A=0809D=2E

A=0808D=32

0201A=0807D=E2

A=0806D=6E

A=0805D=07

A=0804D=4B

0200A=0803D=1B

A=0802D=93

A=0801D=87

A=0800D=63

A instruçãoMOV AX, [0807h]necessita de dois acessos àmemória porque os doisbytes lidos estão empalavras diferentes.O microprocessadorprimeiro acessa a palavra0201, ativando /BE3, depoisacessa a palavra 0202ativando /BE0.O valor lido será:AX=32E2h

 

5 – Controles P, PI e PID digitais implementados em

microcontroladores: 

Page 14: Controle Digital - Felipe Machado - Atividade 3

5/10/2018 Controle Digital - Felipe Machado - Atividade 3 - slidepdf.com

http://slidepdf.com/reader/full/controle-digital-felipe-machado-atividade-3 14/27

O controle proporcional já é mais sofisticado que o controlador ON-OFF, dado que a resposta do controle é proporcional ao sinal na suaentrada. Se o sinal na sua entrada é pequeno, a reposta será um valorpequeno também. Se a entrada for grande a saída será grande também.Em suma, um controlador proporcional é na verdade um amplificador. Ele érepresentado como abaixo:

 No caso a saída é um sinal K vez maior que a entrada. Entretanto o

sinal de saída não pode crescer indefinidamente, porque há limite tanto

inferior quanto superior. Quando estes limites são atingidos dizemos que osistema saturou. Portanto, há uma região onde o sinal respondeproporcionalmente ao sinal de entrada, e outra região onde o sistema saturae não ainda o sinal de entrada aumentar que o sistema não vai alémdaquele limite. Na figura abaixo, percebemos que acima do limite superior, oatuador está com 100% de sua capacidade e abaixo do limite inferior oatuador está com 0% de sua capacidade, ou seja, totalmente desligado. Aregião entre o limite inferior e superior o atuador está com uma saídaproporcional à entrada, e esta região é chamada de banda proporcional dosistema.

 

A banda proporcional de um sistema é dada de forma percentual eestá relacionada com o ganho K do controlador. Na verdade ele édeterminado pela fórmula abaixo:Banda proporcional = 100% / K; onde K é o ganho do controlador.

Page 15: Controle Digital - Felipe Machado - Atividade 3

5/10/2018 Controle Digital - Felipe Machado - Atividade 3 - slidepdf.com

http://slidepdf.com/reader/full/controle-digital-felipe-machado-atividade-3 15/27

Muitos controladores possuem o ajuste da banda proporcional disponível. Atécnica mais recomendada é deixar a banda proporcional no máximopossível e verificar a resposta do sistema. Se não for satisfatória, deve-se irreduzindo o valor do ajuste até que o desempenho fique adequado.

O grande problema do controlador Proporcional ou P é que elepermite erros em regime. Isto porque em sistemas realimentados, a entradado controlador P é o sinal de erro. Como o sinal de erro vai ficando pequenoà medida que se aproxima do valor de set-point, a saída do controlador queé proporcional à entrada vai ficando pequena também. Sempre haverá umponto em que o erro, por menor que seja será tão pequeno que nãoproduzirá uma saída capaz de ativar o atuador. Assim o sistema paramesmo sem Ter atingido plenamente o set-point, permanecendo um errosempre constante. Claro que aumentando o ganho K do controlador o erroserá reduzido, mas sempre haverá um erro, porque há limites para

aumentar o valor do ganho K, que se ultrapassados, levam o sistema àinstabilidade. Na simulação abaixo, temos uma estufa com um set-point de100ºC e um controlador tipo P com um ganho K=10. Repare que o sistemaestabiliza em 96ºC, permanecendo um erro de 4ºC. Se aumentarmos oganho, podemos diminuir o erro, mas sempre haverá um erro, por menorque seja.

Page 16: Controle Digital - Felipe Machado - Atividade 3

5/10/2018 Controle Digital - Felipe Machado - Atividade 3 - slidepdf.com

http://slidepdf.com/reader/full/controle-digital-felipe-machado-atividade-3 16/27

 

O controlador PI é uma combinação da ação proporcional com umaação de integração. O integrador, dentre suas propriedades, permite comque o erro em regime do caso anterior seja zerado. Isto ocorre porqueembora o erro possa ser pequeno, o integrador vai somando ao longo do

tempo e a sua saída vai aumentando até que seja capaz de acionar oatuador. Assim sendo, quando o erro é grande o Proporcional fornece umagrande e saída e predomina sobre o integrador. Mas à medida que osistema vai chegando perto do objetivo, o erro vai diminuindo e assim aresposta do proporcional vai ficando cada vez mais fraca. A partir desteponto o domínio passa a ser do integrador. Dessa forma o bloco integradoré usado freqüentemente quando precisamos de uma convergência precisado valor, com erro muito pequeno. Da mesma forma que existe um ganho Kpara o proporcional existe também um ganho KI para o integrador. Quanto

maior o valor de Ki, maior a resposta de um elemento integrador.Entretanto, o ajuste do ganho de KI não deve ser indiscriminado, pois elepode levar o sistema a se tornar muito lento as transições ou até mesmolevar o sistema à instabilidade. O melhor ajuste é uma combinação doganho K e do ganho KI. É possível mediante simulações e outras técnicasencontrar o melhor ajuste possível. Não há uma regra geral, cada casopoderá requerer um ajuste diferente, dessa forma dificilmente você poderá

Page 17: Controle Digital - Felipe Machado - Atividade 3

5/10/2018 Controle Digital - Felipe Machado - Atividade 3 - slidepdf.com

http://slidepdf.com/reader/full/controle-digital-felipe-machado-atividade-3 17/27

utilizar um ajuste que fora bem sucedido em outra empresa ou outroequipamento.

Na simulação abaixo, voltamos a verificar o caso da estufa que foraajustada para uma temperatura de 100ºC. Com o controlador somenteproporcional, havia um erro de 4ºC, ou seja, a temperatura ficava a 96ºC.Com o integrador há o zeramento do erro e a temperatura atingeexatamente os 100ºC. 

Da mesma forma que o controle PI era uma combinação do controleProporcional e o controle Integral, controle PD é uma combinação docontrole Proporcional e o controle Derivativo. O derivativo é um bloco cujasaída é proporcional à variação do erro. Ou seja, se o erro estivar variandomuito rápido ele atua fortemente visando a minimizar ou eliminar estavariação. Portanto é um bloco adequado para sistemas que precisem de umataque rápido às variações de erro. Entretanto, se houver um erro degrande valor, mas variando lentamente, o sinal na saída do derivativo serábaixo. Por isso, o derivativo nunca é usado sozinho, pois ele só atua nosmomentos em que o erro varia rapidamente. Além disso, o derivativo ésensível a ruídos que podem enganá-lo fazendo-o acreditar que há umatransição brusca. Por isso o ganho do derivativo nunca é muito alto. Naverdade, evita-se ao máximo o uso de derivativos. Quando o sistema nãopode responder bem a variações bruscas de sinal, então se apela para o

Page 18: Controle Digital - Felipe Machado - Atividade 3

5/10/2018 Controle Digital - Felipe Machado - Atividade 3 - slidepdf.com

http://slidepdf.com/reader/full/controle-digital-felipe-machado-atividade-3 18/27

derivativo. Ademais o bloco derivativo não tem nenhuma influência sobre oerro em regime. De modo geral, ele deixa o sistema mais rápido e reduz amáxima sublevação. Como o Integrador, que tinha um ganho KI o Derivativotambém tem um ganho chamado KD Na simulação abaixo, voltamos aocaso da estufa ajustada para 100ºC, só que retiramos o Integrador eadicionamos um Derivativo. Perceba que como o derivativo não atua sobreo erro em regime, o erro de 4ºC voltou e, portanto, o sistema agoraconverge à 96ºC como antes. Em compensação, na região de 0 até 0.5segundo, quando o erro varia muito rápido, o sistema atua muito maisrapidamente, pois em 0.5 segundo a temperatura já é de 79ºC, e no caso docontrolador P ou PI era de apenas 70ºC. Mas é só até este que o derivativovai bem, pois de 0.5 segundos em diante, o erro já passa a variarlentamente e a resposta do derivativo já não é mais adequada. Nesta parte,onde a variação do erro é lenta, o Integrador responde melhor, além é claro

do integrador atuar sobre o erro em regime.

Pelos exemplos acima, fica bastante claro que uma combinação dostrês elementos, explorando as propriedades de cada um, parece ser aopção mais adequada. Este é o chamado Controlador PID. Na verdade,com um controlador PID, podemos obter os outros (P, PI ou PD), zerando-se aquele que não interessa. Exemplo: se quisermos um controlador PI,basta zerar o ganho do Derivativo, se queremos um controlador P, bastazerar o ganho do Derivativo e do Integrador, e assim por diante. O

Page 19: Controle Digital - Felipe Machado - Atividade 3

5/10/2018 Controle Digital - Felipe Machado - Atividade 3 - slidepdf.com

http://slidepdf.com/reader/full/controle-digital-felipe-machado-atividade-3 19/27

controlador PID parece ser a opção ideal para se trabalhar, entretanto, estaé opção mais cara e a mais difícil de ajustar, pois agora temos três ganhospara ajustar (K, KI e KD). A combinação do ajustes pode determinar se osistema será oscilatório ou não, se o sistema será rápido ou lento. Adeterminação adequada do ajuste é feita por meio de modelagem esimulações, onde se leva em conta os parâmetros de performance dosistema (máxima sublevação, tempo de acomodação, erro em regime, etc.).Na simulação abaixo, voltamos ao exemplo da estufa com set-point de100ºC. O controlador agora é um bloco PID. Vemos que na região de 0 a0.5 segundo o sistema é rápido por causa do derivativo. Em 0.5 segundo atemperatura já é de 74ºC, ao passo que no P e no PI era de apenas 70º, ouseja, 6% mais rápido. Verificamos que não há mais erro em regime, dadoque a temperatura agora estabiliza em 100ºC, que é o próprio set-point, porcausa do Integrador.

Os chamados parâmetros de performance são fortementedependentes dos ajuste dos ganhos dos elementos que compõem o PID (K,KI e KD). Na próxima simulação, temos um caso em que o controlador foiajustado de forma tal que o ganho do Derivativo fosse baixo, menor que odo Integrador. O sistema utilizado ainda é a estufa, com set-point de 100ºC.Percebemos pelos ajustes o comportamento que o do sistema converge àtemperatura em erro em regime, por causa do integrado. Mas o tempo de

Page 20: Controle Digital - Felipe Machado - Atividade 3

5/10/2018 Controle Digital - Felipe Machado - Atividade 3 - slidepdf.com

http://slidepdf.com/reader/full/controle-digital-felipe-machado-atividade-3 20/27

convergência é diferente do caso anterior. E, além disso, agora a reposta éoscilatória. No caso anterior, dizemos que a resposta é superamortecida eno caso com oscilações é subamortecida. Quando o sistema passa exibiroscilações com amplitude decrescente e que demoram a sumir estamoschegando perto do limite de estabilidade. Observe a sobrelevarão ou“overshoot” no gráfico, que é bem elevado. A temperatura está atingindo até120ºC, ou seja, 20ºC a mais que o desejado.

Aumentando-se agora o ganho do derivativo KD, reduzimos oovershoot de 125ºC para 112ºC, mas o sistema ficou mais oscilatório. Acombinação ideal depende de ajustes adequados dos ganhos, queinfluenciam fortemente na resposta do sistema. Não dá para simplesmente“chutar”.

Page 21: Controle Digital - Felipe Machado - Atividade 3

5/10/2018 Controle Digital - Felipe Machado - Atividade 3 - slidepdf.com

http://slidepdf.com/reader/full/controle-digital-felipe-machado-atividade-3 21/27

 

Nas simulações abaixo, vemos a simulação para vários valore deganho K. Vejam como a resposta à saída muda significativamente. A ordemé de K crescente, mas com valores pequenos.

 

Agora para K de valores mais elevados, veja como o sistema vaificando mais oscilatório. Valores de K altos levam o sistema a oscilar etendem a torná-lo instável. Por isso, há limites para aumentar o ganho.

Page 22: Controle Digital - Felipe Machado - Atividade 3

5/10/2018 Controle Digital - Felipe Machado - Atividade 3 - slidepdf.com

http://slidepdf.com/reader/full/controle-digital-felipe-machado-atividade-3 22/27

 

. 5.2 – Dinâmica de um controle digital embarcado:

O controle digital embarcado contêm uma combinação de software ehardware, ambos analógicos e digitais. Alguns sistemas podem serimplementados com um microcontrolador de prateleira, processador desinais digitais ou um microprocessador digital e um software associado,porém sistema complexo tem requisitos críticos considerando aspectoscomo área, velocidade, e consumo de potência necessitando de um projetodedicado. Várias arquiteturas-alvo podem ser consideradas para cobrirdiferentes requisitos. As soluções podem incluir processadores dedicadose/ou ASICs, ou uma plataforma de multi-processadores, combinados aindacom partes analógicas. O projeto de sistemas embarcados complexoscompreende um conjunto de diferentes tecnologias, ferramentas e estilos deprojeto. Um ambiente de projeto para tais sistemas deve considerar aespecificação do sistema, particionamento em software, hardware digital epartes analógicas, e síntese das partes de hardware e software. O fluxo deprojeto compreende de uma especificação inicial, abstrata, com sucessivosrefinamentos, até a solução final. Descrições heterogêneas intermediáriasgeradas durante este refinamento devem ser validadas, normalmente por

Page 23: Controle Digital - Felipe Machado - Atividade 3

5/10/2018 Controle Digital - Felipe Machado - Atividade 3 - slidepdf.com

http://slidepdf.com/reader/full/controle-digital-felipe-machado-atividade-3 23/27

co-simulação. A literatura apresenta diferentes abordagens para amodelagem e co-simulação de sistemas embarcados. O ambiente Ptolemy[1] é baseado no paradigma de orientação a objetos, onde a especificação érealizada em múltiplos domínios (fluxo de dados, eventos discretos,analógicos). Em [2] são utilizadas várias linguagens (SDL, C, VHDL,analógicos) para especificação, onde a simulação é realizada acoplando-sediferentes simuladores. Em [3] é utilizada a linguagem C para especificaçãode todo o comportamento do sistema, porém devido à natureza sequencialda linguagem são oferecidas extensões para o suporte de paralelismo ecomunicação. Em [4] a linguagem Java é utilizada para especificação, ondeo suporte de múltiplas threads é utilizado como arquitetura base para asíntese. No ambiente S3E2S (Specification, Simulation, and Synthesis of 

Embedded Eletronic Systems ), sistemas complexos podem ser modeladosem diferentes níveis de abstração, e também em diferentes domínios-

comportamento abstrato (expressado por uma especificação de alto nível eorientada a objetos), hardware digital, hardware analógico, e software. A co-simulação é realizada acoplando-se diferentes simuladores, para quequalquer modelo heterogêneo desenvolvido durante o processo derefinamento possa ser simulado. O S3E2S é baseado no SIMOO [5], umambiente integrado de modelagem e simulação de sistemas discretos.SIMOO é composto de dois módulos principais: uma biblioteca de classes eum editor de modelos. O editor suporta descrição dos aspectos estáticos edinâmicos do modelo. A estrutura estática é descrita graficamente,

enquanto que a estrutura dinâmica é descrita em C++. A partir da descriçãodo modelo, o editor gera automaticamente o código executávelnecessário.SIMOO força a modelagem hierárquica do sistema a sersimulado. No nível mais alto de abstração existe um único objeto, dosistema a ser simulado, que é refinado em níveis mais baixos de abstração,assim construindo uma hierarquia de agregação. Esta estratégia demodelagem auxilia no fácil reuso de objetos, bem como no refinamentoprogressivo do modelo.Normalmente em um co-projeto dehardware/software, partes de hardware dedicado são implementadas comoASICs e/ou ASIPs. No ambiente S3E2S, o comportamento dos objetos

SIMOO são refinados podendo ser progressivamente substituídos porentidades VHDL, onde cada modelo intermediário resultante desseprocesso de refinamento deve ser validado. Sendo assim, um ambiente deco-simulação combinando descrições SIMOO e VHDL é necessário. Oambiente de simulação SIMOO foi acoplado ao simulador VSS daSynopsys. A figura 1(a) apresenta a comunicação entre dois objetos SIMOOA e B, onde o objeto B é refinado em uma entidade VHDL. O ambiente de

Page 24: Controle Digital - Felipe Machado - Atividade 3

5/10/2018 Controle Digital - Felipe Machado - Atividade 3 - slidepdf.com

http://slidepdf.com/reader/full/controle-digital-felipe-machado-atividade-3 24/27

co-simulação gera automaticamente a interface entre os domínios SIMOO eVHDL. Isto inclui um elemento de interface no domínio SIMOO, juntamentecom a interface descrita em C para comunicação com a entidade VHDL,como mostrado na figura 1(b). Estas interfaces são responsáveis pela trocade dados e sincronização entre os simuladores. Uma mensagem enviada doobjeto A ao objeto B é então direcionada para uma porta de entrada daentidade VHDL B. Um mapeamento similar ocorre quando as portas desaída da entidade VHDL recebem um novo valor: uma mensagem é geradae enviada para o objeto no ambiente SIMOO.

O código VHDL da entidade B é então conectado à interface descritaem C, para comunicação. Juntamente com outras mensagens pertencentesà aplicação, duas mensagens do simulador SIMOO são adicionadas àsentidades VHDL. Estas mensagens são invocadas no início e no final dasimulação, e podem ser utilizados para passagem de parâmetros e coletasde dados. A comunicação entre os simuladores SIMOO e VSS é realizadaatravés de sockets . Isto permite uma solução distribuída, onde cadasimulador pode executar em um nó diferente da rede. Na versão atual, um

método conservador [6] é adotado para sincronização entre os simuladoresSIMOO e VSS. A unidade base de tempo é definida pelo simulador VSS, eambos os simuladores avançam seus tempos passo a passo. Umaalternativa para aumento de desempenho da simulação é a utilização de umpasso maior de sincronização. Um exemplo seria a interação com umprocessador descrito em VHDL, onde a comunicação entre os doisambientes pode ser definida como o tempo de ciclo de relógio do

Page 25: Controle Digital - Felipe Machado - Atividade 3

5/10/2018 Controle Digital - Felipe Machado - Atividade 3 - slidepdf.com

http://slidepdf.com/reader/full/controle-digital-felipe-machado-atividade-3 25/27

processador. Atualmente a ferramenta suporta que o usuário indique otempo entre sincronizações.

Para permitir o projeto de sistemas embarcados, um ambiente deprojeto deve também considerar modelos contendo partes analógicas edigitais. Novamente, para suportar um fluxo de projeto com refinamento evalidação das descrições intermediárias, modelos contendo SIMOO, VHDLe partes analógicas devem ser co-simulados. Um objeto analógico deve sermodelado por um conjunto de equações diferenciais que definem ocomportamento do objeto em relação ao tempo. A estratégia do ambienteSIMOO segue o paradigma de fluxo de sinais, onde os objetos sãomodelados como funções matemáticas de suas entradas e saídas. Esteparadigma é conveniente para sistemas que não têm implementação físicadefinida, ou para sistemas onde o projeto tem uma ênfase em altos níveis

de abstração. Para resolução das equações diferenciais, os métodosnuméricos Euler (1ª ordem), e Runge-Kutta (4ª ordem) foramimplementados. Com isso o projetista pode optar por um método maispreciso, em contraposição com o desempenho da simulação. Como aexecução de um objeto contínuo segue sempre um fluxo compreendido deleitura das entradas, resolução, e atualização das saídas, uma bibliotecapara objetos contínuos foi desenvolvido, bastando à inclusão da equaçãodiferencial no objeto. Para ilustrar as capacidades de co-simulação daambiente S3E2S, a modelagem de um guindaste e seu controle embarcadofoi realizada. Este sistema foi proposto em [7] como um benchmark na áreade modelagem e síntese de sistemas. A figura 2 apresenta as plantasfísicas, compostas pelo carro, a carga, e a pista por onde o carro sedesloca. O modelo é composto de objetos contínuos responsáveis pelocálculo do comportamento do carro, juntamente com o controle embarcado,composto por uma máquina de estados responsável pela inicialização efuncionamento do sistema, um algoritmo de controle utilizando um método"discrete state-space variable " para cálculo da força a ser aplicada,

 juntamente com a execução paralela de um diagnóstico responsável pelomonitoramento do funcionamento correto do algoritmo de controle.

Page 26: Controle Digital - Felipe Machado - Atividade 3

5/10/2018 Controle Digital - Felipe Machado - Atividade 3 - slidepdf.com

http://slidepdf.com/reader/full/controle-digital-felipe-machado-atividade-3 26/27

Figura 2- Planta física do sistema de guindaste

Um primeiro modelo abstrato foi construído, utilizando-se de objetosSIMOO padrão, juntamente com objetos contínuos descrevendo ocomportamento da planta e do atuador. Assim uma primeira versãoutilizando a linguagem C++ para descrição do comportamento foi realizada,possibilitando assim a simulação e validação do controle embarcado.

Algumas soluções foram avaliadas, entre elas a implementação da máquinade estados e diagnóstico em VHDL. Estas duas funções foramimplementadas conjuntamente num único objeto (Control_Diag na figura 3),devido ao fato de compartilharem vários sinais. Assim para validação destaalternativa de projeto foi utilizada a co-simulação entre os ambientesSIMOO e VSS Synopsys mostrados na figura 3. Para comunicação com omodelo VHDL, foram utilizados objetos AD e DA para conversão dos dados.Nota-se também na figura 3, que o objeto Control_a (algoritmo de controle),comunica-se diretamente com o atuador, visto que os mesmos estãodescritos em alto nível (linguagem C), e não necessitam de conversão de

dados.

Page 27: Controle Digital - Felipe Machado - Atividade 3

5/10/2018 Controle Digital - Felipe Machado - Atividade 3 - slidepdf.com

http://slidepdf.com/reader/full/controle-digital-felipe-machado-atividade-3 27/27

Figura 3- Co-simulação do sistema de guindaste, utilizando objetosabstratos SIMOO, analógicos e descrições e VHDL