Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Запуск программы NIOS в SDRAM
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
RLC
Необходимо по включению питания модуля:
1) выполнить проверку SDRAM
2) запустится с SDRAM и работать. Программа должна лежать там же где и программа проверки SDRAM.
В качестве источника ПЗУ EPCS64
FPGA Cyclone III.
в EPCS ложится jic файл с содержимым друг за другом: sof, hex загрузчика, hex программы
в qsys есть sdram-controller(память и доступ к ней проверена и работает) epcs controller
NIOS reset на EPCS, extention на ONCHIP.
1) Запуск программы проверки по включению питания выполняется успешно. При этом поиск программы в EPCS всегда выводит адрес 0. и сама загрузка не происходит. Кто каким советом может помочь?
пользовался советами naliwator и http://juvf.narod.ru
BackEnd
Цитата(RLC @ Aug 4 2016, 15:21) *
При этом поиск программы в EPCS всегда выводит адрес 0. и сама загрузка не происходит.

Посмотрите на свою карту памяти.
Цитата(RLC @ Aug 4 2016, 15:21) *
Кто каким советом может помочь? пользовался советами naliwator и http://juvf.narod.ru

Скрины бы с настройками прикрепили, как в туториале.

RLC
Цитата(BackEnd @ Aug 4 2016, 22:59) *
Посмотрите на свою карту памяти.

Скрины бы с настройками прикрепили, как в туториале.

в карте памяти адрес на много больше чем 0 потому как по 0 лежит прошивка FPGA, потом программа с поисковиком, которая загружается и затем уже та которая должна раскручиваться в SDRAM.
карта памяти:
BLOCK START ADDRESS END ADDRESS

Page_0 0x00000000 0x00122F6B
MPVS_SW.hex 0x00122F6C 0x00125EC3
SOFTWARE.hex 0x00125EC4 0x0012819B
У меня возникла логичная мысль а правильно ли я доступ получаю к EPCS из NIOS. У меня частота NIOS 108МГц в EPCS работает до 40, кварц на 27. В итоге как это всё скомпановать не очень сразу ясно. куда надо низкую частоту подавать. Можно контроллер от 27 МГц запистать и поставить мост между контроллером и процессором который работает от 108?



vadimuzzz
Цитата
У меня возникла логичная мысль а правильно ли я доступ получаю к EPCS из NIOS. У меня частота NIOS 108МГц в EPCS работает до 40, кварц на 27. В итоге как это всё скомпановать не очень сразу ясно. куда надо низкую частоту подавать.

Не надо там низкую частоту подавать. Конроллер EPCS - это контроллер SPI + onchip-ram, сигналы на флешку генерируются с нужными таймингами.
BackEnd
Цитата(RLC @ Aug 5 2016, 07:14) *
У меня возникла логичная мысль а правильно ли я доступ получаю к EPCS из NIOS. У меня частота NIOS 108МГц в EPCS работает до 40, кварц на 27. В итоге как это всё скомпановать не очень сразу ясно. куда надо низкую частоту подавать. Можно контроллер от 27 МГц запистать и поставить мост между контроллером и процессором который работает от 108?

Бррр! Все манипуляции с частотами рекомендую выполнять через PLL, если это еще не сделано. Там все придумано для таких задач.
RLC
Цитата
Все манипуляции с частотами рекомендую выполнять через PLL, если это еще не сделано.

Частоты, понятное дело, через PLL. Дело в другом: я уже после своего последнего поста посмотрел проект на DE0-NANO Cyclone IV,где терасик представляет пример работы nios с epcs,sdram,i2c,etc. так вот процессор и sdram у них от 100 питается, а вот epcs от 50. И шина данный у Nios подключена к контроллерам через avalon-mm clock crossing bridge(наверняка вы знаете такой компонент qsys).Про это я и думал посом выше.
И всё равно не понятно ведь чтение из epcs максималкой в 40мгц возможно.
Цитата
Не надо там низкую частоту подавать. Конроллер EPCS - это контроллер SPI + onchip-ram, сигналы на флешку генерируются с нужными таймингами.

