Xilinx DDR2 MIG 7 పనితీరు అంచనా గైడ్
ముఖ్యమైన గమనిక: ఆన్సర్ రికార్డ్ యొక్క ఈ డౌన్లోడ్ చేయదగిన PDF దాని వినియోగం మరియు పఠనీయతను మెరుగుపరచడానికి అందించబడింది. జవాబు రికార్డులు అని గమనించడం ముఖ్యం Webకొత్త సమాచారం అందుబాటులోకి వచ్చినప్పుడు తరచుగా నవీకరించబడే -ఆధారిత కంటెంట్. మీరు Xilinx టెక్నికల్ సపోర్ట్ని సందర్శించాలని గుర్తు చేస్తున్నారు Webసైట్ మరియు రీview (Xilinx జవాబు 63234) ఈ సమాధానం యొక్క తాజా వెర్షన్ కోసం.
పరిచయం
DDR2 మరియు DDR3 జ్ఞాపకాలను రూపొందించిన విధానం మరియు MIG 7 సిరీస్ కంట్రోలర్ రూపొందించబడినందున, పనితీరు నేరుగా ముందుకు సాగదు.
దీనికి వివిధ జెడెక్ టైమింగ్ పారామీటర్లు మరియు కంట్రోలర్ ఆర్కిటెక్చర్పై అవగాహన అవసరం మరియు అంచనాలను పొందడానికి మీరు అనుకరణలను అమలు చేయాలి.
పనితీరును నిర్ణయించడానికి సాధారణ సూత్రం ఒకటే కానీ ఈ పత్రం MIG exని ఉపయోగించి సామర్థ్యాన్ని పొందేందుకు సులభమైన మార్గాన్ని అందిస్తుందిampపరీక్ష బెంచ్ మరియు ఉద్దీపన సహాయంతో le డిజైన్ fileలు ఇక్కడ జతచేయబడ్డాయి.
ప్రభావవంతమైన బ్యాండ్విడ్త్
DRAM డేటా బస్సు చదవడం మరియు వ్రాయడం యొక్క విస్ఫోటనాల సమయంలో మాత్రమే పీక్-పీక్ బ్యాండ్విడ్త్ను సాధిస్తుంది మరియు దాని ఓవర్హెడ్ ప్రభావవంతమైన డేటా రేటును తగ్గిస్తుంది.
కొంతమంది మాజీampలెస్ ఆఫ్ ఓవర్ హెడ్:
- అదే బ్యాంక్లో అడ్డు వరుసలను యాక్సెస్ చేసే ప్రీఛార్జ్ సమయం (అదే వరుస-పేజీ హిట్లో లేని యాక్సెస్ చిరునామా)
- రైట్ నుండి రీడ్ యాక్సెస్కి మార్చడానికి రికవరీ సమయాన్ని వ్రాయండి
- బస్ టర్న్అరౌండ్ సమయం రీడ్ నుండి రైట్ యాక్సెస్ వరకు మార్చబడుతుంది
ఎఫెక్టివ్ బ్యాండ్విడ్త్ = పీక్ బ్యాండ్విడ్త్ * సామర్థ్యం
MIG డిజైన్ జనరేషన్
MIG IP మరియు మాజీపై దశల వారీ వివరాల కోసం UG586 చాప్టర్ 1ని చూడండిampలే డిజైన్ జనరేషన్.
MIG 7 సిరీస్ పనితీరు అనుకరణను అమలు చేయడానికి ముందు, మీ అనుకరణ వాతావరణం సరిగ్గా ఉందని నిర్ధారించుకోవడానికి క్రింది వాటిని చేయండి. MIG ఎక్స్ని తెరవండిampతగిన లైబ్రరీలను రూపొందించండి మరియు మ్యాప్ చేయండి, అనుకరణను అమలు చేయండి మరియు మీరు ట్రాన్స్క్రిప్ట్లో “పరీక్ష ఉత్తీర్ణత” అనే సందేశాన్ని చూడగలరని నిర్ధారించుకోండి.
ప్రవాహాన్ని ప్రదర్శించడానికి నేను xc7vx690tffg1761-2 కోసం MIG IPని రూపొందించాను మరియు మాజీని ప్రారంభించానుample డిజైన్.
గుర్తుంచుకోవలసిన రెండు విషయాలు మెమరీ అడ్రస్ బిట్స్ మరియు మెమరీ అడ్రస్ మ్యాపింగ్ ఎంపిక.
ఉదాహరణకుample, నేను మెమరీ పార్ట్ డ్రాప్ డౌన్ ఎంపికల క్రింద MT41J128M8XX-125ని ఎంచుకున్నాను.
మూర్తి-1 నుండి ఎంచుకున్న మెమరీ భాగం కోసం, అడ్డు వరుస = 14, నిలువు వరుస = 10 మరియు బ్యాంక్ = 3, కాబట్టి app_addr_width = అడ్డు వరుస + నిలువు వరుస + బ్యాంక్ + ర్యాంక్= 28
మీరు BANK_ROW_COLUMN లేదా ROW BANK నిలువు వరుసను ఎంచుకోవచ్చు.
నేను డిఫాల్ట్ అడ్రస్ మ్యాపింగ్ అయిన ROW BANK కాలమ్ నుండి నిష్క్రమించాను.
Example డిజైన్ సింథసైజబుల్ టెస్ట్ బెంచ్తో అనుకరణ
అనుకరణ సెట్టింగ్ల క్రింద, QuestaSim/ModelSim సిమ్యులేటర్ని ఎంచుకుని, సంకలనం చేయబడిన లైబ్రరీల స్థానానికి బ్రౌజ్ చేయండి.
థర్డ్-పార్టీ టూల్స్ ఇన్స్టాల్ పాత్ను సూచించడం, టార్గెట్ సిమ్యులేటర్ను ఎంచుకోవడం మరియు లైబ్రరీలను కంపైల్ చేయడం మరియు మ్యాపింగ్ చేయడం వంటి వివరాల కోసం, మీరు (UG900) వివాడో డిజైన్ సూట్ యూజర్ గైడ్ లాజిక్ సిమ్యులేషన్ని చూడవచ్చు
GUI ద్వారా అనుకరణను అమలు చేయండి (ప్రాజెక్ట్ మేనేజర్లో రన్ సిమ్యులేషన్ ట్యాబ్ను క్లిక్ చేయండి) మరియు మీరు ట్రాన్స్క్రిప్ట్లో “పరీక్ష ఉత్తీర్ణత” సందేశాన్ని చూసారని నిర్ధారించుకోండి.
పనితీరు అనుకరణ RTL మార్పులు
- మూలాల ట్యాబ్పై కుడి-క్లిక్ చేసి, "అనుకరణ మూలాలను జోడించు లేదా సృష్టించు" ఎంచుకోండి మరియు mig7_perfsim_traffic_generator.svకి బ్రౌజ్ చేయండి file మరియు దాన్ని జోడించడానికి ముగించు క్లిక్ చేయండి.
- మూలాల ట్యాబ్పై కుడి-క్లిక్ చేసి, “అనుకరణ మూలాలను జోడించు లేదా సృష్టించు” ఎంచుకుని, perfsim_stimulus.txtకి బ్రౌజ్ చేసి, దాన్ని జోడించడానికి ముగించు క్లిక్ చేయండి.
- మాజీ గురించి వ్యాఖ్యానించండిampsim_tb_top.vలో le_top ఇన్స్టాంటియేషన్ file.
- దిగువ RTL లైన్లను sim_tb_top,vకి జోడించండి
- స్థానికపరం APP_ADDR_WIDTH = 28;
- స్థానికపరం APP_DATA_WIDTH = 64;
- స్థానికపరం APP_MASK_WIDTH = APP_DATA_WIDTH / 8;
- స్థానికపరం 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;
- వైర్ 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_ట్రాఫిక్_జెన్
(
.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. - మీరు "?" చూస్తే అంతర్లీన కోసం fileలు, అన్ని RTLలను జోడించండి fileక్లాకింగ్, కంట్రోలర్, ip_top, phy మరియు UI ఫోల్డర్లలో s.
- RTL మార్పులు పూర్తయిన తర్వాత మరియు అవసరమైనవన్నీ fileమీ సిమ్యులేషన్ సోర్సెస్కు లు జోడించబడ్డాయి, సోపానక్రమం మూర్తి 5 వలె ఉండాలి.
ది fileఎరుపు రంగులో హైలైట్ చేయబడిన లు కొత్తగా జోడించబడ్డాయి మరియు “?” ఎంచుకున్న మెమరీ కాన్ఫిగరేషన్లో 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 మాజీతో పూర్తి చేసారుample డిజైన్ అనుకరణ. ఇది మీ సిమ్యులేషన్ సెటప్ సిద్ధంగా ఉందని, మీరు పనితీరు అనుకరణ RTL సవరణలు చేశారని, కొత్త అనుకరణ సోపానక్రమం సరైనదని మరియు మీరు ఉద్దీపన నమూనాలను అర్థం చేసుకున్నారని సూచిస్తుంది. perfsim_stimulus.txtలో 16 రైట్లు మరియు రీడ్లతో మరోసారి అనుకరణను అమలు చేయండి.
రన్-ఆల్ చేయండి, init_calib_complete సిగ్నల్ నొక్కి చెప్పే వరకు వేచి ఉండండి మరియు మీరు ప్రతిపాదిత వ్రాతలు మరియు రీడ్ల సంఖ్యను చూడగలరు. అప్పుడు అనుకరణ ఆగిపోతుంది.
మీరు అనుకరణ నుండి నిష్క్రమించమని ప్రాంప్ట్ చేయబడినప్పుడు, కాదు ఎంచుకోండి మరియు మీరు పనితీరు గణాంకాలను చూడగలిగే ట్రాన్స్క్రిప్ట్ విండోకు వెళ్లండి.
మీరు ఎంచుకుంటే "అనుకరణ నుండి నిష్క్రమించు" పనితీరు గణాంకాలు a కి వ్రాయబడతాయి file అనే పేరు పెట్టారు mig_band_width_output.txt sim_1/behaveలో ఉంది ఫోల్డర్.
Example డైరెక్టరీ మార్గం:-
/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 మెమరీ నిర్దిష్టమైన నిబంధనలలో.
SRAMలు మరియు బ్లాక్ మెమరీస్ కాకుండా DDR2 లేదా DDR3 పనితీరు గరిష్ట డేటా రేటు మాత్రమే కాదు.
ఇది అనేక సమయ కారకాలపై ఆధారపడి ఉంటుంది, వీటిలో:
- tRCD: వరుస కమాండ్ ఆలస్యం (లేదా ras to cas ఆలస్యం).
- tCAS(CL): కాలమ్ చిరునామా స్ట్రోబ్ జాప్యం.
- tRP: వరుస ప్రీఛార్జ్ ఆలస్యం.
- TRAS: వరుస సక్రియ సమయం (ముందుగా మార్చడానికి సక్రియం చేయండి).
- tRC: వరుస చక్రం సమయం. tRC = tRAS + tRP
- TRAC: రాడమ్ యాక్సెస్ ఆలస్యం. tRAC = tRCD + tCAS
- tCWL: కాస్ రైట్ జాప్యం.
- tZQ: ZQ అమరిక సమయం.
- tRFC: వరుస రిఫ్రెష్ సైకిల్ సమయం
- tWTR: ఆలస్యం చదవడానికి వ్రాయండి. కమాండ్ సమయాన్ని చదవడానికి చివరిగా వ్రాసే లావాదేవీ.
- tWR: రికవరీ సమయాన్ని వ్రాయండి. ప్రీఛార్జ్ సమయానికి చివరిగా వ్రాసే లావాదేవీ
అన్ని లిస్టెడ్ పారామీటర్ల టైమింగ్ ఉపయోగించిన మెమరీ రకం మరియు మెమరీ పార్ట్ స్పీడ్ గ్రేడ్ మీద ఆధారపడి ఉంటుంది.
నిర్వచనాలు మరియు సమయ నిర్దేశాలకు సంబంధించిన మరిన్ని వివరాలను DDR2 DDR3 JEDECలో లేదా ఏదైనా మెమరీ పరికర డేటాషీట్లో చూడవచ్చు.
సామర్థ్యం ప్రధానంగా మెమరీని ఎలా యాక్సెస్ చేయబడుతుందనే దానిపై ఆధారపడి ఉంటుంది. విభిన్న చిరునామా నమూనాలు విభిన్న సామర్థ్య ఫలితాలను ఇస్తాయి.
మెమరీ టైమింగ్ ఓవర్ హెడ్స్
- కొత్త బ్యాంక్లు/అడ్డు వరుసలకు మారుతున్నప్పుడు లేదా అదే బ్యాంక్లో అడ్డు వరుసలను మార్చినప్పుడు యాక్టివేషన్ సమయం మరియు ప్రీఛార్జ్ సమయం.- కాబట్టి మీరు అడ్డు వరుస మార్పును తగ్గించినట్లయితే, ఇది tRCD మరియు tRPని తీసివేయవచ్చు.
- నిరంతర వ్రాయడం లేదా చదవడం ఆదేశాలను పంపండి - tCCD సమయాన్ని నిర్వహించడం.
- కమాండ్ మార్పును వ్రాయడానికి చదవడానికి మరియు చదవడానికి వ్రాయడాన్ని తగ్గించండి - రీడ్ యాక్సెస్లకు మార్చడానికి రికవరీ సమయాన్ని వ్రాయండి, చదవడం నుండి వ్రాయడానికి మార్చడానికి బస్ టర్న్అరౌండ్ సమయం
- సరైన రిఫ్రెష్ విరామాన్ని సెట్ చేయండి.
- DDR3 SDRAMకి tREFI యొక్క సగటు ఆవర్తన వ్యవధిలో రిఫ్రెష్ సైకిల్స్ అవసరం.
- గరిష్టంగా 8 అదనపు రిఫ్రెష్ ఆదేశాలను ముందుగానే జారీ చేయవచ్చు (“పుల్ ఇన్”). ఇది రిఫ్రెష్ల సంఖ్యను తగ్గించదు, కానీ చుట్టుపక్కల ఉన్న రెండు రిఫ్రెష్ ఆదేశాల మధ్య గరిష్ట విరామం 9 × tREFIకి పరిమితం చేయబడింది
- అన్ని బ్యాంకులను ఉపయోగించుకోండి - తగిన చిరునామా విధానం ఉత్తమం.
- రో-బ్యాంక్-కాలమ్: సీక్వెన్షియల్ అడ్రస్ స్పేస్లో జరిగే లావాదేవీ కోసం, ఇప్పటికే ఉన్న అడ్డు వరుస ముగింపుకు చేరుకున్నప్పుడు లావాదేవీని కొనసాగించడానికి కోర్ ఆటోమేటిక్గా అదే అడ్డు వరుసను DRAM పరికరం యొక్క తదుపరి బ్యాంక్లో తెరుస్తుంది. సీక్వెన్షియల్ అడ్రస్ లొకేషన్లకు పెద్ద డేటా ప్యాకెట్లను పగలగొట్టాల్సిన అప్లికేషన్లకు ఇది బాగా సరిపోతుంది.
- బ్యాంక్-వరుస-కాలమ్: అడ్డు వరుస సరిహద్దును దాటినప్పుడు, ప్రస్తుత అడ్డు వరుస మూసివేయబడుతుంది మరియు అదే బ్యాంకులో మరొక అడ్డు వరుస తెరవబడుతుంది. MSB అనేది బ్యాంక్ చిరునామా, ఇది వివిధ బ్యాంకుల నుండి మారడానికి ఉపయోగించవచ్చు. ఇది కొంత కాలానికి ఒక బ్లాక్ మెమరీకి మరియు తర్వాత మరొక బ్లాక్కి (బ్యాంక్) వెళ్లేందుకు తక్కువ, ఎక్కువ యాదృచ్ఛిక లావాదేవీలకు అనుకూలంగా ఉంటుంది.
- బర్స్ట్ పొడవు
- 8 సిరీస్లో DDR3 కోసం BL 7కి మద్దతు ఉంది. BC4 50% కంటే తక్కువ సామర్థ్యాన్ని కలిగి ఉంది. ఎందుకంటే BC4 యొక్క అమలు సమయం BL8 వలె ఉంటుంది. డేటా కేవలం భాగం లోపల ముసుగు చేయబడింది.
- మీరు పూర్తి బరస్ట్ని వ్రాయకూడదనుకునే సందర్భాల్లో, డేటా మాస్క్ లేదా వ్రాసిన తర్వాత చదివిన వాటిని పరిగణించవచ్చు.
- సరైన ZQ విరామాన్ని సెట్ చేయండి (DDR3 మాత్రమే)
కంట్రోలర్ ZQ Short (ZQCS) మరియు ZQ లాంగ్ (ZQCL) కాలిబ్రేషన్ ఆదేశాలను రెండింటినీ పంపుతుంది.- DDR3 Jedec ప్రమాణానికి కట్టుబడి ఉండండి
- ZQ కాలిబ్రేషన్ JEDEC స్పెక్ JESD5.5-79 DDR3 SDRAM స్టాండర్డ్ సెక్షన్ 3లో చర్చించబడింది
- ZQ కాలిబ్రేషన్ VT అంతటా వైవిధ్యాలను లెక్కించడానికి క్రమమైన వ్యవధిలో ఆన్ డై టెర్మినేషన్ (ODT)ని కాలిబ్రేట్ చేస్తుంది
- లాజిక్ bank_common.v/vhdలో ఉంది
- పరామితి Tzqcs ZQ కాలిబ్రేషన్ కమాండ్ మెమరీకి పంపబడే రేటును నిర్ణయిస్తుంది
- t కౌంటర్ని నిలిపివేయడం మరియు app_zq_reqని ఉపయోగించి మాన్యువల్గా పంపడం సాధ్యమవుతుంది, ఇది మాన్యువల్గా రిఫ్రెష్ని పంపడం లాంటిది.
వివరాల కోసం (Xilinx జవాబు 47924) చూడండి.
కంట్రోలర్ ఓవర్ హెడ్స్
- ఆవర్తన రీడ్లు - చూడండి (Xilinx జవాబు 43344) వివరాల కోసం.
- చదివే కాలాన్ని మార్చవద్దు
- వ్రాసే సమయంలో ఆవర్తన రీడ్లను దాటవేయండి మరియు నిజమైన రీడ్కు ముందు తప్పిన రీడ్ల సంఖ్యను జారీ చేయండి
- క్రమాన్ని మార్చడం - చూడండి (Xilinx జవాబు 34392) వివరాల కోసం.
వినియోగదారు మరియు AXI ఇంటర్ఫేస్ డిజైన్ల కోసం దీన్ని ప్రారంభించడం ఉత్తమం.- రీఆర్డర్ అనేది అనేక కమాండ్లను ముందుగా చూసే తర్కం మరియు నాన్-మెమరీ కమాండ్లు చెల్లుబాటు అయ్యే బ్యాండ్విడ్త్ను ఆక్రమించకుండా చేయడానికి వినియోగదారు కమాండ్ క్రమాన్ని మారుస్తుంది. పనితీరు వాస్తవ ట్రాఫిక్ నమూనాకు సంబంధించినది.
- చిరునామా నమూనా ఆధారంగా, రీఆర్డర్ ప్రీఛార్జ్ను దాటవేయడానికి మరియు ఆదేశాలను సక్రియం చేయడానికి సహాయపడుతుంది మరియు tRCD మరియు tRP డేటా బ్యాండ్ వెడల్పును ఆక్రమించకుండా చేస్తుంది.
- బ్యాంక్ మెషీన్ల సంఖ్యను పెంచడానికి ప్రయత్నించండి.
- చాలా వరకు కంట్రోలర్ యొక్క లాజిక్ బ్యాంక్ మెషీన్లలో ఉంటుంది మరియు అవి DRAM బ్యాంకులకు అనుగుణంగా ఉంటాయి
- ఇచ్చిన బ్యాంక్ మెషిన్ ఏ సమయంలోనైనా ఒకే DRAM బ్యాంక్ని నిర్వహిస్తుంది.
- బ్యాంక్ మెషిన్ అసైన్మెంట్ డైనమిక్గా ఉంటుంది కాబట్టి ప్రతి ఫిజికల్ బ్యాంక్కి బ్యాంక్ మెషీన్ ఉండాల్సిన అవసరం లేదు.
- బ్యాంక్ మెషీన్లను కాన్ఫిగర్ చేయవచ్చు, అయితే ఇది ప్రాంతం మరియు పనితీరు మధ్య ఒక లావాదేవీ.
- అనుమతించదగిన బ్యాంకు యంత్రాల సంఖ్య 2-8 వరకు ఉంటుంది.
- డిఫాల్ట్గా, 4 బ్యాంక్ మెషీన్లు RTL పారామితుల ద్వారా కాన్ఫిగర్ చేయబడ్డాయి.
- బ్యాంక్ మెషీన్లను మార్చడానికి, memc_ui_top Exలో ఉన్న nBANK_MACHS = 8 పరామితిని పరిగణించండిamp8 బ్యాంక్ మెషీన్ల కోసం le – nBANK_MACHS = 8
పనితీరును ప్రభావితం చేసే అంశాల గురించి మీకు ఇప్పుడు తెలుసు.
ఒక ప్యాకెట్కు 512 డేటా బైట్లను అందించే అప్స్ట్రీమ్ అప్లికేషన్ను పరిగణించండి మరియు మీరు వాటిని వివిధ మెమరీ స్థానాలకు సేవ్ చేయాలి. 512 డేటా బైట్లు 64 DDR3 డేటా బర్స్ట్లకు సమానం కాబట్టి, మాజీని మళ్లీ అమలు చేయండిample ఒక ఉద్దీపన తో డిజైన్ 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 బైట్ల పెద్ద ప్యాకెట్ పరిమాణాల కోసం వెళ్లవచ్చు లేదా మాన్యువల్ రిఫ్రెష్ను పరిగణించండి.
గమనిక: డేటా విశ్వసనీయతను ప్రభావితం చేసే Jedec ఆటో రిఫ్రెష్ టైమింగ్ను మీరు చేరుకోగలరో లేదో మాకు ఖచ్చితంగా తెలియకపోవడంతో Xilinx కంట్రోలర్ రిఫ్రెష్ను దాటవేయడాన్ని ప్రోత్సహించదు.
కంట్రోలర్ వైపు నుండి మీరు 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%గా ఉంది.
½ మరియు ¼ కంట్రోలర్లు వాటి లేటెన్సీల కారణంగా సామర్థ్యాన్ని ప్రతికూలంగా ప్రభావితం చేస్తాయని కూడా గమనించండి.
ఉదాహరణకుampఅలాగే, మేము ప్రతి 4 CK చక్రాలకు మాత్రమే ఆదేశాలను పంపగలము కాబట్టి కనీస DRAM టైమింగ్ స్పెక్స్కు కట్టుబడి ఉన్నప్పుడు కొన్నిసార్లు అదనపు ప్యాడింగ్ ఉంటుంది, ఇది సైద్ధాంతిక నుండి సామర్థ్యాన్ని తగ్గిస్తుంది.
మీ సామర్థ్య అవసరాలకు సరిపోయేదాన్ని కనుగొనడానికి వివిధ కంట్రోలర్లను ప్రయత్నించండి.
సూచనలు
- Zynq-7000 AP SoC మరియు 7 సిరీస్ FPGAలు MIS v2.3 [UG586]
- Xilinx MIG సొల్యూషన్ సెంటర్ http://www.xilinx.com/support/answers/34243.html
పునర్విమర్శ చరిత్ర
13/03/2015 – ప్రారంభ విడుదల
PDF డౌన్లోడ్ చేయండి: Xilinx DDR2 MIG 7 పనితీరు అంచనా గైడ్