3个回答
展开全部
我记得是位扩展,一种是有符号扩展,一种是无符号扩展,具体记不清了,你可以查一查。 不太常用,可以用其他写法代替的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SXT 是有符号扩展, EXT是无符号扩展。两个functions属于std_logic_arith package。
SXT的用法如下:
function SXT(ARG: STD_LOGIC_VECTOR; SIZE: INTEGER) return STD_LOGIC_VECTOR;
举个例子:
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_SIGNED.ALL;
。。。
data_out <= SXT(data_in, data_out'LENGTH);
但是这两个functions不包括在标准library. 这会引起程序兼容性的问题(因供应商和制造工艺的不同)。建议使用ieee中的RESIZEfunction,已达到相同的效果。但要注意符号位的处理。一下使一些例子,仅供参考:
data_out <= std_logic_vector (resize(signed(data_in), data_out'length));
data_out<=std_ulogic_vector (resize(unsigned(data_i n), data_out'length));
data_out<=std_ulogic_vector (resize( signed(data_in), data_out'length));
SXT的用法如下:
function SXT(ARG: STD_LOGIC_VECTOR; SIZE: INTEGER) return STD_LOGIC_VECTOR;
举个例子:
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_SIGNED.ALL;
。。。
data_out <= SXT(data_in, data_out'LENGTH);
但是这两个functions不包括在标准library. 这会引起程序兼容性的问题(因供应商和制造工艺的不同)。建议使用ieee中的RESIZEfunction,已达到相同的效果。但要注意符号位的处理。一下使一些例子,仅供参考:
data_out <= std_logic_vector (resize(signed(data_in), data_out'length));
data_out<=std_ulogic_vector (resize(unsigned(data_i n), data_out'length));
data_out<=std_ulogic_vector (resize( signed(data_in), data_out'length));
追问
能否再用一个具体数来举一个具体的实例,不胜感激。
追答
signal a : sfixed(3 downto -6);
...
s <= resize(a*a, 7, -6); -- resize using left and right bounds
s <= resize(a*a, s); -- resize using bounds of s
参考资料: The Designer's Guide to VHDL - Peter J. Ashenden
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |