Xilinx DDR2 MIG 7 Guia de estimativa de desempenho
Nota importante: Este PDF para download de um registro de resposta é fornecido para melhorar sua usabilidade e legibilidade. É importante observar que os Registros de Resposta são Webconteúdo baseado em conteúdo que é atualizado frequentemente à medida que novas informações são disponibilizadas. Você é lembrado de visitar o Suporte Técnico da Xilinx Website e review (Resposta Xilinx 63234) para obter a versão mais recente desta resposta.
Introdução
Devido à forma como as memórias DDR2 e DDR3 são arquitetadas e o controlador da série MIG 7 é projetado, o desempenho não é simples.
Requer uma compreensão de vários parâmetros de temporização Jedec e arquitetura do controlador, e você precisará executar simulações para obter as estimativas.
O princípio geral para determinar o desempenho é o mesmo, mas este documento fornece uma maneira fácil de obter eficiência usando o MIG example design com a ajuda de bancada de teste e estímulo fileestá anexado aqui.
Largura de banda efetiva
O barramento de dados DRAM atinge largura de banda próxima ao pico apenas durante picos de leitura e gravação e sua sobrecarga reduz a taxa de dados efetiva.
Alguns exampos custos indiretos são:
- tempo de pré-carga acessando linhas no mesmo banco (endereço de acesso não na mesma linha-página atingida)
- tempo de recuperação de gravação para mudar do acesso de gravação para leitura
- o tempo de resposta do barramento para mudar do acesso de leitura para gravação
Largura de banda efetiva = largura de banda de pico * Eficiência
Geração de Projeto MIG
Consulte o Capítulo 586 do UG1 para obter detalhes passo a passo sobre MIG IP e example geração de design.
Antes de executar a simulação de desempenho do MIG Série 7, faça o seguinte para garantir que seu ambiente de simulação esteja adequado. Abra o MIG exampProjete e mapeie as bibliotecas apropriadas, execute a simulação e certifique-se de ver a mensagem “teste aprovado” na transcrição.
Para demonstrar o fluxo, gerei um IP MIG para xc7vx690tffg1761-2 e invoquei o exampProjeto.
Duas coisas que devem ser observadas são os bits de endereço de memória e a seleção de mapeamento de endereço de memória.
Por exemploample, selecionei MT41J128M8XX-125 nas opções suspensas da parte da memória.
Para a parte de memória selecionada na Figura 1, linha = 14, coluna = 10 e banco = 3, então app_addr_width = linha + coluna + banco + classificação = 28
Você pode selecionar a coluna BANK_ROW_COLUMN ou ROW BANK.
Saí da coluna ROW BANK, que é o mapeamento de endereço padrão.
Example design Simulação com bancada de testes sintetizável
Em configurações de simulação, selecione QuestaSim/ModelSim Simulator e navegue até o local das bibliotecas compiladas.
Para obter detalhes sobre como apontar para um caminho de instalação de ferramentas de terceiros, selecionar o simulador de destino e compilar e mapear bibliotecas, você pode consultar (UG900) Guia do usuário do Vivado Design Suite Simulação lógica
Execute a simulação por meio da GUI (clique na guia Executar Simulação no gerenciador de projetos) e certifique-se de ver a mensagem “teste aprovado” na transcrição.
Modificações RTL de simulação de desempenho
- Clique com o botão direito na guia de fontes, selecione “adicionar ou criar fontes de simulação” e navegue até mig7_perfsim_traffic_generator.sv file e clique em Concluir para adicioná-lo.
- Clique com o botão direito na guia de fontes, selecione “adicionar ou criar fontes de simulação”, navegue até perfsim_stimulus.txt e clique em Concluir para adicioná-lo.
- Comente o exampinstanciação le_top no sim_tb_top.v file.
- Adicione as linhas RTL abaixo a sim_tb_top,v
- localparam APP_ADDR_WIDTH = 28;
- localparam APP_DATA_WIDTH = 64;
- localparam APP_MASK_WIDTH=APP_DATA_WIDTH/8;
- localparam MEM_ADDR_ORDER = “BANK_ROW_COLUMN”;
- parâmetro local BANK_WIDTH = 3;
- parâmetro local RANK_WIDTH = 1;
- fio [APP_ADDR_WIDTH-1:0] c0_ddr3_app_addr;
- fio [2:0] c0_ddr3_app_cmd;
- fio c0_ddr3_app_en;
- fio [APP_DATA_WIDTH-1:0] c0_ddr3_app_wdf_data;
- fio c0_ddr3_app_wdf_end;
- fio [APP_MASK_WIDTH-1:0] c0_ddr3_app_wdf_mask;
- fio c0_ddr3_app_wdf_wren;
- fio [APP_DATA_WIDTH-1:0] c0_ddr3_app_rd_data;
- fio c0_ddr3_app_rd_data_end;
- fio c0_ddr3_app_rd_data_valid;
- fio c0_ddr3_app_rdy;
- fio c0_ddr3_app_wdf_rdy;
- fio c0_data_compare_error;
- fio ui_clk;
- conectar ui_clk_sync_rst;
- conectar app_sr_req = 0;
- conectar app_ref_req = 0;
- conectar app_zq_req =0;
- fio c0_app_wdf_mask =0;
Instanciação do controlador de memória FPGA
mig_7series_0_mig u_mig_7series_0_mig (
//Portas de interface de memória
- .ddr3_addr (ddr3_addr_fpga),
- .ddr3_ba (ddr3_ba_fpga),
- .ddr3_cas_n (ddr3_cas_n_fpga),
- .ddr3_ck_n (ddr3_ck_n_fpga),
- .ddr3_ck_p (ddr3_ck_p_fpga),
- .ddr3_cke (ddr3_cke_fpga),
- .ddr3_ras_n (ddr3_ras_n_fpga),
- .ddr3_reset_n (ddr3_reset_n),
- .ddr3_we_n (ddr3_we_n_fpga),
- .ddr3_dq (ddr3_dq_fpga),
- .ddr3_dqs_n (ddr3_dqs_n_fpga),
- .ddr3_dqs_p (ddr3_dqs_p_fpga),
- .init_calib_complete (init_calib_complete),
- .ddr3_cs_n (ddr3_cs_n_fpga),
- .ddr3_dm (ddr3_dm_fpga),
- .ddr3_odt (ddr3_odt_fpga),
//Portas de interface do aplicativo
- .app_addr (c0_ddr3_app_addr),
- .app_cmd (c0_ddr3_app_cmd),
- .app_en (c0_ddr3_app_en),
- .app_wdf_data (c0_ddr3_app_wdf_data),
- .app_wdf_end (c0_ddr3_app_wdf_end),
- .app_wdf_wren (c0_ddr3_app_wdf_wren),
- .app_rd_data (c0_ddr3_app_rd_data),
- .app_rd_data_end (app_rd_data_end),
- .app_rd_data_valid (c0_ddr3_app_rd_data_valid),
- .app_rdy (c0_ddr3_app_rdy),
- .app_wdf_rdy (c0_ddr3_app_wdf_rdy),
- .app_sr_req (app_sr_req),
- .app_ref_req (app_ref_req),
- .app_zq_req (app_zq_req),
- .app_sr_active (app_sr_active),
- .app_ref_ack (app_ref_ack),
- .app_zq_ack (app_zq_ack),
- .ui_clk (ui_clk),
- .ui_clk_sync_rst (ui_clk_sync_rst),
- .app_wdf_mask (c0_ddr3_app_wdf_mask),
// Portas de relógio do sistema
- .sys_clk_i (sys_clk_i),
// Portas de relógio de referência
- .clk_ref_i (clk_ref_i),
- .sys_rst (sys_rst)
- );
Instanciação do gerador de tráfego de desempenho
mig7_perfsim_traffic_generator#
(
.APP_DATA_WIDTH (APP_DATA_WIDTH),
.COL_WIDTH (COL_WIDTH),
.ROW_WIDTH (ROW_WIDTH),
.RANK_WIDTH (RANK_WIDTH),
.BANK_WIDTH (BANK_WIDTH),
.MEM_ADDR_ORDER (MEM_ADDR_ORDER),
.tCK (tCK),
.ADDR_WIDTH (APP_ADDR_WIDTH)
)
u_traffic_gen
(
.clk (ui_clk),
.rst (ui_clk_sync_rst),
.init_calib_complete (init_calib_complete),
.cmp_error (c0_data_compare_error),
.app_wdf_rdy (c0_ddr3_app_wdf_rdy),
.app_rd_data_valid (c0_ddr3_app_rd_data_valid),
.app_rd_data (c0_ddr3_app_rd_data),
.app_rdy (c0_ddr3_app_rdy),
.app_cmd (c0_ddr3_app_cmd),
.app_addr (c0_ddr3_app_addr),
.app_en (c0_ddr3_app_en ),
.app_wdf_mask (c0_ddr3_app_wdf_mask),
.app_wdf_data (c0_ddr3_app_wdf_data),
.app_wdf_end (c0_ddr3_app_wdf_end),
.app_wdf_wren (c0_ddr3_app_wdf_wren)
);
- 5. Modifique APP_ADDR_WIDTH, APP_DATA_WIDTH, RANK_WIDTH e BANK_WIDTH de acordo com sua seleção de parte de memória.
Os valores podem ser obtidos no _mig.v file. - O nome de instanciação destacado em amarelo mig_7series_0_mig pode variar de acordo com o nome do seu componente durante a criação do IP, verifique se você escolheu um nome diferente e altere-o de acordo.
- Assim que o IP for gerado, abra o _mig.v file e verifique quaisquer variações nos nomes dos sinais LHS e corrija-as.
- app_sr_req, app_ref_req e app_zq_req devem ser inicializados como 0.
- como example_top.v está comentado e novo files forem adicionados, você provavelmente verá “?” ao lado do
mig_7series_0_mig.v file sob fontes de simulação.
Para mapear o correto file, clique com o botão direito em mig_7series_0_mig.v, selecione “Adicionar fontes”, navegue até
/mig_7series_0_example.srcs/sources_1/ip/mig_7series_0/mig_7series_0/user_design/rtl
e adicione o mig_7series_0_mig_sim.v file. - Se você ver "?" para o subjacente files, adicione todos os RTL files nas pastas clocking, controller, ip_top,phy e UI.
- Assim que as alterações RTL forem feitas e todos os requisitos necessários files são adicionados às suas fontes de simulação, a hierarquia deve ser semelhante à Figura 5.
O files destacados em vermelho foram adicionados recentemente e “?” é esperado em módulos relacionados a ECC, pois a configuração de memória selecionada tem a opção ECC desativada.
Estímulo File Descrição
Cada padrão de estímulo tem 48 bits e o formato é descrito nas Figuras 6-1 a 6-4.
Codificação de endereço (Endereço [35:0])
O endereço é codificado no estímulo conforme Figura 7-1 a Figura 7-6. Todos os campos de endereço precisam ser inseridos no formato hexadecimal. Todos os campos de endereço têm uma largura divisível por quatro para serem inseridos no formato hexadecimal. A bancada de testes envia apenas os bits necessários de um campo de endereço para o Controlador de Memória.
Por exemploampPor exemplo, em uma configuração de oito bancos, apenas os bits do banco [2:0] são enviados ao controlador de memória e os bits restantes são ignorados. Os bits extras para um campo de endereço são fornecidos para você inserir o endereço em formato hexadecimal.
Você deve confirmar se o valor inserido corresponde à largura de uma determinada configuração.
- Endereço da Coluna (Coluna[11:0]) – O endereço da coluna no estímulo é fornecido com no máximo 12 bits, mas você precisa resolver isso com base no parâmetro de largura da coluna definido em seu design.
- Endereço da linha (Linha[15:0]) – O endereço da linha no estímulo é fornecido com no máximo 16 bits, mas você precisa resolver isso com base no parâmetro de largura da linha definido em seu design.
- Endereço do Banco (Banco[3:0]) – O endereço do banco no estímulo é fornecido com no máximo quatro bits, mas você precisa resolver isso com base no parâmetro de largura do banco definido em seu design.
- Endereço de classificação (Classificação[3:0]) – O endereço de classificação no estímulo é fornecido com no máximo quatro bits, mas você precisa resolver isso com base no parâmetro de largura de classificação definido em seu design.
O endereço é montado com base no parâmetro MEM_ADDR_ORDER de nível superior e enviado para a interface do usuário
Repetição de Comando (Repetição de Comando [7:0])
A contagem de repetições de comando é o número de vezes que o respectivo comando é repetido na interface do usuário. O endereço para cada repetição é incrementado em 8. A contagem máxima de repetições é 128.
A bancada de testes não verifica o limite da coluna e verifica se o limite máximo da coluna é atingido durante os incrementos.
Os 128 comandos preenchem a página. Para qualquer endereço de coluna diferente de 0, a contagem de repetições de 128 acaba cruzando o limite da coluna e chegando ao início do endereço da coluna.
Utilização de ônibus
A utilização do barramento é calculada na interface do usuário levando em consideração o número total de leituras e gravações e a seguinte equação é usada:
- BL8 leva quatro ciclos de clock de memória
- end_of_stimulus é o momento em que todos os comandos são executados.
- calib_done é o momento em que a calibração é concluída.
Exampos Padrões
Esses exampOs arquivos são baseados no MEM_ADDR_ORDER definido como BANK_ROW_COLUMN.
Padrão de leitura única
00_0_2_000F_00A_1 – Este padrão é uma leitura única da 10ª coluna, 15ª linha e segundo banco.Padrão de gravação único
00_0_1_0040_010_0 – Este padrão é uma única gravação na 32ª coluna, 128ª linha e primeiro banco.Gravação única e leitura no mesmo endereço
00_0_2_000F_00A_0 – Esse padrão é uma única gravação na 10ª coluna, na 15ª linha e no segundo banco.
00_0_2_000F_00A_1 – Este padrão é uma única leitura da 10ª coluna, 15ª linha e segundo banco
Várias gravações e leituras com o mesmo endereço
0A_0_0_0010_000_0 – Isso corresponde a 10 gravações com endereços de 0 a 80 que podem ser vistos na coluna.
0A_0_0_0010_000_1 – Isso corresponde a 10 leituras com endereços de 0 a 80 que podem ser vistos na coluna.
Quebra de página durante gravações
0A_0_2_000F_3F8_0 – Isso corresponde a 10 gravações com o endereço da coluna agrupado no início da página após uma gravação.
Simulando o Gerador de Tráfego de Desempenho
Neste ponto você concluiu o MIG example simulação de projeto. Isso implica que sua configuração de simulação está pronta, você fez modificações de RTL na simulação de desempenho, a nova hierarquia de simulação está correta e você entendeu os padrões de estímulo. Execute a simulação mais uma vez com 16 gravações e leituras em perfsim_stimulus.txt.
Execute tudo, espere até que o sinal init_calib_complete seja afirmado e você poderá ver o número proposto de gravações e leituras. A simulação irá então parar.
Quando for solicitado a sair da simulação, selecione Não e vá para a janela de transcrição onde você poderá ver as estatísticas de desempenho.
Se você selecionar “sair da simulação” estatísticas de desempenho serão gravadas em um file nomeado mig_band_width_output.txt localizado em sim_1/behave pasta.
Exampcaminho do diretório: -
/mig_7series_0_example_perf_sim\mig_7series_0_example.sim/sim_1/behav
Você pode se perguntar por que a porcentagemtagA utilização do barramento é de apenas 29. Execute novamente a simulação com as mesmas configurações de IP, mas apenas alterando o estímulo file para 256 gravações e 256 leituras
ff_0_0_0000_000_0
ff_0_0_0000_000_1
Agora você verá a porcentagemtage como 85, o que implica que DDR3 oferece melhor utilização do barramento para longas sequências de gravações e rajadas de leitura.
Maneiras gerais de melhorar o desempenho
Os fatores que influenciam a eficiência podem ser divididos em duas seções:
- Específico de memória
- Específico do controlador
A Figura 9 fornece uma visão geralview dos termos que são específicos da memória.
Ao contrário das SRAMs e Block Memories, o desempenho DDR2 ou DDR3 não é apenas a taxa máxima de dados.
Depende de muitos fatores de tempo, incluindo:
- tRCD: Atraso de comando de linha (ou atraso de ras para cas).
- tCAS(CL): Latência do estroboscópio do endereço da coluna.
- tRP: Atraso na pré-carga da linha.
- tRAS: Tempo ativo da linha (ativar para pré-alterar).
- tRC: Tempo de ciclo da linha. tRC = tRAS + tRP
- TRAC: Atraso de acesso Radom. tRAC = tRCD + tCAS
- tCWL: Latência de gravação do Cas.
- tZQ: Tempo de calibração ZQ.
- tRFC: Tempo de ciclo de atualização de linha
- tWTR: Atraso de gravação para leitura. Última transação de gravação na hora do comando de leitura.
- tWR: Escreva o tempo de recuperação. Última transação de gravação no tempo de pré-carga
O tempo de todos os parâmetros listados depende do tipo de memória usada e do grau de velocidade da peça de memória.
Mais detalhes sobre as definições e especificações de tempo podem ser encontrados em DDR2 DDR3 JEDEC ou em qualquer folha de dados de dispositivo de memória.
A eficiência depende principalmente de como a memória é acessada. Diferentes padrões de endereço fornecem diferentes resultados de eficiência.
Sobrecargas de tempo de memória
- Tempo de ativação e tempo de pré-carga ao mudar para novos bancos/linhas ou alterar linhas no mesmo banco. - Portanto, se você reduzir a mudança de linha, isso pode remover tRCD e tRP.
- Enviar comandos contínuos de gravação ou leitura -Manutenção do tempo tCCD.
- Minimize a mudança de comando de gravação para leitura e de leitura para gravação – Tempo de recuperação de gravação para mudar para acessos de leitura, tempo de resposta do barramento para mudar de leitura para gravação
- Defina um intervalo de atualização adequado.
- SDRAM DDR3 requer ciclos de atualização em um intervalo periódico médio de tREFI.
- Um máximo de 8 comandos de atualização adicionais podem ser emitidos antecipadamente (“puxados”). Isso não reduz o número de atualizações, mas o intervalo máximo entre dois comandos de atualização adjacentes é limitado a 9 × tREFI
- Utilize todos os bancos – É preferível um mecanismo de endereçamento adequado.
- Coluna do banco de linhas: Para uma transação que ocorre em um espaço de endereço sequencial, o núcleo abre automaticamente a mesma linha no próximo banco do dispositivo DRAM para continuar a transação quando o final de uma linha existente for atingido. É adequado para aplicações que exigem a expansão de grandes pacotes de dados para locais de endereços sequenciais.
- Coluna de linha do banco: Ao cruzar o limite de uma linha, a linha atual será fechada e outra linha será aberta dentro do mesmo banco. MSB é um endereço bancário que pode ser usado para mudar de bancos diferentes. É adequado para transações mais curtas e aleatórias para um bloco de memória por um período de tempo e depois saltar para outro bloco (banco)
- Duração da rajada
- BL 8 é compatível com DDR3 na série 7. BC4 tem uma eficiência muito baixa, inferior a 50%. Isso ocorre porque o tempo de execução de BC4 é igual ao de BL8. Os dados são apenas mascarados dentro do componente.
- Nos casos em que você não deseja gravar em rajada completa, a máscara de dados ou a gravação após leitura podem ser consideradas.
- Defina um intervalo ZQ adequado (somente DDR3)
O controlador envia comandos de calibração ZQ Short (ZQCS) e ZQ Long (ZQCL).- Aderir ao padrão DDR3 Jedec
- A calibração ZQ é discutida na seção 5.5 do padrão JEDEC Spec JESD79-3 DDR3 SDRAM
- A Calibração ZQ calibra On Die Termination (ODT) em intervalos regulares para levar em conta variações no VT
- A lógica está contida em bank_common.v/vhd
- O parâmetro Tzqcs determina a taxa na qual um comando de calibração ZQ é enviado para a memória
- É possível desabilitar o contador e enviar manualmente usando app_zq_req, é semelhante ao envio manual de uma atualização.
Consulte (Resposta Xilinx 47924) para obter detalhes.
Despesas gerais do controlador
- Leituras Periódicas – Consulte (Xilinx Resposta 43344) para mais detalhes.
- Não altere o período da leitura
- Ignore leituras periódicas durante gravações e emita o número de leituras perdidas antes de uma leitura verdadeira
- Reordenando – Consulte (Xilinx Resposta 34392) para mais detalhes.
Para designs de interface de usuário e AXI, é preferível que esta opção esteja habilitada.- Reordenar é a lógica que antecipa vários comandos e altera a ordem dos comandos do usuário para fazer com que comandos que não sejam de memória não ocupem largura de banda válida. O desempenho também está relacionado ao padrão de tráfego real.
- Com base no padrão de endereço, a reordenação ajuda a ignorar os comandos de pré-carga e ativação e faz com que tRCD e tRP não ocupem largura de banda de dados.
- Tente aumentar o número de Máquinas Bancárias.
- A maior parte da lógica do controlador reside nas máquinas bancárias e elas correspondem aos bancos DRAM
- Uma determinada máquina bancária gerencia um único banco DRAM a qualquer momento.
- A atribuição de máquinas bancárias é dinâmica, portanto não é necessário ter uma máquina bancária para cada banco físico.
- As máquinas bancárias podem ser configuradas, mas é uma troca entre área e desempenho.
- O número permitido de máquinas bancárias varia de 2 a 8.
- Por padrão, 4 Máquinas Bancárias são configuradas através de parâmetros RTL.
- Para alterar Máquinas de Banco, considere o parâmetro nBANK_MACHS = 8 contido em memc_ui_top Examparquivo para 8 Máquinas Bancárias – nBANK_MACHS = 8
Agora você está ciente dos fatores que influenciam o desempenho.
Considere um aplicativo upstream que fornece 512 bytes de dados por pacote e você precisa salvá-los em diferentes locais de memória. Como 512 bytes de dados são iguais a 64 rajadas de dados DDR3, execute novamente o example design com um estímulo file contendo 512 gravações, 512 leituras e troca de linha para cada 64 gravações ou leituras:
- 3f_0_0_0000_000_0
- 3f_0_0_0001_000_0
- 3f_0_0_0002_000_0
- 3f_0_0_0003_000_0
- 3f_0_0_0004_000_0
- 3f_0_0_0005_000_0
- 3f_0_0_0006_000_0
- 3f_0_0_0007_000_0
- 3f_0_0_0000_000_1
- 3f_0_0_0001_000_1
- 3f_0_0_0002_000_1
- 3f_0_0_0003_000_1
- 3f_0_0_0004_000_1
- 3f_0_0_0005_000_1
- 3f_0_0_0006_000_1
- 3f_0_0_0007_000_1
No final da simulação você verá que a utilização do ônibus está em 77%.
Figura 11: Estatísticas de desempenho para 512 gravações e 512 leituras – Troca de linha para 64 gravações ou leituras.
Agora você pode aplicar o conhecimento aprendido na seção anterior para melhorar a eficiência. Com um view para utilizar todos os bancos em vez de alterar a linha, modifique o padrão de endereço para alterar o banco conforme mostrado abaixo.
Isso é equivalente a definir ROW_BANK_Column na configuração de mapeamento de endereço de memória na GUI do MIG.
- 3f_0_0_0000_000_0
- 3f_0_1_0000_000_0
- 3f_0_2_0000_000_0
- 3f_0_3_0000_000_0
- 3f_0_4_0000_000_0
- 3f_0_5_0000_000_0
- 3f_0_6_0000_000_0
- 3f_0_7_0000_000_0
- 3f_0_0_0000_000_1
- 3f_0_1_0000_000_1
- 3f_0_2_0000_000_1
- 3f_0_3_0000_000_1
- 3f_0_4_0000_000_1
- 3f_0_5_0000_000_1
- 3f_0_6_0000_000_1
- 3f_0_7_0000_000_1
No final da simulação você verá que os 77 por cento anteriores de utilização do ônibus agora são 87!
Se você ainda precisar de maior eficiência, poderá optar por pacotes grandes de 1024 ou 2048 bytes ou considerar uma atualização manual.
Observação: A Xilinx não incentiva o desvio da atualização do controlador, pois não temos certeza se você conseguirá cumprir o tempo de atualização automática do Jedec, o que afeta a confiabilidade dos dados.
Do lado do controlador você pode alterar nBANk_MACH e ver a melhoria no desempenho.
No entanto, isso pode afetar o tempo do projeto, consulte (Xilinx Resposta 36505) para obter detalhes sobre nBANk_MACH
Abra core_name_mig_sim.v file e altere os parâmetros nBANK_MACHS de 4 para 8 e execute novamente a simulação. Para que o valor do parâmetro tenha efeito no hardware, você precisa atualizar o core_name_mig.v file.
Usei o mesmo padrão onde obtivemos 87% de utilização do barramento (figura -12).
Com nBANK_MACHS definido como 8, a eficiência agora é de 90%.
Observe também que ½ e ¼ controladores afetam negativamente a eficiência devido às suas latências.
Por exemploampContudo, como só podemos enviar comandos a cada 4 ciclos de CK, às vezes há preenchimento extra ao aderir às especificações mínimas de tempo de DRAM, o que pode diminuir a eficiência do teórico.
Experimente diferentes controladores para encontrar aquele que se adapta às suas necessidades de eficiência.
Referências
- Zynq-7000 AP SoC e FPGAs Série 7 MIS v2.3 [UG586]
- Centro de soluções Xilinx MIG http://www.xilinx.com/support/answers/34243.html
Histórico de revisão
13/03/2015 – Lançamento inicial
Baixar PDF: Xilinx DDR2 MIG 7 Guia de estimativa de desempenho