Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ошибки чтения ОЗУ Cyclone-3
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
MisterDi
Отлаживаю свой вариант прошивки для осциллографа Вей-Куна (www.ourdev.cn) и столкнулся с непонятным для меня эффектом. При подаче а вход синусоидального сигнала с частотой 1МГц от генератора Hantec DSO-8060 на экране наблюдаю разрывы картинки (error.gif). Если частоту генератора изменить в небольших пределах, картинка становиться нормальной (normal.gif). Еще больше меня смущает факт, что при введении задержки в цикл чтения буферного ОЗУ количество разрывов на картинке увеличивается. Signal-Tap показывает нормальное формирование адресов чтения и записи.
TimeQuest все клоки видит и в рабочем диапазоне температур слаков не выдает.
В связи с изложенным вопрос: что происходит в системе? и как с этим можно бороться.
Builder
Цитата(MisterDi @ Mar 22 2012, 22:32) *
TimeQuest все клоки видит и в рабочем диапазоне температур слаков не выдает.
В связи с изложенным вопрос: что происходит в системе? и как с этим можно бороться.
Вы уверены что в TimeQuest всё описали? Кроме клоков наружные времена не забыли описать?
Ине совсем понятно что и как подаётся, на выходе DAС стоит, а на входе импульсы?

добавил: 99.999% что или некорректно описали переходы между временными доменами или времянка не коректно и не полно задана.
MisterDi
Цитата(Builder @ Mar 23 2012, 14:05) *
Вы уверены что в TimeQuest всё описали? Кроме клоков наружные времена не забыли описать?
Ине совсем понятно что и как подаётся, на выходе DAС стоит, а на входе импульсы?

Сигнал на вход подается от генератора а на экране моего девайса синус рисуется с разрывами. Такое впечатление будто "проскальзывает" счетчик адреса чтения или записи. Больше похоже на ошибку чтения, т.к. "разрыв" смещает картинку на 16 точек назад и смещение достоточно велико.
Цитата
добавил: 99.999% что или некорректно описали переходы между временными доменами или времянка не коректно и не полно задана.

структура проекта:
- Двухпортовое ОЗУ на 16К байт
- На один порт подключен счетчик семплов на линии адреса и АЦП AD9283 на данные.
- На второй порт - НИОС-процессор через PIO
- Управление счетчиком семплов - PIO
- Программа НИОСа храниться во внешнем SDRAM c тактовой частотой 100МГц кэш команд - 2К кэша данных нет.

Возможно я не прав но мне кажеться что временные домены в этом случае полностью разделены. Запись в ОЗУ семплов тактируется отдельно, чтение из ОЗУ тактируется тем же источником, что и НИОС-процессор.

В оригинальном проекте никаких констрейнов по входам нет, впрочем как и по остальным выводам.
Попробую добавить ограничения по входам. О результатах сообщу.
Timmy
Возможно, значение счётчика сэмплов или ещё чего-нибудь из входного клок домена передаётся в НИОСовский без промежуточного преобразования в код Грея, и от этого глюки.
MisterDi
Цитата
передаётся в НИОСовский без промежуточного преобразования в код Грея,

Впервые слышу про необходимость преобразования в код Грея. Где про это можно прочитать по-подробнее?
Насколько я понимаю это преобразование призвано уменьшить переходные процессы на шине при переключении?

Передача данных из буфера семплов в основную память выполняется через порты ввода-вывода:
Код
// read data to memory
      IOWR_ALTERA_AVALON_PIO_DATA(MEM_RD_BASE, 1);
      for(j=addr_offset;j<addr_offset+(2*trig_point);j++)
        {
         IOWR_ALTERA_AVALON_PIO_DATA(MEM_ADDR_BASE, j);
//         delay_us(1);
         mem_data[j-addr_offset]=IORD_ALTERA_AVALON_PIO_DATA(MEM_DATA_IN_BASE);
        }
      IOWR_ALTERA_AVALON_PIO_DATA(MEM_RD_BASE, 0);
alexadmin
глупость ляпнул, стер...

По виду похоже, что входной счетчик не с нуля в память писать начинает либо логика счетчиков записи и считывания не стыкуется...
Timmy
Цитата(MisterDi @ Mar 26 2012, 21:16) *
Впервые слышу про необходимость преобразования в код Грея. Где про это можно прочитать по-подробнее?
Насколько я понимаю это преобразование призвано уменьшить переходные процессы на шине при переключении?

Код Грея используется, например, в DC FIFO для быстрой передачи последовательно меняющихся счётчиков между асинхронными клок доменами. Если у вас клок чтения данных АЦП асинхронный относительно Авалона, тоже нужно что-то подобное.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.