Можем ли мы использовать тернарный оператор внутри всегда блока? Можно ли синтезировать оператор MOD(%)?

Я пытаюсь использовать тернарный оператор внутри всегда блока, можно ли его синтезировать. И можно ли синтезировать оператор MOD (%) в verilog? потому что, когда я моделирую код, результаты кажутся правильными, а при аппаратной реализации он ведет себя странно. Я изучал кое-что, где этот оператор деления также не может быть синтезирован до тех пор, пока делитель не будет степенью двойки. Это правда? Я использую инструмент vivado для синтеза своего кода.


person vlsi_user    schedule 27.10.2016    source источник
comment
Как насчет того, чтобы показать нам часть своего кода?   -  person andrsmllr    schedule 27.10.2016
comment
Тернар определенно поддается синтезу.   -  person wilcroft    schedule 27.10.2016


Ответы (1)


Насколько мне известно, тернарный оператор можно синтезировать, поскольку теоретически его можно сопоставить с простым мультиплексором 2 * 1.

Я не уверен, но оператор mod(%) не будет синтезирован. Умножение, деление, модуль - это терминология программирования, но для реального оборудования вам действительно потребуется оборудование, которое выполняет умножение, деление или операцию по модулю. Таким образом, инструмент не может сделать это оборудование, просто на % в вашем коде.

Одна ссылка на синтезируемые конструкции Verilog — http://asic-soc.blogspot.in/2013/06/synthesizable-and-non-synthesizable.html

person Karan Shah    schedule 28.10.2016