Detecção e correção de erros Microsemi DG0618 em dispositivos SmartFusion2 usando memória DDR
Sede Corporativa da Microsemi
Uma Empresa, Aliso Velho,
CA 92656 EUA
Nos EUA: +1 800-713-4113
Fora dos EUA: +1 949-380-6100
Fax: +1 949-215-4996
E-mail: sales.support@microsemi.com
www.microsemi.com
© 2017 Microsemi Corporation. Todos os direitos reservados. Microsemi e o logotipo Microsemi são marcas comerciais da Microsemi Corporation. Todas as outras marcas comerciais e marcas de serviço são de propriedade de seus respectivos proprietários
A Microsemi não oferece nenhuma garantia, representação ou garantia em relação às informações aqui contidas ou a adequação de seus produtos e serviços para qualquer finalidade específica, nem assume qualquer responsabilidade decorrente da aplicação ou uso de qualquer produto ou circuito. Os produtos vendidos abaixo e quaisquer outros produtos vendidos pela Microsemi foram sujeitos a testes limitados e não devem ser usados em conjunto com equipamentos ou aplicativos de missão crítica. Todas as especificações de desempenho são consideradas confiáveis, mas não são verificadas, e o Comprador deve conduzir e concluir todos os testes de desempenho e outros dos produtos, sozinhos e em conjunto com ou instalados em quaisquer produtos finais. O Comprador não deve confiar em quaisquer dados e especificações de desempenho ou parâmetros fornecidos pela Microsemi. É responsabilidade do Comprador determinar independentemente a adequação de quaisquer produtos e testar e verificar os mesmos. As informações fornecidas pela Microsemi neste instrumento são fornecidas “como estão, onde estão” e com todas as falhas, e todo o risco associado a tais informações é inteiramente do Comprador. A Microsemi não concede, explícita ou implicitamente, a qualquer parte quaisquer direitos de patente, licenças ou quaisquer outros direitos de PI, seja com relação a tais informações em si ou qualquer coisa descrita por tais informações. As informações fornecidas neste documento são de propriedade da Microsemi, e a Microsemi se reserva o direito de fazer quaisquer alterações nas informações contidas neste documento ou em quaisquer produtos e serviços a qualquer momento, sem aviso prévio.
Sobre a Microsemi
A Microsemi Corporation (Nasdaq: MSCC) oferece um portfólio abrangente de soluções de semicondutores e sistemas para os mercados aeroespacial e de defesa, comunicações, data center e industrial. Os produtos incluem circuitos integrados analógicos de sinal misto de alto desempenho e resistentes à radiação, FPGAs, SoCs e ASICs; produtos de gerenciamento de energia; dispositivos de cronometragem e sincronização e soluções precisas de tempo, definindo o padrão mundial de tempo; dispositivos de processamento de voz; soluções de RF; componentes discretos; soluções corporativas de armazenamento e comunicação, tecnologias de segurança e anti-t escalonávelamper produtos; soluções Ethernet; CIs e midspans Power-over-Ethernet; bem como recursos e serviços de design personalizado. A Microsemi está sediada em Aliso Viejo, Califórnia, e tem aproximadamente 4,800 funcionários em todo o mundo. Saiba mais em www.microsemi.com.
Histórico de revisão
O histórico de revisão descreve as alterações que foram implementadas no documento. As alterações são listadas por revisão, começando com a publicação mais atual.
- Revisão 4.0
Atualizado o documento para o lançamento do software Libero v11.8. - Revisão 3.0
Atualizado o documento para o lançamento do software Libero v11.7. - Revisão 2.0
Atualizado o documento para o lançamento do software Libero v11.6. - Revisão 1.0
Versão inicial para o lançamento do software Libero SoC v11.5.
Detecção e correção de erros em dispositivos SmartFusion2 usando memória DDR
Introdução
Em um ambiente suscetível a perturbações por evento único (SEU), a memória de acesso aleatório (RAM) é propensa a erros transitórios causados por íons pesados.
Este documento descreve as capacidades EDAC do SoC FPGA, que são utilizadas em aplicações com memórias conectadas através do subsistema microcontrolador (MSS) DDR (MDDR).
Os controladores EDAC implementados nos dispositivos SmartFusion2 suportam correção de erro único e detecção de erro duplo (SECDED). Todas as memórias—memória de acesso aleatório estático aprimorado (eSRAM), DDR, DDR de baixa potência (LPDDR)—dentro dos dispositivos SmartFusion2 MSS são protegidas por SECDED. A memória de acesso aleatório dinâmico síncrono (SDRAM) DDR pode ser DDR2, DDR3 ou LPDDR1, dependendo da configuração do MDDR e dos recursos ECC do hardware.
O subsistema SmartFusion2 MDDR suporta densidades de memória de até 4 GB. Nesta demonstração, você pode selecionar qualquer local de memória de 1 GB no espaço de endereço DDR (0xA0000000 a 0xDFFFFFFF).
Quando SECDED está ativado:
- Uma operação de gravação calcula e adiciona 8 bits de código SECDED (a cada 64 bits de dados)
- Uma operação de leitura lê e verifica os dados em relação ao código SECDED armazenado para suportar correção de erro de 1 bit e detecção de erro de 2 bits
A ilustração a seguir descreve o diagrama de blocos do SmartFusion2 EDAC em DDR SDRAM.
Figura 1 • Diagrama de blocos de nível superior
O recurso EDAC do DDR suporta o seguinte:
- Mecanismo SECDED
- Fornece interrupções ao processador ARM Cortex-M3 e à malha FPGA após a detecção de um erro de 1 bit ou erro de 2 bits
- Armazena o número de erros de 1 bit e 2 bits nos registradores do contador de erros
- Armazena o endereço da última localização de memória afetada por erro de 1 ou 2 bits
- Armazena os dados de erro de 1 ou 2 bits nos registradores SECDED
- fornece sinais de barramento de erro para a malha FPGA
Para obter mais informações sobre EDAC, consulte UG0443: SmartFusion2 and IGLOO2 FPGA Security and Reliability User Guide e UG0446: SmartFusion2 and IGLOO2 FPGA High Speed DDR Interfaces User Guide.
Requisitos de projeto
A tabela a seguir lista os requisitos de design.
Tabela 1 • Requisitos de Projeto
- Descrição dos Requisitos de Projeto
- Requisitos de hardware
- Placa SmartFusion2 Advanced Development Kit Rev B ou posterior
- Programador FlashPro5 ou posterior
- Cabo USB A para mini-B USB
- Adaptador de energia 12 V
- Placa filha DDR3
- Sistema Operacional Qualquer Windows XP SP64 de 32 ou 2 bits
- Qualquer Windows 64 de 32 ou 7 bits
- Requisitos de software
- Libero® System-on-Chip (SoC) v11.8
- SoftConsole v4.0
- Software de programação FlashPro v11.8
- Drivers do PC host Drivers USB para UART
- Framework para executar a demonstração do cliente Microsoft .NET Framework 4
Projeto de Demonstração
O projeto de demonstração files estão disponíveis para download no seguinte caminho no Microsemi website: http://soc.microsemi.com/download/rsc/?f=m2s_dg0618_liberov11p8_df
O projeto de demonstração files incluem:
- Configuração DDR File
- DDR_EDAC
- Programação files
- GUI executável
- Leia-me file
A ilustração a seguir descreve a estrutura de nível superior do design files. Para mais detalhes, consulte o readme.txt file.
Figura 2 • Estrutura de nível superior do projeto de demonstração
Implementação de design de demonstração
O subsistema MDDR possui um controlador EDAC dedicado. O EDAC detecta um erro de 1 bit ou um erro de 2 bits quando os dados são lidos da memória. Se o EDAC detectar o erro de 1 bit, o controlador EDAC corrige o bit de erro. Se o EDAC estiver ativado para todos os erros de 1 e 2 bits, os contadores de erros correspondentes nos registradores do sistema serão incrementados e as interrupções correspondentes e os sinais de barramento de erro para a malha FPGA serão gerados.
Isso acontece em tempo real. Para demonstrar esse recurso SECDED, um erro é introduzido manualmente e a detecção e correção observadas.
Este design de demonstração envolve a implementação das seguintes etapas:
- Ativar EDAC
- Gravar dados em DDR
- Ler dados do DDR
- Desativar EDAC
- Corromper 1 ou 2 bits
- Gravar dados em DDR
- Ativar EDAC
- Leia os dados
- No caso de um erro de 1 bit, o controlador EDAC corrige o erro, atualiza os registros de status correspondentes e fornece os dados gravados na Etapa 2 na operação de leitura realizada na Etapa 8.
- No caso de um erro de 2 bits, uma interrupção correspondente é gerada e o aplicativo deve corrigir os dados ou tomar a ação apropriada no manipulador de interrupção. Esses dois métodos são demonstrados nesta demonstração.
Dois testes são implementados nesta demonstração: teste de loop e teste manual e são aplicáveis a erros de 1 bit e 2 bits.
Teste de loop
O teste de loop é executado quando os dispositivos SmartFusion2 recebem um comando de teste de loop da GUI. Inicialmente, todos os contadores de erros e registros relacionados ao EDAC são colocados no estado RESET.
As etapas a seguir são executadas para cada iteração.
- Habilitar o controlador EDAC
- Grave os dados no local de memória DDR específico
- Desabilitar o controlador EDAC
- Grave os dados induzidos por erro de 1 ou 2 bits no mesmo local de memória DDR
- Habilitar o controlador EDAC
- Leia os dados do mesmo local de memória DDR
- Envie a detecção de erro de 1 ou 2 bits e os dados de correção de erro de 1 bit em caso de erro de 1 bit para a GUI
Teste Manual
Este método permite o teste manual de detecção e correção de erro de 1 bit e detecção de erro de 2 bits para endereço de memória DDR (0xA0000000 a 0xDFFFFFFF) com inicialização. Um erro de 1/2 bits é introduzido manualmente em um endereço de memória DDR selecionado. Os dados fornecidos são gravados no local de memória DDR selecionado com o EDAC ativado. Os dados de erro corrompidos de 1 ou 2 bits são gravados no mesmo local de memória com o EDAC desabilitado. As informações sobre o erro detectado de 1 ou 2 bits são registradas quando os dados são lidos do mesmo local de memória com EDAC ativado. O controlador DMA de alto desempenho
(HPDMA) é usado para ler os dados da memória DDR. O manipulador de interrupção de detecção de erro de bit duplo é implementado para executar a ação apropriada quando um erro de 2 bits é detectado.
A ilustração a seguir descreve as operações de demonstração do EDAC.
Figura 3 • Fluxo de projeto
Observação: Para um erro de 2 bits, quando o processador Cortex-M3 lê os dados, a execução do código vai para o manipulador de falhas graves, pois a interrupção recebida está atrasada para o processador responder. No momento em que responde à interrupção, pode já ter passado os dados e iniciado acidentalmente um comando. Como resultado, o HRESP para de processar os dados incorretos. A detecção de erro de 2 bits usa HPDMA para ler os dados do local do endereço DDR, que instrui o processador que os dados lidos têm um erro de 2 bits e o sistema deve tomar a ação apropriada para recuperar (manipulador de interrupção ECC).
Configurando o Design de Demonstração
Esta seção descreve a configuração da placa SmartFusion2 Advanced Development Kit, as opções de GUI e como executar o projeto de demonstração.
As etapas a seguir descrevem como configurar a demonstração:
- Conecte uma extremidade do cabo USB mini-B ao conector J33 fornecido na placa SmartFusion2 Advanced Development Kit. Conecte a outra extremidade do cabo USB ao PC host. O diodo emissor de luz (LED) DS27 deve acender, indicando que o link UART foi estabelecido. Certifique-se de que os drivers da ponte USB para UART sejam detectados automaticamente (podem ser verificados no Gerenciador de dispositivos), conforme mostrado na figura a seguir.
Figura 4 • Drivers de ponte USB para UART
Se os drivers de ponte USB para UART não estiverem instalados, baixe e instale os drivers de: www.microsemi.com/soc/documents/CDM_2.08.24_WHQL_Certified.zip. - Conecte os jumpers na placa SmartFusion2 Advanced Development Kit, conforme mostrado na Tabela 4, página 11. A chave SW7 da fonte de alimentação deve estar DESLIGADA durante as conexões dos jumpers.
Figura 5 • Configuração da placa do kit de desenvolvimento avançado SmartFusion2
Interface gráfica do usuário
Esta seção descreve a GUI Demo DDR – EDAC.
Figura 6 • DDR – GUI de demonstração EDAC
A GUI suporta os seguintes recursos:
- Seleção da porta COM e taxa de transmissão
- Seleção da guia de correção de erro de 1 bit ou detecção de erro de 2 bits
- Campo de endereço para gravar ou ler dados de ou para o endereço DDR especificado
- Campo de dados para gravar ou ler dados de ou para o endereço DDR especificado
- Seção Console serial para imprimir as informações de status recebidas do aplicativo
- Ativar EDAC/Desativar EDAC: Ativa ou desativa o EDAC
- Write: Permite escrever dados no endereço especificado
- Read: Permite a leitura de dados do endereço especificado
- Teste de loop ON/OFF: Permite testar o mecanismo EDAC em um método de loop
- Inicializar: Permite inicializar o local de memória predefinido (neste demo A0000000-A000CFFF)
Executando o projeto de demonstração
As etapas a seguir descrevem como executar o design:As etapas a seguir descrevem como executar o design:
- Ligue o interruptor de alimentação, SW7.
- Programe o dispositivo SmarFusion2 com o programador file fornecido no projeto files.(\ProgramaçãoFile\EDAC_DDR3.stp) usando o software de design FlashPro, conforme mostrado na figura a seguir.
Figura 7 • Janela de programação do FlashPro - Pressione o interruptor SW6 para redefinir a placa após a programação bem-sucedida.
- Inicie o executável EDAC_DDR Demo GUI file disponível no projeto files (\GUI Executable\ EDAC_DDR.exe). A janela GUI é exibida, conforme mostrado na Figura 8, página 9.
- Clique em Conectar, ele seleciona a porta COM e estabelece a conexão. A opção Conectar muda para Desconectar.
- Selecione a guia Correção de erros de 1 bit ou Detecção de erros de 2 bits.
- Testes manuais e de loop podem ser executados.
- Clique em Initialize para inicializar a memória DDR para realizar os testes Manual e Loop, uma mensagem de conclusão da inicialização é exibida no Console Serial, conforme Figura 8, página 9.
Figura 8 • Janela de inicialização concluída
Executando Teste de Loop
Clique em Teste de Loop ATIVADO. Ele é executado no modo loop, onde a correção contínua e a detecção de erros são feitas. Todas as ações executadas no dispositivo SmartFusion2 são registradas na seção Serial Console da GUI.
Tabela 2 • Endereços de memória DDR3 usados no teste de loop
- Memória DDR3
- Correção de erro de 1 bit 0xA0008000
- Detecção de erro de 2 bits 0xA000C000
Executando Teste Manual
Nesse método, os erros são introduzidos manualmente usando a GUI. Use as etapas a seguir para executar a correção de erro de 1 bit ou a detecção de erro de 2 bits.
Tabela 3 • Endereços de memória DDR3 usados no teste manual
Endereço de entrada e campos de dados (use valores hexadecimais de 32 bits).
- Memória DDR3
- Correção de erro de 1 bit 0xA0000000-0xA0004000
- Detecção de erro de 2 bits 0xA0004000-0xA0008000
- Clique em Ativar EDAC.
- Clique em Escrever.
- Clique em Desativar EDAC.
- Altere um bit (no caso de correção de erro de 1 bit) ou dois bits (no caso de detecção de erro de 2 bits) no campo Dados (introduzindo erro).
- Clique em Escrever.
- Clique em Ativar EDAC.
- Clique em Ler.
- Observe a exibição da contagem de erros e o campo de dados na GUI. O valor da contagem de erros aumenta em 1.
A janela de correção de loop de erro de 1 bit é mostrada na figura a seguir.
Figura 9 • Janela de detecção de loop de erro de 1 bit
A janela do manual de detecção de erros de 2 bits é mostrada na figura a seguir.
Figura 10 • Janela manual de detecção de erro de 2 bits
Conclusão
Esta demonstração mostra os recursos do SmartFusion2 SECDED para o subsistema MDDR.
Apêndice: Configurações de Jumper
A tabela a seguir mostra todos os jumpers necessários para definir no SmartFusion2 Advanced Development Kit.
Tabela 4 • Configurações de jumper do kit de desenvolvimento avançado SmartFusion2
Jumper : Pino (De): Pino (Para): Comentários
- J116, J353, J354, J54 1 2 Estas são as configurações de jumper padrão do Advanced
- J123 2 3 Placa do kit de desenvolvimento. Certifique-se de que esses jumpers estejam configurados adequadamente.
- J124, J121, J32 1 2 JTAG programação via FTDI
DG0618 Guia de Demonstração Revisão 4.0
Documentos / Recursos
![]() | Detecção e correção de erros Microsemi DG0618 em dispositivos SmartFusion2 usando memória DDR [pdf] Guia do Usuário DG0618 Detecção e Correção de Erros em Dispositivos SmartFusion2 usando Memória DDR, DG0618, Detecção e Correção de Erros em Dispositivos SmartFusion2 usando Memória DDR, Dispositivos SmartFusion2 usando Memória DDR, Memória DDR |