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

Skryppy

Свой
  • Постов

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

  • Посещение

Весь контент Skryppy


  1. Здравствуйте. У меня есть несколько приборов с Artix. Все приборы прошиты и работают. Когда понадобилось обновить прошивку, то выявил одну проблему - в одном приборе не обновляется прошивка. В Vivado прошивка начинает заливаться, но проходит буквально 2 секунды и окно прошивки закрывается, при этом сообщений об ошибке нет, но в ПЛИС осталась старая прошивка. Лог когда все ОК: Лог когда нет результата: Если прошивать флешку, то в этом приборе ошибка: [Labtools 27-3347] Flash Programming Unsuccessful: Failure to set flash parameters. Самое интересное, что если запустить Impact, то он прошивает и ПЛИС и флешку нормально в этом приборе. Может кто сталкивался с такой проблемой? P.S. Разъёмы переподключал, компьютер перезагружал, программатор менял - не помогло.
  2. Для тренировки нейросети вы должны иметь большой массив (тысячи примеров) данных - входные данные и соответствующие им правильные ожидаемые ответы. Затем данный массив (входные данные и ответы) разделяется на три части (обычно что-то такое) : 85 % отводятся для тренировки, 10% для валидации и 5 % для тестирования. Начинаете тренировать нейросеть и раз ,например, в 5 эпох проверять работу нейросети на валидационных данных. Если график валидации перестал улучшаться, значит вы пришли к пределу и , в упрощенном варианте, далее надо менять либо архитектуру нейросети, либо как-то почистить входные данные (профильтровать, отсеять часто повторяющиеся и т.д.). После того как закончили обучение нейросети подаете на нее данные теста. Это как выпускной экзамен - они покажут насколько хорошо ваша нейросеть будет работать с новыми данными. Обычно последний слой нейросети - softmax - он выбирает максимальное значение из предыдущего слоя и говорит к какой категории относятся входные данные. Если вам нужны проценты, то надо удалить softmax и оставить данные как есть. Тогда если вы ищите кошечек и собачек, то на выходе у вас будет два выхода, где один будет от 0 до 1 показывать процент кошечек, другой - собачек., например кошки - 0,05 = 5 %, собаки -0,47 = 47 %.
  3. Чтобы смотреть комплексный спектр, я умножал на экспоненту ( использовал коэффициенты из fdatool) Fs = 1000 Fsh = 10 ; % частота сдвига нового фильтра относительно старого. Fc = Fsh/ (Fs/2) len = length(Num); for i = 1:len Num_complex(i) = Num(i)*exp(j*2*Fc*pi*(i-1)); end My_plot = fvtool(Num,1,Num_coomplex,1); set(My_plot, 'ShowReference','off'); set(My_plot,'Fs', Fs, 'legend','on');
  4. В Матлабе есть fixed-point-tool, там ваша модель в зависимости от входных данных автоматически масштабируется под fixed-point с лучшими параметрами. youtube matlab fixed-point-tool
  5. В режиме Stream valid всегда должен быть равен 1. Чтобы valid все время не дергать.
  6. В настройках модели исправил шаг дискретизации 1/30.73 (у вас был по умолчанию 0,001). Собрал модель управляемого и неуправляемого DDS. (Раскоментить блоки можно сочетанием клавиш Ctrl + Shift + X ). dds_inet.rar
  7. Сделайте тестбенч, посмотрите на поведение вашего сумматора. Если все ОК, то в железе подключите чипскоп, чтобы поймать момент сбоя.
  8. Набросал простенькую модель обнаружителя с КИХ фильтром и с переносом в 0 ПЧ (матлаб r2020a). Поиграйтесь, посмотрите графики. (Для ленивых - из матлаба можно сгенерировать с++ код). forum_echo_r2020a.slx
  9. Если у вас частота сигнала не меняется, то вместо бпф и фильтров можно использовать алгоритм Герцеля - т.е. фильтр настроенный на одну конкретную частоту, обычно выполняется в виде бих фильтра, у Лайонса пример в книге есть.
  10. Непонятно что именно вы ищите, вот ,например 19 тыс картинок по запросу: circuits board photo.
  11. Ну такие стандарты должны сопровождаться печатями, комиссиями. Они вам подскажут как им удобнее принимать, может примеры дадут какие-нибудь. Знаю вроде матлаб как-то тестирует по таким стандартам, но как это работает не в курсе.
  12. Я хочу узнать какие конкретно места зажимать на гитаре, так как не являюсь музыкантом, а брынчу на гитаре иногда + стало очень интересно решить данную задачу. Изначально думал решить ее за вечер, сделав бпф или герцеля. Но задача оказалась сложнее. Сейчас пришёл к выводу, что проще обучить нейронку. В данный момент подготавливаю массивы входных данных для обучения. К сожалению, обученную нейронку или датасет с нотами не нашёл в доступе в интернете. Но так даже интереснее. Обновил опыт работы в этом направлении.
  13. Мне просто интересно сделать самому. Я понимаю что есть готовые программы. Я взял файл где звучит одна акустическая гитара. Есть и видео файл, так что я точно знаю какая струна где нажата, но хотелось бы это все объяснить компьютеру. Думаю если что нейросеть попробовать обучить.
  14. Буду пробовать определять по тембру. Я так понял, что тембр - это набор гармоник - 1,2,3 и т.д., а также их сум и разностей. Завтра попробую сделать бпф и посмотреть на амплитудное распределение всех гармоник, а не только тех, что могут звучать на ладах гитары.
  15. Вот, какое распределение амплитуд время обработки = 1/16 ноты, когда звучит следующая пачка все сдвигается синхронно Первый момент времени: Следующий момент 1/16 ноты: Да, было бы хорошо знать как взаимодействуют соседние струны или другой признак, чтобы продетектировать.
  16. Я взял wav файл и обработал небольшую часть его в матлаб. С помощью алгоритма Герцеля успешно детектирую частоты. Но они звенят на разных струнах одинаково ( открытая первая струна и вторая струна на 5 ладу равны 330 Герц)
  17. Здравствуйте. Решил научиться программно распознавать ноты на гитарном грифе. Нашел таблицу частот, где по горизонтали - номера ладов, по вертикали- номера струн: Получается, что частота, например, 330 Гц встречается 5 раз на грифе. Каким образом я могу распознать конкретное место на грифе если они звучат одинаково?
  18. 1) вам нужен контроллер, который общается с конкретным датчиком температуры, кто формирует температуру? Есть термодатчик ds18b20. https://nlinberg.com/vhdl-and-ds18b20/ 2) полученную температуру передаёте последовательным кодом spi. (Какие команды по каким адресам посылать, сами договариваетесь)
  19. Ачтобы не заполнять нулями, можно память сразу инициализировать нулями, а потом заполнить данными, как выше в примере: variable tmp : hi_angle_rom := (others => (others => '0'));
  20. Спасибо, за развернутый ответ. Мануалы скачал, буду подробней разбираться.
  21. Итак, ещё раз спасибо, все заработало. Просветите меня по нескольким вопросам, пожалуйста. 1) правильно ли я понял, что в блоках inport если задаём несущую, carrier frequency, то он сам формирует ее, надо на входе константой только задать амплитуду? 2) почему при установлении значения 0 (по умолчанию), надо задавать частоту из вне, а если установить 1е9, то она сама сформируется? В хелпе матлаба не нашёл информации. 3) когда надо проставлять несущие в настройках блока outport: carrier, почему при установлении в блоке inport: 0 hz carrier, нельзя установить другие частоты в настройках output: carrer frequency, вернее будут отображаться помехи, а не несущие?
  22. Спасибо большое, завтра посмотрю, сейчас нет возможности . Завтра отпишусь
×
×
  • Создать...