Xilinx DDR2 MIG 7 कामगिरी अंदाज मार्गदर्शक
महत्त्वाची सूचना: उत्तर रेकॉर्डची ही डाउनलोड करण्यायोग्य PDF त्याची उपयोगिता आणि वाचनीयता वाढविण्यासाठी प्रदान केली आहे. हे लक्षात घेणे महत्वाचे आहे की उत्तर नोंदी आहेत Web-आधारीत सामग्री जी नवीन माहिती उपलब्ध झाल्यावर वारंवार अपडेट केली जाते. तुम्हाला Xilinx तांत्रिक सपोर्टला भेट देण्याची आठवण करून दिली जाते Webसाइट आणि पुन्हाview (Xilinx Answer 63234) या उत्तराच्या नवीनतम आवृत्तीसाठी.
परिचय
DDR2 आणि DDR3 मेमरी ज्या प्रकारे आर्किटेक्ट केल्या जातात आणि MIG 7 मालिका कंट्रोलरची रचना केली जाते, त्यामुळे कार्यप्रदर्शन सरळ पुढे जात नाही.
यासाठी विविध जेडेक टाइमिंग पॅरामीटर्स आणि कंट्रोलर आर्किटेक्चरची समज आवश्यक आहे आणि अंदाज मिळविण्यासाठी तुम्हाला सिम्युलेशन चालवावे लागतील.
कार्यप्रदर्शन निश्चित करण्यासाठी सामान्य तत्त्व समान आहे परंतु हा दस्तऐवज एमआयजी वापरून कार्यक्षमता मिळविण्याचा एक सोपा मार्ग प्रदान करतो.ampचाचणी बेंच आणि उत्तेजनाच्या मदतीने डिझाइन करा fileयेथे संलग्न आहे.
प्रभावी बँडविड्थ
DRAM डेटा बस केवळ वाचन आणि लेखनाच्या बर्स्ट दरम्यान जवळ-पीक बँडविड्थ प्राप्त करते आणि तिचे ओव्हरहेड प्रभावी डेटा दर कमी करते.
काही माजीampओव्हरहेडचे लेस आहेत:
- त्याच बँकेतील पंक्तींमध्ये प्रवेश करण्यासाठी प्रीचार्ज वेळ (प्रवेश पत्ता समान रो-पेज हिटमध्ये नाही)
- रिकव्हरी टाईम लिहा वरून रीड ऍक्सेसमध्ये बदल करा
- बस वळणाची वेळ वाचन ते लेखन प्रवेश बदलण्यासाठी
प्रभावी बँडविड्थ = पीक बँडविड्थ * कार्यक्षमता
एमआयजी डिझाइन जनरेशन
MIG IP वर चरण-दर-चरण तपशीलांसाठी UG586 धडा 1 पहाampले डिझाईन पिढी.
MIG 7 मालिका कार्यप्रदर्शन सिम्युलेशन चालवण्यापूर्वी, तुमचे सिम्युलेशन वातावरण ठीक आहे याची खात्री करण्यासाठी खालील गोष्टी करा. एमआयजी माजी उघडाample योग्य लायब्ररी डिझाइन करा आणि मॅप करा, सिम्युलेशन चालवा आणि तुम्ही ट्रान्सक्रिप्टमध्ये "चाचणी उत्तीर्ण" संदेश पाहू शकता याची खात्री करा.
प्रवाह प्रदर्शित करण्यासाठी मी xc7vx690tffg1761-2 साठी MIG IP तयार केला आहे आणि माजीampले डिझाइन.
मेमरी अॅड्रेस बिट्स आणि मेमरी अॅड्रेस मॅपिंग सिलेक्शन या दोन गोष्टी लक्षात घेतल्या पाहिजेत.
उदाample, मी मेमरी पार्ट ड्रॉप डाउन पर्यायांतर्गत MT41J128M8XX-125 निवडले आहे.
आकृती-1 मधील निवडलेल्या मेमरी भागासाठी, पंक्ती = 14, स्तंभ = 10 आणि बँक = 3, म्हणून app_addr_width = row + column + bank + rank= 28
तुम्ही BANK_ROW_COLUMN किंवा ROW BANK स्तंभ निवडू शकता.
मी ROW BANK स्तंभ सोडला आहे जो डीफॉल्ट अॅड्रेस मॅपिंग आहे.
Exampसंश्लेषित चाचणी बेंचसह le डिझाइन सिम्युलेशन
सिम्युलेशन सेटिंग्ज अंतर्गत, QuestaSim/ModelSim सिम्युलेटर निवडा आणि संकलित लायब्ररीच्या स्थानावर ब्राउझ करा.
थर्ड-पार्टी टूल्स इन्स्टॉल पथकडे निर्देश करणे, लक्ष्य सिम्युलेटर निवडणे आणि लायब्ररींचे संकलन आणि मॅपिंग करणे यावरील तपशीलांसाठी, तुम्ही (UG900) Vivado Design Suite User Guide Logic Simulation चा संदर्भ घेऊ शकता.
GUI द्वारे सिम्युलेशन चालवा (प्रोजेक्ट मॅनेजरमधील रन सिम्युलेशन टॅबवर क्लिक करा) आणि तुम्हाला ट्रान्सक्रिप्टमध्ये "चाचणी उत्तीर्ण" संदेश दिसत असल्याचे सुनिश्चित करा.
कार्यप्रदर्शन सिम्युलेशन RTL सुधारणा
- स्रोत टॅबवर उजवे-क्लिक करा, "सिम्युलेशन स्रोत जोडा किंवा तयार करा" निवडा आणि mig7_perfsim_traffic_generator.sv वर ब्राउझ करा. file आणि ते जोडण्यासाठी Finish वर क्लिक करा.
- स्त्रोत टॅबवर उजवे-क्लिक करा, "सिम्युलेशन स्रोत जोडा किंवा तयार करा" निवडा, perfsim_stimulus.txt वर ब्राउझ करा आणि ते जोडण्यासाठी समाप्त क्लिक करा.
- माजी टिप्पणी द्याampsim_tb_top.v मध्ये le_top इंस्टेंटिएशन 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;
- स्थानिकपरम 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;
- वायर app_sr_req = 0;
- वायर app_ref_req = 0;
- वायर app_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 आणि एलएचएस सिग्नलच्या नावांमधील कोणत्याही फरकांची क्रॉस-तपासणी करा आणि त्यांना दुरुस्त करा.
- 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 clocking, controller, ip_top,phy आणि UI फोल्डरमध्ये.
- एकदा RTL बदल झाले की आणि सर्व आवश्यक files तुमच्या सिम्युलेशन स्त्रोतांमध्ये जोडले गेले आहेत, पदानुक्रम आकृती 5 प्रमाणे असावे.
द fileलाल रंगात हायलाइट केलेले s नव्याने जोडले गेले आहेत आणि “?” ECC संबंधित मॉड्यूल्सवर अपेक्षित आहे कारण निवडलेल्या मेमरी कॉन्फिगरेशनमध्ये ECC पर्याय अक्षम केला आहे.
उत्तेजक File वर्णन
प्रत्येक उत्तेजक नमुना 48 बिट्सचा असतो आणि आकृती 6-1 ते 6-4 मध्ये स्वरूप वर्णन केले आहे.
पत्ता एन्कोडिंग (पत्ता [३५:०])
आकृती 7-1 ते आकृती 7-6 नुसार उत्तेजनामध्ये पत्ता एन्कोड केलेला आहे. सर्व पत्ता फील्ड हेक्साडेसिमल स्वरूपात प्रविष्ट करणे आवश्यक आहे. हेक्साडेसिमल फॉरमॅटमध्ये एंटर करण्यासाठी सर्व अॅड्रेस फील्डची रुंदी आहे जी चार ने भागली जाऊ शकते. चाचणी खंडपीठ फक्त मेमरी कंट्रोलरला अॅड्रेस फील्डचे आवश्यक बिट पाठवते.
उदाample, आठ बँक कॉन्फिगरेशनमध्ये, फक्त बँक बिट [२:०] मेमरी कंट्रोलरला पाठवले जातात आणि उर्वरित बिट्सकडे दुर्लक्ष केले जाते. हेक्साडेसिमल फॉरमॅटमध्ये पत्ता एंटर करण्यासाठी अॅड्रेस फील्डसाठी अतिरिक्त बिट्स प्रदान केले जातात.
प्रविष्ट केलेले मूल्य दिलेल्या कॉन्फिगरेशनच्या रुंदीशी संबंधित असल्याची तुम्ही पुष्टी करणे आवश्यक आहे.
- स्तंभ पत्ता (स्तंभ[११:०]) – उत्तेजनामधील स्तंभाचा पत्ता जास्तीत जास्त 12 बिट्समध्ये प्रदान केला जातो, परंतु तुम्हाला तुमच्या डिझाइनमध्ये सेट केलेल्या स्तंभ रुंदीच्या पॅरामीटरच्या आधारावर हे संबोधित करणे आवश्यक आहे.
- पंक्तीचा पत्ता (पंक्ती[१५:०]) – उत्तेजनामध्ये पंक्तीचा पत्ता जास्तीत जास्त 16 बिट्समध्ये प्रदान केला जातो, परंतु तुम्हाला तुमच्या डिझाइनमध्ये सेट केलेल्या पंक्तीच्या रुंदीच्या पॅरामीटरवर आधारित हे संबोधित करणे आवश्यक आहे.
- बँकेचा पत्ता (बँक[3:0]) – उत्तेजनामध्ये बँकेचा पत्ता जास्तीत जास्त चार बिट्समध्ये प्रदान केला जातो, परंतु तुम्हाला तुमच्या डिझाइनमध्ये सेट केलेल्या बँक रुंदीच्या पॅरामीटरवर आधारित हे संबोधित करणे आवश्यक आहे.
- रँक पत्ता (रँक[3:0]) – उत्तेजनामध्ये रँक अॅड्रेस कमाल चार बिट्समध्ये प्रदान केला जातो, परंतु तुम्हाला तुमच्या डिझाइनमध्ये सेट केलेल्या रँक रुंदीच्या पॅरामीटरवर आधारित हे संबोधित करणे आवश्यक आहे.
पत्ता शीर्ष-स्तरीय MEM_ADDR_ORDER पॅरामीटरच्या आधारे एकत्र केला जातो आणि वापरकर्ता इंटरफेसवर पाठविला जातो
कमांड रिपीट (कमांड रिपीट [७:०])
कमांड रिपीटेशन काउंट ही युजर इंटरफेसवर संबंधित कमांडची पुनरावृत्ती होण्याच्या वेळेची संख्या आहे. प्रत्येक पुनरावृत्तीसाठी पत्ता 8 ने वाढवला आहे. कमाल पुनरावृत्ती संख्या 128 आहे.
चाचणी खंडपीठ स्तंभाच्या सीमारेषेची तपासणी करत नाही आणि वाढीदरम्यान स्तंभाची कमाल मर्यादा गाठल्यास ते गुंडाळते.
128 कमांड पृष्ठ भरतात. 0 व्यतिरिक्त कोणत्याही स्तंभ पत्त्यासाठी, 128 ची पुनरावृत्ती संख्या स्तंभाची सीमा ओलांडून स्तंभ पत्त्याच्या प्रारंभापर्यंत गुंडाळली जाते.
बसचा वापर
एकूण वाचन आणि लेखनाची संख्या विचारात घेऊन बसच्या वापराची गणना युजर इंटरफेसवर केली जाते आणि खालील समीकरण वापरले जाते:
- BL8 चार मेमरी क्लॉक सायकल घेते
- end_of_stimulus ही वेळ असते जेव्हा सर्व आज्ञा पूर्ण केल्या जातात.
- calib_done म्हणजे कॅलिब्रेशन पूर्ण होण्याची वेळ.
Exampले नमुने
या माजीampलेस 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 नाव दिले sim_1/behave मध्ये स्थित mig_band_width_output.txt फोल्डर
Example निर्देशिका पथ:-
/mig_7series_0_example_perf_sim\mig_7series_0_example.sim/sim_1/behav
टक्के का असे तुम्हाला वाटेलtagई बसचा वापर ony 29 आहे. समान आयपी सेटिंग्जसह सिम्युलेशन पुन्हा चालवा परंतु फक्त उत्तेजना बदला file 256 लिहितात आणि 256 वाचतात
ff_0_0_0000_000_0
ff_0_0_0000_000_1
आता तुम्हाला टक्केवारी दिसेलtage 85, ज्याचा अर्थ असा आहे की DDR3 लेखन आणि रीड बर्स्टच्या दीर्घ क्रमासाठी उत्तम बस वापर देते.
कार्यप्रदर्शन सुधारण्याचे सामान्य मार्ग
कार्यक्षमतेवर परिणाम करणारे घटक दोन विभागांमध्ये विभागले जाऊ शकतात:
- मेमरी विशिष्ट
- नियंत्रक विशिष्ट
आकृती 9 तुम्हाला एक ओव्हर देतेview मेमरी विशिष्ट असलेल्या अटींपैकी.
एसआरएएम आणि ब्लॉक मेमरीज डीडीआर 2 किंवा डीडीआर 3 कार्यप्रदर्शन केवळ कमाल डेटा दर नाही.
हे बर्याच वेळेच्या घटकांवर अवलंबून असते, यासह:
- tRCD: रो कमांड विलंब (किंवा रास ते कॅस विलंब).
- tCAS(CL): स्तंभ पत्ता स्ट्रोब विलंब.
- tRP: पंक्ती प्रीचार्ज विलंब.
- टीआरएएस: पंक्ती सक्रिय वेळ (प्रीचेंज करण्यासाठी सक्रिय करा).
- tRC: पंक्ती सायकल वेळ. tRC = trAS + tRP
- trAC: Radom प्रवेश विलंब. trAC = tRCD + tCAS
- tCWL: Cas लेखन विलंब.
- tZQ: ZQ कॅलिब्रेशन वेळ.
- tRFC: पंक्ती रिफ्रेश सायकल वेळ
- tWTR: विलंब वाचण्यासाठी लिहा. आदेश वेळ वाचण्यासाठी अंतिम लेखन व्यवहार.
- tWR: पुनर्प्राप्ती वेळ लिहा. प्रीचार्ज वेळेपर्यंत अंतिम लेखन व्यवहार
सर्व सूचीबद्ध पॅरामीटर्सची वेळ वापरलेल्या मेमरीच्या प्रकारावर आणि मेमरी पार्ट स्पीड ग्रेडवर अवलंबून असते.
व्याख्या आणि वेळेच्या वैशिष्ट्यांबद्दल अधिक तपशील DDR2 DDR3 JEDEC किंवा कोणत्याही मेमरी डिव्हाइस डेटाशीटमध्ये आढळू शकतात.
कार्यक्षमता प्रामुख्याने मेमरी कशी ऍक्सेस केली जाते यावर अवलंबून असते. भिन्न पत्त्याचे नमुने भिन्न कार्यक्षमतेचे परिणाम देतात.
मेमरी टाइमिंग ओव्हरहेड्स
- नवीन बँक/पंक्ती बदलताना किंवा त्याच बँकेत पंक्ती बदलताना सक्रियकरण वेळ आणि प्रीचार्ज वेळ.- त्यामुळे तुम्ही पंक्तीतील बदल कमी केल्यास, हे टीआरसीडी आणि टीआरपी काढून टाकू शकते.
- सतत लिहा किंवा वाचा आदेश पाठवा - टीसीसीडी वेळ राखणे.
- कमांड चेंजओव्हर वाचण्यासाठी लिहा आणि वाचण्यासाठी लिहा कमी करा - वाचन अॅक्सेसमध्ये बदल करण्यासाठी रिकव्हरी वेळ लिहा, वाचनातून लिहिण्यासाठी बदलण्यासाठी बस टर्नअराउंड वेळ लिहा
- योग्य रिफ्रेश मध्यांतर सेट करा.
- DDR3 SDRAM ला tREFI च्या सरासरी नियतकालिक अंतराने रिफ्रेश सायकल आवश्यक आहे.
- जास्तीत जास्त 8 अतिरिक्त रिफ्रेश कमांड आगाऊ जारी केल्या जाऊ शकतात (“पुल्ड इन”). यामुळे रिफ्रेशची संख्या कमी होत नाही, परंतु दोन आसपासच्या रिफ्रेश कमांडमधील कमाल मध्यांतर 9 × tREFI पर्यंत मर्यादित आहे.
- सर्व बँकांचा वापर करा - एक योग्य संबोधित यंत्रणा श्रेयस्कर आहे.
- रो-बँक-स्तंभ: अनुक्रमिक पत्त्याच्या जागेवर होणार्या व्यवहारासाठी, विद्यमान पंक्ती संपल्यावर व्यवहार सुरू ठेवण्यासाठी कोर स्वयंचलितपणे DRAM उपकरणाच्या पुढील बँकेत समान पंक्ती उघडतो. हे ऍप्लिकेशन्ससाठी योग्य आहे ज्यांना अनुक्रमिक पत्त्याच्या स्थानांवर मोठ्या डेटा पॅकेट्स फोडणे आवश्यक आहे.
- बँक-पंक्ती-स्तंभ: पंक्तीची सीमा ओलांडताना, वर्तमान पंक्ती बंद केली जाईल आणि त्याच बँकेत दुसरी पंक्ती उघडली जाईल. MSB हा एक बँक पत्ता आहे, जो वेगवेगळ्या बँकांमधून स्विच करण्यासाठी वापरला जाऊ शकतो. हे ठराविक कालावधीसाठी मेमरीच्या एका ब्लॉकवर लहान, अधिक यादृच्छिक व्यवहारांसाठी आणि नंतर दुसर्या ब्लॉकवर (बँक) जाण्यासाठी योग्य आहे.
- बर्स्ट लांबी
- BL 8 3 मालिकेवरील DDR7 साठी समर्थित आहे. BC4 ची कार्यक्षमता खूपच कमी आहे जी 50% पेक्षा कमी आहे. कारण BC4 ची अंमलबजावणी वेळ BL8 सारखीच आहे. डेटा फक्त घटकाच्या आत मुखवटा घातलेला आहे.
- ज्या प्रकरणांमध्ये तुम्हाला पूर्ण ब्स्ट लिहायचे नसेल, तेथे डेटा मास्क किंवा राइट-आफ्टर-रीडचा विचार केला जाऊ शकतो.
- योग्य ZQ मध्यांतर सेट करा (केवळ DDR3)
कंट्रोलर ZQ शॉर्ट (ZQCS) आणि ZQ लाँग (ZQCL) कॅलिब्रेशन कमांड पाठवतो.- DDR3 Jedec मानकांचे पालन करा
- ZQ कॅलिब्रेशनची चर्चा JEDEC Spec JESD5.5-79 DDR3 SDRAM मानकाच्या कलम 3 मध्ये केली आहे
- ZQ कॅलिब्रेशन नियमित अंतराने ऑन डाय टर्मिनेशन (ODT) कॅलिब्रेट करते जेणेकरुन VT मधील फरक लक्षात घेता
- bank_common.v/vhd मध्ये तर्कशास्त्र समाविष्ट आहे
- पॅरामीटर Tzqcs मेमरीमध्ये ZQ कॅलिब्रेशन कमांड पाठवण्याचा दर निर्धारित करते
- t काउंटर अक्षम करणे आणि app_zq_req वापरून मॅन्युअली पाठवणे शक्य आहे, हे मॅन्युअली रिफ्रेश पाठवण्यासारखे आहे.
तपशीलांसाठी (Xilinx Answer 47924) पहा.
कंट्रोलर ओव्हरहेड्स
- नियतकालिक वाचन - पहा (Xilinx उत्तर ४३३४४) तपशीलांसाठी.
- वाचनाचा कालावधी बदलू नका
- लेखन दरम्यान नियतकालिक वाचन वगळा आणि खरे वाचण्यापूर्वी चुकलेल्या वाचनाची संख्या जारी करा
- पुनर्क्रमण - संदर्भ घ्या (Xilinx उत्तर ४३३४४) तपशीलांसाठी.
वापरकर्ता आणि AXI इंटरफेस डिझाइनसाठी हे सक्षम करणे श्रेयस्कर आहे.- रीऑर्डर हे लॉजिक आहे जे अनेक कमांड्सच्या पुढे दिसते आणि मेमरी नसलेल्या कमांडस वैध बँडविड्थ व्यापू नये यासाठी वापरकर्ता कमांड ऑर्डर बदलते. कार्यप्रदर्शन देखील वास्तविक रहदारी पॅटर्नशी संबंधित आहे.
- अॅड्रेस पॅटर्नवर आधारित, पुनर्क्रमण प्रीचार्ज वगळण्यात आणि कमांड सक्रिय करण्यात मदत करते आणि tRCD आणि tRP डेटा बँड रुंदी व्यापू शकत नाही.
- बँक मशीनची संख्या वाढवण्याचा प्रयत्न करा.
- नियंत्रकाचे बहुतेक तर्क बँक मशीनमध्ये असतात आणि ते DRAM बँकांशी संबंधित असतात
- दिलेली बँक मशीन कोणत्याही वेळी एकच DRAM बँक व्यवस्थापित करते.
- बँक मशीन असाइनमेंट डायनॅमिक आहे म्हणून प्रत्येक भौतिक बँकेसाठी बँक मशीन असणे आवश्यक नाही.
- बँक मशीन्स कॉन्फिगर केल्या जाऊ शकतात, परंतु हे क्षेत्र आणि कार्यप्रदर्शन यांच्यातील एक व्यापार आहे.
- बँक मशीनची स्वीकार्य संख्या 2-8 पर्यंत आहे.
- डीफॉल्टनुसार, RTL पॅरामीटर्सद्वारे 4 बँक मशीन्स कॉन्फिगर केल्या जातात.
- बँक मशीन बदलण्यासाठी, memc_ui_top Ex मध्ये समाविष्ट असलेल्या nBANK_MACHS = 8 पॅरामीटरचा विचार कराample 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
सिम्युलेशनच्या शेवटी तुम्हाला दिसेल की पूर्वीचे ७७ टक्के बस वापर आता ८७ झाले आहेत!
तुम्हाला अजूनही उच्च कार्यक्षमतेची आवश्यकता असल्यास, तुम्ही 1024 किंवा 2048 बाइट्सच्या मोठ्या पॅकेट आकारासाठी जाऊ शकता किंवा मॅन्युअल रिफ्रेश करण्याचा विचार करू शकता.
टीप: Xilinx कंट्रोलर रिफ्रेशला बायपास करण्यास प्रोत्साहन देत नाही कारण आम्हाला खात्री नाही की तुम्ही Jedec ऑटो रिफ्रेश वेळेची पूर्तता करू शकाल जे डेटा विश्वासार्हतेवर परिणाम करते.
कंट्रोलरच्या बाजूने तुम्ही nBANk_MACH बदलू शकता आणि कामगिरीत सुधारणा पाहू शकता.
तथापि, याचा तुमच्या डिझाइन वेळेवर परिणाम होऊ शकतो, कृपया पहा (Xilinx उत्तर ४३३४४) 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 कामगिरी अंदाज मार्गदर्शक