File talk:Vhdl signed adder.png

This is wrong. It should read on line 31 the following

q_s <= signed(a(a'high) & a) + signed(b(b'high) & b);

Right now your code makes an unsigned adder.