我对使用 std_logic_vector 到 signed / unsigned 的转换有一些疑问 . 我总是使用转换 signed(...) , unsigned(...) ,但是当我尝试使用库 numeric_std ( to_signed , to unsigned )中定义的转换时,它不起作用 . 有人可以向我解释为什么会这样吗?为什么转换 unsigned() 和 signed() 有效?
std_logic_vector
signed
unsigned
signed(...)
unsigned(...)
numeric_std
to_signed
to unsigned
unsigned()
signed()
因为 std_logic_vector 和 signed / unsigned 类型密切相关,所以可以使用类型转换方式进行转换 . 所以 signed(a_std_logic_vector) 和 unsigned(a_std_logic_vector) 没关系 . 但是,转换功能也在标准中定义 .
signed(a_std_logic_vector)
unsigned(a_std_logic_vector)
看看VHDL FAQ . 这是一个旧网站,从新闻组仍然很热的时候开始,但它仍然有很多关于VHDL的好信息 .
查看numeric_std的包规范 . 你会发现to_signed从整数转换为signed ... .
正如“vermaete”所说,signed是与std_logic_vector密切相关的类型,因此您不需要转换函数 .
2 回答
因为
std_logic_vector
和signed
/unsigned
类型密切相关,所以可以使用类型转换方式进行转换 . 所以signed(a_std_logic_vector)
和unsigned(a_std_logic_vector)
没关系 . 但是,转换功能也在标准中定义 .看看VHDL FAQ . 这是一个旧网站,从新闻组仍然很热的时候开始,但它仍然有很多关于VHDL的好信息 .
查看numeric_std的包规范 . 你会发现to_signed从整数转换为signed ... .
正如“vermaete”所说,signed是与std_logic_vector密切相关的类型,因此您不需要转换函数 .