Jump to content

    
Sign in to follow this  
MisterDi

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

Recommended Posts

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

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

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

post-41263-1332444757_thumb.png

post-41263-1332444770_thumb.png

Share this post


Link to post
Share on other sites
TimeQuest все клоки видит и в рабочем диапазоне температур слаков не выдает.

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

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

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

 

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

Share this post


Link to post
Share on other sites
Вы уверены что в TimeQuest всё описали? Кроме клоков наружные времена не забыли описать?

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

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

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

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

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

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

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

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

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

 

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

 

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

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

 

Share this post


Link to post
Share on other sites

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

Share this post


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

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

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

 

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

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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


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

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this