Можем ли мы использовать троичный оператор внутри всегда блока? Является ли оператор MOD(%) синтезируемым?
Я пытаюсь использовать троичный оператор внутри всегда блока, это синтезируемый. И является ли оператор MOD (%) синтезируемым в verilog? потому что, когда я симулирую код, результаты кажутся правильными, а когда реализованы на аппаратном уровне, это ведет себя странно. Я изучал кое-что, где этот оператор деления также не синтезируется до тех пор, пока делитель не является степенью 2. Это правда? Я использую инструмент vivado для синтеза моего кода.
1 ответ
Насколько мне известно, троичный оператор является синтезируемым, поскольку теоретически он может быть сопоставлен с простым мультиплексором 2*1.
Я не уверен, но оператор mod(%) не будет синтезируемым. Умножение, деление, модуль по модулю, это терминология программирования, но для реального оборудования вам действительно потребуется оборудование, которое выполняет умножение, деление или работу по модулю. Таким образом, инструмент не может сделать это оборудование, только на% в вашем коде.
Одна ссылка на синтезируемые конструкции verilog - http://asic-soc.blogspot.in/2013/06/synthesizable-and-non-synthesizable.html