Xilinx DDR2 MIG 7 פאָרשטעלונג אָפּשאַצונג גייד
וויכטיק באַמערקונג: דעם דאָוונלאָאַדאַבלע פּדף פון אַן ענטפֿער רעקאָרד איז צוגעשטעלט צו פאַרבעסערן זייַן וסאַביליטי און רידאַביליטי. עס איז וויכטיק צו טאָן אַז אַנסווער רעקאָרדס זענען Web-באזירט אינהאַלט וואָס זענען אָפט דערהייַנטיקט ווי נייַע אינפֿאָרמאַציע איז בארעכטיגט. איר זענט רימיינדיד צו באַזוכן די Xilinx טעכנישע סופּפּאָרט Webפּלאַץ און שייַעךview (Xilinx Answer 63234) פֿאַר די לעצטע ווערסיע פון דעם ענטפער.
הקדמה
ווייַל פון די וועג DDR2 און DDR3 מעמעריז זענען אַרקאַטעקטיד און די MIG 7 סעריע קאַנטראָולער איז דיזיינד, פאָרשטעלונג איז נישט גלייך פאָרויס.
עס ריקווייערז אַ פארשטאנד פון פאַרשידן Jedec טיימינג פּאַראַמעטערס און קאָנטראָללער אַרטשיטעקטורע, און איר וועט דאַרפֿן צו לויפן סימיאַליישאַנז צו באַקומען די עסטאַמאַץ.
דער גענעראַל פּרינציפּ פֿאַר דיטערמאַנינג פאָרשטעלונג איז דער זעלביקער אָבער דעם דאָקומענט גיט אַן גרינג וועג צו באַקומען עפעקטיווקייַט מיט די MIG עקסampדי פּלאַן מיט די הילף פון פּרובירן באַנק און סטימול fileס אַטאַטשט דאָ.
עפעקטיוו באַנדווידט
די DRAM דאַטן ויטאָבוס אַטשיווז כּמעט-שפּיץ באַנדווידט בלויז בעשאַס בערסץ פון לייענען און שרייַבן און זיין אָוווערכעד לאָווערס די עפעקטיוו דאַטן קורס.
עטלעכע עקסampדי הויפּט פֿעיִקייטן זענען:
- פּריטשאַרדזש צייט אַקסעסינג ראָוז אין דער זעלביקער באַנק (אַקסעס אַדרעס איז נישט אין דער זעלביקער רודערן בלאַט שלאָגן)
- שרייַבן אָפּזוך צייט צו טוישן פון שרייַבן צו לייענען אַקסעס
- די ויטאָבוס טערנעראַונד צייט צו טוישן פון לייענען צו שרייַבן אַקסעס
עפעקטיוו באַנדווידט = שפּיץ באַנדווידטה * עפעקטיווקייַט
MIG Design Generation
אָפּשיקן צו UG586 טשאַפּטער 1 פֿאַר שריט-פֿאַר-שריט דעטאַילס וועגן MIG IP און עקסampדער דור פון פּלאַן.
איידער איר לויפן MIG 7 סעריע פאָרשטעלונג סימיאַליישאַן, טאָן די פאלגענדע צו מאַכן זיכער אַז דיין סימיאַליישאַן סוויווע איז גוט. עפֿענען די MIG עקסampאיר פּלאַן און מאַפּע די צונעמען לייברעריז, לויפן די סימיאַליישאַן און ענשור אַז איר קענען זען די אָנזאָג "פּרובירן דורכגעגאנגען" אין די טראַנסקריפּט.
צו באַווייַזן דעם לויפן, איך האָבן דזשענערייטאַד אַ MIG IP פֿאַר xc7vx690tffg1761-2 און ינוואָוקט די עקסample design.
צוויי זאכן וואָס זאָל זיין אנגעוויזן זענען זיקאָרן אַדרעס ביטן און זיקאָרן אַדרעס מאַפּינג סעלעקציע.
פֿאַר עקסampאָבער, איך האָבן אויסגעקליבן MT41J128M8XX-125 אונטער די זיקאָרן טייל פאַלן אַראָפּ אָפּציעס.
פֿאַר די אויסגעקליבן זיקאָרן טייל פון פיגורע-1, רודערן = 14, זייַל = 10 און באַנק = 3, אַזוי app_addr_width = רודערן + זייַל + באַנק + ריי = 28
איר קענען אויסקלייַבן BANK_ROW_COLUMN אָדער ROW BANK זייַל.
איך האָבן לינקס ROW BANK זייַל וואָס איז די פעליקייַט אַדרעס מאַפּינג.
Exampדי פּלאַן סימיאַליישאַן מיט סינטאַסייזאַבאַל פּרובירן באַנק
אונטער סימיאַליישאַן סעטטינגס, אויסקלייַבן QuestaSim / ModelSim סימיאַלייטער און בלעטער צו די קאָמפּילעד לייברעריז אָרט.
פֿאַר דעטאַילס וועגן אָנווייַזן צו אַ דריט-פּאַרטיי מכשירים ינסטאַלל דרך, סאַלעקטינג די ציל סימיאַלייטער און קאַמפּיילינג און מאַפּינג לייברעריז, איר קענען אָפּשיקן צו (UG900) Vivado Design Suite User Guide Logic Simulation
לויפן די סימיאַליישאַן דורך די GUI (דריקט די Run Simulation טאַב אין פּרויעקט פאַרוואַלטער) און מאַכן זיכער אַז איר זען די "פּרובירן דורכגעגאנגען" אָנזאָג אין די טראַנסקריפּט.
פאָרשטעלונג סימיאַליישאַן RTL מאָדיפיקאַטיאָנס
- רעכט גיט אויף די קוואלן קוויטל, סעלעקטירן "לייג אָדער שאַפֿן סימיאַליישאַן קוואלן", און בלעטער צו די mig7_perfsim_traffic_generator.sv file און גיט ענדיקן צו לייגן עס.
- רעכט גיט די קוואלן קוויטל, סעלעקטירן "לייג אָדער שאַפֿן סימיאַליישאַן קוואלן", בלעטער צו perfsim_stimulus.txt און גיט ענדיקן צו לייגן עס.
- באַמערקונג די עקסample_top ינסטאַנטיישאַן אין די sim_tb_top.v file.
- לייג די אונטן RTL שורות צו 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";
- לאָקאַלפּאַראַם BANK_WIDTH = 3;
- לאָקאַלפּאַראַם RANK_WIDTH = 1;
- דראָט [APP_ADDR_WIDTH-1:0] c0_ddr3_app_addr;
- דראָט [2:0] c0_ddr3_app_cmd;
- דראָט c0_ddr3_app_en;
- דראָט [APP_DATA_WIDTH-1:0] c0_ddr3_app_wdf_data;
- דראָט c0_ddr3_app_wdf_end;
- דראָט [APP_MASK_WIDTH-1:0] c0_ddr3_app_wdf_mask;
- דראָט c0_ddr3_app_wdf_wren;
- דראָט [APP_DATA_WIDTH-1:0] c0_ddr3_app_rd_data;
- דראָט c0_ddr3_app_rd_data_end;
- דראָט c0_ddr3_app_rd_data_valid;
- דראָט c0_ddr3_app_rdy;
- דראָט c0_ddr3_app_wdf_rdy;
- דראָט c0_data_compare_error;
- דראָט ui_clk;
- דראָט ui_clk_sync_rst;
- דראָט אַפּ_סר_רעק = 0;
- דראָט אַפּ_רעף_רעק = 0;
- דראָט אַפּ_זק_רעק =0;
- דראָט c0_app_wdf_mask =0;
ינסטאַנטיישאַן פון פפּגאַ זכּרון קאָנטראָללער
mig_7series_0_mig u_mig_7series_0_mig (
// זכּרון צובינד פּאָרץ
- .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),
// אַפּפּליקאַטיאָן צובינד פּאָרץ
- .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 (אַפּ_sr_req),
- .app_ref_req (אַפּ_ref_req),
- .app_zq_req (אַפּ_זק_רעק),
- .app_sr_active (app_sr_active),
- .app_ref_ack (app_ref_ack),
- .app_zq_ack (app_zq_ack),
- .וי_קלק (וי_קלק),
- .ui_clk_sync_rst (ui_clk_sync_rst),
- .app_wdf_mask (c0_ddr3_app_wdf_mask),
// סיסטעם זייגער פּאָרץ
- .sys_clk_i (sys_clk_i),
// רעפערענץ זייגער פּאָרץ
- .clk_ref_i (clk_ref_i),
- .sys_rst (sys_rst)
- );
פאָרשטעלונג פאַרקער גענעראַטאָר ינסטאַנטיישאַן
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),
.טקק (טקק),
.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. מאָדיפיצירן APP_ADDR_WIDTH, APP_DATA_WIDTH, RANK_WIDTH און BANK_WIDTH לויט דיין זיקאָרן טייל סעלעקציע.
וואַלועס קענען זיין באקומען פון די _mig.v file. - די געל כיילייטיד ינסטאַנטיאַטיאָן נאָמען mig_7series_0_mig קענען בייַטן באזירט אויף דיין קאָמפּאָנענט נאָמען בעשאַס IP שאַפונג, באַשטעטיקן אויב איר האָט אויסדערוויילט אַ אַנדערש נאָמען און טוישן עס אַקאָרדינגלי.
- אַמאָל די IP איז דזשענערייטאַד עפענען די _mig.v file און קרייַז-טשעק פֿאַר ווערייישאַנז אין LHS סיגנאַל נעמען און ריכטיק זיי.
- app_sr_req, app_ref_req און app_zq_req זאָל זיין יניטיאַלייזד צו 0.
- ווי עקסample_top.v איז קאַמענטאַד און נייַ fileאויב איר האָט צוגעגעבן, איר וועט מיסטאָמע זען "?" ביי די
mig_7series_0_mig.v file אונטער סימיאַליישאַן קוואלן.
צו מאַפּע די ריכטיק file, רעכט גיט mig_7series_0_mig.v, סעלעקטירן "לייג קוואלן", בלעטער צו
/mig_7series_0_example.srcs/sources_1/ip/mig_7series_0/mig_7series_0/user_design/rtl
און לייגן די mig_7series_0_mig_sim.v file. - אויב איר זען "?" פֿאַר די אַנדערלייינג files, לייגן אַלע RTL files אין די פאָלדערס פון קלאַקינג, קאָנטראָללער, ip_top, phy און וי.
- אַמאָל די RTL ענדערונגען זענען דורכגעקאָכט און אַלע די פארלאנגט files זענען מוסיף צו דיין סימיאַליישאַן קוואלן, כייעראַרקי זאָל זיין ענלעך צו פיגורע 5.
די fileס כיילייטיד אין רויט זענען ניי צוגעגעבן, און "?" איז געריכט אויף ECC פֿאַרבונדענע מאַדזשולז ווייַל די אויסגעקליבן זיקאָרן קאַנפיגיעריישאַן האט די ECC אָפּציע פאַרקריפּלט.
סטימול File באַשרייַבונג
יעדער סטימול מוסטער איז 48 ביץ און די פֿאָרמאַט איז דיסקרייבד אין Figures 6-1 דורך 6-4.
אַדרעס קאָדירונג (אַדרעס [35:0])
די אַדרעס איז קאָדעד אין די סטימול לויט פיגורע 7-1 צו פיגורע 7-6. אַלע אַדרעס פעלדער מוזן זיין אריין אין די העקסאַדעסימאַל פֿאָרמאַט. אַלע די אַדרעס פעלדער זענען אַ ברייט וואָס איז דיוויזאַבאַל דורך פיר צו אַרייַן אין די העקסאַדעסימאַל פֿאָרמאַט. די פּראָבע באַנק בלויז סענדז די פארלאנגט ביטן פון אַ אַדרעס פעלד צו די זכּרון קאָנטראָללער.
פֿאַר עקסample, אין אַן אַכט באַנק קאַנפיגיעריישאַן, בלויז באַנק ביץ [2:0] זענען געשיקט צו די זכּרון קאָנטראָללער און די רוען ביטן זענען איגנאָרירט. די עקסטרע ביטן פֿאַר אַ אַדרעס פעלד זענען צוגעשטעלט פֿאַר איר צו אַרייַן די אַדרעס אין אַ העקסאַדעסימאַל פֿאָרמאַט.
איר מוזן באַשטעטיקן די ווערט אריין קאָראַספּאַנדז צו די ברייט פון אַ געגעבן קאַנפיגיעריישאַן.
- זייַל אַדרעס (קאָלום [11:0]) - זייַל אַדרעס אין די סטימול איז צוגעשטעלט צו אַ מאַקסימום פון 12 ביטן, אָבער איר דאַרפֿן צו אַדרעס דעם באזירט אויף די זייַל ברייט פּאַראַמעטער שטעלן אין דיין פּלאַן.
- ריי אַדרעס (רודערן[15:0]) - רודערן אַדרעס אין די סטימול איז צוגעשטעלט צו אַ מאַקסימום פון 16 ביטן, אָבער איר דאַרפֿן צו אַדרעס דעם באזירט אויף די רודערן ברייט פּאַראַמעטער שטעלן אין דיין פּלאַן.
- באַנק אַדרעס (באַנק[3:0]) - באַנק אַדרעס אין די סטימול איז צוגעשטעלט צו אַ מאַקסימום פון פיר ביטן, אָבער איר דאַרפֿן צו אַדרעס דעם באזירט אויף די באַנק ברייט פּאַראַמעטער שטעלן אין דיין פּלאַן.
- ראַנג אַדרעס (ראַנג[3:0]) - ריי אַדרעס אין די סטימול איז צוגעשטעלט צו אַ מאַקסימום פון פיר ביטן, אָבער איר דאַרפֿן צו אַדרעס דעם באזירט אויף די ראַנג ברייט פּאַראַמעטער שטעלן אין דיין פּלאַן.
די אַדרעס איז פארזאמלט באזירט אויף די שפּיץ-מדרגה MEM_ADDR_ORDER פּאַראַמעטער און געשיקט צו די באַניצער צובינד
באַפֿעל איבערחזרן (באַפֿעל איבערחזרן [7:0])
די ציילן פון די באַפֿעל יבערכאַזערונג איז די נומער פון צייט וואָס די ריספּעקטיוו באַפֿעל איז ריפּיטיד אין די באַניצער צובינד. די אַדרעס פֿאַר יעדער יבערכאַזערונג איז ינקראַמאַנטיד מיט 8. די מאַקסימום רעפּעטיציע ציילן איז 128.
די פּראָבע באַנק טוט נישט קאָנטראָלירן פֿאַר די זייַל גרענעץ און עס ראַפּס אַרום אויב די מאַקסימום זייַל שיעור איז ריטשט בעשאַס די ינגקראַמאַנץ.
די 128 קאַמאַנדז פּלאָמבירן די בלאַט. פֿאַר קיין זייַל אַדרעס אנדערע ווי 0, די יבערכאַזערונג ציילן פון 128 ענדס אַריבער די זייַל גרענעץ און ראַפּינג אַרום צו די אָנהייב פון די זייַל אַדרעס.
ויטאָבוס יוטאַלאַזיישאַן
די ויטאָבוס יוטאַלאַזיישאַן איז קאַלקיאַלייטיד אין די באַניצער צובינד מיט אַ גאַנץ נומער פון לייענען און שרייבט אין באַטראַכטונג, און די פאלגענדע יקווייזשאַן איז געניצט:
- BL8 נעמט פיר זיקאָרן זייגער סייקאַלז
- end_of_stimulus איז די צייט ווען אַלע די קאַמאַנדז זענען דורכגעקאָכט.
- calib_done איז די צייט ווען די קאַלאַבריישאַן איז דורכגעקאָכט.
Exampדי פּאַטטערנס
די עקסampלייס זענען באזירט אויף די MEM_ADDR_ORDER שטעלן צו BANK_ROW_COLUMN.
איין לייענען מוסטער
00_0_2_000F_00A_1 - דעם מוסטער איז אַ איין לייענען פֿון 10 זייַל, 15 רודערן און רגע באַנק.איין שרייב מוסטער
00_0_1_0040_010_0 - דעם מוסטער איז אַ איין שרייַבן צו די 32 זייַל, 128 רודערן און ערשטער באַנק.איין שרייב און לייענען צו דער זעלביקער אַדרעס
00_0_2_000F_00A_0 – דעם מוסטער איז אַ איין שרייַבן צו 10 זייַל, 15 רודערן, און רגע באַנק.
00_0_2_000F_00A_1 – דעם מוסטער איז אַ איין לייענען פון 10 זייַל, 15 רודערן, און רגע באַנק
קייפל שרייבט און לייענען מיט דער זעלביקער אַדרעס
0A_0_0_0010_000_0 – דאָס קאָראַספּאַנדז צו 10 שרייבט מיט אַדרעס סטאַרטינג פון 0 צו 80 וואָס קענען זיין געזען אין די זייַל.
0A_0_0_0010_000_1 – דאָס קאָראַספּאַנדז צו 10 לייענט מיט אַדרעס סטאַרטינג פון 0 צו 80 וואָס קענען זיין געזען אין די זייַל.
בלאַט ייַנוויקלען בעשאַס שרייבט
0A_0_2_000F_3F8_0 – דאָס קאָראַספּאַנדז צו 10 שרייבט מיט זייַל אַדרעס אלנגעוויקלט צו די אָנהייב פון די בלאַט נאָך איין שרייַבן.
סימולאַטינג די פאָרשטעלונג פאַרקער גענעראַטאָר
אין דעם פונט איר זענען געטאן מיט MIG exampלאַ פּלאַן סימיאַליישאַן. דאָס ימפּלייז אַז דיין סימיאַליישאַן סעטאַפּ איז גרייט, איר האָבן דורכגעקאָכט פאָרשטעלונג סימיאַליישאַן RTL מאָדיפיקאַטיאָנס, די נייַע סימיאַליישאַן כייעראַרקי איז ריכטיק און איר האָט פארשטאנען די סטימול פּאַטערנז. לויפן די סימיאַליישאַן אַמאָל ווידער מיט 16 שרייבט און לייענט אין perfsim_stimulus.txt.
לויפן אַלע, וואַרטן ביז די init_calib_complete סיגנאַל איז אַססיסטעד, און איר וועט קענען צו זען די פארגעלייגט נומער פון שרייבט און לייענען. די סימיאַליישאַן וועט דעמאָלט האַלטן.
ווען איר זענט פּראַמפּטיד צו פאַרלאָזן סימיאַליישאַן, סעלעקטירן ניין און גיין צו די טראַנסקריפּט פֿענצטער ווו איר קענען זען די פאָרשטעלונג סטאַטיסטיק.
אויב איר אויסקלייַבן "פאַרלאָזן סימיאַליישאַן" פאָרשטעלונג סטאַטיסטיק וועט זיין געשריבן צו אַ file געהייסן mig_band_width_output.txt ליגן אין די sim_1/behave טעקע.
Exampדער וועגווייַזער דרך: -
/mig_7series_0_example_perf_sim\mig_7series_0_example.sim/sim_1/behav
איר זאל ווונדער וואָס די פּראָצענטtage ויטאָבוס יוטאַלאַזיישאַן איז בלויז 29. רירון די סימיאַליישאַן מיט די זעלבע IP סעטטינגס אָבער נאָר טשאַנגינג די סטימול file צו 256 שרייבט און 256 לייענט
ff_0_0_0000_000_0
ff_0_0_0000_000_1
איר וועט איצט זען די פּראָצענטtage ווי 85, וואָס ימפּלייז אַז DDR3 אָפפערס בעסער ויטאָבוס יוטאַלאַזיישאַן פֿאַר לאַנג סיקוואַנס פון שרייבט און לייענען בערסץ.
אַלגעמיינע וועגן צו פֿאַרבעסערן פאָרשטעלונג
די סיבות וואָס ווירקן עפעקטיווקייַט קענען זיין צעטיילט אין צוויי סעקשאַנז:
- זכּרון ספּעציפיש
- קאָנטראָללער ספּעציפיש
פיגורע 9 גיט איר אַן איבערview פון די טערמינען וואָס זענען זיקאָרן ספּעציפיש.
ניט ענלעך SRAMs און Block Memories DDR2 אָדער DDR3 פאָרשטעלונג איז נישט בלויז די מאַקסימום דאַטן קורס.
עס דעפּענדס אויף פילע טיימינג סיבות, אַרייַנגערעכנט:
- tRCD: Row Command Delay (אָדער ראַס צו קאַס פאַרהאַלטן).
- tCAS(CL): זייַל אַדרעס סטראָוב לייטאַנסי.
- טרפּ: רודערן פּריטשאַרדזש פאַרהאַלטן.
- tRAS: רודערן אַקטיוו צייט (אַקטאַווייט צו טוישן).
- tRC: רודערן ציקל צייט. tRC = tRAS + tRP
- TRAC: ראַדאָם אַקסעס פאַרהאַלטן. tRAC = tRCD + tCAS
- tCWL: קאַס שרייַבן לייטאַנסי.
- tZQ: זק קאַלאַבריישאַן צייט.
- tRFC: רודערן דערפרישן ציקל צייט
- tWTR: שרייב צו לייענען פאַרהאַלטן. לעצטע שרייַבן טראַנסאַקטיאָן צו לייענען באַפֿעל צייט.
- tWR: שרייב רעקאָווערי צייט. לעצטע שרייַבן טראַנסאַקטיאָן צו פּרעטשאַרדזש צייט
טיימינג פון אַלע די ליסטעד פּאַראַמעטערס דעפּענדס אויף טיפּ פון זיקאָרן געוויינט און זיקאָרן טייל גיכקייַט מיינונג.
מער דעטאַילס וועגן די דעפֿיניציע און טיימינג ספּעסאַפאַקיישאַנז קענען זיין געפֿונען אין DDR2 DDR3 JEDEC אָדער אין קיין דאַטן בלאַט פון זיקאָרן מיטל.
עפעקטיווקייַט דעפּענדס דער הויפּט אויף ווי זיקאָרן איז אַקסעסט. פאַרשידענע אַדרעס פּאַטערנז געבן פאַרשידענע עפעקטיווקייַט רעזולטאַטן.
זיקאָרן טיימינג אָוווערכעד
- אַקטאַוויישאַן צייט און פּרעטשאַרדזש צייט ווען טשאַנגינג צו נייַ באַנקס / ראָוז אָדער טשאַנגינג ראָוז מיט אין דער זעלביקער באַנק. - אַזוי אויב איר רעדוצירן די ענדערונגען אין די שורה, דאָס קענען באַזייַטיקן טרקד און טרפּ.
- שיקן קעסיידערדיק שרייַבן אָדער לייענען קאַמאַנדז - מאַינטיינינג tCCD טיימינג.
- מינאַמייז שרייַבן צו לייענען און לייענען צו שרייַבן באַפֿעל טשאַנגאָוווער - שרייב אָפּזוך צייט צו טוישן צו לייענען אַקסעס, ויטאָבוס טערנעראַונד צייט צו טוישן פון לייענען צו שרייַבן
- שטעלן אַ געהעריק דערפרישן מעהאַלעך.
- DDR3 SDRAM ריקווייערז דערפרישן סייקאַלז מיט אַ דורכשניטלעך פּעריאָדיש מעהאַלעך פון tREFI.
- א מאַקסימום פון 8 נאָך רעפרעש קאַמאַנדז קענען זיין ארויס אין שטייַגן ("פּולד אין"). דאָס קען נישט רעדוצירן די נומער פון ריפרעשיז, אָבער די מאַקסימום מעהאַלעך צווישן צוויי אַרומיק רעפרעש קאַמאַנדז איז לימיטעד צו 9 × tREFI
- ניצן אַלע די באַנקס - א פּאַסיק אַדרעסינג מעקאַניזאַם איז בילכער.
- ריי-באַנק-קאָלאַם: פֿאַר אַ טראַנסאַקטיאָן געשעעניש איבער אַ סאַקווענטשאַל אַדרעס פּלאַץ, די האַרץ אָפּענס אויטאָמאַטיש די זעלבע רודערן אין דער ווייַטער באַנק פון די DRAM מיטל צו פאָרזעצן די טראַנסאַקטיאָן ווען דער סוף פון אַ יגזיסטינג רודערן איז ריטשט. עס איז געזונט סוטאַד צו אַפּלאַקיישאַנז וואָס דאַרפן פּלאַצן פון גרויס דאַטן פּאַקיץ צו סאַקווענטשאַל אַדרעס לאָוקיישאַנז.
- באַנק-רודערן-קאָלאַם: ווען איר אַריבער אַ ריי גרענעץ, די קראַנט רודערן וועט זיין פארמאכט און אן אנדער רודערן וועט זיין געעפנט אין דער זעלביקער באַנק. MSB איז אַ באַנק אַדרעס, וואָס קענען ווערן גענוצט צו באַשטימען פון פאַרשידענע באַנקס. עס איז פּאַסיק פֿאַר קירצער, מער טראַפ - טראַנזאַקשאַנז צו איין זיקאָרן בלאָק פֿאַר אַ צייט און דערנאָך אַ שפּרינגען צו אן אנדער בלאָק (באַנק)
- פּלאַצן לענג
- BL 8 איז געשטיצט פֿאַר DDR3 אויף 7 סעריע. BC4 האט אַ זייער נידעריק עפעקטיווקייַט וואָס איז ווייניקער ווי 50%. דאָס איז ווייַל די דורכפירונג צייט פון BC4 איז די זעלבע ווי BL8. די דאַטן זענען נאָר מאַסקט ין דער קאָמפּאָנענט.
- אין קאַסעס ווו איר טאָן נישט וועלן צו שרייַבן פול פּלאַצן, אָדער דאַטן מאַסקע אָדער שרייַבן-נאָך-לייענען קענען זיין קאַנסידערד.
- שטעלן אַ געהעריק ZQ מעהאַלעך (בלויז DDR3)
דער קאָנטראָללער סענדז ביידע ZQ Short (ZQCS) און ZQ Long (ZQCL) קאַליבראַטיאָן קאַמאַנדז.- אַדכיר צו די DDR3 Jedec Standard
- ZQ קאַליבראַטיאָן איז דיסקאַסט אין אָפּטיילונג 5.5 פון די JEDEC ספּעק JESD79-3 DDR3 SDRAM סטאַנדאַרד
- ZQ Calibration קאַליברייץ אויף די טערמאַניישאַן (ODT) מיט רעגולער ינטערוואַלז צו רעכענען ווערייישאַנז אַריבער VT
- לאָגיק איז קאַנטיינד אין bank_common.v/vhd
- פּאַראַמעטער Tzqcs דיטערמאַנז די קורס אין וואָס אַ ZQ Calibration באַפֿעל איז געשיקט צו די זכּרון
- עס איז מעגלעך צו דיסייבאַל די טאָמבאַנק און מאַניואַלי שיקן ניצן app_zq_req, עס איז ענלעך צו מאַניואַלי שיקן אַ דערפרישן.
אָפּשיקן צו (Xilinx Answer 47924) פֿאַר פרטים.
קאָנטראָללער אָווערהעאַדס
- פּעריאָדיש לייענען - אָפּשיקן צו (קסילינקס ענטפער 43344) פֿאַר פרטים.
- דו זאלסט נישט טוישן די צייט פון לייענען
- האָפּקען פּעריאָדיש לייענען בעשאַס שרייבט און אַרויסגעבן די נומער פון מיסט לייענען איידער אַ אמת לייענען
- ריאָרדערינג - אָפּשיקן (קסילינקס ענטפער 34392) פֿאַר פרטים.
פֿאַר באַניצער און AXI צובינד דיזיינז, עס איז בילכער צו האָבן דעם ענייבאַלד.- ריאָרדער איז די לאָגיק וואָס קוקט פאָרויס עטלעכע קאַמאַנדז און ענדערונגען באַניצער באַפֿעלן סדר צו מאַכן ניט-זיקאָרן קאַמאַנדז נישט פאַרנעמען גילטיק באַנדווידט. די פאָרשטעלונג אויך שייַכות צו פאַקטיש פאַרקער מוסטער.
- באַזירט אויף די אַדרעס מוסטער, ריאָרדער העלפּס צו האָפּקען פּריטשאַרדזש און אַקטאַווייט קאַמאַנדז און מאכט tRCD און tRP נישט פאַרנעמען דאַטן באַנד ברייט.
- פּרובירן צו פאַרגרעסערן די נומער פון באַנק מאשינען.
- רובֿ פון די קאָנטראָללער ס לאָגיק ריזיידז אין די באַנק מאשינען און זיי שטימען צו DRAM באַנקס
- א געגעבן באַנק מאַשין מאַנידזשיז אַ איין DRAM באַנק אין קיין צייט.
- באַנק מאַשין אַסיינמאַנט איז דינאַמיש אַזוי עס איז ניט נייטיק צו האָבן אַ באַנק מאַשין פֿאַר יעדער גשמיות באַנק.
- באַנק מאשינען קענען זיין קאַנפיגיערד, אָבער עס איז אַ טריידאָפף צווישן שטח און פאָרשטעלונג.
- די אַלאַואַבאַל נומער פון באַנק מאשינען ריינדזשאַז 2-8.
- דורך פעליקייַט, 4 באַנק מאשינען זענען קאַנפיגיערד דורך RTL פּאַראַמעטערס.
- צו טוישן באַנק מאשינען, באַטראַכטן די פּאַראַמעטער nBANK_MACHS = 8 קאַנטיינד אין memc_ui_top Exampלי פֿאַר 8 באַנק מאשינען - nBANK_MACHS = 8
איר זענט איצט אַווער פון די סיבות וואָס ווירקן פאָרשטעלונג.
באַטראַכטן אַן אַפּסטרים אַפּלאַקיישאַן וואָס גיט איר 512 דאַטן ביטעס פּער פּאַקאַט און איר דאַרפֿן צו ראַטעווען זיי אין פאַרשידענע זיקאָרן לאָוקיישאַנז. ווי 512 דאַטן ביטעס איז גלייַך צו 64 DDR3 דאַטן בערסץ, לויפן די עקסampדי פּלאַן מיט אַ סטימול file מיט 512 שרייבט, 512 לייענט און רודערן סוויטשינג פֿאַר יעדער 64 שרייבט אָדער לייענט:
- 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
אין די סוף פון די סימיאַליישאַן איר וועט זען אַז ויטאָבוס יוטאַלאַזיישאַן איז 77 פּראָצענט.
פיגורע 11: פאָרשטעלונג סטאַטיסטיק פֿאַר 512 שרייבט און 512 לייענט - רודערן סוויטשינג פֿאַר 64 שרייבט אָדער לייענען.
איר קענען איצט צולייגן די וויסן געלערנט אין פריער אָפּטיילונג צו פֿאַרבעסערן די עפעקטיווקייַט. מיט א view צו נוצן אַלע די באַנקס אַנשטאָט פון טשאַנגינג די רודערן, מאָדיפיצירן די אַדרעס מוסטער צו טוישן די באַנק ווי געוויזן אונטן.
דאָס איז עקוויוואַלענט צו באַשטעטיקן ROW_BANK_Column אין די זיקאָרן אַדרעס מאַפּינג באַשטעטיקן אין די 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
אין די סוף פון סימיאַליישאַן איר וועט זען אַז די פריער 77 פּראָצענט ויטאָבוס יוטאַלאַזיישאַן איז איצט 87!
אויב איר נאָך דאַרפן העכער עפעקטיווקייַט, איר קענען גיין פֿאַר גרויס פּאַקאַט סיזעס פון 1024 אָדער 2048 ביטעס, אָדער באַטראַכטן אַ מאַנואַל דערפרישן.
באַמערקונג: Xilinx קען נישט מוטיקן בייפּאַסינג קאָנטראָללער דערפרישן ווייַל מיר זענען נישט זיכער אויב איר קענען טרעפן Jedec אַוטאָ דערפרישן טיימינג וואָס אַפעקץ דאַטן רילייאַבילאַטי.
פֿון די קאָנטראָללער זייַט איר קענען טוישן nBANk_MACH און זען די פֿאַרבעסערונג אין פאָרשטעלונג.
אָבער, דאָס קען ווירקן דיין פּלאַן טיימינג, ביטע אָפּשיקן צו (קסילינקס ענטפער 36505) פֿאַר דעטאַילס אויף nBANk_MACH
עפענען די core_name_mig_sim.v file און טוישן די פּאַראַמעטערס nBANK_MACHS פון 4 צו 8 און שייַעך-לויפן די סימיאַליישאַן. צו האָבן די פּאַראַמעטער ווערט אין ייַזנוואַרג, איר דאַרפֿן צו דערהייַנטיקן די core_name_mig.v file.
איך געוויינט די זעלבע מוסטער ווו מיר באַקומען 87% ויטאָבוס יוטאַלאַזיישאַן (פיגורע -12).
מיט nBANK_MACHS שטעלן צו 8, די עפעקטיווקייַט איז איצט 90%.
אויך מאַכן אַ טאָן אַז ½ און ¼ קאַנטראָולערז נעגאַטיוולי ווירקן עפעקטיווקייַט רעכט צו זייער לייטאַנסי.
פֿאַר עקסampלי, זינט מיר קענען בלויז שיקן קאַמאַנדז יעדער 4 CK סייקאַלז, עס איז מאל עקסטרע וואַטן ווען אַדכירינג צו מינימום DRAM טיימינג ספּעקס, וואָס קענען פאַרמינערן עפעקטיווקייַט פון די טעאָרעטיש.
פּרוּווט פאַרשידענע קאַנטראָולערז צו געפֿינען די וואָס איז פּאַסיק פֿאַר דיין עפעקטיווקייַט פאָדערונג.
רעפערענצן
- Zynq-7000 AP SoC און 7 סעריע FPGAs MIS v2.3 [UG586]
- Xilinx MIG סאַלושאַן צענטער http://www.xilinx.com/support/answers/34243.html
רעוויזיע געשיכטע
13/03/2015 - ערשט מעלדונג
דאַונלאָוד פּדף: Xilinx DDR2 MIG 7 פאָרשטעלונג אָפּשאַצונג גייד