У меня есть циклический буфер, управляемый переменными head и tail:
reg[BITS:0] head;
reg[BITS:0] tail;
В какой-то момент есть
tail <= tail+1;
if (tail+1 == head)
// do something
end
В случае, если tail + 1 переполняется и оборачивается вокруг этого оператора if не срабатывает Я думаю, что причина в том, что "tail + 1" автоматически не округляется до BITS + 1 ширина.
Как правильно написать такой код, чтобы "tail + 1 == head" был бы вычисляется со значениями ширины BITS + 1, как это было бы сделано в оборудовании, которое описывает этот код?