UDB. O que é isso? Parte 4. Datapath ALU



Como prometido na última vez, estamos iniciando uma análise detalhada da Unidade Aritmética e Lógica (ALU).

O conteúdo geral do ciclo “UDB. O que é isso? "
Parte 1. Introdução. Pld.
Parte 2. Datapath.
Parte 3. Datapath FIFO.
Parte 4. Datapath ALU. (Artigo atual)
Parte 5. Caminho de Dados. Pequenas coisas úteis.
Parte 6. Módulo de gerenciamento e status.
Parte 7. Módulo de controle de tempo e redefinição
Parte 8. Endereçando UDB

21.3.2.4 ALU do Datapath


O núcleo da ALU consiste em três funções programáveis ​​independentes de 8 bits: um bloco aritmético / lógico, um bloco de registro de deslocamento e um bloco de sobreposição de máscara.

Operações aritméticas e lógicas


As funções da ALU selecionadas dinamicamente usando a RAM de configuração são mostradas na tabela abaixo.

Tabela 21-8. Funções da ALU
Func [2: 0]FunçãoOperação
000Passesrca
001INC++ srca
010Dez--srca
011ADICIONARsrca + srcb
100SUBsrca - srcb
101Xorsrca ^ srcb
110Esrca & srcb
111OUsrca srcb

Realizar


A entrada é usada em operações aritméticas. Conforme mostrado na tabela 21-9, existem valores de transporte padrão para determinadas funções.

Tabela 21-9. Funções Carry In.
FunçõesOperaçãoImplementação de transporte padrão
INC++ srcasrca + 00h + ci, em que ci é 1
Dez--srcasrca + ffh + ci, em que ci é 0
ADICIONARsrca + srcbsrca + srcb + ci, em que ci é 0
SUBsrca - srcbsrca + ~ srcb + ci, em que ci é 1

Além dessas aplicações aritméticas regulares, há mais três opções para usar a hifenização. Os bits CI SELA e CI SELB definem as regras para o uso da entrada de entrada para cada medida. Configuração dinâmica A RAM seleciona a configuração A ou B a cada ciclo. Os parâmetros são mostrados na tabela 21-10.

Tabela 21-10. Recursos adicionais
CI SEL A
CI SEL B
Mode
levar
Descrição do produto
00Por padrão
(Padrão)
Modo aritmético por padrão,
descrito na tabela 21-9.
01Snaps
(Registrado)
Carregar bandeira que é
resultado da transferência do ciclo anterior.
Este modo é usado para implementar
transportar e subtrair operações
com ocupação.
10Probros
(Encaminhado)
A transferência é gerada em outro lugar.
e encaminhado para esta entrada. Este modo
pode ser usado para implementar
contadores gerenciados.
11Encadeamento
(Encadeado)
A transferência é colocada na cadeia após
caminho de dados anterior. Este modo pode
use para implementar o ciclo único
operações com taxa de bits mais alta,
em que dois ou mais são usados
Datapath.

Se o carry forward for usado, ele será usado em várias funções, como mostrado na tabela 21-11. Observe que, para as funções de decremento e subtração da unidade, o nível de transferência ativo é baixo (inverso).

Tabela 21-11. Rastreado Carry In Features.
FunçãoPolarity Carry InA entrada está ativaA entrada está inativa
INCDireto++ srcasrca
DezInverso--srcasrca
ADICIONARDireto(srca + srcb) +1srca + srcb
SUBInverso(srca - srcb) -1(srca - srcb)

Realizar


Realizar - saída opcional do Datapath, formada com base em um bit alto especificado estaticamente. O valor pode ser passado na cadeia para a entrada de transferência para um bloco mais antigo. Observe que, no caso de funções de decremento e subtração, a execução é invertida.

Tabela 21-12. Recursos Realizar.
FunçãoExecução da polaridadeRealizar está ativoA execução está inativa
INCDireto++ srca == 0srca
DezInverso--srca == -1srca
ADICIONARDiretosrca + srcb> 255srca + srcb
SUBInversosrca - srcb <0(srca - srcb)

Estrutura de transferência


Os parâmetros carregam dentro e para escolher o bit mais significativo, para gerar executar são mostrados na Figura 21-15. Os valores de execução com trava podem ser usados ​​como transferência para operações aritméticas subsequentes. Esse recurso pode ser usado para implementar funções de maior capacidade usando ciclos.



Figura 21-15. Operação de transferência.

Operação de turno


A operação de mudança ocorre independentemente da operação da ULA, conforme a tabela 21-13.

Tabela 21-13. Funções da operação de mudança.
Mudança [1: 0]Função
00Passe
01Deslocar para a esquerda
10Shift Right
11Trocando Mordidelas (Trocando Mordidelas)

O valor de saída da operação de turno é emitido com o Datapath. As saídas para mudar para a direita ( sor ) e para a esquerda ( sol_msb ) são configuradas com os mesmos bits. O bit de configuração estática (SHIFT SEL no registro CFG15) determina qual saída de deslocamento é usada como saída do Datapath. Na ausência de um deslocamento, os sinais sor e sol_msb são definidos como LSB e MSB da função ALU, respectivamente.

