今天看到一个程序,两个8位带符号数相加,要考虑到数据位扩展的问题,程序如下:<br /><br />library ieee;<br />use ieee.std_logic_1164.all;<br />use ieee.std_logic_signed.all;<br /><br />entity Add2In is<br /> port( D1:in std_logic_vector(7 downto 0);<br /> D2:in std_logic_vector(7 downto 0);<br /> Q :out std_logic_vector(8 downto 0);<br /> Clk: in std_logic);<br />end Add2In;<br /><br />architecture A_Add2In of Add2In is<br />begin<br /> process(Clk)<br /> begin<br /> if Clk = '1' and Clk'event then <br /> Q <= (D1(D1'left)&D1)+(D2(D2'left)&D2);<br /> end if;<br /> end process;<br />end A_Add2In;<br /><br />里边的Q <= (D1(D1'left)&D1)+(D2(D2'left)&D2);这句应该是数据位扩展,但我怎么也看不明白这个语句是怎么组合的,请大家指教一下,谢谢! |
|