Jump to content

    

nice_vladi

Свой
  • Content Count

    86
  • Joined

  • Last visited

Community Reputation

0 Обычный

About nice_vladi

  • Rank
    Частый гость

Контакты

  • Сайт
    http://
  • ICQ
    673360216

Информация

  • Город
    Томск

Recent Profile Visitors

979 profile views
  1. На самом деле, на wiki altera-intel есть много design examples под различные ядра. Но у них в текущий момент какой-то переезд с движка на движок, поэтому почти все ссылки на файлы - битые. Однако, поддержка все-таки ответила, прислали архивчик с проектом. Выкладываю, мб пригодится кому. Cv_custom_auto_sync_sm_qii15.0.zip
  2. Больше двух выражений в условных операторах if-else - нечитабельно; FSM на два состояния, к тому же не case, а опять же if-else - на мой взгляд криво; Строки 31-36 - многоэтажный assign - вообще непонятно, что там происходит. Ну, это все ИМХО. Каждый ...пишет как хочет. Но это ж учебник. Я по нему учить хочу, а не разгребать какую-то невнятицу в коде. Как говорил один программист "Пишите проще" =)
  3. Я регулярно в обучающей литературе вижу конструкции языка, как на приведенной картинке. Почему это так? Почему не пишут просто - это же обучающая литература. При виде строк типа 17, 18, 32-36 вообще пропадает всякое желание читать и разгребать это всё. Разработчики АСИК и ПЛИС действительно так пишут?
  4. Всем привет, Собственно, все в заголовке. Не завалялось ли у кого-нибудь? С офф. сайта скачать невозможно - ссылки битые (у них там какой-то переезд вики). Поддержка отвечать вообще не спешит.
  5. Можно попробовать и 9.2 (самая старая на оф. сайте), либо поискать в закромах фтп.
  6. Самый легкий путь - найти именно ту Libero, в которой проводилась разработка. Из-за того, что у них среда и IP ядра довольно динамично развиваются, при обновлении на столько итераций (допустим, 9.0 -> 11) будет очень много изменений как самой Libero, так и ядер и графики. Если не ошибаюсь, у них были изменения функционала некоторых ядер, т.е. никакой гарантии что ваш проект даже после успешной компиляции будет работать так, как задумано, нет. В общем - геморрой знатный)
  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.