Xilinx DDR2 MIG 7 પ્રદર્શન અંદાજ માર્ગદર્શિકા
મહત્વપૂર્ણ નોંધ: આન્સર રેકોર્ડની આ ડાઉનલોડ કરી શકાય તેવી PDF તેની ઉપયોગીતા અને વાંચનક્ષમતા વધારવા માટે આપવામાં આવી છે. એ નોંધવું અગત્યનું છે કે જવાબ રેકોર્ડ્સ છે Web-આધારિત સામગ્રી કે જે નવી માહિતી ઉપલબ્ધ થતાં વારંવાર અપડેટ કરવામાં આવે છે. તમને Xilinx ટેકનિકલ સપોર્ટની મુલાકાત લેવાનું યાદ અપાય છે Webસાઇટ અને ફરીથીview (Xilinx જવાબ 63234) આ જવાબના નવીનતમ સંસ્કરણ માટે.
પરિચય
જે રીતે DDR2 અને DDR3 યાદોને આર્કિટેક્ટ કરવામાં આવે છે અને MIG 7 સિરીઝ કંટ્રોલરને ડિઝાઇન કરવામાં આવે છે તેના કારણે, કામગીરી સીધી આગળ નથી.
તેને વિવિધ જેડેક ટાઈમિંગ પેરામીટર્સ અને કંટ્રોલર આર્કિટેક્ચરની સમજની જરૂર છે, અને તમારે અંદાજો મેળવવા માટે સિમ્યુલેશન ચલાવવાની જરૂર પડશે.
કામગીરી નક્કી કરવા માટેનો સામાન્ય સિદ્ધાંત સમાન છે પરંતુ આ દસ્તાવેજ MIG exampટેસ્ટ બેન્ચ અને ઉત્તેજનાની મદદથી લે ડિઝાઇન fileઅહીં જોડાયેલ છે.
અસરકારક બેન્ડવિડ્થ
DRAM ડેટા બસ વાંચવા અને લખવાના વિસ્ફોટ દરમિયાન જ નજીકની ટોચની બેન્ડવિડ્થ હાંસલ કરે છે અને તેનું ઓવરહેડ અસરકારક ડેટા રેટ ઘટાડે છે.
થોડા માજીampઓવરહેડના લેસ છે:
- સમાન બેંકમાં પંક્તિઓને ઍક્સેસ કરવા માટે પ્રીચાર્જ સમય (એક્સેસ સરનામું સમાન પંક્તિ-પૃષ્ઠ હિટમાં નથી)
- લખો પુનઃપ્રાપ્તિ સમય લખવા થી વાંચવા ઍક્સેસ બદલવા માટે
- વાંચવાથી લખવાની ઍક્સેસમાં બદલાવ માટે બસનો ટર્નઅરાઉન્ડ સમય
અસરકારક બેન્ડવિડ્થ = પીક બેન્ડવિડ્થ * કાર્યક્ષમતા
MIG ડિઝાઇન જનરેશન
MIG IP અને ex પર પગલા-દર-પગલાની વિગતો માટે UG586 પ્રકરણ 1 નો સંદર્ભ લોampલે ડિઝાઇન જનરેશન.
MIG 7 સિરીઝ પર્ફોર્મન્સ સિમ્યુલેશન ચલાવતા પહેલા, તમારું સિમ્યુલેશન વાતાવરણ સારું છે તેની ખાતરી કરવા માટે નીચેના કરો. MIG ભૂતપૂર્વ ખોલોampયોગ્ય પુસ્તકાલયોની રચના અને નકશા બનાવો, સિમ્યુલેશન ચલાવો અને ખાતરી કરો કે તમે ટ્રાન્સક્રિપ્ટમાં "પરીક્ષણ પાસ કરેલ" સંદેશ જોઈ શકો છો.
પ્રવાહ દર્શાવવા માટે મેં 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લે ડિઝાઇન સિન્થેસાઇઝેબલ ટેસ્ટ બેન્ચ સાથે સિમ્યુલેશન
સિમ્યુલેશન સેટિંગ્સ હેઠળ, 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 માં ઉમેરો
- 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;
- wire app_sr_req = 0;
- wire app_ref_req = 0;
- wire 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 ટિપ્પણી બહાર અને નવી છે 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 માં કરવામાં આવ્યું છે.
સરનામું એન્કોડિંગ (સરનામું [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લેસ 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 ફોલ્ડર.
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: Radom ઍક્સેસ વિલંબ. trAC = tRCD + tCAS
- tCWL: કાસ લખવાની વિલંબતા.
- 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 જેડેક સ્ટાન્ડર્ડનું પાલન કરો
- 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 સુધીની છે.
- મૂળભૂત રીતે, 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
સિમ્યુલેશનના અંતે તમે જોશો કે અગાઉ 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 પ્રદર્શન અંદાજ માર્ગદર્શિકા