реклама на сайте
подробности

 
 
> Помогите настроить память, H57V1262GTR-75С
ilkz
сообщение Nov 18 2015, 06:40
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 9-09-11
Пользователь №: 67 084



Друзья, такой затык:
Есть кит DVK600, а к нему платка с чипом H57V1262GTR-75С. Не получается полностью завести память из-под ниос. Если нужно, могу выложить проект.

Собираю систему в Qsys, клок - 50МГц, констрейны кроме derive_pll_clocks и create_clock 50МГц никакие не заданы:
Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение


Далее собираю дефолтный проект simple memory test в ниосе:
Прикрепленное изображение


При тестировании получаю ошибку:

Прикрепленное изображение


Вычисления показывают, что работает лишь один банк из 4-х.
Из даташита на память мне непонятно какие тайминги нужно задавать в настройках ядра в Qsys и удовлетворяют ли заданные там по умолчанию.
И еще - как корректно законстрейнить память?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 6)
lait33
сообщение Nov 18 2015, 12:07
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 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 выставляет сам
Go to the top of the page
 
+Quote Post
ilkz
сообщение Nov 18 2015, 12:51
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 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 выставляет сам


Зато мемтест на этой короткой области памяти заработал:
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
lait33
сообщение Nov 18 2015, 13:26
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
ilkz
сообщение Nov 19 2015, 06:48
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
lait33
сообщение Nov 20 2015, 11:27
Сообщение #6


Участник
*

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



не за что, а ROW и Column. вы какие значения вставили? ROW = 12 Column = 9 или ROW = 13 Column = 9?
Go to the top of the page
 
+Quote Post
ilkz
сообщение Nov 20 2015, 12:13
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 07:12
Рейтинг@Mail.ru


Страница сгенерированна за 0.0141 секунд с 7
ELECTRONIX ©2004-2016