VHDL中整形变量转换为标准逻辑变量应注意的问题

VHDL中的数据转换函数conv_std_logic_vector的用法

std_logic_arith程序包里定义的数据转换函数:conv_std_logic_vector(int_var,bit_len)–INTEGER,SINGER,UNSIGNED转换成std_logic_vector

由于参考书上都没有具体说明,本以为是将原来的数据类型按位矢量输出,结果按这种用法编写的滤波器在接实际信号时,却使用输出图像全部反色,经modelsim波形仿真之后,才发现滤波器结构是正确的,可是调用了转换函数之后,结果非预期效果。

对该转换函数做了测试之后,才发现:该函数的转换结果是将被转换的数据先转换成2进制补码形式,然后取其低“位长”,作为输出。

如:a<=conv_std_logic_vector(-79,6)—-(-79)2c=(10110001)

b<=conv_std_logic_vector(-2,6)—–(-2)2c=(11111110)

c<=conv_std_logic_vector(100,6)—–(100)2c=(01100100)

输出结果:a=110001,b=111110,c=100100

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.