Jump to content

    

новичок, string

Приветствую форумчане, кратко обо мне, я начинающий любитель программист, немного знаю c++

и решил попробовать verilog, первое с чем я столкнулся, это работа со строками, и как создавать массивы больших размеров, например на C++ int arr[999999]

сейчас конкретно string выдаёт ошибку

matemat.vl:7: syntax error

matemat.vl:7: error: Invalid module instantiation

работаю с программой iverilog

module main();

  integer p=0;
  string lastname  = "Tribbiani";

initial
  begin


     for (p=0; p<5; p++)
begin
                   $display("Vivod ", p);
end

                  
    

    $finish;
  end

endmodule

Share this post


Link to post
Share on other sites
$display("Vivod %0d", p);

ошибка так и осталась, так как она не связана с integer, она связана с string , так как после удаления строчки string программа компилится и запускается

Share this post


Link to post
Share on other sites

Приветствую!

ошибка так и осталась, так как она не связана с integer, она связана с string , так как после удаления строчки string программа компилится и запускается
Чистый verilog не поддерживает тип данных string. Это доступно только для SystemVerilog.

Вам надо посмотреть поддерживает ли iverilog стандарт SystemVerilog ну и компилировать файл с соответствующей опцией.

 

Удачи! Rob.

Share this post


Link to post
Share on other sites
Приветствую!

Чистый verilog не поддерживает тип данных string. Это доступно только для SystemVerilog.

Вам надо посмотреть поддерживает ли iverilog стандарт SystemVerilog ну и компилировать файл с соответствующей опцией.

 

Удачи! Rob.

 

я так понял, что я выбрал не правильный компилятор для новичков? или не расширенный.

Подскажите пожалуйста какими лучше пользоваться.(у меня Win 8)

Edited by nomerlin

Share this post


Link to post
Share on other sites
решил попробовать verilog, первое с чем я столкнулся, это работа со строками, и как создавать массивы больших размеров, например на C++ int arr[999999]
Я вас уверяю, в Верилоге вам строки такой длины не понадобятся. Это не язык программирования. Начните с чего-нибудь другого -- логические элементы, мультиплексор, D-триггер.

Share this post


Link to post
Share on other sites
я так понял, что я выбрал не правильный компилятор для новичков? или не расширенный.

Подскажите пожалуйста какими лучше пользоваться.(у меня Win 8)

По дефолту он в Verilog компилит, а string есть в SystemVerilog, и для этого нужно задать соответствующую опцию, а может даже расширение файла не .v а может .sv, ибо опции у Icarus я чего не вижу.

Можно взять Modelsim Altera Starter Edition бесплатный и пробовать на нем.

 

В SystemVerilog лучше со строками, гораздо лучше. Не нужны лошадиные резервы по длинам, в SystemVerilog строки динамические. Но в синтезируемых модулях строки не нужны.

Share this post


Link to post
Share on other sites
По дефолту он в Verilog компилит, а string есть в SystemVerilog, и для этого нужно задать соответствующую опцию, а может даже расширение файла не .v а может .sv, ибо опции у Icarus я чего не вижу.

Можно взять Modelsim Altera Starter Edition бесплатный и пробовать на нем.

 

В SystemVerilog лучше со строками, гораздо лучше. Не нужны лошадиные резервы по длинам, в SystemVerilog строки динамические. Но в синтезируемых модулях строки не нужны.

понял, а насчёт огромных массивов типа int?

Share this post


Link to post
Share on other sites
понял, а насчёт огромных массивов типа int?
Самому попробовать не?

Но огромные массивы при описании железа вам тоже вряд ли встретятся. Микросхемы не безразмерные.

Share this post


Link to post
Share on other sites

и можно ли в int переменной искать нужные цифры?

например int i = 11313234412314;

если в числе есть значение 344 то true и записать позицию где находится данное число в переменной

Share this post


Link to post
Share on other sites
и можно ли в int переменной искать нужные цифры?

например int i = 11313234412314;

если в числе есть значение 344 то true и записать позицию где находится данное число в переменной

Представьте себе следующие схемные узлы:

регистр, в котором хранится 11313234412314

мультиплексор, который из регистра выбирает по 3 байта

счетчик, который умпавляет мультиплексором

схема сравнения, на один порт которой подключен выход мультиплексора, а еа второй вход - константа 344

ну и наверное еще понадобится триггер, который при сбросе счетчика в исходное тоже будет сбрасываться, а при получении 1 от схемы сравнения - будет устанавливаться в 1, и Вы получите "true", а счетчик как раз и покажет позицию искомой последовательности...

 

Как только научитесь думать не в "байтах", а в "триггерах", так и дело с верилогом пойдет...

 

Share this post


Link to post
Share on other sites
Представьте себе следующие схемные узлы:

регистр, в котором хранится 11313234412314

мультиплексор, который из регистра выбирает по 3 байта

счетчик, который умпавляет мультиплексором

схема сравнения, на один порт которой подключен выход мультиплексора, а еа второй вход - константа 344

ну и наверное еще понадобится триггер, который при сбросе счетчика в исходное тоже будет сбрасываться, а при получении 1 от схемы сравнения - будет устанавливаться в 1, и Вы получите "true", а счетчик как раз и покажет позицию искомой последовательности...

 

Как только научитесь думать не в "байтах", а в "триггерах", так и дело с верилогом пойдет...

Спасибо большое за такой расширенный ответ, сейчас буду манну читать в этом направлении.

Share this post


Link to post
Share on other sites
Спасибо большое за такой расширенный ответ, сейчас буду манну читать в этом направлении.

Если хотите, то могу по скайпу голосом ...

Share this post


Link to post
Share on other sites
Если хотите, то могу по скайпу голосом ...

Хоспади, вы прям как ангел для меня, с меня на пиво, без прикола, скиньте скайп лс плиз

Share this post


Link to post
Share on other sites
Хоспади, вы прям как ангел для меня, с меня на пиво, без прикола, скиньте скайп лс плиз

В личной карточке форума... :)

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this