Jump to content

    

TamRazZ

Участник
  • Content Count

    34
  • Joined

  • Last visited

Everything posted by TamRazZ


  1. Есть ли рациональное зерно в приведении типов после арифметических операций? logic [W-1:0] a, b; b <= (a + 10)[W-1:0]; Только я не знаю как это в синтаксисе SV описать, подскажите, пожалуйста..
  2. Действительно так не ругается... не помню, почему через конст писал % Можно тогда еще вопрос не по теме... Как вы избавляетесь от варнингов такого рода: Warning (10230): Verilog HDL assignment warning at mem_reader.sv(215): truncated value with size 32 to match size of target (12) в коде типа: cnt <= (cnt == size-1) ? 0 : cnt + 1; Настраиваете компилятор или указываете размеры всех слагаемых?
  3. Доюрый день! Столкнулся с необходимостью работы с массивом констант в виде упакованно-неупакованных конструкций. вот пример того, что мне необходимо: localparam int N = 5; localparam int W = 18; const logic [ADDR_W-1 : 0] hard_point [N] = '{16, 17, 18, 19, 20}; на такую запись Квартус вываливает предупреждения: Warning (10030): Net "hard_point.data_a" at mem_reader.sv(61) has no driver or initial value, using a default initial value '0' Warning (10030): Net "hard_point.waddr_a" at mem_reader.sv(61) has no driver or initial value, using a default initial value '0' Warning (10030): Net "hard_point.we_a" at mem_reader.sv(61) has no driver or initial value, using a default initial value '0' Код работает исправно, но эти варнинги мне непонятны и хотелось бы с ними разобраться, но не совсем понятно, что от меня требует Квартус. Я понимаю, что необходимо указывать конкретную размерность данных, но затрудняюсь с синтаксисом. Прошу помощи.
  4. AlteraEdition накладывает некоторые ограничения на проект (использование разных языков, размер исходников), что в некоторых ситуациях критично, поэтому чтобы не искать ошибок в будущем осваиваю оригинальный МС. В этом и проблема... Я не прописывал путей к скомпилированным библиотекам. Quartus, как я понимаю, сам правит ini файл МС и все изменения, которые я пытаюсь сотворить с ним вручную теряют смысл. Видимо в Квартусе стоят какие-то опции, влияющие на запуск МС из под Ква и надо править их, но какие это опции я пока не вкурил...
  5. С запуском ModelSim из Qurtus разобрался! Спасибо! Компилируется и симмулится как надо. НО... При запуске ModelSim (именно ModelSim а не AlteraEdition) из Quartus происходит компиляция множества библиотек под конкретный кристалл, занимает изрядное количество времени и процедура бесполезная т.к. я запускаю функциональную симуляцию. Не понятно куда деваются эти библиотеки однажды откомпиленные, почему это происходит при каждом запуске симулятора (только из Quartus, при запуске ModelSim как самостоятельное приложение такого не происходит)? Каждый запуск ModelSim из Quartus сопровождется обновлением *.ini файла, из чего делаю вывод, что именно в Quartus-gui надо искать-отключать настройки. Перерыл все настройки связанные с запуском EDA Tools пока ничего не нашел. Помогите, кто с этим сталкивался...
  6. Понятно... В моделсиме я более менее разобрался, вопрос, как их подружить с квартусом. Но спасибо за ваш скрипт, некоторые команды взял на вооружение
  7. Спасибо! Как вы запускаете этот скрипт из Quartus? Или вся отладка у вас в интерфейсе ModelSim происходит?
  8. Добрый день! Прошу помощи у опытных пользователей. Опишите подробно ваш флоу создания и отладки проекта под альтеровскую ПЛИСу. Я не часто этим занимаюсь и мой процесс выглядит следующим образом: 1. Написание исходников в текстовом редакторе с поддержкой синтаксиса SV (обычно это встроенный Qurtus текстовый редактор). 2. Создание проекта под ModelSim, в котором происходит функциональная симуляция и исправление логических ошибок. 3. Создание проекта под Qurtus II на основе отлаженных исходников, где происходит оптимизация по затраченным ресурсам и создание Netlist для следующего этапа. 4. Создание нового проекта (или модификация созданного) под ModelSim для временной отладки. 5. TimeQuest, написание констрейнов при необходимости. Понятно, что такой рабочий процесс как минимум не оптимален и не логичен. Известно, что есть способы подружить Quartus II и ModelSim (иначе не было бы в интерфейсе Quartus настроек Nativelink для ModelSim). Но как это грамотно осуществить я не разобрался, и хотелось бы узнать как выглядит рабочий процесс у профессионалов. ЗЫ: Чтобы не показалось, что я сам ничего не пытался сделать и хочу, чтоб мне на шару расписали, что куда нажимать, приведу пример того, как я делаю на, мой взгляд, "не так": 1. Создаю проект в квартусе, пишу исходники на SV и тестбенч. 2. Компилирую библиотеки Altera для своего кристалла. 3. В настройках Simulation в Quartus выбираю ModelSim (прописываю путь к екзешнику), указываю выходную директорию для файлов симуляции, настраиваю тестбенч (картинка в аттаче). 4. В Nativelink указываю путь к скомпилированным библиотекам. 3. Далее при запуске функционального моделирования запускается ModelSim и начинает перекомпилировать все библиотеки и мапить их в указанную директорию. При повторном запуске происходит ровно тоже самое, несмотря на то, что все папки созданы и лежат на своих местах. Выполняется это согласно автоматически созданному скрипту, в котором написано: transcript on if ![file isdirectory verilog_libs] { file mkdir verilog_libs } vlib verilog_libs/altera_ver vmap altera_ver ./verilog_libs/altera_ver vlog -vlog01compat -work altera_ver {c:/altera/13.1/quartus/eda/sim_lib/altera_primitives.v} vlib verilog_libs/lpm_ver vmap lpm_ver ./verilog_libs/lpm_ver vlog -vlog01compat -work lpm_ver {c:/altera/13.1/quartus/eda/sim_lib/220model.v} vlib verilog_libs/sgate_ver vmap sgate_ver ./verilog_libs/sgate_ver vlog -vlog01compat -work sgate_ver {c:/altera/13.1/quartus/eda/sim_lib/sgate.v} vlib verilog_libs/altera_mf_ver vmap altera_mf_ver ./verilog_libs/altera_mf_ver vlog -vlog01compat -work altera_mf_ver {c:/altera/13.1/quartus/eda/sim_lib/altera_mf.v} vlib verilog_libs/altera_lnsim_ver vmap altera_lnsim_ver ./verilog_libs/altera_lnsim_ver vlog -sv -work altera_lnsim_ver {c:/altera/13.1/quartus/eda/sim_lib/altera_lnsim.sv} vlib verilog_libs/cycloneiii_ver vmap cycloneiii_ver ./verilog_libs/cycloneiii_ver vlog -vlog01compat -work cycloneiii_ver {c:/altera/13.1/quartus/eda/sim_lib/cycloneiii_atoms.v} Но как мне его изменить или заменить, чтобы каждый раз он не компилил то, что и так скомпилено. Или может я совсем все не так делаю и мой флоу изначально не верен, расскажите, как действуете вы.
  9. Нужно именно синтезируемое. Пока Хэмминг для тренировки, в будущем, конечно, LDPC=) сделать шаблон через функцию в параметризуемом интерфейсе Можно поподробнее не совсем понял, терминология у меня хромает пока...
  10. Добрый день! Подскажите, пожалуйста, простой и доступный способ реализации на SV функции генерации единичной матрицы. Вот набросок моего видения этой функции: function automatic logic[size-1:0][size-1:0] eye (input int size); for (int i = 0; i < size; i++) for (int j = 0; j < size; j++) eye[i][j] = (i == j); endfunction Понятно, что компилятор не видит size в шапке объявляемой функции. Не понятно, как описать функцию, у которой размерность выходного аргумента зависит входного аргумента.
  11. Добрый день! Возникла проблема при гателевел симуляции проекта. Netlist Writer при компиляции не создает необходимых *.sdo и *.svo файлов (пишу на System Verilog). Из-за этого не запускается симуляция. Причем данный эффект возникает при симуляции под Arria V при выборе плисы Cyclone III для этого же проекта, необходимые файлы генерируются и симуляция проходит нормально. В чем дело? ЗЫ: Версии САПРов в описании темы..
  12. С шинами вроде разобрался! Спасибо! Подобная же проблема с параметризируемыми модулями... При создании квартусом *.svo или *.vo файла из модуля верхнего уровня пропадают параметры, и когда тестбенч передает значения параметра топ-левел модулю возникает ошибка. Как быть в такой ситуации... В настройках нетлист врайтера ничего подобного не обнаружил...
  13. т.е. structural verilog не поддерживает мультиразмерные сигналы, в принципе? или есть способ "правильного" описания сигнала? Подскажите, как должна выглядеть декларация сигнала out_a в таком случае.
  14. Доброго времени суток! Пытаюсь просимулировать с помощью ModelSim (Altera Edition) проект, созданный в Quartus 13.1. Модули проекта написаны на SystemVerilog. Передача данных от одного модуля к другому осуществляется за счет мультиразмерных packed массивов. RTL симуляция проходит нормально, но когда дело доходит до GateLevel ModelSim выдает ошибку, ругается на эти сигналы. Причина в том, что Quartus создает файл для симуляции *.vo (с временными задержками и тд). При генерации этого файла все мои многоразмерные сигналы вида: output logic [7:0] [255:0] out_a; Превращаются в: out_a_0_0 out_a_0_1 ... и тд. ModelSim эти сигналы не обнаруживает и выдает ошибку. Как быть в таких ситуациях?
  15. Странный какой-то алгоритм, в классическом БМ декодер четко определяет может он декодировать принятую комбинацию или нет, а тут получается неизвестно восстановлена последовательность или нет..(
  16. Насколько я понял, степень полинома у нас всегда t. Как же отличить ситуацию, когда произошло ошибок <t и когда >t, если и в том и в другом случае Чень найдет корней меньше t
  17. Использую следующий алгоритм для поиска полинома локаторов: Возник вопрос... Судя по последней строке псевдокода, функция всегда будет возвращать вектор размером t вне зависимости от кол-ва случившихся ошибок, следовательно в случае, когда ошибок > t вернется полином степени не больше t, а значит Чень сможет найти корней не больше t. Как в такой ситуации оценить, сможет декодер восстановить данный пакет или нет.?
  18. Похоже я вообще не правильно воспринял алгоритм декодирования укороченных кодов... Т.е. даже если я имею укороченный код с N=127 я должен его добить нулями до 255 и прогнать БМА по стандартной программе для обычных кодов.?
  19. А можете посоветовать, где почитать словесное описание этого алгоритма.?
  20. Доброго времени суток.! Как выполняется перебор Ченя для укороченных кодов.? Я использую код (127, 120) над полем GF(2^8). Согласно процедуре Ченя мы перебираем все возможные примитивные элементы поля и подставляем в найденный нами полином локаторов ошибок. Все примитивные элементы a^x, которые обнуляют наш полином являются его корнями. Соответственно, степень примитивного элемента (в нашем случае x) является позицией, на которой произошла ошибка. Так я понял теорию, но не понятно, что делать, если у меня коды укороченные и всего 127 позиций на посылку РС, а корень полинома, скажем равен a^220 (220 позиции в моем блоке нет) .?
  21. Да, но это стоит денег, к тому же у меня там еще свои навороты ожидаются... так что придется самому писать, да вот что-то пока не выходит каменный цветок..(
  22. Доброго времени суток.! Знаю, подобная тема многократно обсуждалась на просторах этого портала. Но ответа на некоторые вопросы я так и не нашел... Мой первый вопрос касается процедуры Ченя: Как выполняется данный алгоритм для укороченных кодов.? Я использую код (127, 120) над полем GF(2^8). Согласно процедуре Ченя мы перебираем все возможные примитивные элементы поля и подставляем в найденный нами полином локаторов ошибок. Все примитивные элементы a^x которые обнуляют наш полином являются его корнями. Соответственно, степень примитивного элемента (в нашем случае x) я вляется позицией, на которой произошла ошибка. Так я понял теорию, не понятно, что делать, если у меня коды укороченные и всего 127 позиций на посылку РС а корень полинома, скажем равен a^220. .? Мой второй вопрос относится к алгоритму Берлекэмпа-Месси. Я вычитал в интернете, что наиболее эффективный и оптимальный при реализации на ПЛИС алгоритм нахождения полинома локаторов это модификация алгоритма БМ известная как RiBM. Кто-нибудь реализовывал этот алгоритм.? Дайте, пожалуйста ссылку, где можно найти подробное описание этого алгоритма, сам пока не нашел...
  23. Есть ли какие-либо ограничения по использованию flash-памяти для конфигурации Arria V. Грубо говоря, старая циклоновская флешка подойдет.?
  24. Спасибо, за полезную информацию. Как раз хотел спросить про микросхемы с готовым Phy и Mac. Может, кто имеет опыт работы с конкретными микрухами и может что-то посоветовать.?
  25. Вот об этом и речь хочется узнать обо всех предстоящих заменах заранее... На самом деле, проц был только на одной из плис, вроде как мозговой центр, который управлял остальной периферией (в том числе находящейся на других плис) посредством внешних интерфейсов (RS-485, Eth etc..). И да, на этом ниосе была операционка ртосовская MicroC OS. Собственно, ради этого я здесь.) Набираю необходимый минимум знаний у более опытных коллег, ибо не знаю даже с чего начать... Надеюсь, что меня здесь сориентируют в нужном направлении, и дальше начну более детальный и предметный анализ.) Можно здесь по-подробнее... Какое ПО выбирают опытные разработчики. Под НИОС у нас писали на эклипсе, как я понял, это были специально заточенные под ниос альтеровские сборки. Есть ли под кортекс подобное ПО (альтеровские или специально оптимизированные под встраиваемые процессоры).? Это звучит гораздо более обнадеживающе Еще один вопрос возник... РТОС операционки стоят денег за лицензию, извините, конечно, за глупый вопрос, я не программист, не знаю.)