|
Помогите настроить память, H57V1262GTR-75С |
|
|
|
Nov 18 2015, 06:40
|
Частый гость
 
Группа: Участник
Сообщений: 135
Регистрация: 9-09-11
Пользователь №: 67 084

|
Друзья, такой затык: Есть кит DVK600, а к нему платка с чипом H57V1262GTR-75С. Не получается полностью завести память из-под ниос. Если нужно, могу выложить проект. Собираю систему в Qsys, клок - 50МГц, констрейны кроме derive_pll_clocks и create_clock 50МГц никакие не заданы:
Далее собираю дефолтный проект simple memory test в ниосе:
При тестировании получаю ошибку:
Вычисления показывают, что работает лишь один банк из 4-х. Из даташита на память мне непонятно какие тайминги нужно задавать в настройках ядра в Qsys и удовлетворяют ли заданные там по умолчанию. И еще - как корректно законстрейнить память?
|
|
|
|
|
 |
Ответов
(1 - 6)
|
Nov 18 2015, 12:07
|
Участник

Группа: Участник
Сообщений: 15
Регистрация: 20-07-12
Пользователь №: 72 840

|
Почему конечный адрес получился 1FF_FFFF, а не 7A1 2000- это как раз и будет 128Mbit Второй вопрос почему на втором скрине в конце получилось 256? и еще по даташиту Row Address: RA0 ~ RA11, Column Address: CA0 ~ CA8 Auto-precharge flag: A10
т.е ROW = 12 Column = 9
У вас даже один банк полностью не заполнился. т.к один банк = 32Mbit, а заполнился на 8Mbit. И по идее тайминги wizzard выставляет сам
|
|
|
|
|
Nov 18 2015, 12:51
|
Частый гость
 
Группа: Участник
Сообщений: 135
Регистрация: 9-09-11
Пользователь №: 67 084

|
Цитата(lait33 @ Nov 18 2015, 15:07)  Почему конечный адрес получился 1FF_FFFF, а не 7A1 2000- это как раз и будет 128Mbit 1. А precharge flag не учавствует в формировании адреса? Зачем тогда его включают в адресную шину? Исправил:
Область памяти теперь получилась размером в 16Мбит. Не понимаю почему - ведь в настройках корки указано 128Мбит... Правильно ли я рассчитываю: 16 бит данных * 2^(12 бит адреса - 1 бит на precharge_flag) * 4 банка = 128 Мбит. Верно же?
Цитата(lait33 @ Nov 18 2015, 15:07)  У вас даже один банк полностью не заполнился. т.к один банк = 32Mbit, а заполнился на 8Mbit. И по идее тайминги wizzard выставляет сам Зато мемтест на этой короткой области памяти заработал:
|
|
|
|
|
Nov 18 2015, 13:26
|
Участник

Группа: Участник
Сообщений: 15
Регистрация: 20-07-12
Пользователь №: 72 840

|
QUOTE (ilkz @ Nov 18 2015, 15:51)  Область памяти теперь получилась размером в 16Мбит. Не понимаю почему - ведь в настройках корки указано 128Мбит... Правильно ли я рассчитываю: 16 бит данных * 2^(12 бит адреса - 1 бит на precharge_flag) * 4 банка = 128 Мбит. Верно же?
 ну судя по функциональной схеме из даташита 2M*16*4 банка = 128 я с такой памятью ни разу не работал, а толкьо с ddr3 и толкьо с Xilinx, но если предположить, что они схожи,то ,как я знаю в ддр3, записывают данные байтами и получается, что 12бит адреса = 4 095 байт т.е =32 760 бит, а значит 16*32000*4 банка = 128Mb и получается, что вы все верно рассчитали) а если мы добавим еще 13-ый бит адреса, то получится в два раза больше, а память-то на 128... И еще у вас конечный адрес = FF FFFF - это и есть равно 16 Мбит, а должно быть = 7A1 2000 . у xilinxa есть функция обновить адресное пространство, возможно и у alter-ы есть что-то подобно или попробуйте вручную исправить
Сообщение отредактировал lait33 - Nov 18 2015, 13:36
|
|
|
|
|
Nov 19 2015, 06:48
|
Частый гость
 
Группа: Участник
Сообщений: 135
Регистрация: 9-09-11
Пользователь №: 67 084

|
Цитата(lait33 @ Nov 18 2015, 16:26)  ну судя по функциональной схеме из даташита 2M*16*4 банка = 128 12бит адреса = 4 095 байт т.е =32 760 бит, а значит 16*32000*4 банка = 128Mb и получается, что вы все верно рассчитали) а если мы добавим еще 13-ый бит адреса, то получится в два раза больше, а память-то на 128...
у вас конечный адрес = FF FFFF - это и есть равно 16 Мбит, а должно быть = 7A1 2000 Все заработало и почти все было корректно. Смотрим в даташит: H57V1262GTR series is organized as 4banks of 2,097,152 x 16, т.е. 134,217,728 бит => 16,777,216 байт. Теперь смотрим в QSys: конечный адрес равен 0xFF_FFFF, что как раз равно 16,777,216 байт. Адресуются же байты, а не биты. Видимо, вчера меня хорошенько переклинило :-). Таким образом, вся моя ошибка была лишь в неправильном задании ширины адресной шины в контроллере SDRAM. lait33, спасибо за помощь!
Сообщение отредактировал ilkz - Nov 19 2015, 06:49
|
|
|
|
|
Nov 20 2015, 11:27
|
Участник

Группа: Участник
Сообщений: 15
Регистрация: 20-07-12
Пользователь №: 72 840

|
не за что, а ROW и Column. вы какие значения вставили? ROW = 12 Column = 9 или ROW = 13 Column = 9?
|
|
|
|
|
Nov 20 2015, 12:13
|
Частый гость
 
Группа: Участник
Сообщений: 135
Регистрация: 9-09-11
Пользователь №: 67 084

|
Row=12, Col=9. Теперь возникла следующая проблема: Если процессору указать Reset vector на SDRAM, то NIOS не заливается: Downloading ELF Process failed. При заливке с ошибкой получается вот это: Код Using cable "USB-Blaster [USB-0]", device 1, instance 0x00 Resetting and pausing target processor: OK Reading System ID at address 0x0200A060: ID value was not verified: value was not specified Timestamp value was not verified: value was not specified Initializing CPU cache (if present) OK
Downloading 01000000 ( 0%) Downloading 01001560 (95%) Downloaded 6KB in 0.0s
Verifying 01000000 ( 0%) Verify failed between address 0x1000000 and 0x1001463 Leaving target processor paused Настройки системы:
При этом, если указать старт из Onchip RAM, то стартует нормально. Что это может быть? Может из-за того что память 16-битная? Убрал Clock Bridge - заработало. Видимо, разваливались тайминги. А что разве Qsys не умеет автоматом генерить констрейны для своих модулей?
Сообщение отредактировал ilkz - Nov 20 2015, 11:37
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|