Проблема связана с тем, что вы присваиваете temp <= unsigned(a) + 1
для всех случаев, и поскольку a
является постоянным с сигналом 00
, вы выводите только 01
, просто отбрасываете a
и используете temp <= unsigned(temp) + 1
с температуройинициализирован до 00
.
В качестве улучшения, как предполагает mkrieger1 , было бы лучше определить temp
как unsigned
, поскольку вы хотите применить +
в теме.Также вам нужно будет либо снова преобразовать temp
обратно в логический вектор std, когда вы присваиваете его значение обратно z
, либо также сделать z
unsigned
.
signal temp : unsigned(1 downto 0) := "00";