ຄູ່ມືການປະເມີນປະສິດທິພາບ Xilinx DDR2 MIG 7
ໝາຍເຫດສຳຄັນ: PDF ທີ່ສາມາດດາວໂຫຼດໄດ້ຂອງບັນທຶກຄຳຕອບນີ້ໄດ້ຖືກສະໜອງໃຫ້ເພື່ອເພີ່ມປະສິດທິພາບການໃຊ້ງານ ແລະ ການອ່ານຂອງມັນ. ມັນເປັນສິ່ງສໍາຄັນທີ່ຈະສັງເກດວ່າບັນທຶກຄໍາຕອບແມ່ນ Web-based ເນື້ອໃນທີ່ຖືກປັບປຸງເລື້ອຍໆຍ້ອນວ່າມີຂໍ້ມູນໃຫມ່. ທ່ານໄດ້ຖືກເຕືອນໃຫ້ໄປຢ້ຽມຢາມການຊ່ວຍເຫຼືອດ້ານວິຊາການ Xilinx Website ແລະ review (Xilinx Answer 63234) ສໍາລັບສະບັບຫລ້າສຸດຂອງຄໍາຕອບນີ້.
ແນະນຳ
ເນື່ອງຈາກວິທີການສ້າງຄວາມຊົງຈໍາ DDR2 ແລະ DDR3 ແລະຕົວຄວບຄຸມຊຸດ MIG 7 ຖືກອອກແບບ, ການປະຕິບັດແມ່ນບໍ່ກົງໄປກົງມາ.
ມັນຮຽກຮ້ອງໃຫ້ມີຄວາມເຂົ້າໃຈກ່ຽວກັບຕົວກໍານົດການ Jedec Timing ຕ່າງໆແລະສະຖາປັດຕະຍະກໍາຄວບຄຸມ, ແລະທ່ານຈະຕ້ອງດໍາເນີນການ simulations ເພື່ອໃຫ້ໄດ້ຮັບການຄາດຄະເນ.
ຫຼັກການທົ່ວໄປສໍາລັບການກໍານົດການປະຕິບັດແມ່ນຄືກັນແຕ່ເອກະສານນີ້ສະຫນອງວິທີທີ່ງ່າຍທີ່ຈະໄດ້ຮັບປະສິດທິພາບໂດຍໃຊ້ MIG example ການອອກແບບດ້ວຍການຊ່ວຍເຫຼືອຂອງ bench ການທົດສອບແລະການກະຕຸ້ນ files ຕິດຢູ່ທີ່ນີ້.
ແບນວິດທີ່ມີປະສິດຕິຜົນ
ລົດເມຂໍ້ມູນ DRAM ບັນລຸແບນວິດໃກ້ຈຸດສູງສຸດພຽງແຕ່ໃນລະຫວ່າງການອ່ານແລະຂຽນແລະການ overhead ຂອງມັນຫຼຸດລົງອັດຕາຂໍ້ມູນທີ່ມີປະສິດທິພາບ.
ສອງສາມ examples ຂອງ overhead ແມ່ນ:
- ລ່ວງໜ້າເວລາເຂົ້າເຖິງແຖວໃນທະນາຄານດຽວກັນ (ການເຂົ້າເຖິງບໍ່ຢູ່ໃນແຖວໜ້າດຽວກັນ)
- ຂຽນເວລາການຟື້ນຕົວເພື່ອປ່ຽນຈາກການຂຽນເປັນການເຂົ້າເຖິງການອ່ານ
- ເວລາປ່ຽນລົດເມເພື່ອປ່ຽນຈາກການອ່ານເປັນການເຂົ້າເຖິງການຂຽນ
ແບນວິດທີ່ມີປະສິດທິພາບ = ສູງສຸດແບນວິດ * ປະສິດທິພາບ
ການຜະລິດການອອກແບບ MIG
ອ້າງອີງເຖິງ UG586 ບົດທີ 1 ສໍາລັບລາຍລະອຽດຂັ້ນຕອນໂດຍຂັ້ນຕອນກ່ຽວກັບ MIG IP ແລະ exampການຜະລິດການອອກແບບ.
ກ່ອນທີ່ຈະດໍາເນີນການຈໍາລອງການປະຕິບັດ MIG 7 Series, ເຮັດດັ່ງຕໍ່ໄປນີ້ເພື່ອໃຫ້ແນ່ໃຈວ່າສະພາບແວດລ້ອມການຈໍາລອງຂອງທ່ານແມ່ນດີ. ເປີດ MIG example ອອກແບບແລະສ້າງແຜນທີ່ຫ້ອງສະຫມຸດທີ່ເຫມາະສົມ, ດໍາເນີນການຈໍາລອງ, ແລະໃຫ້ແນ່ໃຈວ່າທ່ານສາມາດເບິ່ງຂໍ້ຄວາມ "ຜ່ານການທົດສອບ" ໃນຂໍ້ຄວາມຖອດຖອນໄດ້.
ເພື່ອສະແດງໃຫ້ເຫັນການໄຫຼເຂົ້າ, ຂ້ອຍໄດ້ສ້າງ MIG IP ສໍາລັບ xc7vx690tffg1761-2 ແລະເອີ້ນ ex.ample ການອອກແບບ.
ສອງສິ່ງທີ່ຄວນສັງເກດແມ່ນບິດທີ່ຢູ່ຫນ່ວຍຄວາມຈໍາແລະການເລືອກແຜນທີ່ທີ່ຢູ່ຫນ່ວຍຄວາມຈໍາ.
ຕົວຢ່າງampດັ່ງນັ້ນ, ຂ້າພະເຈົ້າໄດ້ເລືອກ MT41J128M8XX-125 ພາຍໃຕ້ຕົວເລືອກເລື່ອນລົງສ່ວນຫນ່ວຍຄວາມຈໍາ.
ສໍາລັບພາກສ່ວນຄວາມຊົງຈໍາທີ່ເລືອກຈາກຮູບ -1, ແຖວ = 14, ຖັນ = 10 ແລະທະນາຄານ = 3, ດັ່ງນັ້ນ app_addr_width = ແຖວ + ຖັນ + ທະນາຄານ + ອັນດັບ = 28
ທ່ານສາມາດເລືອກຖັນ BANK_ROW_COLUMN ຫຼື ROW BANK Column.
ຂ້ອຍໄດ້ອອກຈາກຖັນ ROW BANK ເຊິ່ງເປັນແຜນທີ່ທີ່ຢູ່ເລີ່ມຕົ້ນ.
Example ການອອກແບບ Simulation ກັບ bench ການທົດສອບ synthesizable
ພາຍໃຕ້ການຕັ້ງຄ່າການຈໍາລອງ, ເລືອກ QuestaSim/ModelSim Simulator ແລະຊອກຫາສະຖານທີ່ຂອງຫ້ອງສະຫມຸດທີ່ລວບລວມ.
ສໍາລັບລາຍລະອຽດກ່ຽວກັບການຊີ້ໄປຫາເສັ້ນທາງການຕິດຕັ້ງເຄື່ອງມືຂອງພາກສ່ວນທີສາມ, ການເລືອກ simulator ເປົ້າຫມາຍ, ແລະການລວບລວມແລະແຜນທີ່ຫ້ອງສະຫມຸດ, ທ່ານສາມາດອ້າງອີງ (UG900) Vivado Design Suite User Guide Logic Simulation
ດໍາເນີນການຈໍາລອງຜ່ານ GUI (ຄລິກແຖບ Run Simulation ໃນຜູ້ຈັດການໂຄງການ) ແລະໃຫ້ແນ່ໃຈວ່າທ່ານເຫັນຂໍ້ຄວາມ "ທົດສອບຜ່ານ" ໃນຂໍ້ຄວາມຖອດຖອນ.
ການປະຕິບັດການຈໍາລອງການດັດແປງ RTL
- ຄລິກຂວາໃສ່ແຖບແຫຼ່ງ, ເລືອກ “ເພີ່ມ ຫຼືສ້າງແຫຼ່ງຈໍາລອງ”, ແລະທ່ອງໄປຫາ mig7_perfsim_traffic_generator.sv file ແລະຄລິກສໍາເລັດຮູບເພື່ອເພີ່ມມັນ.
- ຄລິກຂວາໃສ່ແຖບແຫຼ່ງ, ເລືອກ “ເພີ່ມ ຫຼືສ້າງແຫຼ່ງຈໍາລອງ”, ຊອກຫາ perfsim_stimulus.txt, ແລະຄລິກສໍາເລັດຮູບເພື່ອເພີ່ມມັນ.
- ຄໍາເຫັນອອກ example_top instantiation ໃນ 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;
- 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_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. - ຊື່ instantiation ທີ່ເນັ້ນໃສ່ສີເຫຼືອງ 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 folders.
- ເມື່ອການປ່ຽນແປງ RTL ໄດ້ຖືກເຮັດແລະທັງຫມົດທີ່ຕ້ອງການ files ຖືກເພີ່ມໃສ່ແຫຼ່ງຈໍາລອງຂອງທ່ານ, ລໍາດັບຊັ້ນຄວນຈະຄ້າຍຄືກັບຮູບ 5.
ໄດ້ files ເນັ້ນໃສ່ສີແດງໄດ້ຖືກເພີ່ມໃຫມ່, ແລະ "?" ຄາດວ່າຈະຢູ່ໃນໂມດູນທີ່ກ່ຽວຂ້ອງກັບ ECC ເນື່ອງຈາກການຕັ້ງຄ່າຫນ່ວຍຄວາມຈໍາທີ່ເລືອກໄດ້ປິດການໃຊ້ງານທາງເລືອກ ECC.
ກະຕຸ້ນ File ລາຍລະອຽດ
ແຕ່ລະຮູບແບບການກະຕຸ້ນແມ່ນ 48 bits ແລະຮູບແບບໄດ້ຖືກອະທິບາຍໃນຮູບ 6-1 ເຖິງ 6-4.
ການເຂົ້າລະຫັດທີ່ຢູ່ (ທີ່ຢູ່ [35:0])
ທີ່ຢູ່ແມ່ນຖືກເຂົ້າລະຫັດຢູ່ໃນຕົວກະຕຸ້ນຕາມຮູບ 7-1 ເຖິງຮູບ 7-6. ຊ່ອງຂໍ້ມູນທັງໝົດຈະຕ້ອງຖືກໃສ່ໃນຮູບແບບເລກຖານສິບຫົກ. ຊ່ອງຂໍ້ມູນທັງໝົດແມ່ນຄວາມກວ້າງທີ່ແບ່ງອອກດ້ວຍສີ່ເພື່ອໃສ່ໃນຮູບແບບເລກຖານສິບຫົກ. ບ່ອນນັ່ງທົດສອບພຽງແຕ່ສົ່ງ bits ທີ່ຕ້ອງການຂອງພາກສະຫນາມທີ່ຢູ່ໄປຫາ Memory Controller.
ຕົວຢ່າງample, ໃນການຕັ້ງຄ່າທະນາຄານແປດ, ມີພຽງແຕ່ bank Bits [2:0] ຖືກສົ່ງໄປຫາ Memory Controller ແລະບິດທີ່ຍັງເຫຼືອແມ່ນຖືກລະເລີຍ. bits ເພີ່ມເຕີມສໍາລັບຊ່ອງທີ່ຢູ່ແມ່ນສະຫນອງໃຫ້ສໍາລັບທ່ານທີ່ຈະໃສ່ທີ່ຢູ່ໃນຮູບແບບເລກຖານສິບຫົກ.
ທ່ານຕ້ອງຢືນຢັນວ່າຄ່າທີ່ປ້ອນເຂົ້າສອດຄ່ອງກັບຄວາມກວ້າງຂອງການຕັ້ງຄ່າທີ່ໃຫ້.
- ທີ່ຢູ່ຖັນ (ຖັນ[11:0]) – ທີ່ຢູ່ຄໍລໍາໃນການກະຕຸ້ນແມ່ນສະຫນອງໃຫ້ສູງສຸດຂອງ 12 bits, ແຕ່ທ່ານຈໍາເປັນຕ້ອງແກ້ໄຂນີ້ໂດຍອີງໃສ່ຕົວກໍານົດຄວາມກວ້າງຂອງຖັນທີ່ກໍານົດໄວ້ໃນການອອກແບບຂອງທ່ານ.
- ທີ່ຢູ່ແຖວ (ແຖວ[15:0]) – ທີ່ຢູ່ແຖວໃນການກະຕຸ້ນແມ່ນໃຫ້ສູງສຸດ 16 bits, ແຕ່ທ່ານຈໍາເປັນຕ້ອງແກ້ໄຂນີ້ໂດຍອີງໃສ່ຕົວກໍານົດຄວາມກວ້າງຂອງແຖວທີ່ກໍານົດໄວ້ໃນການອອກແບບຂອງທ່ານ.
- ທີ່ຢູ່ທະນາຄານ (ທະນາຄານ [3:0]) – ທີ່ຢູ່ທະນາຄານໃນການກະຕຸ້ນແມ່ນສະຫນອງໃຫ້ສູງສຸດສີ່ບິດ, ແຕ່ທ່ານຈໍາເປັນຕ້ອງແກ້ໄຂນີ້ໂດຍອີງໃສ່ຕົວກໍານົດຄວາມກວ້າງຂອງທະນາຄານທີ່ກໍານົດໄວ້ໃນການອອກແບບຂອງທ່ານ.
- ທີ່ຢູ່ອັນດັບ (ອັນດັບ[3:0]) – ທີ່ຢູ່ອັນດັບໃນການກະຕຸ້ນແມ່ນສະຫນອງໃຫ້ສູງສຸດສີ່ບິດ, ແຕ່ທ່ານຈໍາເປັນຕ້ອງແກ້ໄຂນີ້ໂດຍອີງໃສ່ຕົວກໍານົດຄວາມກວ້າງຂອງການຈັດອັນດັບທີ່ກໍານົດໄວ້ໃນການອອກແບບຂອງທ່ານ.
ທີ່ຢູ່ໄດ້ຖືກປະກອບໂດຍອີງຕາມພາລາມິເຕີ MEM_ADDR_ORDER ລະດັບສູງສຸດແລະຖືກສົ່ງໄປຫາສ່ວນຕິດຕໍ່ຜູ້ໃຊ້
ຄຳສັ່ງຊ້ຳ (ຄຳສັ່ງຊ້ຳ [7:0])
ການນັບການຊໍ້າຄືນຄໍາສັ່ງແມ່ນຈໍານວນເວລາທີ່ຄໍາສັ່ງທີ່ກ່ຽວຂ້ອງຖືກຊ້ໍາໃນການໂຕ້ຕອບຜູ້ໃຊ້. ທີ່ຢູ່ສໍາລັບແຕ່ລະການຊໍ້າຄືນແມ່ນເພີ່ມຂຶ້ນ 8. ຈໍານວນການຊໍ້າຄືນສູງສຸດແມ່ນ 128.
ບ່ອນນັ່ງທົດສອບບໍ່ໄດ້ກວດສອບຂອບເຂດຂອງຖັນ ແລະມັນຫໍ່ຮອບຖ້າເຖິງຂີດຈຳກັດຖັນສູງສຸດໃນລະຫວ່າງການເພີ່ມ.
128 ຄໍາສັ່ງຕື່ມຂໍ້ມູນໃສ່ຫນ້າ. ສໍາລັບທີ່ຢູ່ຖັນໃດນຶ່ງນອກເໜືອໄປຈາກ 0, ຈໍານວນການຊໍ້າຄືນຂອງ 128 ສິ້ນສຸດລົງເຖິງການຂ້າມຂອບເຂດຂອງຖັນ ແລະຫໍ່ຮອບໄປຫາຈຸດເລີ່ມຕົ້ນຂອງທີ່ຢູ່ຖັນ.
ການນຳໃຊ້ລົດເມ
ການນໍາໃຊ້ລົດເມແມ່ນໄດ້ຮັບການຄິດໄລ່ຢູ່ໃນການໂຕ້ຕອບຜູ້ໃຊ້ໂດຍເອົາຈໍານວນທັງຫມົດຂອງການອ່ານແລະການຂຽນເຂົ້າໄປໃນການພິຈາລະນາແລະສົມຜົນດັ່ງຕໍ່ໄປນີ້ໄດ້ຖືກນໍາໃຊ້:
- BL8 ໃຊ້ເວລາສີ່ຮອບວຽນຂອງຫນ່ວຍຄວາມຈໍາ
- end_of_stimulus ແມ່ນເວລາທີ່ຄໍາສັ່ງທັງຫມົດຖືກເຮັດ.
- calib_done ແມ່ນເວລາທີ່ການປັບຕົວສຳເລັດ.
Example ຮູບແບບ
ເຫຼົ່ານີ້ examples ແມ່ນອີງໃສ່ 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 example simulation ການອອກແບບ. ນີ້ຫມາຍຄວາມວ່າການຈໍາລອງຂອງທ່ານກໍາລັງກຽມພ້ອມ, ທ່ານໄດ້ເຮັດການຈໍາລອງການປະຕິບັດການດັດແກ້ RTL, ລໍາດັບລໍາດັບ simulation ໃຫມ່ແມ່ນຖືກຕ້ອງແລະທ່ານໄດ້ເຂົ້າໃຈຮູບແບບການກະຕຸ້ນ. ດໍາເນີນການຈໍາລອງອີກເທື່ອຫນຶ່ງດ້ວຍ 16 ຂຽນແລະອ່ານໃນ perfsim_stimulus.txt.
ດໍາເນີນການທັງຫມົດ, ລໍຖ້າຈົນກ່ວາສັນຍານ init_calib_complete ຖືກຢືນຢັນ, ແລະທ່ານຈະສາມາດເຫັນຈໍານວນທີ່ສະເຫນີແລະອ່ານ. ຫຼັງຈາກນັ້ນ, ການຈໍາລອງຈະຢຸດເຊົາ.
ເມື່ອທ່ານຖືກກະຕຸ້ນໃຫ້ເຊົາການຈໍາລອງ, ເລືອກ No ແລະໄປທີ່ປ່ອງຢ້ຽມການຖອດຂໍ້ຄວາມບ່ອນທີ່ທ່ານຈະສາມາດເຫັນສະຖິຕິການປະຕິບັດ.
ຖ້າທ່ານເລືອກ "ຢຸດການຈໍາລອງ" ສະຖິຕິການປະຕິບັດຈະຖືກຂຽນໃສ່ 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
ທ່ານອາດຈະສົງໄສວ່າເປັນຫຍັງ percentage bus utilization is on 29. Rerun the simulation with the same IP settings but just change the stimulus file ເຖິງ 256 ຂຽນ ແລະ 256 ອ່ານ
ff_0_0_0000_000_0
ff_0_0_0000_000_1
ໃນປັດຈຸບັນທ່ານຈະເຫັນ percen ໄດ້tage ເປັນ 85, ຊຶ່ງຫມາຍຄວາມວ່າ DDR3 ສະຫນອງການນໍາໃຊ້ລົດເມທີ່ດີກວ່າສໍາລັບລໍາດັບຍາວຂອງການຂຽນແລະການອ່ານລະເບີດ.
ວິທີການທົ່ວໄປເພື່ອປັບປຸງປະສິດທິພາບ
ປັດໃຈທີ່ມີອິດທິພົນຕໍ່ປະສິດທິພາບສາມາດແບ່ງອອກເປັນສອງພາກ:
- ຄວາມຈຳສະເພາະ
- ສະເພາະຕົວຄວບຄຸມ
ຮູບທີ່ 9 ໃຫ້ທ່ານຈົບview ຂອງຂໍ້ກໍານົດທີ່ມີຄວາມຈໍາສະເພາະ.
ບໍ່ຄືກັບ SRAMs ແລະ Block Memories DDR2 ຫຼື DDR3 ການປະຕິບັດບໍ່ພຽງແຕ່ອັດຕາຂໍ້ມູນສູງສຸດເທົ່ານັ້ນ.
ມັນຂຶ້ນກັບປັດໃຈເວລາຫຼາຍ, ລວມທັງ:
- tRCD: Row Command Delay (ຫຼື ras to cas delay).
- tCAS(CL): ທີ່ຢູ່ຖັນ strobe latency.
- tRP: ແຖວການຊັກຊ້າການເກັບເງິນລ່ວງໜ້າ.
- tRA: Row Active Time (ກະຕຸ້ນເພື່ອປ່ຽນກ່ອນ).
- tRC: ເວລາຮອບວຽນແຖວ. tRC = tRAS + tRP
- tRAC: ການຊັກຊ້າໃນການເຂົ້າເຖິງ Radom. tRAC = tRCD + tCAS
- tCWL: Cas ຂຽນ latency.
- tZQ: ເວລາປັບຕົວ ZQ.
- tRFC: Row Refresh Cycle Time
- tWTR: ຂຽນເພື່ອອ່ານຊັກຊ້າ. ການເຮັດທຸລະກໍາຂຽນຫຼ້າສຸດເພື່ອອ່ານເວລາຄໍາສັ່ງ.
- tWR: ຂຽນເວລາການຟື້ນຕົວ. ການເຮັດທຸລະກໍາຂຽນຄັ້ງສຸດທ້າຍເຖິງເວລາເຕີມເງິນ
ໄລຍະເວລາຂອງຕົວກໍານົດການທີ່ລະບຸໄວ້ທັງຫມົດແມ່ນຂຶ້ນກັບປະເພດຂອງຫນ່ວຍຄວາມຈໍາທີ່ໃຊ້ແລະລະດັບຄວາມໄວຂອງຫນ່ວຍຄວາມຈໍາ.
ລາຍລະອຽດເພີ່ມເຕີມກ່ຽວກັບຄໍານິຍາມແລະກໍານົດເວລາສາມາດພົບໄດ້ໃນ DDR2 DDR3 JEDEC ຫຼືໃນເອກະສານຂໍ້ມູນອຸປະກອນຫນ່ວຍຄວາມຈໍາໃດໆ.
ປະສິດທິພາບສ່ວນໃຫຍ່ແມ່ນຂຶ້ນກັບວິທີການເຂົ້າເຖິງຫນ່ວຍຄວາມຈໍາ. ຮູບແບບທີ່ຢູ່ທີ່ແຕກຕ່າງກັນໃຫ້ຜົນໄດ້ຮັບປະສິດທິພາບທີ່ແຕກຕ່າງກັນ.
ຊ່ວງເວລາໜ່ວຍຄວາມຈຳຢູ່ເໜືອຫົວ
- ເວລາເປີດໃຊ້ງານ ແລະເວລາເກັບເງິນລ່ວງໜ້າເມື່ອປ່ຽນເປັນທະນາຄານໃໝ່/ແຖວ ຫຼືປ່ຽນແຖວໃນທະນາຄານດຽວກັນ.- ດັ່ງນັ້ນ, ຖ້າເຈົ້າຫຼຸດການປ່ຽນແຖວ, ນີ້ສາມາດລຶບ tRCD ແລະ tRP ອອກໄດ້.
- ສົ່ງຄໍາສັ່ງຂຽນຫຼືອ່ານຢ່າງຕໍ່ເນື່ອງ - ການຮັກສາເວລາ tCCD.
- ຫຍໍ້ການຂຽນເພື່ອອ່ານແລະອ່ານເພື່ອຂຽນການປ່ຽນແປງຄໍາສັ່ງ - ຂຽນເວລາການຟື້ນຕົວເພື່ອປ່ຽນການເຂົ້າອ່ານ, ເວລາປ່ຽນລົດເມເພື່ອປ່ຽນຈາກອ່ານເປັນຂຽນ
- ກໍານົດໄລຍະການໂຫຼດຫນ້າຈໍຄືນທີ່ເຫມາະສົມ.
- DDR3 SDRAM ຕ້ອງການຮອບການໂຫຼດຂໍ້ມູນຄືນໃໝ່ໃນຊ່ວງເວລາສະເລ່ຍຂອງ tREFI.
- ສາມາດອອກຄຳສັ່ງ Refresh ເພີ່ມເຕີມໄດ້ສູງສຸດ 8 ລາຍການລ່ວງໜ້າ (“ດຶງເຂົ້າ”). ນີ້ບໍ່ໄດ້ຫຼຸດລົງຈໍານວນຂອງການໂຫຼດຫນ້າຈໍຄືນ, ແຕ່ໄລຍະສູງສຸດລະຫວ່າງສອງຄໍາສັ່ງການໂຫຼດຫນ້າຈໍຄືນແມ່ນຈໍາກັດ 9 × tREFI.
- ການນໍາໃຊ້ທັງຫມົດຂອງທະນາຄານ - ກົນໄກການແກ້ໄຂທີ່ເຫມາະສົມແມ່ນດີກວ່າ.
- ແຖວທະນາຄານ-ຖັນ: ສໍາລັບການເຮັດທຸລະກໍາທີ່ເກີດຂື້ນໃນໄລຍະທີ່ຢູ່ຕາມລໍາດັບ, ຫຼັກອັດຕະໂນມັດຈະເປີດແຖວດຽວກັນໃນທະນາຄານຕໍ່ໄປຂອງອຸປະກອນ DRAM ເພື່ອສືບຕໍ່ການເຮັດທຸລະກໍາເມື່ອສິ້ນສຸດຂອງແຖວທີ່ມີຢູ່ແລ້ວ. ມັນ ເໝາະ ສົມກັບແອັບພລິເຄຊັນທີ່ຕ້ອງການການລະເບີດຂອງແພັກເກັດຂໍ້ມູນໃຫຍ່ໄປຫາສະຖານທີ່ທີ່ຢູ່ຕາມລໍາດັບ.
- ຖັນແຖວທະນາຄານ: ເມື່ອຂ້າມເຂດແດນແຖວ, ແຖວປະຈຸບັນຈະຖືກປິດ ແລະແຖວອື່ນຈະຖືກເປີດພາຍໃນທະນາຄານດຽວກັນ. MSB ເປັນທີ່ຢູ່ທະນາຄານ, ເຊິ່ງສາມາດໃຊ້ເພື່ອປ່ຽນຈາກທະນາຄານຕ່າງໆ. ມັນເປັນການເຫມາະສົມສໍາລັບການທີ່ສັ້ນ, ການເຮັດທຸລະກໍາແບບສຸ່ມຫຼາຍກັບຫນຶ່ງຕັນຂອງຄວາມຊົງຈໍາສໍາລັບໄລຍະເວລາຂອງທີ່ໃຊ້ເວລາແລະຫຼັງຈາກນັ້ນກະໂດດກັບຕັນອື່ນ (ທະນາຄານ)
- ຄວາມຍາວລະເບີດ
- BL 8 ຮອງຮັບ DDR3 ໃນ 7 ຊຸດ. BC4 ມີປະສິດທິພາບຕໍ່າຫຼາຍທີ່ຕໍ່າກວ່າ 50%. ນີ້ແມ່ນຍ້ອນວ່າເວລາປະຕິບັດຂອງ BC4 ແມ່ນຄືກັນກັບ BL8. ຂໍ້ມູນແມ່ນພຽງແຕ່ຫນ້າກາກພາຍໃນອົງປະກອບ.
- ໃນກໍລະນີທີ່ທ່ານບໍ່ຕ້ອງການທີ່ຈະຂຽນເຕັມທີ່, ບໍ່ວ່າຈະເປັນຫນ້າກາກຂໍ້ມູນຫຼືການຂຽນຫຼັງຈາກອ່ານສາມາດພິຈາລະນາໄດ້.
- ກໍານົດຊ່ວງເວລາ ZQ ທີ່ເຫມາະສົມ (DDR3 ເທົ່ານັ້ນ)
ຕົວຄວບຄຸມສົ່ງທັງ ZQ Short (ZQCS) ແລະ ZQ Long (ZQCL) ຄໍາສັ່ງ Calibration.- ປະຕິບັດຕາມມາດຕະຖານ DDR3 Jedec
- ZQ Calibration ແມ່ນສົນທະນາຢູ່ໃນພາກ 5.5 ຂອງ JEDEC Spec JESD79-3 DDR3 SDRAM ມາດຕະຖານ
- ZQ Calibration calibrates On Die Termination (ODT) ໃນຊ່ວງເວລາປົກກະຕິເພື່ອບັນຊີການປ່ຽນແປງໃນທົ່ວ VT
- Logic ແມ່ນບັນຈຸຢູ່ໃນ bank_common.v/vhd
- ພາລາມິເຕີ Tzqcs ກໍານົດອັດຕາທີ່ຄໍາສັ່ງ ZQ Calibration ຖືກສົ່ງໄປຫາຫນ່ວຍຄວາມຈໍາ
- t ເປັນໄປໄດ້ທີ່ຈະປິດການໃຊ້ງານຕ້ານແລະການສົ່ງດ້ວຍຕົນເອງໂດຍນໍາໃຊ້ app_zq_req, ມັນຄ້າຍຄືກັນກັບການສົ່ງການໂຫຼດຫນ້າຈໍຄືນດ້ວຍຕົນເອງ.
ອ້າງອີງໄປທີ່ (Xilinx Answer 47924) ສໍາລັບລາຍລະອຽດ.
ການຄວບຄຸມເທິງຫົວ
- ອ່ານເປັນໄລຍະ – ອ້າງເຖິງ (Xilinx ຕອບ 43344) ສໍາລັບລາຍລະອຽດ.
- ຢ່າປ່ຽນໄລຍະເວລາຂອງການອ່ານ
- ຂ້າມການອ່ານເປັນໄລຍະໃນລະຫວ່າງການຂຽນ ແລະອອກຈໍານວນການອ່ານທີ່ພາດກ່ອນການອ່ານທີ່ແທ້ຈິງ
- Reordering - ອ້າງອີງ (Xilinx ຕອບ 34392) ສໍາລັບລາຍລະອຽດ.
ສໍາລັບການອອກແບບການໂຕ້ຕອບຜູ້ໃຊ້ແລະ AXI ມັນດີກວ່າທີ່ຈະເປີດໃຊ້ງານນີ້.- Reorder ແມ່ນເຫດຜົນທີ່ເບິ່ງລ່ວງຫນ້າຫຼາຍຄໍາສັ່ງແລະການປ່ຽນແປງຄໍາສັ່ງຂອງຜູ້ໃຊ້ເພື່ອເຮັດໃຫ້ຄໍາສັ່ງທີ່ບໍ່ແມ່ນຫນ່ວຍຄວາມຈໍາບໍ່ຄອບຄອງແບນວິດທີ່ຖືກຕ້ອງ. ການປະຕິບັດຍັງກ່ຽວຂ້ອງກັບຮູບແບບການຈະລາຈອນຕົວຈິງ.
- ອີງຕາມຮູບແບບທີ່ຢູ່, ການຈັດລໍາດັບຄືນໃຫມ່ຊ່ວຍໃຫ້ຂ້າມ precharge ແລະເປີດໃຊ້ຄໍາສັ່ງແລະເຮັດໃຫ້ tRCD ແລະ tRP ບໍ່ຄອບຄອງຄວາມກວ້າງຂອງແຖບຂໍ້ມູນ.
- ພະຍາຍາມເພີ່ມຈໍານວນເຄື່ອງຈັກຂອງທະນາຄານ.
- ເຫດຜົນຂອງຕົວຄວບຄຸມສ່ວນໃຫຍ່ແມ່ນຢູ່ໃນເຄື່ອງຈັກຂອງທະນາຄານແລະພວກມັນກົງກັບທະນາຄານ DRAM.
- ເຄື່ອງທະນາຄານທີ່ໃຫ້ມາຈະຈັດການທະນາຄານ DRAM ດຽວໄດ້ທຸກເວລາ.
- ການມອບຫມາຍເຄື່ອງຈັກທະນາຄານແມ່ນແບບເຄື່ອນໄຫວດັ່ງນັ້ນມັນບໍ່ຈໍາເປັນຕ້ອງມີເຄື່ອງທະນາຄານສໍາລັບແຕ່ລະທະນາຄານທາງດ້ານຮ່າງກາຍ.
- ເຄື່ອງຈັກຂອງທະນາຄານສາມາດຕັ້ງຄ່າໄດ້, ແຕ່ມັນເປັນການແລກປ່ຽນລະຫວ່າງພື້ນທີ່ແລະການປະຕິບັດ.
- ຈໍານວນທີ່ອະນຸຍາດຂອງເຄື່ອງຈັກທະນາຄານແມ່ນຕັ້ງແຕ່ 2-8.
- ໂດຍຄ່າເລີ່ມຕົ້ນ, 4 ເຄື່ອງຈັກທະນາຄານຖືກຕັ້ງຄ່າຜ່ານພາລາມິເຕີ RTL.
- ເພື່ອປ່ຽນເຄື່ອງຈັກທະນາຄານ, ໃຫ້ພິຈາລະນາພາລາມິເຕີ nBANK_MACHS = 8 ທີ່ມີຢູ່ໃນ memc_ui_top Example ສໍາລັບ 8 ເຄື່ອງທະນາຄານ – 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 ເພື່ອນໍາໃຊ້ທະນາຄານທັງຫມົດແທນທີ່ຈະປ່ຽນແຖວ, ແກ້ໄຂຮູບແບບທີ່ຢູ່ເພື່ອປ່ຽນທະນາຄານຕາມຮູບຂ້າງລຸ່ມນີ້.
ອັນນີ້ເທົ່າກັບການຕັ້ງຄ່າ 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 bytes, ຫຼືພິຈາລະນາການໂຫຼດຫນ້າຈໍຄືນຄູ່ມື.
ໝາຍເຫດ: Xilinx ບໍ່ໄດ້ຊຸກຍູ້ໃຫ້ overpassing controller refresh ເນື່ອງຈາກພວກເຮົາບໍ່ແນ່ໃຈວ່າທ່ານຈະສາມາດຕອບສະຫນອງ Jedec auto refresh time ທີ່ມີຜົນຕໍ່ຄວາມຫນ້າເຊື່ອຖືຂອງຂໍ້ມູນ.
ຈາກຝ່າຍຄວບຄຸມທ່ານສາມາດປ່ຽນ 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%.
ໃຫ້ສັງເກດວ່າຕົວຄວບຄຸມ ½ ແລະ ¼ ມີຜົນກະທົບທາງລົບຕໍ່ປະສິດທິພາບເນື່ອງຈາກການ latencies ຂອງມັນ.
ຕົວຢ່າງample, ເນື່ອງຈາກວ່າພວກເຮົາສາມາດສົ່ງຄໍາສັ່ງພຽງແຕ່ທຸກໆ 4 ຮອບ CK ບາງຄັ້ງມີ padding ພິເສດໃນເວລາທີ່ຍຶດຫມັ້ນກັບຕໍາ່ສຸດທີ່ກໍານົດເວລາ DRAM, ເຊິ່ງສາມາດຫຼຸດລົງປະສິດທິພາບຈາກທິດສະດີ.
ລອງໃຊ້ຕົວຄວບຄຸມທີ່ແຕກຕ່າງກັນເພື່ອຊອກຫາຫນຶ່ງທີ່ເຫມາະສົມກັບຄວາມຕ້ອງການປະສິດທິພາບຂອງທ່ານ.
ເອກະສານອ້າງອີງ
- Zynq-7000 AP SoC ແລະ 7 Series FPGAs MIS v2.3 [UG586]
- Xilinx MIG Solution Center http://www.xilinx.com/support/answers/34243.html
ປະຫວັດການແກ້ໄຂ
ວັນທີ 13/03/2015 – ເປີດຕົວຄັ້ງທຳອິດ
ດາວໂຫຼດ PDF: ຄູ່ມືການປະເມີນປະສິດທິພາບ Xilinx DDR2 MIG 7