
Concluímos nosso épico com a tradução da documentação proprietária do Cypress sobre o UDB. A última edição - sobre o endereçamento do UDB - está à sua frente.
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.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çãoParte 8. Endereçando UDB. (Artigo atual)
21.3.5 Endereçamento UDB
O par UDB possui três espaços de endereço exclusivos:
- Registros de trabalho de 8 bits - um controlador de barramento que tem acesso a apenas 8 bits de dados por ciclo de barramento pode usar esse espaço de endereço para ler ou gravar qualquer registrador de trabalho UDB. Isso inclui os registros com os quais a CPU e o DMA interagem durante a operação normal.
- Registros de trabalho de 16 bits - Um controlador de barramento de 16 bits, como um DMA ou PSoC 5LP Cortex-M3, pode acessar 16 bits em um ciclo de barramento para permitir a transferência de dados para funções que exigem 16 bits ou mais. Apesar de esse espaço de endereço não estar vinculado à área na qual o espaço de 8 bits está vinculado, ele tem acesso aos mesmos registros, apenas a um par de cada vez.
- Registradores de configuração de 8 ou 16 bits - esses registradores configuram o UDB para executar uma função. Após a configuração, os registradores geralmente são definidos para um estado estático durante a operação do UDB. Esses registros mantêm seu estado após o modo de suspensão.
Nota do tradutorDe alguma forma, tudo é formulado de maneira complicada. Na minha opinião, para os dois primeiros pontos, é mais fácil introduzir o conceito de abordar métodos com diferentes profundidades de bits do registro de trabalho. Através dos registros de trabalho de 8 e 16 bits, respectivamente. Se você estiver confuso ao ler esses parágrafos, tente considerar o texto dessa maneira. Janelas diferentes no espaço de endereço da CPU, fornecendo endereçamento da mesma através dos registros de trabalho de diferentes bits. Isso é tudo.21.3.5.1 Espaço de endereço do registro de trabalho
Os registros de trabalho são utilizados durante a operação normal e incluem baterias, registros de dados, FIFOs, registros de controle e status, registro de sobreposição de máscara e registro de controle auxiliar.
A Figura 21-43 mostra um mapa de registro de um UDB.
À direita na Figura 21-43, há um endereço de 16 bits sempre par. Nesse caso, o número UDB possui uma dimensão de 5 bits, e não 4, devido à localização uniforme dos endereços. Os 4 bits altos ainda definem o número do registro.
Figura 21-43. Registros de trabalho UDB.Acesso ao registro de trabalho de 8 bitsNesse modo, o acesso a todos os registros UDB é via endereços alinhados no limite de bytes. No modo de acesso para registros de 8 bits, como mostra a Figura 21-44, todos os bytes de dados gravados no UDB são alinhados com o byte baixo do barramento UDB de 16 bits.
Nesse modo, o acesso a qualquer momento só pode ser acessado em um byte.
Figura 21-44. Acesso ao registro de trabalho de 8 bits.Espaço de endereço de registro de trabalho de 16 bitsUm espaço de endereço de 16 bits projetado para acesso DMA eficiente e fornecendo acesso programático da CPU aos processadores que o suportam, como o Cortex-M3 no PSoC 5LP. Existem dois modos de acesso aos registradores de 16 bits: o modo padrão e o modo de concatenação. Como mostra a Figura 21-45, no modo padrão, ele acessa o registro especificado no UDB 'i' através do byte baixo e para o mesmo registro no UDB 'i + 1' através do byte alto. Isso torna o processamento de dados de 16 bits eficiente em UDBs vizinhos (em ordem de endereço), configurados como funções de 16 bits.
Figura 21-45. Acesso a registros de trabalho de 16 bits no modo padrão.No modo de concatenação, os registros de um UDB são combinados para formar registros de 16 bits, conforme mostrado na Figura 21-46. Nesse modo, o barramento de dados de 16 bits da matriz UDB deve acessar um par de registros no UDB no formato mostrado na figura. Por exemplo, ao acessar o registro A0, o acesso a A0 através do byte baixo e a A1 através do byte alto realmente ocorrerá.
Figura 21-46. Acesso a um registro de trabalho de 16 bits no modo de concatenaçãoO uso do DMA é limitado pela profundidade de bits do registro de trabalho de 16 bits. Não é suficiente ao trabalhar com funções maiores que 16 bits. Isso é causado por sobreposições de endereço, conforme mostrado em
tabela 21-25.
Tabelas 21-25. Espaço de endereço otimizado para funções UDB de 16 bits.
Quando o DMA transmite 16 bits para o endereço 0, os bytes alto e baixo são gravados em UDB0 e UDB1, respectivamente. Na próxima transmissão DMA de 16 bits para o endereço 2, o valor em UDB1 é substituído pelo byte baixo dessa transmissão.
Para evitar problemas associados a essa organização de memória, é recomendável que funções cuja profundidade de bits seja superior a 16 bits iniciem o processo DMA para uma área com registros de trabalho de 8 bits.
21.3.5.2 Espaço de endereço do registrador de configuração
A configuração é feita no nível do par UDB. Um par UDB consiste em dois UDBs e um canal rastreador associado, como mostra a Figura 21-47.

