Capítulo 3
REGISTRADORES
Descrevem-se
a seguir os principais registradores de controle da CPU 542.
3.1 REGISTRADORES DE ESTADO
3.1.1 Registrador ST0
Figura
8 Mapa de bits do registrador ST0
§
Bits
13 a 15: ARP Auxiliar Register Pointer Este campo de três bits
é utilizado para selecionar o registrador auxiliar a ser utilizado no modo
de compatibilidade de endereçamento indireto a operando simples; em modo de
operação normal (CMPT=0), este campo de bits deve ser mantido como zero;
§
Bit 12:
TC Test/Control flag Se 1, indica que o resultado de uma comparação
é verdadeiro;
§
Bit 11: Bit de carry;
§
Bit 10:
OVA Se 1, indica que ocoreu um overflow do acumulador A;
§
Bit 9:
OVB Se 1, indica que ocorreu
um overflow do acumulador B;
§
Bits
0 a 8: DP Data-memory page Seleciona a página da memória de
dados.
3.1.2 Registrador ST1
Figura
9 Mapa de bits do registrador ST1
§
Bit 15:
Se 1, indica que um bloco de repetição está ativo;
§
Bit 14:
Indica qual ponteiro é utilizado no endereçamento indireto relativo. Se 1,
o stack pointer é utilizado, caso contrário, o ponteiro de página de dados
é utilizado;
§
Bit 13:
Reflete o estado do pino XF;
§
Bit 12:
HM Hold Mode Se 1, indica que a CPU deve continuar a execução
da memória de programa interna após reconhecer um pedido de HOLD e apenas
colocar sua interface externa em alta impedância. Se 0, indica que a CPU deve
interromper a execução da memória de programa ao reconhecer um pedido de HOLD;
§
Bit 11:
INTM Interrupt Mode Se 0, habilita as interrupções mascaráveis,
caso contrário, desabilita;
§
Bit 10:
Não implementado, é sempre lido como zero;
§
Bit 9:
OVM Overflow Mode Indica o que deve ser colocado no registrador
de destino quando ocorre um overflow. Se 0, os bits superiores do resultado
são simplesmente desconsiderados. Se 1, o registrador de destino recebe o
valor 7 FFFF FFFFh;
§
Bit 8:
SXM Sign Extension Mode Determina se os dados terão ou não a
extensão de sinal. Se 1, a extensão de sinal é suprimida, caso contrário os
dados recebem o bit referente ao sinal antes de serem utilizados pela ALU;
§
Bit 7: C16 Dual 16-Bit/double-precision arithmetic
mode. Determina
o modo aritmético de operação da ALU;
§
Bit 6:
Relativo ao controle das operações de multiplicação;
§
Bit 5:
CMPT - Compatibility Mode Determina o modo de compatibilidade para
o campo de bits ARP. Se 1, o registrador auxiliar apontado por ARP é atualizado
com o conteúdo do operando da instrução que utilizar endereçamento indireto;
§
Bits
0 a 4: Este campo de 5 bits determina o valor do deslocamento que deve ser
executado por algumas instruções do DSP.
3.2 REGISTRADOR PMST
Figura
10 Mapa de bits do registrador PMST (Processor Mode Status Register)
§
Bits
7 a 15 Este campo de 9 bits é o ponteiro dos vetores de interrupção.
A CPU 542 possui um total de 25 interrupções. É possível colocar os
vetores de interrupção no início de qualquer uma das 512 páginas do espaço
de memória de programa do DSP, sendo que cada página contém 128 palavras de
16 bits;
§
Bit 6 MP/MC\ Este bit define o modo de
operação da CPU. Se 0, a CPU opera no modo microcomputer, acessando
a memória de programa interna; se 1, a CPU opera no modo microprocessor,
utilizando a memória de programa externa. Quando ocorre o reset da CPU o pino
MP/MC\ é amostrado e seu estado é atribuído a este bit, mas, independentemente
do estado deste pino, é possível alterar o bit MP/MC\ via software, com o
qual pode-se mudar o modo de operação a qualquer momento. No caso do kit de
desenvolvimento DSKplus, o pino MP/MC\ está
ligado ao terra, o que faz com que o DSP comece a operar utilizando a memória
de programa interna e, ao configurarmos o registrador PMST, este bit recebe
zero, o que não altera a condição que se segue ao reset;
§
Bit 5 OVLY Este bit define se a memória de dados será ou não mapeada no espaço
de programa. Se OVLY é igual a zero, a RAM é mapeada no espaço de dados, mas
não no espaço de programa. Se OVLY=1, a RAM é mapeada no espaço de dados e
no espaço de programa, exceto a página zero (0x00 0x7f), que contém
os registradores de controle;
§
Bit 4 AVIS Controla o modo de visibilidade
do endereçamento à memória de programa interna. Se AVIS é igual a zero, o
barramento externo não exibe o endereço que a CPU está acessando em sua memória
de programa interna. Se AVIS é igual a 1, o endereço acessado pela CPU na
memória de programa interna aparece no barramento
externo de endereço;
§
Bit 3 DROM Define se a ROM, memória de programa, será ou não
mapeada no espaço de dados. Se DROM for zero, a ROM não é mapeada no espaço
de dados. Se for 1, uma porção da ROM é mapeada no espaço de dados;
§
Bit 2 CLKOFF
Se 0, o pino CLKOUT não fornecerá clock e permanecerá em nível alto;
§
Bit 1 SMUL Se igual a 1, indica que ocorreu uma
saturação ao ser executada a operação MAC ou MAS;
§
Bit 0 SST Controla a execução de algumas
instruções especias do DSP.
3.3 REGISTRADOR IMR
O bit INTM do registrador de estado ST1
habilita ou desabilita globalmente todas as interrupções mascaráveis do DSP,
enquanto que os bits do registrador IMR habilitam uma ou outra interrupção
mascarável.
Figura
11 Mapa de bits do registrador IMR (Interrupt Mask Register)
§
Bits
10 a 15 Estes bits são reservados no DSP 542, e são lidos sempre
como zero;
§
Bit 9
Se 1, habilita a interrupção da porta HPI;
§
Bit 8
Se 1, habilita a interrupção externa 3;
§
Bit 7
Se 1, habilita a interrupção de transmissão da porta serial TDM;
§
Bit 6
Se 1, habilita a interrupção de recepção da porta serial TDM;
§
Bit 5
Se 1, habilita a interrupção de transmissão da porta serial com buffer;
§
Bit 4
Se 1, habilita a interrupção de recepção da porta serial com buffer;
§
Bit 3
Se 1, habilita a interrupção do timer;
§
Bits
2,1 e 0 Se forem igual a 1, habilitam respectivamente as interrupções
externas 2, 1 e 0.
3.4
REGISTRADOR IFR
Figura
12 Mapa de bits do registrador IFR (Interrupt Flag Register)
3.4.1 Interrupções
Interrupções
são sinais que podem ser originados tanto por software como por hardware e
que fazem com que o DSP suspenda a execução do programa principal e execute
uma rotina de serviço de interrupção (ISR Interrupt Service Routine).
Normalmente as interrupções são geradas por dispositivos que trabalham em
conjunto com o DSP, no momento em que estes precisam ler ou entregar dados
(por exemplo, ADCs, DACs ou outros processadores). Interrupções também são
utilizadas para sinalizar a ocorrência de um evento particular (por exemplo,
término da contagem do timer). A CPU C542 possui tanto interrupções
geradas por software como interrupções geradas por hardware:
§
Uma interrupção
pode ser gerada via software através das seguintes instruções: RESET, TRAP
ou INTR;
§
Interrupções
que podem ser geradas via hardware por dispositivos internos à CPU (timer,
por exemplo), ou por dispositivos externos (caso do circuito de interface
analógica AC01, que no kit de desenvolvimento DSKplus gera a interrupção trint interrupção de transmissão
da porta serial TDM).
Algumas
interrupções podem ser habilitadas ou desabilitadas via software, enquanto
que outras serão sempre atendidas pelo DSP. Quando ocorre a requisição de
uma interrupção, é setado o bit correspondente no registrador IFR. Executada a rotina de serviço de interrupção, o flag é automaticamente
limpo. Qualquer um dos eventos seguintes pode limpar um flag de interrupção:
§
A CPU
é resetada;
§
É gerada
a interrupção TRAP via software;
§
Um 1
é escrito no flag apropriado;
§
A instrução
INTR é executada utilizando-se o número apropriado da interrupção.
Um
1 em qualquer bit do registrador IFR indica que a interrupção
correspondente está pendente. Para limpar esta interrupção, é necessário escrever
um 1 no bit apropriado do registrador IFR. Desta forma, todas
as interrupções pendentes em um dado momento podem ser limpas escrevendo-se
no registrador IFR o seu próprio conteúdo.
3.4.2 Fases de execução
A
execução de uma interrupção consiste de três fases:
Fase
1: Recebimento da requisição de interrupção.
Uma
requisição de interrupção pode ser gerada tanto por hardware como por software.
Ao ser gerada a requisição, o flag correspondente do registrador IFR é setado,
independentemente da interrupção estar habilitada ou não. Este bit será limpo
automaticamente no momento que a ISR for executada. Uma interrupção pode ser
requisitada por hardware seja um dispositivo externo ao DSP ou um periférico
on-chip ou via software
através das seguintes instruções:
§
INTR Esta interrupção permite
que seja executada qualquer ISR. O operando da instrução K indica qual é o vetor de interrupção que queremos que o DSP desvie
a execução do código. Quando esta instrução é executada, o bit INTM do registrador
ST1 é setado, de modo que todas as interrupções mascaráveis são desabilitadas;
§
TRAP Esta instrução faz exatamente o mesmo que a instrução INTR,
mas sem setar o bit INTM do registrador ST1;
§
RESET Esta instrução pode ser utilizada a qualquer momento para
resetar a CPU. Quando esta instrução é executada, o bit INTM é setado, de
modo que todas as interrupções mascaráveis são desabilitadas.
Fase
2: Reconhecimento da interrupção.
Após
a CPU receber a requisição de uma interrupção, esta deve decidir se deve reconhecê-la
ou não (gerar o acknowledge; o pino IACK\ é resetado). Se a interrupção é
não-mascarável, é imediatamente reconhecida. Caso contrário, somente será
reconhecida se uma série de condições forem satisfeitas:
§
A interrupção
gerada tem uma prioridade maior. Se mais de uma interrupção é gerada ao mesmo
tempo, elas serão executadas de acordo
com sua prioridade;
§
O bit
INTM do registrador ST1 deve estar limpo, ou seja, as interrupções mascaráveis
devem estar globalmente habilitadas. Quando uma interrupção é requisitada,
este bit é automaticamente setado. Se o programa retornar da rotina de serviço
de interrupção ISR através da instrução RETE, o bit INTM será limpo, reabilitando
globalmente as interrrupções. INTM pode ser setado também através de um reset
gerado por hardware;
§
O bit
correspondente do registrador IMR deve estar setado, habilitando a interrupção
em particular.
Fase
3: Execução da rotina de serviço de interrupção.
Após
reconhecer a interrupção, a CPU executa as seguintes ações:
§
Guarda
o conteúdo do PC, ou seja, o endereço de retorno no topo da stack, na memória
de dados;
§
Carrega
o PC com o endereço do vetor de interrupção apropriado;
§
Busca
a instrução localizada no endereço do vetor de interrupção;
§
É executado
o desvio que leva até o endereço onde está localizada a ISR;
§
A ISR
é executada até que a instrução de retorno da interrupção seja encontrada;
§
Busca
o endereço de retorno na stack e o escreve no PC;
§
Continua
a execução do código principal.
Os
vetores de interrupção podem ser colocados
no começo de qualquer uma das páginas da memória de programa do DSP.
O endereço do vetor de interrupção é gerado concatenando os bits do campo
IPTR Interrupt Pointer Register do registrador PMST com o número
da interrupção multiplicado por dois.
3.5 REGISTRADORES DE CONTROLE DA INTERFACE HPI
§
HPIA Contém o endereço da memória HPI que será acessado
pelo host. Este registrador não pode ser acessado pelo DSP, apenas pelo host;
§
HPIC Registrador de controle da interface HPI. Pode
ser acessado tanto pelo host como pelo DSP. Este registrador contém os bits
de controle e de estado da interface
HPI;
HPID Registrador através do qual o DSP lê ou escreve dados na memória do DSP.