Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Миграция DDR контроллера c plb3.4 в plb4.6 в V4
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
KostyanPro
Пересел с EDK8.2 на EDK9.2i.01 . Проточил документ "PLB v3.4 and OPB to PLB v4.6 System and Core Migration User Guide". Успешно портировать удалось всю перефирию , кроме контроллера DDR. изначально был plb.ddr v1.11a , перевел на mpmc 3.00а. Программа виснет при обращении к памяти типа
Код
*addr = data

проц ppc405 v 2.00a
память две микрухи IS43R16160a-6T (шина адресса общая, 0..15 data - первая , 16..31 data вторая)

В итоге было
Код
BEGIN plb_ddr
PARAMETER INSTANCE = DDR_SDRAM_16Mx32
PARAMETER HW_VER = 1.11.a
PARAMETER C_PLB_CLK_PERIOD_PS = 10000
PARAMETER C_INCLUDE_BURST_CACHELN_SUPPORT = 1
PARAMETER C_REG_DIMM = 0
PARAMETER C_DDR_TMRD = 20000
PARAMETER C_DDR_TWR = 20000
PARAMETER C_DDR_TRAS = 60000
PARAMETER C_DDR_TRC = 90000
PARAMETER C_DDR_TRFC = 80000
PARAMETER C_DDR_TRCD = 30000
PARAMETER C_DDR_TRRD = 15000
PARAMETER C_DDR_TRP = 30000
PARAMETER C_DDR_TREFC = 70300000
PARAMETER C_DDR_TREFI = 7800000
PARAMETER C_DDR_AWIDTH = 13
PARAMETER C_DDR_COL_AWIDTH = 9
PARAMETER C_DDR_BANK_AWIDTH = 2
PARAMETER C_DDR_DWIDTH = 32
PARAMETER C_MEM0_BASEADDR = 0x00000000
PARAMETER C_MEM0_HIGHADDR = 0x03ffffff
BUS_INTERFACE SPLB = plb
PORT PLB_Clk = sys_clk_s
PORT DDR_Addr = fpga_0_DDR_SDRAM_16Mx32_DDR_Addr
PORT DDR_BankAddr = fpga_0_DDR_SDRAM_16Mx32_DDR_BankAddr
PORT DDR_CASn = fpga_0_DDR_SDRAM_16Mx32_DDR_CASn
PORT DDR_CKE = fpga_0_DDR_SDRAM_16Mx32_DDR_CKE
PORT DDR_CSn = fpga_0_DDR_SDRAM_16Mx32_DDR_CSn
PORT DDR_RASn = fpga_0_DDR_SDRAM_16Mx32_DDR_RASn
PORT DDR_WEn = fpga_0_DDR_SDRAM_16Mx32_DDR_WEn
PORT DDR_DM = fpga_0_DDR_SDRAM_16Mx32_DDR_DM
PORT DDR_DQS = fpga_0_DDR_SDRAM_16Mx32_DDR_DQS
PORT DDR_DQ = fpga_0_DDR_SDRAM_16Mx32_DDR_DQ
PORT DDR_Clk = fpga_0_DDR_SDRAM_16Mx32_DDR_Clk
PORT DDR_Clkn = fpga_0_DDR_SDRAM_16Mx32_DDR_Clkn
PORT Clk90_in = clk_90_s
PORT Clk90_in_n = clk_90_n_s
PORT PLB_Clk_n = sys_clk_n_s
# clk feedback shifted 90
PORT DDR_Clk90_in = internal_feedback
# not
PORT DDR_Clk90_in_n = internal_feedback_n
END

