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

nice_vladi

Свой
  • Постов

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

  • Посещение

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


  1. Вообще не профессионал, но: Выбросил бы запись "& data" и попробовал заполнить буфер 0x00ffffff. После этого станет понятно, что ломается: итератор или данные. Если все ОК и буфер заполняется ff - значит ломается переменная data; Если буфер все равно заполняется мусором - значит ломается итератор (point_time). Ну так далее, пока не станет точно понятно, в какой переменной возникает проблема.
  2. Разрядности здесь ни при чем. Quartus развел 2мерный массив констант как модуль памяти. Соответственно, варнинги говорят о том, что некоторые порты железного блока памяти (data_a - данные на запись, waddr_a - адрес на запись, we_a - разрешение на запись) никуда не подключены. Если нет тяги к прекасному - можно смело забить на них)
  3. На самом деле, на wiki altera-intel есть много design examples под различные ядра. Но у них в текущий момент какой-то переезд с движка на движок, поэтому почти все ссылки на файлы - битые. Однако, поддержка все-таки ответила, прислали архивчик с проектом. Выкладываю, мб пригодится кому. Cv_custom_auto_sync_sm_qii15.0.zip
  4. Больше двух выражений в условных операторах if-else - нечитабельно; FSM на два состояния, к тому же не case, а опять же if-else - на мой взгляд криво; Строки 31-36 - многоэтажный assign - вообще непонятно, что там происходит. Ну, это все ИМХО. Каждый ...пишет как хочет. Но это ж учебник. Я по нему учить хочу, а не разгребать какую-то невнятицу в коде. Как говорил один программист "Пишите проще" =)
  5. Я регулярно в обучающей литературе вижу конструкции языка, как на приведенной картинке. Почему это так? Почему не пишут просто - это же обучающая литература. При виде строк типа 17, 18, 32-36 вообще пропадает всякое желание читать и разгребать это всё. Разработчики АСИК и ПЛИС действительно так пишут?
  6. Всем привет, Собственно, все в заголовке. Не завалялось ли у кого-нибудь? С офф. сайта скачать невозможно - ссылки битые (у них там какой-то переезд вики). Поддержка отвечать вообще не спешит.
  7. Более-менее понятно, но есть пара вопросов: > - в начале использовал для расчета хеш полином - быстро понял, что это плохо. (это понятно?) Просто полином = большая вероятность коллизии, думаю, что понятно. > - Результат стал лучше, когда после первого полинома использовал второй с другими коэффициентами. Как выбирались "другие" коэффициенты? Проверяли ли ортогональность этих полиномов? > - Сгенерил ROM(1М20К) c псевдослучайными данными и подставил их в качестве начальной константы для полинома (это понятно?) - результат стал очень хорошим( ~98% от теоретического идеала) Не понял. Зачем целый ROM с ПСП делать? Начальный блок имеет разрядность полинома, либо я что-то не так понял? > В дальнейшем оказалось удобнее загонять в хеш данные по очереди. Например, если только на первом шаге обработки используешь МАК, то после этого шага их хешируешь и забываешь. Особенно это помогает при работе с IPv6. "данные по очереди" - подразумевается, что сначала считается хэш MAC адреса, затем все сбрасывается и считается хэш других данных (например IP)?
  8. оффтоп. А можно, пожалуйста, чуть подробнее про полином+память и двойное преобразование? Можно прямо в ЛС. Ну, или хотя бы, ссылку, где можно просветиться на счет этих алгоритмов расчета хэша.
  9. Все равно компилятор ненужные разрядности посокращает. Так что, думаю, можно смело объявлять максимальные.
  10. Сразу в глаза бросилось, что у вас блок называется gen_result_var, а записывать пробный регистр вы пытаетесь в gen_summ_var. Может быть, я не правильно понял, но выглядит ошибкой. А вообще, можно посчитать, сколько вам нужно регистров S и создать массив типа: reg [DATA_WIDTH-1:0] result [N], где N - полное количество требуемых регистров S на вашей схеме. После этого будет 100% правильный массив, удобный для отладки (легко смотреть каждый адрес). И потом уже извращаться в циклах с адресацией в этом массиве. Отдать под первый слой первые N/2 элементов массива, под второй слой N/2+N/4 и т.д.
  11. Функция my_encode возвращает 3 битика (return 3'bXXX), а регистр, в который вы выкладываете этот результат (r_data_encoded) имеет разрядность [1:0] = 2 битика. А если хочется параметризировать - над делать что-то вроде того, что показал @RobFPGA. Ну и все разрядности обязаны быть определены на этапе синтеза. А еще, похоже, что вам просто надо посчитать количество нулей или единиц в слове - можно попробовать погуглить на эту тему, есть разные алгоритмы как для С так и для HDL.
  12. Да, это влияет. Но все равно не получался быстрый отклик. В противовес SE у редакторов типа Notepad++, SublimeText - подсветка мгновенная. Дело привычки, конечно...
  13. Задержку подсветки выделения можно подкрутить в настройках. Как именно звучит пункт настроек - не помню, под рукой SE нету. Но все равно, задержка перед подсветкой порядка секунды. ИМХО это задержка дико раздражает, одна из причин, почему до сих пор не могу SE пользоваться =))
  14. Синтез делается opensource софтом YOSYS, как я понял - библиотеки свои. Прошивалка флеш - тоже какая-то opensource. Всё остальное - полностью своё, пишут сами. Вот ссылка на Миландровский форум по разрабатываемой ПЛИСе: http://forum.milandr.ru/viewtopic.php?f=48&t=3540
  15. Миландр уже сейчас выдают свою IDE попробовать. Она, конечно, еще очень бета-версия, но компиляция, синтез и т.д. вполне рабочие. Самое главное огорчение - пока нет поддержки SV.
  16. Корка PLL - гора библиотечных файликов, так что мб, что-то не так с библиотеками квартуса (не та версия, не все сгенерировались, сгенерировались с ошибкой)? И нужно разобираться с той кучей ошибок, что появляются при добавлении в проект mypl_0002. Может, там есть какие-то подсказки, куда копать? Вообще, ИМХО, тащить полную корку PLL в симулятор - дело неблагодарное. Все нужные сигналы с PLL легко описываются конструкциями языка (захват, сами частоты и т.д.). Хотя, возможно, просто не сталкивался с задачами, которые требуют этого. Было такое, когда руками таскал с места на место файлы ip корки. Вылечилось пересозданием корки. А редактирование запускаю тыкая на Project Navigator -> IP components -> нужная корка. Правда, для этого нужно хранить в проекте ВСЕ файлы, созданные мегавизардом. Клево, у меня за несколько подходов не получилось - глянул бы с удовольствием)
  17. Попалась на глаза ваша тема, вспомнил давно интересующий вопрос. В большей части модулей пользуюсь типами, которые объявлены где-то (допустим, ./inc/types.svh). Так вот, что бы корректно откомпилировался текущий модуль - нужно компилятору объяснить, где типы лежат. В квесте собираю полный тестбенч - там это описано. В квартусе - тоже. А вот для одиночного модуля, проверямого прямо из редактора - не понятно, как делать. Я вижу два пути: 1. Более-менее унверсальный. В каждом модулей явно прописывать файлик с типами (#include "./inc/types.svh") - не красиво, лишняя писанина, некоторые компиляторы не любят, когда так делают (пример - Libero); 2. Не универсальный. Для каждого проекта нужно в скриптах запуска прописывать путь до файла с типами. Тоже неудобно - скрипты разные под каждый проект, что-то куда-то переложилось - нужно править скрипты. В общем, оба варианта не нравятся. Подскажите, как знающие люди делают? Может быть, есть что-то покрасивше?
  18. Спасибо. Внес задержку между преобразованиями - все восстанавливается, проблема закрыта. Решение, действительно, тривиально.
  19. Здравствуйте, Было дело, нашел на просторах сети вот такой мануал по дуалбуту для макса. К сожалению, сам не пробовал, но, возможно, вам поможет. Будет интересно узнать, получилось что-то или нет. MAX10_Dual_Boot_instruction.doc
  20. Действительно, немного поспешил, извиняюсь. Забыл про децимацию, после прямого преобразования. Правильно смотреть вот так: dat = rand(1, 64); res_idwt = idwt(dat(1, 1:2:end), dat(1, 2:2:end), 'db6'); [res_dwt0, res_dwt1] = dwt(res_idwt, 'db6'); hold on; plot(dat(1, 1:2:end), 'x-r'); plot(res_dwt0(1, 1:end), 'o-b'); hold off; Тогда получаем: То, о чем я говорил: есть битые куски данных в начале/конце массива, но центральные элементы восставнавливаются правильно. От симулинка подобного графика добиться не получается. На текущий момент убрал симулинковские idwt-dwt блоки и попробовал Two-Channel Synthesis Subband Filter, прописал ИХ фильтров руками, в соответствии со скриптовыми. Тоже ничего хорошего не увидел. Постепенно спускаюсь ниже - скоро действительно самопальные модельки в симулинке буду делать =))
  21. Да, я что-то спутал. Попозже разберусь и выложу правильный кусок.
  22. Upd: Приложу кусок скрипта матлаба dat = ones(1, 64); res_idwt = idwt(dat(1, 1:2:end), dat(1, 2:2:end), 'db6'); res_dwt = dwt(res_idwt, 'db6'); hold on; plot(dat(1, 1:end), 'x-r'); plot(res_dwt, 'o-b'); hold off; В результате вижу: По краям есть куски явно битые (выход фильтров в режим, наскольк я понимаю). Центр - восстанавливается верно. Почему это не работает в симулинк? Хочется же просто кубиков набросать - и все работает =)) Во всяком случае, я рассчитывал, что мне не придется собирать из кучи кубиков собственный вариант преобразования. Но, судя по всему, придется. Посмотрим, что выйдет из этого.
  23. > А для обычной OFDM так в симулинке уже сделано? Да, IFFT-FFT - без проблем. > Слишком оптимистично, данная статья довольно сомнительная. ИМХО Я просмотрел не одну (не один десяток) статей на подобные темы. В целом, везде структурная схема схожа. Опять же, в матлаб скриптах у меня получилось собрать дерево idwt-dwt, которое работает так, как мне надо.
  24. Я пытался изменять sample time источника данных, но пока не пришел к улучшению результата. Ощущение, что недопонимаю какую-то мелочь, которая определяющая =)
  25. Спасибо. Действительно, при соединении dwt-idwt - восстановление полное, это понятно. Однако такая штука - анализ сигнала (разложение на ВЧ и НЧ и восстановление по ним). Я же пытаюсь использовать вейвлет немного для других целей. Хочу сделать в симулинк вот так: Для этого хочу примерно вот такую схему: Обе картинки взял отсюда: http://shodhganga.inflibnet.ac.in/bitstream/10603/141313/12/12_chapter 4.pdf Считаю, раз люди публикуют статью - в ней более-менее достоверная информация = я что-то делаю не так. В матлабе (скриптом) такую модель собрал, описал, увидел, что работает. Интересно собрать именно в симулинке. И вот тут столкнулся с непониманием того, как это работает.
×
×
  • Создать...