Genau das habe ich vorher probiert, aber ich glaube meinen Fehler
gefunden zu haben. Deshalb danke für diesen Denkanstoß... :D
Ich hatte mein Signal, in welches der ganzzahlige Temperaturwert
reingeschrieben werden sollte, als Integer definiert. Dadurch
funktionierte natürlich die Wandlung nicht. Zu dem Zeitpunkt dachte ich
aber, dass ein grundlegender Denkfehler bei der Benutzung der Datentypen
vorliegt.
Ich versuche das ganze zur Kontrolle noch mal zusammenzufassen. Mein
Eingang:
1 | TEMP :in std_logic_vector(15 downto 0);
|
Meine zwei Signale:
1 | signal temp_ganz :std_logic_vector(6 downto 0):=(others => '0');
|
2 | signal temp_gebrochen :std_logic_vector(3 downto 0):=(others => '0');
|
Und das ist dann die Wandlung:
1 | if temp(11) = '1' then
|
2 | temp_ganz<= unsigned(not(temp(10 downto 4)))+1;
|
3 | temp_gebrochen<=unsigned(not(temp( 3 downto 0)))+1;
|
4 | else
|
5 | temp_ganz<=temp(10 downto 4);
|
6 | temp_gebrochen<=temp( 3 downto 0);
|
7 | end if;
|
Ich habe es nun noch nicht simuliert, aber vielleicht kann mir ja schon
vorher jemand sagen, ob es so i. O. ist oder vollkommener Stuss. :)