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

Мне необходимо озарение и святое Провиденье...

Я был и есть сишник. Посему для ПЛИСов решил изучать верилог. Серия вопросов на понимание:

1) Что такое тип wire, Поляков его упоминает и дает примеры использования, но что это физически?

2) Чем отличаются физически integer и reg [0:31]?

3) операции +-*/ работают для регистров любой длины. Значит ли это, что они есть макросы и их можно безущербно заменить на кустарную функцию соответствующих операция, выполненую через битовые операции?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ответы на все ваши вопросы находятся в стандарте

IEEE Std 1800 - 2009

IEEE Standard for SystemVerilog—

Unified Hardware Design,

Specification, and Verification

Language

 

Я тоже не сразу "распробовал" этот документ, но общение на форуме наставило меня на путь истины!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я был и есть сишник. Посему для ПЛИСов решил изучать верилог. Серия вопросов на понимание:

1) Что такое тип wire, Поляков его упоминает и дает примеры использования, но что это физически?

 

Физически wire есть элемент соединения блоков между собой. По аналогии с печатной платой wire - это дорожка на плате.

 

2) Чем отличаются физически integer и reg [0:31]?

 

тем, что integer представляет собой 32-х разрядный регистр для хранения числа со знаком. Грубо говоря тип integer эквивалентен типу reg signed [31:0].

 

3) операции +-*/ работают для регистров любой длины. Значит ли это, что они есть макросы и их можно безущербно заменить на кустарную функцию соответствующих операция, выполненую через битовые операции?

 

заменить можно, но не всегда без ущерба. В случае с FPGA умножение/деление выполняется готовыми встроенными умножителями, поэтому менять эти операции на кустарные функции особого смысла нет (окончательный ответ вам даст синтезатор и анализ таймингов).

 

PS: объяснения максимально краткие и не освобождают вас от изучения стандартов :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

PS: объяснения максимально краткие и не освобождают вас от изучения стандартов

сколь максимально краткое, столь по существу и неверное.

но для начала междусобойчика пойдёт.

посмотрим, что скажет стая (с)

зы: топикстартеру советую обратить внимание на ответ №1 + воспользоваться поиском по форуму. вопросы 1,2 обсасывались мильён раз. 3 - наводящий вопрос: а в общем случае на какие именно макросы вы собираетесь их менять?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1) Что такое тип wire, Поляков его упоминает и дает примеры использования, но что это физически?

Как и было замечено - это элемент соеденения между блоками. Также использвуется только в комбинационной логике. Не последовательной.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот есть такая же тема.

Советы там подойдут и для текущего случая.

 

http://electronix.ru/forum/index.php?showtopic=75598

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

наводящий вопрос: а в общем случае на какие именно макросы вы собираетесь их менять?

Нет, менять на свои функции - глупо. Просто меня смутило сходство этих операций со стандартными интеловскими коммандами, что может и там есть жесткое ограничения на длину регистра. Вроде как в С++ тип , bool, хоть и звется битом, для хранения требует целый байт. :unsure:

 

Ответы на все ваши вопросы находятся в стандарте

IEEE Std 1800 - 2009

IEEE Standard for SystemVerilog—

Unified Hardware Design,

Specification, and Verification

Language

 

А не могли бы Вы, если он где-то под рукой, кинуть сюда. На форуме он есть в шапке, но не открывается, в гуглотеке всё либо несуществующая страница либо ссылки на платные репозитории.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А не могли бы Вы, если он где-то под рукой, кинуть сюда. На форуме он есть в шапке, но не открывается, в гуглотеке всё либо несуществующая страница либо ссылки на платные репозитории.

В свое время я находил более старые версии стандарта в Интернете.

Размер данного файла 11.5 MB, он сюда не прилепится.

Да и правилами форума это, наверное, запрещено.

Пообщаетесь здесь, наберете нужное количество сообщений, и вам откроются "закрома".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Та просто в гугл задавайте вопросы, и найдете ответы на все ответы.

 

Верилог, не язык программирования. Это язык описания. Вы описываете регистр. Логично что вы сразу же и задаете какой он длинны. Нужно 8 бит, будет 8. Нужно 48, будет 48.

Просто командой умножения можно пользоваться. Но строго говоря, непонятно что в результате синтезатор сгенерит. Он может использовать как и аппаратный умножитель так и сгенерить это на логических элекментах. Гораздо лушче пользоваться специальным визардом, где можно задать разрядность, тип итд.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я был и есть сишник. Посему для ПЛИСов решил изучать верилог. Серия вопросов на понимание:

1) Что такое тип wire, Поляков его упоминает и дает примеры использования, но что это физически?

2) Чем отличаются физически integer и reg [0:31]?

3) операции +-*/ работают для регистров любой длины. Значит ли это, что они есть макросы и их можно безущербно заменить на кустарную функцию соответствующих операция, выполненую через битовые операции?

 

в дополнение

1)

используйте/изучайте system verilog (если используете ПЛИС Xilinx c ISE/XST - то нужно дополнительный синтезатор: Synplify, Precision etc) - там есть универсальный тип logic (а чтоб вообще не заморачиваться bit)

2)

--/-- там есть int === reg[31:0], и byte и т.д.

3)

в отличие от С компилятора, результат синтеза по HDL-описанию не является детерминированным, а выходом оптимизируещего/перебирающего алгоритма. поэтому чем проще/стандартнее опишите конструкцию, тем лучших результатов добъетесь

 

тут еще возникает вопрос "синтезируемого подмножества" и coding style - это ищите, каждый второй вопрос начинающих об этом

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

используйте/изучайте system verilog (если используете ПЛИС Xilinx c ISE/XST - то нужно дополнительный синтезатор: Synplify, Precision etc)

А нафига? Меня лично полностью альтеровский устраивает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А нафига? Меня лично полностью альтеровский устраивает.

 

Там же, вроде, написано  :)

 

используйте/изучайте system verilog (если используете ПЛИС Xilinx c ISE/XST - то нужно дополнительный синтезатор: Synplify, Precision etc) - там есть универсальный тип logic (а чтоб вообще не заморачиваться bit)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...