Jump to content

    

oleg679976

Участник
  • Content Count

    28
  • Joined

  • Last visited

Community Reputation

0 Обычный

About oleg679976

  • Rank
    Участник
  • Birthday 12/15/1996

Информация

  • Город
    Array

Recent Profile Visitors

559 profile views
  1. Спасибо за ответ! Правда в задании указано: "Создать массив строковых переменных и заполнить их словами из исходной переменной. ", поэтому и задал вопрос) Что-то нет настроения заморачиваться с парсерами, учитывая сколько всего еще предстоит изучать.
  2. Коллеги, может кто-нибудь объяснит про инициализацию массива словами из строковой переменной? Задание звучит так: "Объявить строковую переменную mystr. По умолчанию переменная должна быть инициализирована строкой содержащей больше 30 символов. Заполнить строку используя функцию $value$plusargs("MYSTR=%s",mystr) Строка может содержать любое количество символов пробела, разделяющие строку на слова, слов более одного. Создать массив строковых переменных и заполнить их словами из исходной переменной. Размер строки может изменяться в ходе проверки задания и передаваться через +MYSTR параметр. В конце и начале строки могут быть доп пробелы. Слова могут быть разделены множеством пробелов. В консоль вывести содержимое строки в формате: MYSTR=<строка> В консоль вывести содержимое массива в формате MYSTR[1]=<строка> MYSTR[2]=<строка>" У меня два вопроса: 1) Если необходимо задать использовать слова из строки, то получается нужно каким-то образом организовать сортировку слов и пробелов? Выделить слова из строки, класть в переменные слова, а потом из них рандомом инициализировать? 2) Есть какой-нибудь метод инициализации массивов? Посмотрел на вышеупомянутых сайтах, ничего такого не увидел, только через цикл. Пока набросал такой код, в нем просто рандомно инициализировал: // Code your testbench here // or browse Examples module task4; string mystr; integer myarray [0:9] = '{1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; initial begin if ($value$plusargs("STRING=%s", mystr)) $display("GOT STRING"); foreach (myarray) begin $display("Array element %d: %d", i, myarray); //fork #1 myarray = $random % 14539876; #1 $display("Array element %d: %d", i, myarray); //join end end initial $monitor("%t Array %p", $time, myarray); endmodule
  3. my_struct var2 = '{36, "453", !234, !434}; Так получается? Я другого способа не вижу, может подскажете чего.
  4. Добрый день, коллеги! Начал изучать SV по материалам с данного сайта http://simhard.com/wiki/index.php/Спец_курс_(Верификация_цифровых_схем)/Практические_задания_(Лекция_1). Для закрепления естественно проделываю практические задачи. Пришел сюда, так как ни google, ни chipverify, ни testbench.in не помогли мне найти ответ. Сейчас выполняю задание: "Создать тип данных структура, содержащую 4 различных поля. Поля должны иметь тип целочисленный, строковый, бит-вектор. Создать две переменные полученного типа. Проинвертировать все битовые поля в первой переменной. Значение всех полей первой и второй переменных типа структуры вывести в консоль. Формат вывода: VAR1 FIELD1: <value> VAR1 FIELD2: <value> ... VAR2 FIELD1: <value> VAR2 FIELD1: <value> ..." Не могу никак понять как проинвертировать структуру? Исходя их формулировки задания есть ощущения, что это должно делать в одно действие, но простое инвертирование, как в Verilog дает ошибку, с другой стороны смущает, что типы данных в структуре абсолютно разные и инвертировать string, как-то странно. Код симулирую на EDAPLAYGROUND в Aldec Riviera Pro 2020.04: // Code your testbench here // or browse Examples module task_2; typedef struct {integer field1; string field2; bit [10:0] field3; logic [10:0] field4;} my_struct; /*my_struct var1, var2; var1 = '{36, "453", 234, 434}; var2 = var1;*/ my_struct var1 = '{36, "453", 234, 434}; //my_struct var2 = ~var1; //my_struct var2 = !var1; my_struct var2 = var1; initial begin $display("var1 field1: %p", var1.field1); $display("var1 field2: %p", var1.field2); $display("var1 field3: %p", var1.field3); $display("var1 field4: %p", var1.field4); $display("var2 field1: %p", var2.field1); $display("var2 field2: %p", var2.field2); $display("var2 field3: %p", var2.field3); $display("var2 field4: %p", var2.field4); end endmodule Также вопрос по декларации и инициализации структуры. Данный код выдает ошибку: /*my_struct var1, var2; var1 = '{36, "453", 234, 434}; var2 = var1;*/ Так нельзя задавать? Просто на сайте chipverify задается так, или дело в операторе initial?
  5. Мне казалось, что Radiation мы должны ставить далеко, подразумевая, что мы смотрим ДН на этих плоскостях, а ДН мы смотрим в дальней зоне, разве не так? Уточняющий вопрос: PML_radiation (прямо название из шфсс) и Radiation, которое фигурирует в обсуждении - это одно и то же или нет? Просто есть PML_radiation в ветке Boundaries, а есть, как я понимаю, сфера из ветки Radiation в дереве проекта. Руководствуясь действиями разработчика в серии видео ANSYS HFSS: Designing a Dipole Antenna с youtube-канала Ansys How To Videos, я сделал Box вокруг структуры, достаточно далеко от всех элементов антенны, выделил все грани и настроил PML Setup Wizard, это правильно?
  6. Спасибо за ответ, стало намного яснее, но не до конца) Дело в том, что я смоделировал структуру с узлом питания, осуществив ввод мощности сосредоточенным портом, расчёт прошёл успешно. Проблема в том, что мне хочется исследовать импеданс антенной структуры, которую я считаю, то есть без питающего узла. Я рассчитывал, что можно это рассчитать каким-то образом. Из вашего сообщения я понял, что для такого случая подходят только волновые порты. Правильно ли я понял, что антенны в модели должны быть далеко от Radiation Box, а вот эти полоски можно вогнать прямо на грани и там ставить волновой порт? Еще вопрос, получается мне с помощью Reference Line необходимо задать моду, которая будет идти в порт? Или мода выбирается сама? Я новичок, help читаю, но прогресс медленный( Подскажите пожалуйста как метод расчёта для антенн лучше: modal или terminal? Спасибо за ответ, это делает решение проблемы более удобным, буду знать)
  7. Три полоска это начало антенн, в университете дали задание запитать и прогнать расчёт так, чтобы в одном случае по бокам была земля, внутри фаза, в другом случае внутри земля, по бокам фаза. Нужно обсчитать сделанный макет просто, а питание макета осуществляется цанговым зажимом, получается нужно использовать сосредоточенный порт из того, исходя из того, что Вы написали.
  8. Добрый день! Необходима помощь более квалифицированный специалистов. Хочу запитать следующую структуру и проанализировать для двух случаем: по бокам фаза, внутри земля, и по бокам земля, внутри фаза. Это часть другой структуры, подвод питания к антеннам. У меня проблема с установкой портов, шфсс выдает ошибки. Для lumped port только одна грань должна питаться фазой, reference conductor задается без проблем. При установке wave port выдает ошибку, что его можно только снаружи ставить (на vacuum, как я понимаю), но в моем случае для антенны я делаю radiation плоскость много больше антенны и не могу поставить wave port нормально). Как лучше такую структуру рассчитывать? Какой способ решения лучше выбирать и какие порты ставить. Какие советы есть по расчёту антенн в шфсс, я новичок, буду благодарен, это ускорит мое продвижение. Заранее спасибо.
  9. Спасибо за объяснение! Весьма интересное решения, я б до такого не додумался. Плюс сразу понял к чему здесь запас по частоте.
  10. К сожалению, не понял как работает модуль. Был бы очень благодарен, если бы вы объяснили подробнее сюда или в личные сообщения. Или, если бесит мой низкий уровень знаний и понимания верилога, можно не объяснять) Тогда получается импульс выделения фронта или спада будет длительностью в период клока. Поэтому я и считываю спадом. Других способов не смог пока придумать.
  11. Это получается чисто выделитель фронта или спада, правильно? В силу того, что работаю в схемном редакторе делаю так как здесь с помощью триггера и логики - https://marsohod.org/verilog/157-verilogedges
  12. Я даже на своем уровне знаний про ПЛИС и цифровую схемотехнику в целом, в принципе понимаю, что синхронный автомат должен изменять свои состояния по фронту, так что использовать инверсные клок не лучшая идея. У меня в проекте инверсный клок нужен для того, чтобы считать импульсы выделения фронта или спада сигналов. Насколько я понимаю их по-другому не считать. К сожалению, я не силён в устройстве ПЛИС, видел пару картинок устройства элементарных ячеек, но пока глубоко не разбирался в этих вещах. Поэтому не думаю, что мне это поможет. Каюсь, и осознаю, что такие вещи необходимо знать.
  13. Да, я знаю, что verilog намного удобнее, но я в прошлом вопросе писал, что все горит уже, и тратить доп время на перевод в verilog нет возможности