Hier liegt der unnötige Knackpunkt:
1 | TEMP_IN := CIN & BI & AI;
|
2 | case TEMP_IN is ...
|
Wenn du hier Signale hättest, müsstest du schreiben
1 | TEMP_IN <= CIN & BI & AI;
|
2 | case TEMP_IN is ...
|
und TEMP_IN in dei Sensitivliste aufnehmen.
Insgesamt ist das Beispiel so unnötig kompliziert an den Haaren durch
die Brust gezogen... :-/
BTW:
Ein "normaler" Mensch würde TEMP_IN weglassen und schreiben:
1 | case CIN & BI & AI is ...
|
Oder gleich so:
1 | P1: process(CIN, BI, AI)
|
2 | begin
|
3 | case CIN & BI & AI is
|
4 | when "000" => COUT <= '0'; SI <= '0';
|
5 | when "011" => COUT <= '1'; SI <= '0';
|
6 | when "101" => COUT <= '1'; SI <= '0';
|
7 | when "110" => COUT <= '1'; SI <= '0';
|
8 | when "111" => COUT <= '1'; SI <= '1';
|
9 | when others => COUT <= '0'; SI <= '1';
|
10 | end case;
|
11 | end process P1;
|
Da sehe ich gleich, wie Carry und Sum sich verhalten.
Das scheint mir sogar noch besser lesbar ;-)