UDB. O que é isso? Parte 2. Caminho de Dados



Continuamos a considerar o UDB com base na documentação do Cypress. E desta vez estudaremos detalhadamente o Datapath, um autômato operacional.

O conteúdo geral do ciclo “UDB. O que é isso? "
Parte 1. Introdução. Pld.
Parte 2. Datapath. (Artigo atual)
Parte 3. Datapath FIFO.
Parte 4. Datapath ALU.
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 Máquina operacional (Datapath)


O caminho de dados mostrado na Figura 21-6 contém uma ALU de ciclo único de 8 bits e sua comparação e geração associadas de sinalizadores de condição. Blocos de caminho de dados de UDBs vizinhos podem ser encadeados para aumentar a profundidade de bits. O Datapath inclui uma pequena RAM de configuração dinâmica que pode selecionar dinamicamente a operação a ser executada em um ciclo específico.

O Datapath é otimizado para implementar funções incorporadas típicas, como temporizadores, contadores, PWMs, PRS, CRC, registradores de turnos e geradores de banda morta. A adição de funções de adição e subtração fornece suporte para operações delta-sigma digitais.


Figura 21-6. Datapath de nível superior.

21.3.2.1 Visão geral


Os capítulos a seguir fornecem uma visão geral dos principais recursos do Datapath.

Configuração dinâmica

Configuração dinâmica - a capacidade de alterar o trabalho e as comunicações internas do Datapath em cada ciclo, sob o controle de um seqüenciador. Isso é implementado usando a memória de configuração (RAM de configuração), que armazena oito configurações exclusivas. O endereço de entrada dessa memória pode ser encaminhado a partir de qualquer bloco conectado aos recursos de rastreio, geralmente da lógica PLD, pinos de E / S ou de outros Datapaths.

Alu

A ALU pode executar oito funções de uso geral: incrementar, diminuir, adicionar, subtrair e também executar operações lógicas AND, OR, XOR e PASS. A escolha das funções é determinada pela memória de configuração para cada ciclo. Operações de mudança independentes (esquerda, direita, permutação de mordidelas), bem como operações de mascaramento estão disponíveis na saída da ALU.

Construções Condicionais

Cada Datapath possui dois comparadores mascarados em bits que podem ser configurados para selecionar várias entradas de registro do Datapath como argumentos. Outras condições identificáveis ​​podem ser todos os zeros, todos os e transbordamento. Essas condições formam as principais saídas do Datapath e podem ser encaminhadas para linhas de rastreio digital ou entradas de outras funções.

CRC / PRS incorporado

O Datapath possui suporte interno para cálculos de CRC de ciclo único e a geração de sequências pseudo-aleatórias (Sequência pseudo-aleatória em inglês, PRS) com uma profundidade de bits especificada e um polinômio gerador. Para atingir uma profundidade de bits de mais de 8 bits, os sinais podem ser encadeados entre o Datapath. Esse recurso é controlado dinamicamente, o que significa que ele pode alternar com outras funções.

Número de bits alto personalizado

O número do bit mais significativo (English Most Significant Bit, MSB) da função aritmética e da função shift pode ser definido programaticamente. Isso fornece suporte para funções CRC / PRS de comprimento variável e, em conjunto com a máscara da saída da ALU, permite a implementação de temporizadores de comprimentos arbitrários, contadores e blocos de turnos.

Buffers de entrada / saída FIFO

Cada Datapath possui dois buffers FIFO de 4 bytes, cada um dos quais pode ser configurado para funcionar como um buffer de entrada (CPU ou DMA grava dados no FIFO, Datapath lê FIFO) ou como um buffer de saída (Datapath grava no FIFO e CPU ou DMA lê a partir dele). Esses buffers FIFO geram status que podem ser encaminhados para interagir com sequenciadores, interrupções ou solicitações de DMA.

Encadeamento

O Datapath pode ser configurado para encadear condições e sinais em uma cadeia para os Datapaths vizinhos. Mudança, transferência, captura e outros sinais condicionais podem ser combinados em cadeias para criar funções aritméticas de maior profundidade de bits, bem como funções de mudança e funções CRC / PRS.

