Xilinx DDR2 MIG 7 Prestandauppskattningsguide
Viktig anmärkning: Denna nedladdningsbara PDF av en svarspost tillhandahålls för att förbättra dess användbarhet och läsbarhet. Det är viktigt att notera att Answer Records är det Web-baserat innehåll som uppdateras ofta när ny information blir tillgänglig. Du påminns om att besöka Xilinx tekniska support Webwebbplats och review (Xilinx Answer 63234) för den senaste versionen av detta svar.
Introduktion
På grund av hur DDR2- och DDR3-minnen är uppbyggda och MIG 7-seriens kontroller är designad, är prestanda inte direkt.
Det kräver förståelse för olika Jedec Timing-parametrar och styrenhetsarkitektur, och du måste köra simuleringar för att få uppskattningarna.
Den allmänna principen för att bestämma prestanda är densamma men detta dokument ger ett enkelt sätt att uppnå effektivitet med hjälp av MIG example design med hjälp av testbänk och stimulans filebifogas här.
Effektiv bandbredd
DRAM-databussen uppnår nästan toppbandbredd endast under läs- och skrivskurar och dess overhead sänker den effektiva datahastigheten.
Några exampöverkostnader är:
- förladdningstid åtkomst till rader i samma bank (åtkomstadress inte i samma rad-sida-träff)
- skrivåterställningstid för att ändra från skriv- till läsbehörighet
- bussens handläggningstid för att ändra från läs- till skrivåtkomst
Effektiv bandbredd = toppbandbredd * Effektivitet
MIG Design Generation
Se UG586 kapitel 1 för steg-för-steg detaljer om MIG IP och exampdesigngenerationen.
Innan du kör MIG 7-seriens prestandasimulering, gör följande för att se till att din simuleringsmiljö är bra. Öppna MIG exampUtforma och kartlägg lämpliga bibliotek, kör simuleringen och se till att du kan se meddelandet "test godkänt" i utskriften.
För att demonstrera flödet har jag genererat en MIG IP för xc7vx690tffg1761-2 och åberopat exampdesignen.
Två saker som bör noteras är minnesadressbitar och minnesadressmapping.
Till exempelample, jag har valt MT41J128M8XX-125 under rullgardinsmenyn för minnesdel.
För den valda minnesdelen från figur-1, rad = 14, kolumn = 10 och bank = 3, så app_addr_width = rad + kolumn + bank + rang = 28
Du kan välja antingen BANK_ROW_COLUMN eller ROW BANK Column.
Jag har lämnat ROW BANK Column som är standardadressmapping.
Example design Simulering med syntetiserbar testbänk
Under Simuleringsinställningar, välj QuestaSim/ModelSim Simulator och bläddra till de kompilerade bibliotekens plats.
För detaljer om hur du pekar på en installationssökväg för tredjepartsverktyg, val av målsimulator och kompilering och kartläggning av bibliotek, kan du se (UG900) Vivado Design Suite User Guide Logic Simulation
Kör simuleringen genom det grafiska användargränssnittet (klicka på fliken Kör simulering i projekthanteraren) och se till att du ser meddelandet "test godkänt" i utskriften.
Performance Simulation RTL-modifieringar
- Högerklicka på fliken källor, välj "lägg till eller skapa simuleringskällor" och bläddra till mig7_perfsim_traffic_generator.sv file och klicka på Slutför för att lägga till det.
- Högerklicka på fliken källor, välj "lägg till eller skapa simuleringskällor", bläddra till perfsim_stimulus.txt och klicka på Slutför för att lägga till den.
- Kommentera exetample_top-instansiering i sim_tb_top.v file.
- Lägg till nedanstående RTL-rader till 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”;
- localparam BANK_WIDTH = 3;
- localparam RANK_WIDTH = 1;
- koppla [APP_ADDR_WIDTH-1:0] c0_ddr3_app_addr;
- tråd [2:0] c0_ddr3_app_cmd;
- tråd c0_ddr3_app_en;
- koppla [APP_DATA_WIDTH-1:0] c0_ddr3_app_wdf_data;
- tråd c0_ddr3_app_wdf_end;
- tråd [APP_MASK_WIDTH-1:0] c0_ddr3_app_wdf_mask;
- tråd c0_ddr3_app_wdf_wren;
- koppla [APP_DATA_WIDTH-1:0] c0_ddr3_app_rd_data;
- tråd c0_ddr3_app_rd_data_end;
- tråd c0_ddr3_app_rd_data_valid;
- tråd c0_ddr3_app_rdy;
- tråd c0_ddr3_app_wdf_rdy;
- tråd c0_data_compare_error;
- tråd ui_clk;
- tråd ui_clk_sync_rst;
- tråd app_sr_req = 0;
- tråd app_ref_req = 0;
- tråd app_zq_req =0;
- tråd c0_app_wdf_mask =0;
Instantiering av FPGA-minneskontroller
mig_7series_0_mig u_mig_7series_0_mig (
// Minnesgränssnittsportar
- .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),
// Applikationsgränssnittsportar
- .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),
// Systemklockportar
- .sys_clk_i (sys_clk_i),
// Referens klockportar
- .clk_ref_i (clk_ref_i),
- .sys_rst (sys_rst)
- );
Prestanda trafikgenerator instansiering
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_trafik_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. Ändra APP_ADDR_WIDTH, APP_DATA_WIDTH, RANK_WIDTH och BANK_WIDTH enligt ditt val av minnesdel.
Värden kan erhållas från _mig.v file. - Det gulmarkerade instansieringsnamnet mig_7series_0_mig kan variera beroende på ditt komponentnamn under skapande av IP, verifiera om du har valt ett annat namn och ändra det därefter.
- När IP:n har genererats öppnar du _mig.v file och korskontrollera för eventuella variationer i LHS-signalnamn och korrigera dem.
- app_sr_req, app_ref_req och app_zq_req bör initieras till 0.
- Som example_top.v är kommenterad och ny fileläggs till kommer du förmodligen att se "?" Förutom
mig_7series_0_mig.v file under simuleringskällor.
Att kartlägga rätt file, högerklicka på mig_7series_0_mig.v, välj "Lägg till källor", Bläddra till
/mig_7series_0_example.srcs/sources_1/ip/mig_7series_0/mig_7series_0/user_design/rtl
och lägg till mig_7series_0_mig_sim.v file. - Om du ser "?" för det underliggande files, lägg till alla RTL files i mapparna för klockning, kontroller, ip_top, phy och UI.
- När RTL-ändringarna är gjorda och alla nödvändiga files läggs till i dina simuleringskällor, bör hierarkin likna figur 5.
De files markerade i rött är nyligen tillagda och "?" förväntas på ECC-relaterade moduler eftersom den valda minneskonfigurationen har ECC-alternativet inaktiverat.
Stimulans File Beskrivning
Varje stimulansmönster är 48 bitar och formatet beskrivs i figurerna 6-1 till 6-4.
Adresskodning (adress [35:0])
Adressen är kodad i stimulansen enligt figur 7-1 till figur 7-6. Alla adressfält måste anges i hexadecimalt format. Alla adressfält har en bredd som är delbar med fyra för att ange i hexadecimalt format. Testbänken skickar bara de nödvändiga bitarna av ett adressfält till minneskontrollern.
Till exempelample, i en konfiguration med åtta banker, skickas endast bankbitar [2:0] till minnesstyrenheten och de återstående bitarna ignoreras. De extra bitarna för ett adressfält tillhandahålls för att du ska kunna ange adressen i ett hexadecimalt format.
Du måste bekräfta att det angivna värdet motsvarar bredden på en given konfiguration.
- Kolumnadress (kolumn[11:0]) – Kolumnadress i stimulansen tillhandahålls till maximalt 12 bitar, men du måste adressera detta baserat på kolumnbreddsparametern som är inställd i din design.
- Radadress (rad[15:0]) – Radadress i stimulansen tillhandahålls till maximalt 16 bitar, men du måste adressera detta baserat på radbreddsparametern som är inställd i din design.
- Bankadress (Bank[3:0]) – Bankadress i stimulansen tillhandahålls till maximalt fyra bitar, men du måste adressera detta baserat på bankbreddsparametern som är inställd i din design.
- Rank adress (Rank[3:0]) – Rankadress i stimulansen tillhandahålls till maximalt fyra bitar, men du måste adressera detta baserat på rank width-parametern som är inställd i din design.
Adressen sammanställs baserat på MEM_ADDR_ORDER-parametern på toppnivån och skickas till användargränssnittet
Kommando Upprepa (Kommando Upprepa [7:0])
Antalet kommandoupprepningar är antalet gånger som respektive kommando upprepas i användargränssnittet. Adressen för varje repetition ökas med 8. Det maximala antalet repetitioner är 128.
Testbänken kontrollerar inte pelarens gräns och den sveper sig runt om den maximala pelargränsen nås under stegen.
De 128 kommandona fyller upp sidan. För någon annan kolumnadress än 0, slutar upprepningsantalet på 128 att korsa kolumngränsen och svepa runt till början av kolumnadressen.
Bussutnyttjande
Bussutnyttjandet beräknas i användargränssnittet med hänsyn till det totala antalet läsningar och skrivningar och följande ekvation används:
- BL8 tar fyra minnesklockcykler
- end_of_stimulus är den tid då alla kommandon är gjorda.
- calib_done är den tidpunkt då kalibreringen är klar.
Example Mönster
Dessa exampfiler är baserade på MEM_ADDR_ORDER inställd på BANK_ROW_COLUMN.
Enkelt läsmönster
00_0_2_000F_00A_1 – Detta mönster är en enkel läsning från 10:e kolumnen, 15:e raden och andra banken.Enkelt skrivmönster
00_0_1_0040_010_0 – Det här mönstret är en enkel skrivning till den 32:a kolumnen, 128:e raden och första banken.Singel skriv och läs till samma adress
00_0_2_000F_00A_0 – Det här mönstret är en enkel skrivning till 10:e kolumnen, 15:e raden och andra bank.
00_0_2_000F_00A_1 – Detta mönster är en enkel läsning från 10:e kolumnen, 15:e raden och andra banken
Flera skriver och läser med samma adress
0A_0_0_0010_000_0 – Detta motsvarar 10 skrivningar med adress från 0 till 80 vilket kan ses i kolumnen.
0A_0_0_0010_000_1 – Detta motsvarar 10 läsningar med adress från 0 till 80 vilket kan ses i kolumnen.
Sidomslutning under skrivningar
0A_0_2_000F_3F8_0 – Detta motsvarar 10 skrivningar med kolumnadress lindad till början av sidan efter en skrivning.
Simulering av Performance Traffic Generator
Vid det här laget är du klar med MIG example designsimulering. Detta innebär att din simuleringsuppsättning är klar, du har gjort prestandasimulerings-RTL-modifieringar, den nya simuleringshierarkin är korrekt och du har förstått stimulansmönstren. Kör simuleringen igen med 16 skrivningar och läsningar i perfsim_stimulus.txt.
Kör allt, vänta tills init_calib_complete-signalen bekräftas, och du kommer att kunna se det föreslagna antalet skrivningar och läsningar. Simuleringen kommer då att stoppas.
När du uppmanas att avsluta simuleringen, välj Nej och gå till transkriptionsfönstret där du kommer att kunna se prestationsstatistiken.
Om du väljer "avsluta simulering" prestationsstatistik kommer att skrivas till en file namnges mig_band_width_output.txt som finns i sim_1/behave mapp.
Exampkatalogsökvägen:-
/mig_7series_0_example_perf_sim\mig_7series_0_example.sim/sim_1/behav
Du kanske undrar varför procententage bussanvändning är endast 29. Kör simuleringen igen med samma IP-inställningar men bara ändra stimulansen file till 256 skrivningar och 256 läsningar
ff_0_0_0000_000_0
ff_0_0_0000_000_1
Du kommer nu att se procententage som 85, vilket innebär att DDR3 erbjuder bättre bussanvändning för långa sekvenser av skriv- och lässkurar.
Allmänna sätt att förbättra prestanda
Faktorerna som påverkar effektiviteten kan delas in i två delar:
- Minnesspecifik
- Controllerspecifik
Bild 9 ger dig en överview av termerna som är minnesspecifika.
Till skillnad från SRAM och blockminnen är DDR2 eller DDR3 prestanda inte bara den maximala datahastigheten.
Det beror på många tidsfaktorer, inklusive:
- tRCD: Radkommandofördröjning (eller ras till cas fördröjning).
- tCAS(CL): Kolumnadress stroboskop latens.
- tRP: Radförladdningsfördröjning.
- tRAS: Rad aktiv tid (aktivera för att ändra).
- tRC: Radcykeltid. tRC = tRAS + tRP
- tRAC: Radom-åtkomstfördröjning. tRAC = tRCD + tCAS
- tCWL: Cas skrivfördröjning.
- tZQ: ZQ kalibreringstid.
- tRFC: Cykeltid för raduppdatering
- tWTR: Skriv till Läsfördröjning. Senaste skrivtransaktionen till Läs kommandotid.
- tWR: Skriv Återhämtningstid. Sista skrivtransaktion till Förladdningstid
Tidpunkten för alla listade parametrar beror på typen av minne som används och minnesdelens hastighetsgrad.
Mer information om definitionerna och tidsspecifikationerna finns i DDR2 DDR3 JEDEC eller i valfri minnesenhetsdatablad.
Effektiviteten beror främst på hur minnet nås. Olika adressmönster ger olika effektivitetsresultat.
Omkostnader för minnestid
- Aktiveringstid och Förladdningstid vid byte till nya banker/rader eller byte av rader med i samma bank.- Så om du minskar radbyte kan detta ta bort tRCD och tRP.
- Skicka kontinuerliga skriv- eller läskommandon - Upprätthålla tCCD-timing.
- Minimera skriv för att läsa och läs för att skriva kommandoväxling - Skrivåterställningstid för att ändra till läsåtkomster, bussens omloppstid för att ändra från läs till skriv
- Ställ in ett lämpligt uppdateringsintervall.
- DDR3 SDRAM kräver uppdateringscykler med ett genomsnittligt periodiskt intervall på tREFI.
- Maximalt 8 ytterligare Refresh-kommandon kan utfärdas i förväg ("indragen"). Detta minskar inte antalet uppdateringar, men det maximala intervallet mellan två omgivande Refresh-kommandon är begränsat till 9 × tREFI
- Använd alla banker – En lämplig adresseringsmekanism är att föredra.
- Rad-bank-kolumn: För en transaktion som sker över ett sekventiellt adressutrymme, öppnar kärnan automatiskt samma rad i nästa bank i DRAM-enheten för att fortsätta transaktionen när slutet av en befintlig rad nås. Den är väl lämpad för applikationer som kräver sprängning av stora datapaket till sekventiella adressplatser.
- Bank-rad-kolumn: När du korsar en radgräns kommer den aktuella raden att stängas och en annan rad öppnas inom samma bank. MSB är en bankadress som kan användas för att byta från olika banker. Den är lämplig för kortare, mer slumpmässiga transaktioner till ett minnesblock under en tid och sedan ett hopp till ett annat block (bank)
- Spränglängd
- BL 8 stöds för DDR3 på 7-serien. BC4 har en mycket låg verkningsgrad som är mindre än 50 %. Detta beror på att exekveringstiden för BC4 är densamma som BL8. Datan är bara maskerad inuti komponenten.
- I de fall du inte vill skriva full burst kan antingen datamask eller skriv-efter-läsning övervägas.
- Ställ in ett korrekt ZQ-intervall (endast DDR3)
Styrenheten skickar både ZQ Short (ZQCS) och ZQ Long (ZQCL) kalibreringskommandon.- Följ DDR3 Jedec-standarden
- ZQ-kalibrering diskuteras i avsnitt 5.5 i JEDEC Spec JESD79-3 DDR3 SDRAM Standard
- ZQ Calibration kalibrerar On Die Termination (ODT) med regelbundna intervall för att ta hänsyn till variationer över VT
- Logik finns i bank_common.v/vhd
- Parametern Tzqcs bestämmer hastigheten med vilken ett ZQ-kalibreringskommando skickas till minnet
- Det är möjligt att inaktivera räknaren och skicka manuellt med app_zq_req, det liknar att manuellt skicka en uppdatering.
Se (Xilinx Answer 47924) för detaljer.
Controller Overheads
- Periodiska avläsningar – Se (Xilinx svar 43344) för detaljer.
- Ändra inte läsperioden
- Hoppa över periodiska läsningar under skrivningar och utfärda antalet missade läsningar innan en sann läsning
- Omordning – Se (Xilinx svar 34392) för detaljer.
För användar- och AXI-gränssnittsdesigner är det att föredra att ha detta aktiverat.- Omordning är logiken som blickar framåt för flera kommandon och ändrar användarkommandoordningen för att göra icke-minneskommandon inte uppta giltig bandbredd. Prestandan var också relaterad till det faktiska trafikmönstret.
- Baserat på adressmönstret hjälper omordning att hoppa över förladdning och aktivera kommandon och gör att tRCD och tRP inte upptar databandbredden.
- Försök att öka antalet bankautomater.
- Det mesta av styrenhetens logik finns i bankmaskinerna och de motsvarar DRAM-banker
- En given bankmaskin hanterar en enda DRAM-bank vid varje given tidpunkt.
- Bankautomattilldelning är dynamisk så det är inte nödvändigt att ha en bankautomat för varje fysisk bank.
- Bankautomater kan konfigureras, men det är en avvägning mellan område och prestanda.
- Det tillåtna antalet bankautomater sträcker sig från 2-8.
- Som standard är 4 bankautomater konfigurerade via RTL-parametrar.
- För att ändra bankautomater, överväg parametern nBANK_MACHS = 8 som finns i memc_ui_top Example för 8 bankautomater – nBANK_MACHS = 8
Du är nu medveten om de faktorer som påverkar prestation.
Överväg en uppströmsapplikation som ger dig 512 databyte per paket och du måste spara dem på olika minnesplatser. Eftersom 512 databyte är lika med 64 DDR3-dataskurar, kör du example design med en stimulans file som innehåller 512 skrivningar, 512 läsningar och radbyte för varje 64 skrivning eller läsning:
- 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
I slutet av simuleringen ser du att bussutnyttjandet ligger på 77 procent.
Figur 11: Prestandastatistik för 512 skrivningar och 512 läsningar – Radbyte för 64 skrivningar eller läsningar.
Du kan nu tillämpa kunskapen från tidigare avsnitt för att förbättra effektiviteten. Med en view för att använda alla banker istället för att ändra raden, ändra adressmönstret för att byta bank som visas nedan.
Detta motsvarar att ställa in ROW_BANK_Column i inställningen för minnesadressmappning i MIG GUI.
- 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
I slutet av simuleringen kommer du att se att den tidigare bussutnyttjandet på 77 procent nu är 87!
Om du fortfarande behöver högre effektivitet kan du välja stora paketstorlekar på 1024 eller 2048 byte, eller överväga en manuell uppdatering.
Notera: Xilinx uppmuntrar inte att kringgå uppdatering av kontroller eftersom vi är osäkra på om du kommer att kunna möta Jedecs automatiska uppdateringstid som påverkar datatillförlitligheten.
Från styrenhetens sida kan du ändra nBANk_MACH och se förbättringen i prestanda.
Detta kan dock påverka din designtiming, se (Xilinx svar 36505) för detaljer om nBANk_MACH
Öppna core_name_mig_sim.v file och ändra parametrarna nBANK_MACHS från 4 till 8 och kör simuleringen igen. För att parametervärdet ska träda i kraft i hårdvaran måste du uppdatera core_name_mig.v file.
Jag använde samma mönster där vi fick 87% bussutnyttjande (figur -12).
Med nBANK_MACHS inställd på 8 är effektiviteten nu 90 %.
Notera också att ½ och ¼ kontroller påverkar effektiviteten negativt på grund av deras latenser.
Till exempelample, eftersom vi bara kan skicka kommandon var 4:e CK-cykel finns det ibland extra utfyllnad när man följer minimispecifikationerna för DRAM-timing, vilket kan minska effektiviteten från det teoretiska.
Prova olika kontroller för att hitta den som passar dina effektivitetskrav.
Referenser
- Zynq-7000 AP SoC och FPGA i 7-serien MIS v2.3 [UG586]
- Xilinx MIG Solution Center http://www.xilinx.com/support/answers/34243.html
Revisionshistorik
13/03/2015 – Första release
Ladda ner PDF: Xilinx DDR2 MIG 7 Prestandauppskattningsguide