Os bits de configuração SI SELA e SI SELB determinam o deslocamento de dados para a operação especificada. Configuração dinâmica A RAM seleciona a configuração A ou B para cada ciclo de clock. Os dados enviados por push são usados ​​apenas ao deslocar para a esquerda e direita, essa entrada não é usada para pular e reorganizar petiscos. Os valores selecionados e os casos de uso estão relacionados a um deslocamento à direita e um deslocamento à esquerda e são mostrados na Tabela 21-14.

Tabela 21-14. Mudança de funções
SI SEL A
SI SEL B
Fonte
empurrado
dados
Descrição do produto
00Padrão / Aritmética
(Padrão / aritmético)
Por padrão, o valor do bit DEFSI
(constante 1 ou 0). No entanto, se o MSB SI estiver armado,
então a fonte é o valor do selecionado
ALU de bit de ordem superior (apenas para mudanças à direita).
01Snap
(Registrado)
O valor de entrada para o turno é definido
valor atual de saída travada
cisalhamento (do ciclo anterior). Operação
o deslocamento esquerdo usa o último valor
turno esquerdo. A operação de mudança à direita usa
última mudança de saída para a direita.
10Probros
(Encaminhado)
A entrada para o turno chega
externamente, por meio de recursos de rastreio (entrada SI).
11Encadeamento
(Encadeado)
Para entrada à esquerda
joga da saída do bloco direito
Caminho de dados em uma cadeia, para deslocamento de entrada
para a direita - da esquerda.

A saída ao deslocar para a esquerda é obtida do bit especificado como alto. Quando deslocados para a direita, os dados de entrada são enviados da posição sênior selecionada (MSB). A saída, mesmo ao deslocar para a esquerda, mesmo ao deslocar para a direita, é travada e pode ser usada no próximo compasso. Esse recurso pode ser usado para implementar uma mudança de maior capacidade em vários ciclos.



Figura 21-16. Operação de turno.

Vale ressaltar que os bits isolados ao escolher o MSB ainda são alterados. No exemplo mostrado, o bit 7 ainda é deslocado para sil quando deslocado para a direita e o bit 5 é deslocado para o bit 4 quando deslocado para a esquerda. O bit de saída (direito ou esquerdo) de um grupo isolado será perdido.

Operação de sobreposição de máscara da ALU


O registro de máscara de 8 bits no espaço estático dos registros de configuração do UDB define a operação de mascaramento. Nesta operação, uma máscara (operação AND) com o valor desse registro é sobreposta na saída da ALU. Um uso típico da operação de mascaramento da ALU é a implementação de temporizadores e contadores autônomos com uma resolução que é um múltiplo da potência de dois.

21.3.2.5 Entradas do Datapath e Multiplexação


Conforme mostrado na Tabela 21-15, cada Datapath possui 9 entradas, incluindo 6 entradas do rastreamento de canal. Isso inclui os endereços de configuração da RAM, FIFO, sinais de controle para carregar registros de dados, além de mudar e transferir entradas de dados.

Tabela 24-15. Entradas do Datapath
EntrarDescrição do produto
RAD2
RAD1
RAD0
Endereço assíncrono na RAM de configuração dinâmica. Endereços
oito palavras de 16 bits programáveis ​​pelo usuário. Cada palavra
contém os bits de controle do Datapath para o loop atual. Sequência
instruções podem ser determinadas por essas entradas de endereço.
F0ld
F1LD
Se engatilhados neste ciclo, os dados são carregados no FIFO selecionado
da bateria A0 ou A1 ou da saída da ALU. Fonte selecionada
usando os bits de configuração Fx INSEL [1: 0]. Esta entrada é sensível a oscilações.
É amostrado no Datapath; após detecção de transição
De "0" a "1", o carregamento ocorre na próxima borda do sinal do relógio.
D0ld
D1LD
Se armado nesse loop, o registro Dx é carregado a partir de
seu FIFO FX associado. Esta entrada é sensível a oscilações. É amostrado
Datapath após a detecção de uma transição de "0" para "1", carregando
ocorre na próxima borda do sinal do relógio.
SIEste é um valor de entrada de dados que pode ser usado para mudar
direita ou esquerda.
CiEste valor de transporte é usado se o sinal de controle
transferência é igual a "transporte roteado".

Como mostra a Figura 21-17, cada entrada possui um multiplexador 6 em 1, portanto, todas as entradas são intercambiáveis. As entradas são processadas de duas maneiras: por nível ou por diferencial. O endereço na RAM da configuração dinâmica, bem como os valores de deslocamento e dados, são sensíveis ao nível. Os sinais de dados FIFO e de registro de carga são sensíveis a diferenças.



Figura 21-17. Sinais de entrada do datapath.

No próximo artigo, passaremos para uma revisão de pequenas coisas úteis.

Source: https://habr.com/ru/post/pt437096/


All Articles