Стало
Код
BEGIN mpmc
PARAMETER INSTANCE = DDR_SDRAM_16Mx32
PARAMETER HW_VER = 3.00.a
PARAMETER C_MEM_PARTNO = CUSTOM
PARAMETER C_NUM_IDELAYCTRL = 2
PARAMETER C_IDELAYCTRL_LOC = IDELAYCTRL_X0Y3-IDELAYCTRL_X0Y2
PARAMETER C_MEM_CLK_WIDTH = 1
PARAMETER C_MEM_TYPE = DDR
PARAMETER C_MEM_CS_N_WIDTH = 1
PARAMETER C_MPMC_CLK0_PERIOD_PS = 10000
PARAMETER C_MPMC_HIGHADDR = 0x03FFFFFF
PARAMETER C_MEM_DATA_WIDTH = 32
PARAMETER C_MPMC_BASEADDR = 0x00000000
PARAMETER C_PIM1_BASETYPE = 2
PARAMETER C_NUM_PORTS = 2
PARAMETER C_MEM_PART_DATA_WIDTH = 16
PARAMETER C_MEM_PART_CAS_A_FMAX = 133
PARAMETER C_MEM_PART_CAS_A = 2
PARAMETER C_MEM_PART_TRAS = 60000
PARAMETER C_MEM_PART_TRASMAX = 120000000
PARAMETER C_MEM_PART_TRC = 90000
PARAMETER C_MEM_PART_CAS_B_FMAX = 143
PARAMETER C_MEM_PART_CAS_B = 2
PARAMETER C_MEM_PART_TWR = 20000
PARAMETER C_MEM_PART_TRRD = 15000
PARAMETER C_MEM_PART_TRCD = 30000
PARAMETER C_MEM_PART_TREFI = 7800000
PARAMETER C_MEM_PART_TRFC = 80000
PARAMETER C_MEM_PART_TRP = 30000
BUS_INTERFACE SPLB0 = ppc405_0_iplb1
BUS_INTERFACE SPLB1 = ppc405_0_dplb1
PORT DDR_Addr = fpga_0_DDR_SDRAM_16Mx32_DDR_Addr
PORT DDR_BankAddr = fpga_0_DDR_SDRAM_16Mx32_DDR_BankAddr
PORT DDR_CAS_n = fpga_0_DDR_SDRAM_16Mx32_DDR_CAS_n
PORT DDR_CE = fpga_0_DDR_SDRAM_16Mx32_DDR_CE
PORT DDR_CS_n = fpga_0_DDR_SDRAM_16Mx32_DDR_CS_n
PORT DDR_RAS_n = fpga_0_DDR_SDRAM_16Mx32_DDR_RAS_n
PORT DDR_WE_n = fpga_0_DDR_SDRAM_16Mx32_DDR_WE_n
PORT DDR_DM = fpga_0_DDR_SDRAM_16Mx32_DDR_DM
PORT DDR_DQS = fpga_0_DDR_SDRAM_16Mx32_DDR_DQS
PORT DDR_DQ = fpga_0_DDR_SDRAM_16Mx32_DDR_DQ
PORT DDR_Clk = fpga_0_DDR_SDRAM_16Mx32_DDR_Clk
PORT DDR_Clk_n = fpga_0_DDR_SDRAM_16Mx32_DDR_Clk_n
PORT MPMC_Clk0 = sys_clk_s
PORT MPMC_Clk90 = DDR_SDRAM_16Mx32_mpmc_clk_90_s
PORT MPMC_Clk_200MHz = clk_200mhz_s
PORT MPMC_Rst = sys_bus_reset
END

Пробывал задавать времянки вточ с datasheet , затем с запасом и менять память в mpmc c custom на HYB25D256160BT-7 (по параметрам они похожи).


Да вот чувствую что где-то что - то упустил из виду. Гляньте пожалуйста свежим взлядом и найдите ошибку.
Так как опыта работы с DDR нету , посоветуйте также алгоритм поиска неисправности.
avesat
Если уже и переходить то сразу на 10.1 версию, когда-то поколупался в EDK9.2, не понравились что некоторые баги ксилинкс пообещал исправить только в 10-й версии. А по теме
1) попробуйте кинуть в папку pcores старую корку т.к не всегда новые нормально портируются
2) у нас попробовали собрать старый sw проект на десятке, оказалось что они чето поменяли в обработке прерываний wacko.gif возможно работа с памятью тоже по другому стала, индусы одним словом, захотели все перекроили, а ты сиди потом разгребай.
Удачи.
KostyanPro
Цитата(avesat @ May 21 2008, 21:17) *
1) попробуйте кинуть в папку pcores старую корку т.к не всегда новые нормально портируются

хм.. надо попробывать smile.gif

Цитата
Удачи.

Обнадеживающие biggrin.gif . Пасиб.
KostyanPro
Цитата(avesat @ May 21 2008, 21:17) *
1) попробуйте кинуть в папку pcores старую корку т.к не всегда новые нормально портируются

Что то EDK ее не видет.
Алгоритм следующий.
1. Копирую IP c \edk\hw\x...iplib\plb_ddr в myproject\pcores
2. делаю в EDK rescan user repository
3. в списке IP корка не появляется
avesat
Видит, только молчит. Либо откажитесь от обновлении корки при апдейте вначале, либо исправьте *.mhs
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.