
Em artigos anteriores, traduções da documentação do Cypress, o autômato operacional Datapath foi considerado muito substancialmente. Gradualmente, passamos ao estudo de outros módulos UDB, em particular o módulo de gerenciamento e status.
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. (Artigo atual)
Parte 7. Módulo de controle de tempo e redefiniçãoParte 8. Endereçando UDB21.3.3 Módulo de Gerenciamento e Status
Uma visão de alto nível do módulo de controle e status é mostrada na Figura 21-28. Os bits de status do registro de controle são transferidos para rastrear recursos, dando ao programa a capacidade de controlar o comportamento do UDB. O registro de status recebe dados de linhas de rastreamento, para que o programa possa monitorar as operações executadas pelo UDB.
Figura 21-28. Registros de gerenciamento e status.A estrutura do módulo de controle e o status são mostrados em mais detalhes na Figura 21-29. O principal objetivo desta unidade é coordenar a interação do programa principal do processador com o trabalho dos elementos internos do UDB. No entanto, devido à forte conexão com a matriz de rastreamento, esse bloco pode ser configurado para executar outras funções.
Figura 21-29. Módulo de controle e status.Modos de operação:
- Entrada de status O status das linhas encerradas do lado de fora pode ser inserido e capturado como status, após o qual a CPU ou o DMA é lido.
- Saída de controle A CPU ou DMA pode gravar dados no registro de controle. Esses dados determinarão o estado das linhas que vão para os recursos de rastreamento.
- Entrada Paralela - para o caminho de dados da entrada paralela.
- Saída paralela - da saída paralela do Datapath.
- Modo Contador Nesse modo, o registro de controle opera como um contador decrescente de 7 bits com um período programável e redefinição automática. As entradas do canal de rastreamento podem ser configuradas para controlar e reiniciar o contador. Quando este modo é ativado, a funcionalidade do registro de controle não está disponível.
- Modo Síncrono / Modo de Sincronização . Nesse modo, o registro de status atua como um sincronizador duplo de 4 bits. Quando este modo é ativado, a funcionalidade do registro de status não está disponível.
21.3.3.1 Status e modo de controle
Ao operar no modo de controle e status, este módulo atua como um registro de status, registro de substituição de máscara e registro de controle na configuração mostrada na Figura 21-30.
Figura 21-30. Gerenciamento de trabalho e status.Operação de registro de status
Cada UDB possui um registro de status de 8 bits. A entrada para este registro vem de qualquer sinal de uma estrutura de rastreamento digital. O registro de status é destrutível: perde seu estado durante o sono e depois de acordar tem um valor de 0x00. Cada bit pode ser programado independentemente para operar em um dos dois modos.
Tabela 21-19. Status Register.
Uma característica importante da operação de limpeza do registro de status é que apenas os bits engatilhados são limpos. Isso permite que os bits restantes continuem capturando o status para manter a continuidade do processo.
Status de leitura normal
Por padrão, a CPU lê transparentemente o status do circuito correspondente. Este modo pode ser usado para ler dados travados dentro do UDB.
Estado do stick com claro após a leitura
Nesse modo, as entradas do registro de status são amostradas em cada ciclo de controle e relógio de status. Se o sinal em um determinado relógio for alto, ele será capturado no bit de status e permanecerá alto, independentemente dos estados de entrada subsequentes. Quando a CPU ou o DMA lê o registro de status, o bit é limpo. A limpeza do registro de status é independente do modo e ocorre mesmo quando o relógio UDB está desativado; é baseado no tempo do barramento e ocorre como parte de uma operação de leitura.
Status da trava durante a leitura
A Figura 21-31 mostra a estrutura da lógica de leitura de status. O registro de status fixo é seguido por uma trava que trava os dados do registro de status e os mantém estáveis durante o ciclo de leitura, independentemente do número de tiques de espera na operação de leitura atual.
Figura 21-31. A lógica do status de leitura.Geração de interrupção
Na maioria das funções, a geração de interrupção está vinculada aos parâmetros do bit de status. Como mostra a Figura 21-31, esse recurso é incorporado à lógica do registro de status na forma de uma operação de mascaramento e a aplicação da operação
OR ao status. Somente os 7 bits inferiores da entrada de status podem ser usados com os geradores de interrupção embutidos. O bit mais significativo (Most Significant Bit, MSB) é geralmente usado como uma saída de interrupção e pode ser encaminhado para o controlador de interrupção usando canais de rastreamento digital. Nesta configuração, o status do bit de solicitação de interrupção é lido no bit de registro de status alto.
21.3.3.2 Operação do registro de controle
Cada UDB possui um registro de controle de 8 bits disponível. Ele funciona como um registro de leitura / gravação padrão no barramento do sistema, onde a saída desses bits de registro é controlada pelas linhas da estrutura de rastreamento digital.
O registro de controle é destrutível: perde seu estado durante o sono e depois de acordar tem um valor de 0x00.
Modos de registro de gerenciamento
Cada bit pode ser configurado em um dos três modos. A configuração é especificada combinando os bits dos dois registradores de 8 bits CTL_MD1 [7: 0] e CTL_MD0 [7: 0]. Por exemplo, {CTL_MD1 [0], CTL_MD0 [0]} controla o modo de zero bits do registro de controle (consulte a tabela 21-20).
Tabela 21-20. Modo Zero Bit de Registro de Controle
Modo de registro de controle direto
Por padrão, o modo é direto. Como mostra a Figura 21-32, quando a CPU ou DMA é gravada no registro de controle, a saída do registro de controle é enviada diretamente para a linha de rastreamento no mesmo ciclo.
Figura 21-32. Modo de registro de controle direto.Modo de registro de controle síncrono
No modo síncrono, como mostrado na Figura 21-33, a saída do registro de controle é ressincronizada com um relógio igual ao relógio atual do controle e status (Status e Controle, SC). Isso permite controlar os diagramas de tempo da saída na frequência SC selecionada e não na freqüência do relógio do barramento.
Figura 21-33. Modo de registro de controle síncrono.Registro de controle do modo de pulso
O modo de pulso é semelhante ao modo síncrono, pois nele o bit de controle é amostrado novamente na frequência SC; o pulso começa no primeiro ciclo do relógio SC e segue o ciclo de gravação do barramento. A saída do bit de controle é definida durante um ciclo completo do relógio SC. No final deste ciclo de clock, o bit de controle é redefinido automaticamente.
Com este modo de operação, o programa pode escrever 1 no bit de registro de controle para gerar um pulso. Após o bit ser atribuído ao valor 1, o programa o lerá como 1 até o final do pulso, após o qual será lido como 0. Depois disso, o programa poderá escrever outro 1 para iniciar um novo pulso. Assim, não será possível dar um pulso com mais frequência do que em cada segundo passo do sinal SC.
Redefinir registro de gerenciamento
O registro de controle possui dois modos de reset controlados pelo bit de configuração EXT RES, conforme mostrado na Figura 21-34. Quando EXT RES é 0 (padrão), no modo síncrono ou de pulso, a entrada de redefinição rastreada redefine a saída sincronizada, mas não o próprio bit de controle. Quando EXT RES é 1, a entrada de redefinição rastreável redefine o bit de controle e a saída sincronizada.
Figura 21-34. Redefina o registro de gerenciamento.21.3.3.3 Modo de entrada / saída paralela
Nesse modo, o controle e o rastreamento de status são conectados aos sinais do Datapath de entrada e saída paralela. Para ativar esse modo, você precisa armar os bits de configuração do SC OUT para selecionar a saída paralela do Datapath. A comunicação com entrada paralela está sempre disponível, no entanto, essas conexões de rastreamento são compartilhadas com as entradas de registro de status, entradas de controle de contador e saídas de interrupção.
Figura 21-35. Modo de E / S paralela.21.3.3.4 Modo contador
Conforme mostrado na Figura 21-36, quando a unidade opera no modo contador, um contador decrescente de 7 bits está disponível para uso tanto nas operações dentro do UDB quanto para as necessidades do programa. Os recursos do medidor incluem:
- Registro de período de 7 bits, (leitura / gravação).
- Registro de conta de 7 bits, (leitura / gravação). O acesso é possível apenas quando o contador está parado.
- Recarrega automaticamente o período no registro da conta quando atinge zero.
- O bit de controle acessível por software no registro de controle auxiliar CNT START, usado para iniciar e parar o contador. (Sobrepõe o sinal de hardware ENABLE e deve ser instalado para que o sinal de hardware opcional ENABLE funcione).
- Bits selecionáveis dos canais de rastreamento do controle dinâmico opcional do contador para as funções de início e carregamento:
- PT, sinal rastreado para iniciar ou parar a contagem.
- LD, um sinal de carga rastreável que causa uma recarga de período. Quando esse sinal é engatilhado, ele se sobrepõe ao sinal final pendente. É sensível ao nível e, enquanto o sinal está armado, o período continua a carregar. - Um contador de 7 bits pode ser enviado para rastrear recursos como sc_out [6: 0].
- O sinal de terminação pode inserir recursos de rastreamento como sc_out [7].
- No modo "padrão", o modo de encaixe é usado para o sinal de contagem. No modo alternativo, alterna para o modo combinado.
- No modo padrão, o sinal EN de hardware opcional, se usado, deve ser definido para ativar o sinal de hardware LD. No modo alternativo, os sinais de hardware LD e EN são independentes.
Figura 21-36. Modo contadorNota do tradutor:
Em torno deste lugar, percebi que não entendia completamente nada do documento. Em nenhum lugar são descritos os modos "padrão" e "alternativo". Depois de uma longa pesquisa, consegui encontrar alguns, mas um exemplo.
Arquivo: C: \ Arquivos de programas (x86) \ Cypress \ PSoC Creator \ 4.2 \ PSoC Creator \ psoc \ content \ CyComponentLibrary \ CyComponentLibrary.cylib \ bScanComp_v1_10 \ bScanComp_v1_10.v
Código explicativo:

