在数字信号处理中经常要用到符号位扩展,如果扩展的位数较少,例如符号位扩展1位,那么采用位拼接方式即可, 但是,如果符号位扩展多位,仍采用上述方式未尝不可,但略显繁琐。下面举例说明,将可能的一些方法罗列出来 对比,从中可体悟到某些方法的独特优势。 din(3 downto 0) dout(7 downto 0) din(3)为符号位,要求din符号位扩展为8位dout。
1.采用位拼接运算 dout<=din(3)&din(3)&din(3)&din(3)&din(3 downto 0);
2.采用位赋值方式 dout(7 downto 4) <= (7=>din(3),6=>din(3),5=>din(3),4=>din(3)); dout(3 downto 0) <= din;
3.采用others语句 dout(7 downto 4) <= (others=>din(3)); dout(3 downto 0) <= din;
显然,方法1,2在低符号位扩展时有优势,书写简洁,方法3在大位宽符号位扩展时更有优势。
|