2017-01-30 6 views
1

Я пытаюсь осуществить линейный регистр сдвига обратной связи с параметризованной шириной и коэффициентами:Verilog: назначить взвешенную сумму параметризованного длины

// ... 
    parameter width = 16; 
    parameter [width-1:0] coeff = 16'b1110101100110110; 
// ... 

Есть ли способ назначить исключающую ИЛИ-цепь, к входу триггер, то есть то, что является разумным способом реализации что-то вроде

assign input_wire = (coeff[0] & flops[0]) xor ... xor (coeff[width-1] & flops[width-1]); 

очевидный, но незаконным способом будет использовать для цикла. Есть ли способ сделать это за пределами всегда-блока?

Благодаря

+0

Вы можете взглянуть на этот вопрос: http://stackoverflow.com/questions/17159397/verilog-adding-individual-bits-of-a-register-combinational-logic-register-wid, который предлагает решение для твоя проблема. Способ сделать это в «одной строке» - это реализовать параметризованный модуль, который выполняет вычисления – Krouitch

ответ

0

побитового И и одинарный XOR-оператор сделать трюк:

assign input_wire = ^(coefficients[width-1:0] & flops[width-1:0]); 

поразрядными делает взвешивание Триггера выходов.