Swup
Свой-
Постов
127 -
Зарегистрирован
-
Посещение
Весь контент Swup
-
У вас ведь наверное TSE? а дальше RGMII до phy? Вот кажетcя нужно посмотреть внимательно все ли пакеты заходят правильно в TSE. Если да, то вертеть констрейнты на RGMII. Ну либо кабельное хозяйство, разъемы, сетевая карта...
-
Делаем много обменов на UDP, скорости под 1000 гбит/с. соединение точка-точка либо через 1-2 свича. Пакеты теряются крайне редко. Кажется дело не в UDP, а у вас что-то не так с реализацией. ПС редко - это пара пакетов в день.
-
Алгоритм вычисления страницы
Swup ответил jenya7 тема в Программирование
Кажется так: PAGE_SIZE = log2(4096) BLOCK_SIZE = log2(4096*64) 4096 размер страницы 64 количество страниц в блоке -
Просто режьте ваш стрим на пакеты, пакеты заворачиваете на проходе в udp. посмотрите вот на этот пример.
-
А как вы его включаете? Вообще кажется, что он срабатывает снова, сразу как вы его сбрасываете. Посмотрите просто в сигнал тапе и все будет понятно. вот например у меня устанавливается таймер и сбрасывается (но это с 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 ); }
-
Помогите опознать мс
Swup ответил zombi тема в В помощь начинающему
да, дата производства, ревизия, страна. подробнее: https://www.micron.com/resource-details/a4b...6c-3d1622a62161 -
Помогите опознать мс
Swup ответил zombi тема в В помощь начинающему
память микрон 1Gb: x8/x16, 3V, MT28EW Embedded Parallel NOR FBGA Code (вторая строчка) decoder на сайте микрона выдает её; -
Поставить память рядом и не сбрасывать её, когда сбрасывается процессор. Но не понятно зачем это вообще нужно.
-
Matlab. histogram
Swup ответил ViKo тема в Математика и Физика
Скобки круглые для индексов массивов и параметров функций, квадратные для явного задания массивов, фигурные - для 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. -
Это не громоздко и не избыточно. При синтезе это вообще практически бесплатно. Во вторых это и есть изящно и просто, потому что это тот путь, который естественен для среды в которой вы работаете (qsys). И ни у одного пользователя он не вызовет недоумения.
-
Ксли один такой периферийный модуль и он сам по себе - сложная система, то может и да. Если у вас 10-20 таких модульков, отвечающих за всякое разное, то проще держать все в qsys. Генерировать систему это ведь не что-то невероятно сложное. К тому же интегрируемый модуль обычно уже оттестирован отдельно.
-
На сколько я понял вашу проблему, то передача этих значений ваших, довольно редкая операция. И вот этот вариант мне кажется наиболее удобным, чем городить отдельную память и так далее. Проблема в том, что вы видимо не достаточно осведомлены как работает qsys и avalon-mm в частности. В общих чертах я бы сделал ваш модуль весь целиком, блоком qsys. Сделал бы на нем avalon-mm slave с 32х битной шиной данных и irq sender. В 0 адресе имел бы регистр управления с прерыванием и маской прерывания. При получении данных писал бы их в регистры по 32 бита в адреса 1,2,3,4 и выставлял бы прерывание. По прерыванию в ниосе читал бы эти 4 регистра (можно через указатель, можно через IORD. Второе лучше). Сбрасывал бы прерывание. Это все достаточно просто. Стоит разобраться один раз. Вариант с памятью вообще выглядит избыточно. А с пио, как-то кривовато. Зато можете сделать прямо сейчас, если спешите.
-
STL Vector сводит с ума
Swup ответил megajohn тема в В помощь начинающему
vec.insert = (vec.end(), a, b+1 ) Почему бы и нет. -
STL Vector сводит с ума
Swup ответил megajohn тема в В помощь начинающему
vec.insert = (vec.end(), a,b ) данные вставляются перед vec.end() от а до b не включая b. т.е. [a,b ); Вот последний и не вставляется. -
Настройки линкера в bsp editor. Если у вас есть еще какая-то память проекте, то может там указано не туда куда нужно. ПС Там еще отдельно в main есть настройка указателей на стек прерываний и стек исключений.
-
Уберите flash контроллер. Он вам сейчас явно не нужен. Поставьте вектор сброса тоже на ончип память.
-
verilog аналог others из vhdl
Swup ответил el.d тема в Языки проектирования на ПЛИС (FPGA)
logic [7:0] [7:0] data = {0:6 ,4:12, 6:3, default:'0}; Но я бы не стал так писать. Не достаточно прозрачно для беглого понимания и правки. Лучше так: logic [7:0] [7:0] data = {default:'0}; initial begin data[0] = 6; data[4] = 12; data[6] = 3; end ПС Кстати во всех примерах не нужно писать '0, можно просто 0. Черточка подчеркивает, что происходит обнуление массива в контексте битов, а не в контексте чисел. В пример выше на VHDL эту функцию выполняет (others=>'0') как я понял. -
verilog аналог others из vhdl
Swup ответил el.d тема в Языки проектирования на ПЛИС (FPGA)
вот здесь показано, как работает адресация в многомерных массивах. http://testbench.in/SV_09_ARRAYS.html Это все для SystemVerilog. ПС запакованный массив, он как и просто массив, но в памяти выделяется непрерывным куском (а при синтезе непрерывным вектором). И индексы работают все также. Плюс запакованный массив можно простым присвоением кастить в вектор или запакованную структуру. -
verilog аналог others из vhdl
Swup ответил el.d тема в Языки проектирования на ПЛИС (FPGA)
Если для синтеза, то: logic [N-1:0] tmp[K-1:0]; не сильно будет отличаться от: logic [K-1:0] [N-1:0] tmp; и тогда можно сделать так: tmp <= '0; или можно еще вот так, для обоих случаев: foreach(tmp[i]) tmp[i] = '0; -
Можно просто SPI контроллер взять где-нибудь. Хоть в альтеровской библиотеке, хоть на опенкорс. По поводу инициализации. У них есть программки для программирования фапчей на отладочных платах. Можно в ней нащелкать настройки и получить таблицу регистров.
-
Матлаб и пакеты UDP
Swup ответил _sda тема в Вопросы системного уровня проектирования
Либо не приходит данных сколько надо, либо буфер маленький, либо таймаут маленький. 1. проверьте сниффером пакеты 2. проверьте настройки udp при создании 3. сделайте что-то типа pause_step = 0.01; pause_timeout = 1; while u_cmd.BytesAvailable < waiting_packet_length pause(pause_step); pause_cnt = pause_cnt+pause_step; u_cmd.BytesAvailable if pause_cnt>pause_timeout answ = 0; break end end u_cmd.BytesAvailable Увидите как BytesAvailable меняется и сколько в итоге набралось. По результатам увеличьте таймаут. Кстати если быстрая реакция не нужна, сделайте pause_step побольше. -
Матлаб и пакеты UDP
Swup ответил _sda тема в Вопросы системного уровня проектирования
%шлем команду fwrite(u_cmd, send_pack, 'uint32'); % ждем либо таймаут 200мсек либо пока придет 16 байт waiting_packet_length = 4*4; answ = 1; pause_cnt = 0; pause_step = 0.01; pause_timeout = 0.2; while u_cmd.BytesAvailable < waiting_packet_length pause(pause_step); pause_cnt = pause_cnt+pause_step; if pause_cnt>pause_timeout answ = 0; break end end if(answ) % читаем данные answer_buff = fread(u_cmd,waiting_packet_length,'uint32'); reg_data = answer_buff(4); res = 1; else % обрабатываем отсутствие ответа reg_data = 0; res = 0; end %res и reg_data я дальше вывожу в вызывающую функцию Я так читаю управляющие регистры, но с потоками данных и файлами, все примерно также -
Предложу другой вариант. Положите обе ваши таблицы в одну ROM по очереди, и в читающем устройстве меняйте базовый адрес для чтения.
-
Матлаб и пакеты UDP
Swup ответил _sda тема в Вопросы системного уровня проектирования
Если у вас 4 пакета приходят сразу, то лучше дождаться их всех. В udp объекте есть поле byteAvailable для этого. А потом все данные считать одним fread. -
Кризис в самообразовании.
Swup ответил xinortcele тема в Образование в области электроники
Спасибо, что поправили. Какие-то у меня в голове странные ассоциации сложились по поводу "на месте" и "O(1) потребления памяти".