Multiplexação de tempo

Em aplicativos de superamostragem ou em que altas velocidades de clock não são necessárias, uma ALU no Datapath pode ser efetivamente dividida entre dois conjuntos de registradores e geradores de condição. As saídas da ULA e do registro de deslocamento são travadas e podem ser usadas como entrada nos ciclos subsequentes. Exemplos de uso incluem suporte para funções de 16 bits em um Datapath (8 bits) ou operações de geração de CRC alternadas com operações de troca de dados.

Entradas do Datapath

O Datapath possui quatro tipos de entradas: configuração, controle e entradas de dados (serial e paralela). As entradas de configuração selecionam o endereço de RAM da configuração dinâmica. As entradas de controle carregam os registros de dados do FIFO e baixam a saída da bateria para o FIFO. As entradas de dados seriais incluem entradas de deslocamento e transporte. A porta de entrada de dados paralela permite receber até 8 bits de dados dos recursos de rastreamento.

Saídas do Datapath

No total, existem 16 sinais gerados no Datapath. Alguns deles são sinais condicionais (por exemplo, comparações), outros são sinais de status (por exemplo, status FIFO) e o restante são sinais de dados (por exemplo, saída do registro de deslocamento). Esses 16 sinais são multiplexados em 6 saídas do Datapath e roteados para a matriz de rastreamento. Por padrão, as saídas são sincronizadas com a frequência do relógio, o que cria um pipelining com um atraso de 1 ciclo de relógio. Além disso, suas (saídas) podem ser alteradas para o modo assíncrono (combinatório) (consulte as notas do tradutor).

Nota do tradutor

Pesquisei por um longo tempo sobre qual é o tempo das saídas do Datapath. Minha experiência disse que tudo está lá de forma assíncrona. Verificou-se que esse não é o estado das saídas, mas sim a configuração do editor para variáveis ​​com base nelas.



Isso forçará o editor a gerar o seguinte código Verilog:
/* ==================== Assignment of Registered Variables ==================== */ always @ (posedge clock) begin : register_assignments var1 <= (decr_finished); end 

Se você alternar para o modo combinatório



o código ficará assim:

 assign var1 = (decr_finished); 

Mas tudo isso se aplica a variáveis ​​geradas a partir de saídas do Datapath. E as próprias saídas são sempre assíncronas. E seus nomes (neste exemplo, decr_finished ) podem ser usados ​​sem inserir variáveis ​​adicionais.

Registros de trabalho do Datapath

Cada módulo do Datapath possui seis registros de trabalho de 8 bits. A CPU ou DMA tem acesso de leitura e gravação a todos os registros.

Quadro 21-1
TipoPrimeiro nomeDescrição do produto
BateriaA0, A1As baterias podem ser uma fonte ou um receptor
para ALU. Eles também podem ser carregados a partir do registro de dados.
ou FIFO. As baterias geralmente contêm o valor atual da função.
(por exemplo, contador, CRC ou turno). Esses registros perdem sua
valores ao entrar no modo de suspensão e ao redefinir
valor 0x00.
DadosD0, D1Registradores de dados geralmente contêm constantes de função,
por exemplo, um valor de comparação PWM, um período de timer ou um polinômio CRC.
Esses registros mantêm seus valores enquanto estão no modo de suspensão.
modo
FIFOF0, F1Dois buffers FIFO de 4 bytes fornecem como fonte,
e um receptor para dados em buffer. FIFO pode ser
configurado como buffers de entrada e buffers de saída ou como um
buffer de entrada e um buffer de saída. Os sinais de status mostram
ler e escrever o status desses buffers. Para exemplos de uso
pode incluir dados TX e RX em buffer no SPI ou UART,
bem como dados PWM em buffer e dados em buffer
sobre o período do temporizador. Esses registros não salvam seus valores.
no modo de suspensão e durante a redefinição, eles assumem o valor 0x00.

No próximo artigo, começaremos a lidar com o FIFO.

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


All Articles