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

 
 
 
Reply to this topicStart new topic
> Ошибки чтения ОЗУ Cyclone-3, накристальное ОЗУ странно себя ведет.
MisterDi
сообщение Mar 22 2012, 19:32
Сообщение #1


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

Группа: Участник
Сообщений: 88
Регистрация: 28-10-08
Из: Днепропетровск
Пользователь №: 41 263



Отлаживаю свой вариант прошивки для осциллографа Вей-Куна (www.ourdev.cn) и столкнулся с непонятным для меня эффектом. При подаче а вход синусоидального сигнала с частотой 1МГц от генератора Hantec DSO-8060 на экране наблюдаю разрывы картинки (error.gif). Если частоту генератора изменить в небольших пределах, картинка становиться нормальной (normal.gif). Еще больше меня смущает факт, что при введении задержки в цикл чтения буферного ОЗУ количество разрывов на картинке увеличивается. Signal-Tap показывает нормальное формирование адресов чтения и записи.
TimeQuest все клоки видит и в рабочем диапазоне температур слаков не выдает.
В связи с изложенным вопрос: что происходит в системе? и как с этим можно бороться.
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Builder
сообщение Mar 23 2012, 11:05
Сообщение #2


iBuilder©
****

Группа: Свой
Сообщений: 519
Регистрация: 14-07-04
Из: Минск
Пользователь №: 322



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

добавил: 99.999% что или некорректно описали переходы между временными доменами или времянка не коректно и не полно задана.
Go to the top of the page
 
+Quote Post
MisterDi
сообщение Mar 23 2012, 14:39
Сообщение #3


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

Группа: Участник
Сообщений: 88
Регистрация: 28-10-08
Из: Днепропетровск
Пользователь №: 41 263



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

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

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

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

В оригинальном проекте никаких констрейнов по входам нет, впрочем как и по остальным выводам.
Попробую добавить ограничения по входам. О результатах сообщу.
Go to the top of the page
 
+Quote Post
Timmy
сообщение Mar 23 2012, 16:07
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Возможно, значение счётчика сэмплов или ещё чего-нибудь из входного клок домена передаётся в НИОСовский без промежуточного преобразования в код Грея, и от этого глюки.
Go to the top of the page
 
+Quote Post
MisterDi
сообщение Mar 26 2012, 17:16
Сообщение #5


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

Группа: Участник
Сообщений: 88
Регистрация: 28-10-08
Из: Днепропетровск
Пользователь №: 41 263



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

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

Передача данных из буфера семплов в основную память выполняется через порты ввода-вывода:
Код
// 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);
Go to the top of the page
 
+Quote Post
alexadmin
сообщение Mar 27 2012, 12:07
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 572
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965



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

По виду похоже, что входной счетчик не с нуля в память писать начинает либо логика счетчиков записи и считывания не стыкуется...
Go to the top of the page
 
+Quote Post
Timmy
сообщение Apr 1 2012, 07:15
Сообщение #7


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



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

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

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

 


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


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