Xilinx DDR2 MIG 7 гүйцэтгэлийн үнэлгээний гарын авлага
Чухал тэмдэглэл: Энэхүү хариултын PDF файлыг татаж авах боломжтой, унших боломжтой болгох үүднээс өгсөн болно. Хариултын бүртгэл нь гэдгийг анхаарах нь чухал Web-шинэ мэдээлэл гарах тусам байнга шинэчлэгддэг контентууд. Та Xilinx техникийн дэмжлэгт зочлохыг сануулж байна Webсайт болон дахинview (Xilinx Answer 63234) энэ хариултын хамгийн сүүлийн хувилбар.
Танилцуулга
DDR2 болон DDR3 санах ойг зохион бүтээсэн, MIG 7 цувралын хянагчийг зохион бүтээсэн учраас гүйцэтгэл нь шууд урагшлахгүй байна.
Энэ нь Jedec Timing-ийн янз бүрийн параметрүүд болон хянагчийн архитектурын талаархи ойлголтыг шаарддаг бөгөөд та тооцооллыг авахын тулд симуляци хийх шаардлагатай болно.
Гүйцэтгэлийг тодорхойлох ерөнхий зарчим нь ижил боловч энэ баримт бичиг нь MIG ex-ийг ашиглан үр ашгийг олж авах хялбар аргыг өгдөгample дизайн тестийн вандан болон өдөөгч тусламжтайгаар 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 design Синтез хийх боломжтой туршилтын вандан бүхий загварчлал
Симуляцийн тохиргоо хэсгээс QuestaSim/ModelSim Simulator-ийг сонгоод эмхэтгэсэн номын сангуудын байршлыг нээнэ үү.
Гуравдагч талын хэрэгслүүдийг суулгах замыг зааж өгөх, зорилтот симулятор сонгох, номын санг эмхэтгэх, зураглах талаар дэлгэрэнгүй мэдээлэл авахыг хүсвэл (UG900) Vivado Design Suite хэрэглэгчийн гарын авлага логик симуляциас лавлана уу.
GUI-ээр дамжуулан симуляцийг ажиллуул (Төслийн менежер дэх Run Simulation таб дээр дарна уу) ба хуулбараас "туршилтыг давсан" гэсэн мессежийг харна уу.
Гүйцэтгэлийн симуляцийн RTL өөрчлөлтүүд
- Эх сурвалжийн таб дээр хулганы баруун товчийг дараад "симуляцийн эх сурвалж нэмэх эсвэл үүсгэх" гэснийг сонгоод mig7_perfsim_traffic_generator.sv руу очно уу. file Үүнийг нэмэхийн тулд дуусгах товчийг дарна уу.
- Эх сурвалжийн таб дээр хулганы баруун товчийг дараад, "симуляцийн эх сурвалж нэмэх эсвэл үүсгэх" -ийг сонгоод, perfsim_stimulus.txt руу ороод дуусгах дээр дарна уу.
- Эксийгээ тайлбарлаарайampsim_tb_top.v дахь le_top instantiation 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_өгөгдлийн_харьцуулах_алдаа;
- утас ui_clk;
- утас ui_clk_sync_rst;
- утас app_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 clocking, controller, ip_top,phy болон UI хавтсанд байна.
- RTL-ийн өөрчлөлт болон шаардлагатай бүх зүйл хийгдсэний дараа files нь таны симуляцийн эх сурвалжид нэмэгдсэн бол шатлал нь Зураг 5-тай төстэй байх ёстой.
The 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 санах ойн цагийн дөрвөн циклийг авдаг
- Өдөөлтийн_төгсгөл гэдэг нь бүх командыг гүйцэтгэх хугацаа юм.
- calib_done нь шалгалт тохируулга хийгдсэн цаг юм.
Example Patterns
Эдгээр өмнөх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 ex-ийг дуусгасанampдизайны загварчлал. Энэ нь таны симуляцийн тохиргоо бэлэн болсон, та гүйцэтгэлийн симуляцын RTL өөрчлөлтийг хийсэн, шинэ симуляцийн шатлал зөв, өдөөлтийн хэв маягийг ойлгосон гэсэн үг юм. Simulation-ийг 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 bus utilization is ony 29. Ижил IP тохиргоотой симуляцийг дахин ажиллуулаарай, гэхдээ зүгээр л өдөөгчийг өөрчил. file 256 бичиж, 256 уншсан байна
ff_0_0_0000_000_0
ff_0_0_0000_000_1
Та одоо хувь хэмжээг харах болноtage as 85, энэ нь DDR3 нь бичих болон унших тасралтуудын урт дараалалд автобусны ашиглалтыг илүү сайн санал болгодог гэсэн үг юм.
Гүйцэтгэлийг сайжруулах ерөнхий арга замууд
Үр ашигт нөлөөлөх хүчин зүйлсийг хоёр бүлэгт хувааж болно.
- Санах ойн тусгай
- Тодорхой хянагч
9-р зураг нь танд давуу талыг өгч байнаview санах ойд хамаарах нэр томъёоны .
SRAM болон Block Memories-ээс ялгаатай нь DDR2 эсвэл DDR3 гүйцэтгэл нь зөвхөн өгөгдлийн дээд хурд биш юм.
Энэ нь цаг хугацааны олон хүчин зүйлээс хамаардаг, үүнд:
- tRCD: Мөрийн командын саатал (эсвэл ras-ээс cas-ийн саатал).
- tCAS(CL): Баганын хаягийн strobe хоцролт.
- 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 нэмэлт Refresh командыг урьдчилан гаргаж болно ("татах"). Энэ нь сэргээх тоог бууруулдаггүй ч эргэн тойрны хоёр Refresh командын хоорондох хамгийн их интервал нь 9 × tREFI-ээр хязгаарлагддаг.
- Бүх банкуудыг ашиглах - Тохиромжтой хаягийн механизмыг ашиглах нь зүйтэй.
- Мөр-Багана-Багана: Дараалсан хаягийн орон зайд хийгдсэн гүйлгээний хувьд одоогийн мөрийн төгсгөлд хүрэх үед гүйлгээг үргэлжлүүлэхийн тулд гол нь DRAM төхөөрөмжийн дараагийн банкинд ижил мөрийг автоматаар нээж өгдөг. Энэ нь том өгөгдлийн пакетуудыг дараалсан хаягийн байршилд хүргэх шаардлагатай програмуудад тохиромжтой.
- Мөр-багана: Эгнээний хилийг давах үед одоогийн мөр хаагдаж, нэг эрэг дотор өөр эгнээ нээгдэнэ. MSB нь банкны хаяг бөгөөд өөр өөр банкнаас шилжих боломжтой. Энэ нь санах ойн нэг блок руу хэсэг хугацаанд богино, санамсаргүй гүйлгээ хийх, дараа нь өөр блок (банк) руу шилжихэд тохиромжтой.
- Тэсрэлтийн урт
- BL 8-ийг 3 цуврал дээрх DDR7-д дэмждэг. BC4 нь маш бага үр ашигтай буюу 50% -иас бага байна. Учир нь BC4-ийн гүйцэтгэлийн хугацаа нь BL8-тай ижил байдаг. Бүрэлдэхүүн хэсэг дотор өгөгдөл нь зүгээр л далдлагдсан байдаг.
- Хэрэв та бүрэн тэсрэлт бичихийг хүсэхгүй байгаа тохиолдолд өгөгдлийн маск эсвэл уншсаны дараа бичих сонголтыг авч үзэж болно.
- Зөв ZQ интервалыг тохируулах (Зөвхөн DDR3)
Хянагч нь ZQ Short (ZQCS) болон ZQ Long (ZQCL) шалгалт тохируулгын командуудыг хоёуланг нь илгээдэг.- DDR3 Jedec стандартыг дагаж мөрдөөрэй
- ZQ шалгалт тохируулгын талаар JEDEC Spec JESD5.5-79 DDR3 SDRAM стандартын 3-д хэлэлцсэн болно.
- ZQ Calibration нь VT-ийн өөрчлөлтийг тооцоолохын тулд тогтмол давтамжтайгаар On Die Termination (ODT) тохируулга хийдэг.
- Логик нь bank_common.v/vhd-д агуулагддаг
- Tzqcs параметр нь ZQ Calibration командыг санах ой руу илгээх хурдыг тодорхойлдог
- t тоологчийг идэвхгүй болгож, app_zq_req ашиглан гараар илгээх боломжтой бөгөөд энэ нь гараар Refresh илгээхтэй адил юм.
Дэлгэрэнгүйг (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 өгөгдлийн тэсрэлттэй тэнцүү тул өмнөх хувилбарыг дахин ажиллуул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 цуврал FPGA MIS v2.3 [UG586]
- Xilinx MIG шийдлийн төв http://www.xilinx.com/support/answers/34243.html
Хяналтын түүх
13/03/2015 - Анхны хувилбар
PDF татаж авах: Xilinx DDR2 MIG 7 гүйцэтгэлийн үнэлгээний гарын авлага