Figura 21-47. Esquema de endereço para configurar um par UDB.
21.3.5.3 Espaço de endereço da configuração do UDB
A Figura 21-48 mostra o diagrama de configuração de endereço de um UDB específico. Como você pode ver, esse espaço de configuração é duplicado nos dois UDBs em pares. Um total de 128 bytes (7 bits de endereços) são reservados para cada configuração UDB, divididos em segmentos de 16 bits. Vale ressaltar que o acesso de 16 bits às bordas ímpares não é suportado. A leitura sempre retorna 16 bits no espaço de configuração e bytes desnecessários podem ser ignorados.

Figura 21-48. O espaço de endereço da configuração do UDB.
21.3.5.4 Espaço de endereço da configuração de roteamento
A configuração de rastreio UDB consiste em bits de RAM incorporados para controlar o estado dos comutadores de gateway, segmentação e buffers de entrada / saída.
21.3.6 Coerência de acesso ao barramento do sistema
Registradores UDB têm modo de acesso duplo:
- acesso ao barramento do sistema, no qual a CPU ou DMA lê ou grava no registro UDB;
- Acesso interno ao UDB, no qual a função UDB atualiza ou utiliza o conteúdo do registro
.
21.3.6.1 Acesso simultâneo ao barramento do sistema
A tabela abaixo contém uma lista de possíveis eventos de acesso simultâneo e o comportamento necessário.
Tabela 21-26. Acesso simultâneo ao barramento do sistema.
a. Os registros Ax podem ser lidos com segurança usando a função de captura de software FIFO.
b. Nos registros Dx, os FIFOs só podem ser gravados dinamicamente. Nesse modo, a leitura direta de registros Dx não está disponível.
c. O registro CNT só pode ser lido com segurança quando está desativado. Uma alternativa para a leitura dinâmica do valor CNT é rastrear a saída para o registro SC (no modo transparente).
d. Os bits do registro MC podem ser rastreados até as entradas do registro de status (no modo transparente) para uma leitura segura.
21.3.6.2 Acesso coerente ao acumulador (leituras e gravações atômicas)
As baterias UDB são o principal objetivo do processamento de dados. Portanto, a leitura desses registros diretamente durante a operação normal fornece um resultado indefinido, conforme mostrado na tabela acima. No entanto, há suporte interno para leituras atômicas na forma de captura de programa implementada em blocos conectados em uma cadeia. Nesse modelo de uso, a leitura da última bateria significativa transfere dados de todos os blocos conectados na cadeia para os FIFOs associados. A gravação atômica no FIFO pode ser implementada programaticamente. Operações de gravação separadas podem ser executadas na entrada FIFO e, em seguida, o sinal de status FIFO, para o qual a última gravação foi feita, pode ser encaminhado para todos os blocos vinculados, enquanto os dados FIFO serão transferidos para os registros Dx ou Ax.
Posfácio do tradutor
Esse ciclo de tradução foi feito como uma resposta ao comentário do artigo , onde foi proposto primeiro descrever brevemente o que é o UDB. Agora está claro que, para uma resposta breve, seria necessário citar pelo menos metade dos materiais apresentados aqui, caso contrário, a resposta ainda estaria incompleta. Mas agora todos os materiais são traduzidos e compilados. A tarefa está concluída.
Enquanto o trabalho estava em andamento, também chamamos a atenção para outro bloco PSoC interessante, pouco conhecido por qualquer pessoa, mas repleto de tremendo poder. Este é DFB, Digital Filter Block. É verdade que é assustador se apressar na tradução. A partir da tradução sobre o UDB, fica claro que uma documentação não é suficiente, oh, é necessária prática. O problema é que existem poucos exemplos prontos no UDB, mas existem. Ainda não foi possível encontrar algo que valha a pena nos exemplos no DFB (o próprio Cypress criou um filtro digital na forma de uma caixa preta, funciona, mas ainda não está claro como). A tradução sem exemplos não fará sentido. Portanto, aproveitando esta oportunidade, chamamos a atenção dos leitores para esse bloco. Talvez alguém nos comentários forneça links para bons exemplos. Se conseguirmos lidar com este bloco, será possível fazer um ciclo de traduções e artigos práticos sobre ele. Enquanto isso, é tudo.