получается я могу подавать свои 108 мгц на контроллер epcs, с контроллера epcs на соотвествующий вывод и с него будет идти уже не 108 а 40- ?

Я сейчас на 27 мгц с кварца записал всю систему nios+ контроллеры и программа altera из примеров не заработала всё равно, зато когда сам с помощью их API обратился к EPCS то данные из флешки считал( правда надо ещё перевернуть их что бы было как в .rbf). Попробую теперь вернуться к 108 и использовать свою же прогу чтения.
BackEnd
Цитата(RLC @ Aug 5 2016, 15:17) *
получается я могу подавать свои 108 мгц на контроллер epcs, с контроллера epcs на соотвествующий вывод и с него будет идти уже не 108 а 40- ?

Как уже сказал vadimuzz, тайминги там будут такие, которые нужны для EPCS.
Если очень интересно, то смотрите доки на сами EPCS-ы и на FPGA.

Page 14.
https://www.altera.com/content/dam/altera-w...3_ciii51016.pdf

"The DCLK generated by the Cyclone III device family controls the entire configuration cycle and provides timing for the serial interface. Cyclone III device family uses a 40-MHz internal oscillator to generate DCLK. There are some variations in the internal oscillator frequency because of the process, voltage, and temperature conditions in Cyclone III device family. The internal oscillator is designed to ensure that its maximum frequency is guaranteed to meet the EPCS device specifications"

Попробуйте начать с самого простого проекта, а потом постепенно его усложнять.
vadimuzzz
Цитата(RLC @ Aug 5 2016, 21:17) *
получается я могу подавать свои 108 мгц на контроллер epcs?

Да, это все идет не дальше контрольных регистров и памяти. А из отладчика программа в SDRAM грузится?
RLC
Спасибо за ответы.
Цитата(vadimuzzz @ Aug 6 2016, 04:13) *
Да, это все идет не дальше контрольных регистров и памяти. А из отладчика программа в SDRAM грузится?

Скажу больше: я по включении питания без NIOS eds получаю сообщение от программы которая раскручивается в sdram(hello word). НО тк перед работой программы в sdram её(sdram) надо проверить, то сначала запускается расширенный загрузчик который проверяет sdram, копирует основную программу, и потом уже делает jump на основную программу. Вот в копировании данных из epcs у меня проблемы и возникли. С sdarm всё более менее (во всяком случае на одном модуле). На 108 мгц данные вычитываю из epcs. Теперь буду разбираться как опознать программу в флешке и её копирование в sdram. Жаль что сразу не запускается проект alterы( "из коробки" так сказать).
Пока что проблем нет, есть только задачи. Всем спасибо за участие =)
RLC
Обновляю тему:
Другой модуль, задачи у него почти как близнецы с отличием что SDRAM 16 разрядная.
Перенес проект, запустился из ONCHIP_RAM из среды для проверки правильности подключения контроллера и тестирования памяти. Протестировал 1 Мб разными значениями и после этого решил из среды запустится в SDRAMe-результат отрицательный. При загрузке вылетает ошибка(см рисунок). Прикрепляю картинки с QSYS проектом и настройками процессора. так как запись-чтение в SDRAM работает то в чём может быть дело? Ошибка между 0 и 0x68FB что это за ошибка. не информативно. Не ясно что не работает, что не так сделано?
vadimuzzz
Цитата
Ошибка между 0 и 0x68FB что это за ошибка. не информативно. Не ясно что не работает, что не так сделано?

Прочитанное содержимое не сходится с записанным. Это м.б. из-за кривых констрейнов на I/O.
RLC
Ситуация разрешилась. Дело было в том что по документации стояла флешка с быстродействием выше чем та которая была напаяна(изменил настройки контроллера SDRAM)+ понизил и сдвинул частоту на PLL с 108 на 81, сдвиг на -60 , было +90. Хотя при старых настройках всё таки читались и записывались данные в пределах первого мегабайта.
Спасибо тебе за ответ vadimuzzz.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.