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

Swup

Свой
  • Постов

    127
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о Swup

  • Звание
    Частый гость
    Частый гость
  • День рождения 14.07.1989

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

2 671 просмотр профиля
  1. У вас ведь наверное TSE? а дальше RGMII до phy? Вот кажетcя нужно посмотреть внимательно все ли пакеты заходят правильно в TSE. Если да, то вертеть констрейнты на RGMII. Ну либо кабельное хозяйство, разъемы, сетевая карта...
  2. Делаем много обменов на UDP, скорости под 1000 гбит/с. соединение точка-точка либо через 1-2 свича. Пакеты теряются крайне редко. Кажется дело не в UDP, а у вас что-то не так с реализацией. ПС редко - это пара пакетов в день.
  3. Кажется так: PAGE_SIZE = log2(4096) BLOCK_SIZE = log2(4096*64) 4096 размер страницы 64 количество страниц в блоке
  4. Просто режьте ваш стрим на пакеты, пакеты заворачиваете на проходе в udp. посмотрите вот на этот пример.
  5. А как вы его включаете? Вообще кажется, что он срабатывает снова, сразу как вы его сбрасываете. Посмотрите просто в сигнал тапе и все будет понятно. вот например у меня устанавливается таймер и сбрасывается (но это с VIC, хотя разницы особо нет: void ru_timer_isr() { IOWR(PERIPHERAL_TIMER_RU_BASE,0,0); ... } void ru_timer_irq_init() { alt_u32 timer_cnt = sys_freq; // 1sec IOWR(PERIPHERAL_TIMER_RU_BASE, 2, timer_cnt & 0xFFFF); IOWR(PERIPHERAL_TIMER_RU_BASE, 3, (timer_cnt>>16) & 0xFFFF); IOWR(PERIPHERAL_TIMER_RU_BASE, 0, 0x00); IOWR(PERIPHERAL_TIMER_RU_BASE, 1, 0x07); // timer start, cont, irq alt_ic_isr_register( 0x00, PERIPHERAL_TIMER_RU_IRQ, ru_timer_isr, NULL, 0x00 ); }
  6. да, дата производства, ревизия, страна. подробнее: https://www.micron.com/resource-details/a4b...6c-3d1622a62161
  7. память микрон 1Gb: x8/x16, 3V, MT28EW Embedded Parallel NOR FBGA Code (вторая строчка) decoder на сайте микрона выдает её;
  8. Поставить память рядом и не сбрасывать её, когда сбрасывается процессор. Но не понятно зачем это вообще нужно.
  9. Скобки круглые для индексов массивов и параметров функций, квадратные для явного задания массивов, фигурные - для cell arrays. Ну про функции сложно сказать что-то. Как в любом программировании. Вэйтбар есть строенный: h = waitbar(0,'byte reseived:0/0'); for K = 1 : SLIM B = fread(Port, 2); T = bitor(bitand(B(1),63), bitsll(bitand(B(2),63),6)); M(K) = T; waitbar(K / SLIM,h,['byte reseived:',num2str(K),'/',num2str(SLIM)]) end close(h) Можно сбросить все открытые устройства функцией instrreset.
  10. Это не громоздко и не избыточно. При синтезе это вообще практически бесплатно. Во вторых это и есть изящно и просто, потому что это тот путь, который естественен для среды в которой вы работаете (qsys). И ни у одного пользователя он не вызовет недоумения.
  11. Ксли один такой периферийный модуль и он сам по себе - сложная система, то может и да. Если у вас 10-20 таких модульков, отвечающих за всякое разное, то проще держать все в qsys. Генерировать систему это ведь не что-то невероятно сложное. К тому же интегрируемый модуль обычно уже оттестирован отдельно.
  12. На сколько я понял вашу проблему, то передача этих значений ваших, довольно редкая операция. И вот этот вариант мне кажется наиболее удобным, чем городить отдельную память и так далее. Проблема в том, что вы видимо не достаточно осведомлены как работает qsys и avalon-mm в частности. В общих чертах я бы сделал ваш модуль весь целиком, блоком qsys. Сделал бы на нем avalon-mm slave с 32х битной шиной данных и irq sender. В 0 адресе имел бы регистр управления с прерыванием и маской прерывания. При получении данных писал бы их в регистры по 32 бита в адреса 1,2,3,4 и выставлял бы прерывание. По прерыванию в ниосе читал бы эти 4 регистра (можно через указатель, можно через IORD. Второе лучше). Сбрасывал бы прерывание. Это все достаточно просто. Стоит разобраться один раз. Вариант с памятью вообще выглядит избыточно. А с пио, как-то кривовато. Зато можете сделать прямо сейчас, если спешите.
  13. vec.insert = (vec.end(), a, b+1 ) Почему бы и нет.
  14. vec.insert = (vec.end(), a,b ) данные вставляются перед vec.end() от а до b не включая b. т.е. [a,b ); Вот последний и не вставляется.
  15. Настройки линкера в bsp editor. Если у вас есть еще какая-то память проекте, то может там указано не туда куда нужно. ПС Там еще отдельно в main есть настройка указателей на стек прерываний и стек исключений.
×
×
  • Создать...