Аппаратная реализация сумматора по модулю
У меня есть 8 входов, чью сумму по модулю я должен взять с модулем mi знаю алгоритм для 2 входов, но он здесь не работает. Например, у меня есть сумма = сумма0+ сумма1+ сумма2+ сумма3+ сумма4+ сумма5+ сумма6+ сумма7, и я должен взять мод m суммы. Как сделать это с точки зрения аппаратной реализации? я также пишу код, но его не работает м3 является мод3
always@(posedge clk)
begin
sum3a<=mod30+mod31;
sum3b<=mod32+mod33;
sum3c<=mod34+mod35;
sum3d<=mod36+mod37;
sum3e<=sum3a+sum3b;
sum3f<=sum3c+sum3d;
x31= (sum3e+sum3f);
x32= (sum3e-m3);
if (x32>=0 )
sum3 <= x32;
else
sum3 <= x31;
end
1 ответ
Решение
Не смешивайте блокирующие и неблокирующие назначения в одном always
блок. sum3e
переменная зависит от sum3a
а также sum3b
но в то же время sum3a
а также sum3b
значение изменяется из-за неблокирующих назначений, это приведет к логическим ошибкам.