Xilinx DDR2 MIG 7 ڪارڪردگي تخميني گائيڊ
اهم نوٽ: جوابي رڪارڊ جي هي ڊائون لوڊ ڪرڻ جي قابل PDF مهيا ڪئي وئي آهي ان جي استعمال ۽ پڙهڻ جي قابليت کي وڌائڻ لاءِ. اهو نوٽ ڪرڻ ضروري آهي ته جواب رڪارڊ آهن Web-بنياد مواد جيڪي اڪثر اپڊيٽ ڪيا ويندا آهن جيئن نئين معلومات دستياب ٿي وڃي. توهان کي ياد ڏياريو وڃي ٿو زيلينڪس ٽيڪنيڪل سپورٽ جو دورو ڪريو Webسائيٽ ۽ ٻيهرview (Xilinx Answer 63234) هن جواب جي تازي ورزن لاءِ.
تعارف
ڇاڪاڻ ته طريقي سان DDR2 ۽ DDR3 ياداشتون تعمير ٿيل آهن ۽ MIG 7 سيريز ڪنٽرولر ٺهيل آهي، ڪارڪردگي سڌو اڳتي نه آهي.
ان کي سمجھڻ جي ضرورت آھي مختلف Jedec ٽائمنگ پيٽرولر ۽ ڪنٽرولر آرڪيٽيڪچر، ۽ توھان کي تخمينو حاصل ڪرڻ لاءِ سموليشن هلائڻ جي ضرورت پوندي.
ڪارڪردگي کي طئي ڪرڻ لاءِ عام اصول ساڳيو آهي پر هي دستاويز MIG استعمال ڪندي ڪارڪردگي حاصل ڪرڻ لاءِ آسان رستو فراهم ڪري ٿو.ampلي ڊيزائن ٽيسٽ بينچ ۽ محرڪ جي مدد سان fileهتي ڳنڍيل آهي.
مؤثر بينڊوڊٿ
DRAM ڊيٽا بس صرف پڙهڻ ۽ لکڻ جي دفن دوران ويجھي چوٽي بينڊوڊٿ حاصل ڪري ٿي ۽ ان جي اوور هيڊ موثر ڊيٽا جي شرح کي گھٽائي ٿي.
ڪجھ اڳampمٿي جا حصا آهن:
- ساڳئي بئنڪ ۾ قطارن تائين رسائي جو وقت اڳي چارج (پهچ ائڊريس ساڳئي قطار واري صفحي ۾ نه آهي)
- لکڻ جي وصولي وقت لکڻ کان پڙهڻ جي رسائي کي تبديل ڪرڻ لاء
- بس جي موٽڻ جو وقت پڙهڻ کان لکڻ جي پهچ ۾ تبديل ڪرڻ
مؤثر بينڊوڊٿ = چوٽي بينڊوڊٿ * ڪارڪردگي
MIG ڊيزائن جي نسل
جي حوالي ڪريو UG586 باب 1 قدم قدم تفصيل لاءِ MIG IP ۽ اڳampلي ڊيزائن نسل.
MIG 7 سيريز پرفارمنس سموليشن کي هلائڻ کان اڳ، پڪ ڪرڻ لاءِ ھيٺيان عمل ڪريو توھان جو سموليشن ماحول ٺيڪ آھي. MIG اڳوڻي کوليوampمناسب لائبريرين کي ڊزائين ۽ نقشو ٺاھيو، تخليق کي ھلايو، ۽ پڪ ڪريو ته توھان ٽرانسڪرپٽ ۾ "ٽيسٽ پاس ٿيل" پيغام ڏسي سگھو ٿا.
وهڪري کي ظاهر ڪرڻ لاءِ مون هڪ MIG IP ٺاهي آهي xc7vx690tffg1761-2 لاءِ ۽ اڳوڻي کي سڏيوampلي ڊيزائن.
ٻه شيون جيڪي نوٽ ڪرڻ گهرجن ميموري ايڊريس بٽ ۽ ميموري ايڊريس ميپنگ چونڊ.
مثال طورample، مون MT41J128M8XX-125 چونڊيو آهي ميموري پارٽ ڊراپ ڊائون آپشنز تحت.
تصوير-1 مان چونڊيل ياداشت واري حصي لاءِ، قطار = 14، ڪالمن = 10 ۽ بئنڪ = 3، پوءِ app_addr_width = قطار + ڪالمن + بئنڪ + درجو = 28
توھان منتخب ڪري سگھو ٿا BANK_ROW_COLUMN يا ROW BANK ڪالم.
مون ROW BANK ڪالم ڇڏي ڏنو آهي جيڪو ڊفالٽ ايڊريس ميپنگ آهي.
Exampلي ڊيزائن سموليشن سان گڏ ٺهيل ٽيسٽ بينچ
سموليشن سيٽنگون جي تحت، چونڊيو QuestaSim/ModelSim Simulator ۽ براؤز ڪريو مرتب ڪيل لائبريرين جي جڳھ کي.
ٽئين پارٽي ٽولز انسٽال ڪرڻ واري رستي ڏانهن اشارو ڪرڻ، ٽارگيٽ سموليٽر چونڊڻ ۽ لائبريريون گڏ ڪرڻ ۽ ميپ ڪرڻ بابت تفصيلن لاءِ، توهان حوالو ڪري سگهو ٿا (UG900) Vivado Design Suite User Guide Logic Simulation
تخليق کي GUI ذريعي هلايو (پراجيڪٽ مئنيجر ۾ رن سموليشن ٽيب تي ڪلڪ ڪريو) ۽ پڪ ڪريو ته توهان ٽرانسڪرپٽ ۾ ”ٽيسٽ پاس ٿيل“ پيغام ڏسو.
ڪارڪردگي سموليشن RTL تبديليون
- ذريعن جي ٽئب تي ساڄي ڪلڪ ڪريو، منتخب ڪريو "شامل ڪريو يا تخليق جا ذريعا"، ۽ براؤز ڪريو mig7_perfsim_traffic_generator.sv. file ۽ ان کي شامل ڪرڻ لاءِ ختم تي ڪلڪ ڪريو.
- ذريعن جي ٽيب تي ساڄي ڪلڪ ڪريو، چونڊيو "شامل ڪريو يا تخليقي ذريعن" کي چونڊيو، براؤز ڪريو perfsim_stimulus.txt، ۽ ڪلڪ ڪريو ختم ڪريو ان کي شامل ڪرڻ لاءِ.
- اڳيون تبصروample_top instantiation in the 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”؛
- localparam BANK_WIDTH = 3؛
- localparam 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؛
- تار ايپ_sr_req = 0؛
- تار app_ref_req = 0؛
- تار ايپ_zq_req = 0؛
- تار c0_app_wdf_mask = 0؛
FPGA ميموري ڪنٽرولر انسٽيٽيشن
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 (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)،
// سسٽم ڪلاڪ بندرگاهن
- .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)،
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. تبديل ڪريو 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 تبصرو ڪيو ويو آهي ۽ نئون files شامل ڪيا ويا آهن، توهان شايد ڏسندا "؟" جي ڀرسان
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 ۽ UI فولڊر.
- هڪ دفعو RTL تبديليون ڪيون وينديون آهن ۽ سڀ گهربل files توهان جي تخليقي ذريعن ۾ شامل ڪيا ويا آهن، درجه بندي شڪل 5 وانگر هجڻ گهرجي.
جي files ڳاڙهي ۾ نمايان ٿيل آهن نوان شامل ڪيا ويا آهن، ۽ "؟" ECC سان لاڳاپيل ماڊلز تي توقع ڪئي وئي آهي جيئن ته چونڊيل ميموري جي ترتيب ۾ ECC آپشن کي غير فعال ڪيو ويو آهي.
محرڪ File وصف
ھر محرڪ جو نمونو 48 بِٽ آھي ۽ شڪل 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لي پیٹرنز
اهي سابقamples BANK_ROW_COLUMN تي سيٽ ڪيل MEM_ADDR_ORDER تي ٻڌل آهن.
اڪيلو پڙهڻ وارو نمونو
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 اڳوڻي سان ڪيو آهيampلي ڊيزائن تخليق. ان جو مطلب اهو آهي ته توهان جو سموليشن سيٽ اپ تيار آهي، توهان ڪيو آهي پرفارمنس سموليشن RTL ترميمون، نئين سميوليشن جي ترتيب درست آهي ۽ توهان محرڪ جي نمونن کي سمجهي ورتو آهي. perfsim_stimulus.txt ۾ 16 لکڻ ۽ پڙهڻ سان هڪ ڀيرو ٻيهر تخليق کي هلايو.
رن-آل ڪريو، انتظار ڪريو جيستائين init_calib_complete سگنل تي زور ڀريو وڃي، ۽ توهان لکڻ ۽ پڙهڻ جو تجويز ڪيل تعداد ڏسي سگهندا. ان کان پوء تخليق بند ٿي ويندي.
جڏهن توهان کي تخليق ڇڏڻ لاءِ چيو ويندو، نه چونڊيو ۽ ٽرانسڪرپٽ ونڊو ڏانهن وڃو جتي توهان ڪارڪردگي جا انگ اکر ڏسي سگهندا.
جيڪڏھن توھان چونڊيو "تقليد ڇڏڻ" ڪارڪردگي جا انگ اکر لکيا ويندا a 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 ۽ بلاڪ ياداشتن جي برعڪس DDR2 يا DDR3 ڪارڪردگي صرف ڊيٽا جي وڌ ۾ وڌ شرح ناهي.
اهو ڪيترن ئي وقت جي عنصر تي منحصر آهي، جنهن ۾ شامل آهن:
- tRCD: قطار ڪمان جي دير (يا ڪاس دير تائين راس).
- tCAS (CL): ڪالمن ايڊريس اسٽروب ليٽيسي.
- tRP: قطار جي اڳڀرائي جي دير.
- ٽراس: قطار جو فعال وقت ( چالو ڪرڻ لاءِ اڳڀرائي).
- tRC: قطار جي چڪر جو وقت. tRC = trAS + tRP
- TRAC: ريڊم تائين پهچڻ ۾ دير. trAC = tRCD + tCAS
- tCWL: لکڻ ۾ دير.
- tZQ: ZQ calibration وقت.
- tRFC: قطار ريفريش سائيڪل جو وقت
- tWTR: دير سان پڙهڻ لاءِ لکو. ڪمانڊ ٽائيم پڙهڻ لاءِ آخري ٽرانزيڪشن لکڻ.
- tWR: وصولي وقت لکو. آخري لکڻ واري ٽرانزيڪشن کي پري چارج وقت
سڀني درج ڪيل پيٽرولن جو وقت استعمال ٿيل ميموري جي قسم تي منحصر آهي ۽ ميموري پارٽ اسپيڊ گريڊ.
وصفن ۽ وقت جي وضاحتن تي وڌيڪ تفصيل DDR2 DDR3 JEDEC يا ڪنهن به ميموري ڊيوائس ڊيٽ شيٽ ۾ ڳولهي سگهجن ٿا.
ڪارڪردگي بنيادي طور تي منحصر آهي ته ڪيئن ميموري تائين رسائي آهي. مختلف پتي جا نمونا مختلف ڪارڪردگي جا نتيجا ڏين ٿا.
ميموري ٽائيمنگ اوور هيڊز
- چالو ٿيڻ جو وقت ۽ اڳي چارج وقت جڏهن نئين بئنڪ/قطار ۾ تبديل ٿي يا ساڳي بئنڪ ۾ قطارون تبديل ڪرڻ سان.- پوءِ جيڪڏهن توهان قطار جي تبديلي کي گهٽايو، ته اهو tRCD ۽ tRP کي ختم ڪري سگهي ٿو.
- مسلسل لکڻ يا پڙهو حڪم موڪليو - ٽي سي ڊي جي وقت کي برقرار رکڻ.
- لکڻ لاءِ لکڻ کي گھٽ ڪريو ۽ لکڻ لاءِ ڪمانڊ ۾ تبديلي آڻيو - لکڻ جي وصولي وقت کي تبديل ڪرڻ لاءِ پڙھڻ جي رسائي، بس ٽرانارائونڊ وقت لکڻ لاءِ پڙھڻ کان لکڻ لاءِ تبديل ڪريو
- هڪ مناسب ريفريش وقفو مقرر ڪريو.
- DDR3 SDRAM جي ضرورت آهي ريفريش سائيڪلن جي اوسط دوراني وقفي تي tREFI.
- وڌ ۾ وڌ 8 اضافي ريفريش ڪمانڊ اڳ ۾ جاري ڪري سگھجن ٿا (“ڪيڏيل اندر”). هي ريفريشز جو تعداد گهٽ نٿو ڪري، پر ٻن ڀرپاسي ريفريش ڪمن جي وچ ۾ وڌ ۾ وڌ وقفو 9 × tREFI تائين محدود آهي.
- سڀ بئنڪ استعمال ڪريو - هڪ مناسب ايڊريسنگ ميڪانيزم کي ترجيح ڏني وئي آهي.
- قطار بئنڪ ڪالم: ھڪڙي ٽرانزيڪشن لاءِ جيڪو ھڪڙي ترتيب واري ايڊريس جي جڳھ تي ٿئي ٿو، ڪور خودڪار طور تي ساڳي قطار کي کوليو ويندو آھي DRAM ڊوائيس جي ايندڙ بئنڪ ۾ ٽرانزيڪشن کي جاري رکڻ لاءِ جڏھن موجوده قطار جي پڄاڻي تي پھچي وڃي. اهو مناسب آهي ايپليڪيشنن لاءِ جنهن جي ضرورت آهي وڏي ڊيٽا پيڪن کي دفن ڪرڻ جي ترتيب واري ايڊريس جڳهن تي.
- بئنڪ-قطار- ڪالم: جڏهن هڪ قطار جي حد پار ڪندي، موجوده قطار بند ٿي ويندي ۽ ٻي قطار ساڳئي ڪناري جي اندر کولي ويندي. MSB هڪ بينڪ ايڊريس آهي، جنهن کي مختلف بئنڪن مان مٽائڻ لاءِ استعمال ڪري سگهجي ٿو. اهو مختصر، وڌيڪ بي ترتيب واري ٽرانزيڪشن لاءِ موزون آهي ميموري جي هڪ بلاڪ ۾ هڪ وقت جي لاءِ ۽ پوءِ ٽپو ڏئي ٻئي بلاڪ ڏانهن (بينڪ)
- برسٽ ڊگھائي
- BL 8 سپورٽ ڪئي وئي آهي DDR3 لاءِ 7 سيريز تي. BC4 وٽ تمام گھٽ ڪارڪردگي آھي جيڪا 50 سيڪڙو کان گھٽ آھي. اهو ئي سبب آهي ته BC4 جي عمل جو وقت ساڳيو آهي BL8. ڊيٽا صرف جزو اندر ڍڪيل آهي.
- انهن حالتن ۾ جتي توهان مڪمل فٽ لکڻ نٿا چاهيو، يا ته ڊيٽا ماسڪ يا لکڻ کان پوء پڙهڻ سمجهي سگهجي ٿو.
- هڪ مناسب ZQ وقفو مقرر ڪريو (صرف DDR3)
ڪنٽرولر موڪلي ٿو ZQ مختصر (ZQCS) ۽ ZQ لانگ (ZQCL) Calibration حڪم.- DDR3 Jedec معيار تي عمل ڪريو
- ZQ Calibration JEDEC Spec JESD5.5-79 DDR3 SDRAM معيار جي سيڪشن 3 ۾ بحث ڪيو ويو آهي
- ZQ Calibration آن ڊي ٽرمينيشن (ODT) کي باقاعده وقفن تي حساب ڪري ٿو ته جيئن VT ۾ مختلف تبديلين جي حساب سان
- منطق bank_common.v/vhd ۾ موجود آهي
- پيراميٽر Tzqcs انهي شرح کي طئي ڪري ٿو جنهن تي ZQ Calibration حڪم ميموري ڏانهن موڪليو ويو آهي
- t ممڪن آهي ڪاؤنٽر کي غير فعال ڪرڻ ۽ دستي طور تي موڪليو app_zq_req استعمال ڪندي، اهو دستي طور تي ريفريش موڪلڻ وانگر آهي.
تفصيل لاءِ (Xilinx جواب 47924) ڏانهن رجوع ڪريو.
ڪنٽرولر مٿي
- وقتي پڙھڻ - حوالو ڏيو (Xilinx جواب 43344) تفصيل لاءِ.
- پڙهڻ جي مدت کي تبديل نه ڪريو
- لکڻ دوران وقتي پڙھڻ کي ڇڏي ڏيو ۽ صحيح پڙھڻ کان اڳ ياد ٿيل پڙھيلن جو تعداد جاري ڪريو
- ٻيهر ترتيب ڏيڻ- حوالو ڏيڻ (Xilinx جواب 34392) تفصيل لاءِ.
صارف ۽ AXI انٽرفيس ڊزائينز لاءِ اھو بھتر آھي ته ھن کي فعال ڪيو وڃي.- ري آرڊر اهو منطق آهي جيڪو ڪيترن ئي حڪمن کي اڳيان رکي ٿو ۽ غير ميموري حڪمن کي درست بينڊوڊٿ تي قبضو نه ڪرڻ لاءِ صارف ڪمانڊ آرڊر کي تبديل ڪري ٿو. ڪارڪردگي پڻ حقيقي ٽرئفڪ جي نموني سان لاڳاپيل آهي.
- ايڊريس جي نموني جي بنياد تي، ٻيهر ترتيب ڏيڻ ۾ مدد ڪري ٿي پريچارج ڇڏڻ ۽ حڪمن کي چالو ڪرڻ ۽ tRCD ۽ tRP کي ڊيٽا بينڊ جي چوٽي تي قبضو نه ڪرڻ ۾ مدد ڪري ٿي.
- بئنڪ مشينن جو تعداد وڌائڻ جي ڪوشش ڪريو.
- گهڻو ڪري ڪنٽرولر جي منطق بئنڪ مشينن ۾ رهي ٿو ۽ اهي DRAM بينڪن سان ملن ٿا
- هڪ ڏنل بينڪ مشين ڪنهن به وقت تي هڪ واحد DRAM بينڪ کي منظم ڪري ٿي.
- بئنڪ مشين جي تفويض متحرڪ آهي ان ڪري ضروري ناهي ته هر فزيڪل بئنڪ لاءِ بئنڪ مشين هجي.
- بئنڪ مشينون ترتيب ڏئي سگهجن ٿيون، پر اهو علائقو ۽ ڪارڪردگي جي وچ ۾ واپار آهي.
- بينڪ مشينن جو قابل اجازت تعداد 2-8 کان آھي.
- ڊفالٽ طور، 4 بئنڪ مشينون RTL پيٽرولر ذريعي ترتيب ڏنل آھن.
- بئنڪ مشينن کي تبديل ڪرڻ لاءِ، nBANK_MACHS = 8 تي غور ڪريو جنهن ۾ شامل آهي memc_ui_top Example 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 قطار کي تبديل ڪرڻ جي بدران سڀني بئنڪ کي استعمال ڪرڻ لاء، پتي جي نموني کي تبديل ڪرڻ لاء بينڪ کي تبديل ڪريو جيئن ھيٺ ڏيکاريل آھي.
اهو MIG GUI ۾ ميموري ايڊريس ميپنگ سيٽنگ ۾ ROW_BANK_Column سيٽنگ ڪرڻ جي برابر آهي.
- 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 تبديل ڪري سگهو ٿا ۽ ڪارڪردگي ۾ بهتري ڏسي سگهو ٿا.
بهرحال، اهو توهان جي ڊيزائن جي وقت کي متاثر ڪري سگهي ٿو، مهرباني ڪري حوالو ڏيو (Xilinx جواب 36505) تفصيل لاءِ nBANk_MACH تي
core_name_mig_sim.v کوليو file ۽ nBANK_MACHS کي 4 کان 8 تائين تبديل ڪريو ۽ سموليشن کي ٻيهر هلايو. هارڊويئر ۾ پيٽرولر جي قيمت کي اثر انداز ڪرڻ لاء، توهان کي اپڊيٽ ڪرڻ جي ضرورت آهي core_name_mig.v file.
مون ساڳيو نمونو استعمال ڪيو جتي اسان 87٪ بس استعمال ڪيو (شڪل -12).
nBANK_MACHS سان 8 تي سيٽ ڪيو ويو، ڪارڪردگي هاڻي 90٪ آهي.
اهو پڻ نوٽ ڪريو ته ½ ۽ ¼ ڪنٽرولرز انهن جي دير جي ڪري ڪارڪردگي تي منفي اثر انداز ڪن ٿا.
مثال طورample، ڇاڪاڻ ته اسان صرف حڪم موڪلي سگهون ٿا هر 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 ڪارڪردگي تخميني گائيڊ