Mesmo texto:cy_psoc3_count7 #(.cy_period(Period),.cy_route_ld(0),.cy_route_en(1), .cy_alt_mode(1)) ChannelCounter( /* input */ .clock(clk_int), /* input */ .reset(1'b0), /* input */ .load(1'b0), /* input */ .enable(enable_int), /* output [06:00] */ .count(count), /* output */ .tc(tc_o) );
A própria declaração do componente cy_psoc3_count7 que encontrei apenas para a linguagem VHDL, parece que para o Verilog ele está embutido nas ferramentas de desenvolvimento. Agora você sabe aproximadamente onde procurar os bits de ajuste em discussão.
Aqui consideramos os bits misteriosos, chamados SC OUT CTL ou SC_OUT_CTL, mas seus valores não estão documentados. Eu não os encontrei em lugar nenhum. Fica claro no texto que eles alternam o componente STATUS_CONTROL entre os modos. Mas no arquivo VHDL mencionado anteriormente, C: \ Arquivos de programas (x86) \ Cypress \ PSoC Creator \ 4.2 \ PSoC Creator \ warp \ lib \ lcpsoc3 \ cpsoc3.vhd
vemos separadamente o contador já conhecido por nós component cy_psoc3_count7 generic(cy_period : std_logic_vector (6 downto 0) := "1111111"; cy_init_value : std_logic_vector (6 downto 0) := "0000000"; cy_route_ld : boolean := false; cy_route_en : boolean := false; cy_alt_mode : boolean := false); port (clock : in std_logic; reset : in std_logic; load : in std_logic; enable : in std_logic; count : out std_logic_vector (6 downto 0); tc : out std_logic); end component;
separadamente - status e gerenciamento attribute atomic_rtl of cy_psoc3_status : component is rtl_generic; attribute cpu_access of cy_psoc3_status : component is true; component cy_psoc3_statusi generic(cy_force_order : boolean := false; cy_md_select : std_logic_vector (6 downto 0) := "0000000"; cy_int_mask : std_logic_vector (6 downto 0) := "0000000"); port (reset : in std_logic := '0'; clock : in std_logic := '0'; status : in std_logic_vector (6 downto 0); interrupt : out std_logic); end component; attribute atomic_rtl of cy_psoc3_statusi : component is rtl_generic; attribute cpu_access of cy_psoc3_statusi : component is true; component cy_psoc3_control generic(cy_init_value : std_logic_vector (7 downto 0) := "00000000"; cy_force_order : boolean := false; cy_ctrl_mode_1 : std_logic_vector (7 downto 0) := "00000000"; cy_ctrl_mode_0 : std_logic_vector (7 downto 0) := "00000000"; cy_ext_reset : boolean := false); port (reset : in std_logic := '0'; clock : in std_logic := '0'; control : out std_logic_vector (7 downto 0)); end component;
separadamente - sincronizador component cy_psoc3_sync port (clock : in std_logic := '0'; sc_in : in std_logic; sc_out : out std_logic); end component;
Repito que o Verilog não possui uma versão dessas declarações (existem apenas modelos comportamentais no diretório C: \ Arquivos de Programas (x86) \ Cypress \ PSoC Creator \ 4.2 \ PSoC Creator \ warp \ lib \ sim, então acho que a configuração dos bits Os modos não são acessíveis a programadores simples Ao ler esta seção, lembre-se desse fato: algo é fornecido apenas como referência, não está sujeito a nós, programadores.
Para ativar o modo contador, a saída do contador deve ser selecionada nos bits SC_OUT_CTI [1: 0]. Nesse modo, a operação normal do registro de controle não está disponível. Ao mesmo tempo, o registro de status pode ser usado para operações de leitura, mas você não deve usá-lo para gerar uma interrupção, pois o registro de mapeamento de máscara também é usado como um registro de período de contagem. O registro do período não é destruído e mantém seu estado após acordar. Para um período de N medidas, o valor N-1 deve ser carregado no registro de período. O valor N = 1 (o período é zero), pois o valor do divisor de frequência não é suportado e levará a uma unidade constante na saída do TC (contagem de terminais, TC). A disponibilidade do modo SYNC depende se o controle dinâmico (LD / EN) é usado ou não. Se não for utilizado, não afeta o modo SYNC. Se usado, o modo SYNC não está disponível.
21.3.3.5 Modo de sincronização
Conforme mostrado na Figura 21-37, o registro de status pode operar como um relógio duplo de 4 bits sincronizado com o valor atual SC_CLK se o bit SYNC MD estiver definido. Este modo pode ser usado para implementar a sincronização local de sinais assíncronos (por exemplo, entradas GPIO). Nesse caso, os sinais sincronizados são selecionados em SC_IN [3: 0], as saídas são roteadas para os contatos SC_IO_OUT [3: 0] e o SYNC MD alterna automaticamente os contatos SC_IO para o modo de saída. Nesse modo, a operação normal do registro de status não está disponível e o modo de bit de status fixo é desativado à força, independentemente das configurações de controle do modo. Este modo não afeta o registro de controle. O contador ainda pode ser usado, mas com limitações. Neste modo de operação, as entradas dinâmicas (LD / EN) não podem ser usadas.
Figura 21-37. Modo síncrono.21.3.3.6 Status e controle de relógio
Os registros de controle e status requerem uma seleção de relógio em qualquer um dos seguintes modos de operação:
- registro de status com qualquer bit no modo pegajoso, com limpeza após a leitura,
- registro de controle no modo contador,
- modo síncrono.
O tempo é atribuído no módulo relógio e redefinição. Veja 21.3.4. Relógio e redefinir o módulo de controle.
21.3.3.7 Registro de controle auxiliar
O registro de controle auxiliar para leitura e gravação é um registro especial que controla equipamentos UDB fixos. Esse registro permite que a CPU ou o DMA controle dinamicamente interrupções, FIFOs e operações de contador. Os bits dos registradores e suas descrições são apresentados abaixo:
Clear FIFO0 e FIFO1 (FIFO0 Clear, FIFO1 Clear)
Os bits FIFO0 CLR e FIFO1 CLR são usados para redefinir o status dos FIFOs correspondentes. Quando 1 é gravado nesses bits, o estado do FIFO correspondente é redefinido. Para continuar a operação FIFO, é necessário escrever 0. Esses bits permanecem armados.O FIFOs funciona como buffers simples de byte único sem status.
Nível FIFO0 e FIFO1 (nível FIFO0, nível FIFO1)
Os bits FIFO0 LVL e FIFO1 LVL definem o nível no qual um FIFO de 4 bytes eleva o status do barramento (quando o barramento lê ou grava no FIFO). O valor do status do barramento FIFO depende da direção configurada, conforme mostrado na tabela abaixo.
Tabela 21-21. Bits de controle de nível FIFO.
Ativar interrupção
Quando a lógica de geração do registro de status é ativada, o bit INT EN permite a passagem do sinal de interrupção gerado.
Iniciar contador / conta? (Início da contagem)
O bit CNT START pode ser usado para iniciar e parar o contador (disponível apenas se os bits SC_OUT_CTL [1: 0] estiverem configurados para o modo de saída do contador).
21.3.3.8 Resumo dos registros de gerenciamento e status
A tabela abaixo resume as funções dos registros de controle e status. Observe que os registros de máscara e controle são combinados com contadores e registros de período, e o valor desses registros não depende do modo de operação.
Tabela 21-22. Um breve resumo da operação dos registros de gerenciamento e status
a. - observe que, no modo contador, o registro de sobreposição de máscara funciona como um registro de período e não pode funcionar como um registro de máscara sobre. Conseqüentemente, a saída de interrupção não está disponível quando o modo contador está ativado.
b. - observe que no modo de sincronização o registro de status não está disponível e, portanto, é impossível usar o registro de sobreposição de máscara. No entanto, ele pode ser usado como um registro de período para o modo contador.
Para continuar ...