Перейти к содержанию
    

Ошибки чтения ОЗУ Cyclone-3

Отлаживаю свой вариант прошивки для осциллографа Вей-Куна (www.ourdev.cn) и столкнулся с непонятным для меня эффектом. При подаче а вход синусоидального сигнала с частотой 1МГц от генератора Hantec DSO-8060 на экране наблюдаю разрывы картинки (error.gif). Если частоту генератора изменить в небольших пределах, картинка становиться нормальной (normal.gif). Еще больше меня смущает факт, что при введении задержки в цикл чтения буферного ОЗУ количество разрывов на картинке увеличивается. Signal-Tap показывает нормальное формирование адресов чтения и записи.

TimeQuest все клоки видит и в рабочем диапазоне температур слаков не выдает.

В связи с изложенным вопрос: что происходит в системе? и как с этим можно бороться.

post-41263-1332444757_thumb.png

post-41263-1332444770_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

TimeQuest все клоки видит и в рабочем диапазоне температур слаков не выдает.

В связи с изложенным вопрос: что происходит в системе? и как с этим можно бороться.

Вы уверены что в TimeQuest всё описали? Кроме клоков наружные времена не забыли описать?

Ине совсем понятно что и как подаётся, на выходе DAС стоит, а на входе импульсы?

 

добавил: 99.999% что или некорректно описали переходы между временными доменами или времянка не коректно и не полно задана.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы уверены что в TimeQuest всё описали? Кроме клоков наружные времена не забыли описать?

Ине совсем понятно что и как подаётся, на выходе DAС стоит, а на входе импульсы?

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

добавил: 99.999% что или некорректно описали переходы между временными доменами или времянка не коректно и не полно задана.

структура проекта:

- Двухпортовое ОЗУ на 16К байт

- На один порт подключен счетчик семплов на линии адреса и АЦП AD9283 на данные.

- На второй порт - НИОС-процессор через PIO

- Управление счетчиком семплов - PIO

- Программа НИОСа храниться во внешнем SDRAM c тактовой частотой 100МГц кэш команд - 2К кэша данных нет.

 

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

 

В оригинальном проекте никаких констрейнов по входам нет, впрочем как и по остальным выводам.

Попробую добавить ограничения по входам. О результатах сообщу.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

передаётся в НИОСовский без промежуточного преобразования в код Грея,

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

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

 

Передача данных из буфера семплов в основную память выполняется через порты ввода-вывода:

// 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);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

глупость ляпнул, стер...

 

По виду похоже, что входной счетчик не с нуля в память писать начинает либо логика счетчиков записи и считывания не стыкуется...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Код Грея используется, например, в DC FIFO для быстрой передачи последовательно меняющихся счётчиков между асинхронными клок доменами. Если у вас клок чтения данных АЦП асинхронный относительно Авалона, тоже нужно что-то подобное.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...