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

 
 
> Cyclone3, DDR2 и АЦП, Проблема
djhall
сообщение Aug 2 2013, 09:03
Сообщение #1


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

Группа: Свой
Сообщений: 168
Регистрация: 29-04-06
Пользователь №: 16 608



Здравствуйте,
возникла у меня довольно странная проблема.
Есть плата собственного производства, на ней установлены Cyclone3, память DDR2 и АЦП. Задача - по нажатию кнопки в программе на компьютере сохранить данные от АЦП в памяти и затем передать их в компьютер. Это реализовано с использованием прямого доступа к памяти и FIFO. Работает хорошо, но сделано это было в Quartus 9.0 и Nios IDE, т.е. без eclipse.
Сейчас использую Quartus 12.1sp1. Открываю старый проект перегенерю систему в SOPC Builder, компелирую в Quartus, компелирую программу в Eclipse, прошиваю - не работает. А точнее всё запускается, програма переходит в нужную подпрограмму и зависает в ожидании окончания DMA.
Причём проделал такой эксперимент взял старый старые и новые .sof и .elf и попытался перекомбинировать старое с новым, чтобы понять где ошибка (т.к. базовые адреса в SOPC не менялись я подумал, что так можно делать). Результат - хорошо работает только старые .sof и .elf любые другие комбинации работаю плохо и либо зависают при первом же нажатии на кнопку получения данных или через короткое время.

В чём может быть проблемма? Может какие нибудь особенности нового Quartus или Eclipse и они как-то по другому компилируют?

P.S. Т.е. получается, что на старой прошивке ПЛИС новая программа работает плохо. Т.е. дело в компиляторе программы. Хотя это тоже очень странно ведь программа только инициализирует DMA и запускает приём данных, а далее данные записываются в память минуя процессор. Так почему же он зависает ведь прошивка старая - работающая?

Сообщение отредактировал djhall - Aug 2 2013, 10:03
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
djhall
сообщение Aug 2 2013, 10:58
Сообщение #2


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

Группа: Свой
Сообщений: 168
Регистрация: 29-04-06
Пользователь №: 16 608



Да, видимо это возможно, но при сборке системы с нуля для 12.1sp1 всё работает ещё хуже. Может быть действительно изменильсь сами компоненты dma, контроллер ddr памяти и clock crossing и теперь такая конфигурация не работает или работает не так как я ожидаю. Видимо придётся делать пробные прошивки и тестировать пропускную способность всей системы.
Вообще-то я использую Memory-Mapped интерфейс для получения данных от быстродействующего АЦП. Данные записываются в FIFO и затем DMA считывает их оттуда и распределяет в памяти. Причём DMA и память работают на разных частотах и между ними стоит clock crossing. Может какое-то конкурирующее устройство на шине мешает передачи и FIFO переполняется. Может так делать неправильно и нужно использовать Streaming? Для этого нужно использовать SG-DMA, а я его как-то не очень люблю из-за того, что он не может передать 65536 байт за раз. Да и поможет ли это?
Go to the top of the page
 
+Quote Post



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

 


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


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