Ваш счетчик никогда не будет считать, потому что вы:
if (neg_cnt = "10") then
neg_cnt <= neg_cnt + '1';
end if;
и
if (pos_cnt = "10") then
pos_cnt <= pos_cnt + '1';
end if;
, но оба значения, pos_cnt
и neg_cnt
, сбрасываются на "00"
.Я думаю, вы могли бы сделать что-то подобное, как:
if (pos_cnt = "10") then
pos_cnt <= (others => '0');
else
pos_cnt <= pos_cnt + '1';
end if;