VHDL语言中,SXT是什么意思?格式如:RegB<=SXT(RegA,WIDTH) 这个SXT具体什么意思呢?求解答

如题

sxt函数用来扩展一个信号的位宽。比方说你的RegA有五位(如10011),WIDTH=10,那么RegB<=SXT(RegA,WIDTH)执行完之后RegB的末五位就和RegA相同,高五位都是RegA最高位(也就是符号位)的值,即RegB=1111110011。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-03-18
我记得是位扩展,一种是有符号扩展,一种是无符号扩展,具体记不清了,你可以查一查。 不太常用,可以用其他写法代替的。
第2个回答  2011-03-18
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));追问

能否再用一个具体数来举一个具体的实例,不胜感激。

追答

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

VHDL语言中,SXT是什么意思?格式如:RegB<=SXT(RegA,WIDTH) 这个SXT...
sxt函数用来扩展一个信号的位宽。比方说你的RegA有五位(如10011),WIDTH=10,那么RegB<=SXT(RegA,WIDTH)执行完之后RegB的末五位就和RegA相同,高五位都是RegA最高位(也就是符号位)的值,即RegB=1111110011。

VHDL语言中,SXT是什么意思?格式如:RegB<=SXT(RegA,WID...
符号位扩展

VHDL编程中的SXT是什么意思
sxt函数用来扩展一个信号的位宽。比方说你的RegA有五位(如10011),WIDTH=10,那么RegB<=SXT(RegA,WIDTH)执行完之后RegB的末五位就和RegA相同,高五位都是RegA最高位(也就是符号位)的值,即RegB=1111110011。

vhdl ext和sxt区别
SXT 是有符号扩展, EXT是无符号扩展。两个functions属于std_logic_arith package。建议使用ieee中的RESIZEfunction,已达到相同的效果。sxt函数用来扩展一个信号的位宽。比方说你的RegA有五位(如10011),WIDTH=10,那么RegB<=SXT(RegA,WIDTH)执行完之后RegB的末五位就和RegA相同,高五位都是RegA最高位...

相似回答