Guten Morgen Community,
es geht eigentlich nur um folgenden Codeteil:
1 | entity adder is
|
2 | port(
|
3 | debug: OUT STD_LOGIC;
|
4 | clk: IN STD_LOGIC;
|
5 | reg_in: IN UNSIGNED(7 downto 0);
|
6 | incr_in: IN UNSIGNED(7 downto 0);
|
7 | out_out: OUT UNSIGNED(7 downto 0)
|
8 | );
|
9 | end adder;
|
10 |
|
11 | architecture Behavioral of adder is
|
12 | signal temp: UNSIGNED(8 downto 0) := (others => '0');
|
13 | begin
|
14 |
|
15 | process(clk, reg_in, incr_in)
|
16 | begin
|
17 | if falling_edge(clk) then
|
18 | temp <= ('0' & reg_in) + ('0' & incr_in);
|
19 | end if;
|
20 | end process;
|
21 |
|
22 | out_out <= temp(7 downto 0);
|
23 | debug <= temp(8);
|
24 |
|
25 | end Behavioral;
|
Der gesamte Code ist noch mal im Anhang. Das soll mal was DDS-ähnliches
werden.
Wenn ich das jetzt so wie es ist simuliere, ist das Ergebnis nach einen
Overflow der 8 Bit um genau 1 LSB kleiner als es sein söllte, das ist
auch noch im Anhang.
174 + 87 (=incr_in) söllte bei 8 Bit ja eigentlich 6 sein, oder?
So wie ich es vermute ist das lediglich ein logisches Problem, mir
mangelt es aber gerade an Denkvermögen.
Ich verwende übrigens die ISE 14.7, nt64