SO用户,
我正在尝试校准一个我从ADC读取值的电阻式湿度传感器 . ADC输出8位值 . 我使用的Vref值为5V .
校准的第一步是将数字除以255并乘以Vref值 . 因此,校准值=(输出/ 255)* Vref .
现在,在VHDL中,我是一个问题 . 它在这里; VHDL divide two unsigned numbers
现在,在我的VHDL文件中,我有8位ADC值(湿度),我已经定义了两个常数,max_val(11111111 = 255)和Vref(00000101 = 5)都是无符号的 . 我首先使用无符号(湿度)将湿度转换为无符号,然后将此值和max_num值传递给除法函数 . 结果,我将它乘以Vref .
现在,我的问题是;
-
这是一个好方法吗?即;我分裂和倍增的方式 .
-
如何将无符号值转换回std_logic_vector?
亲切的问候 .
1 回答
A_Multiply_4 <= A&"00";
A_Multiply_5 <= A_Multiply_4 A;
slv_array <= std_logic_vector(unsigned_number);
如果你想除以255,我认为你应该将你的数字除以256并在班次后加一点数:
1/255 = 1/256 1 / x
用x = 2的力量 . 变速器是最好的方式 .
我尝试了1/3并且不得不用这种方法 .
P / s x = 2 ^ 16并且你得到的两个案例之间的差异是5.9838388480392156862745098039216e-8 . 但我不认为你想要的数字超过8位 .