我必须转换一个整数才能找到需要多少位来表示该整数。假设整数值为。我知道需要5位来表示这个整数。 VHDL中是否有任何属性可以做到这一点? 重要提示:结果也应该是一个整数,它应该表示位数。以VHDL表示整数的位数
1
A
回答
2
没有VHDL属性或功能,但你可以创建这样一个功能:
-- Returns number of bits required to represent val in binary vector
function bits_req(val : natural) return natural is
variable res_v : natural; -- Result
variable remain_v : natural; -- Remainder used in iteration
begin
res_v := 0;
remain_v := val;
while remain_v > 0 loop -- Iteration for each bit required
res_v := res_v + 1;
remain_v := remain_v/2;
end loop;
return res_v;
end function;
但是,有时候ceil_log2
功能也非常有用,因为这给出了基于中的条目需要的地址的位数一个内存映射表,以及ceil_log2(val) = bits_req(val - 1)
。
1
使用math_real库。它不是用于综合,而是在架构和开始语句之间很好地工作。
use ieee.math_real.all;
常数nbits:自然:=整数(ceil(log2(real(n))));
我使用math_real进行在线生成正弦/余弦表...再次它是架构和开始...再次,不要尝试在综合中使用math_real。
我已经在Quartus,ISE,Vivado,Modelsim中成功使用了它;它可能不被所有的东西支持。
相关问题
- 1. VHDL整数二维数组
- 2. 计算所需的位数以表示2的补码整数
- 3. 如何将整数转换为VHDL中的二进制表示?
- 4. VHDL:十进制整数的第n位数
- 5. 以位为单位表示一个整数:错误
- 6. VHDL中数组的硬件表示法
- 7. 位域中的整数表示
- 8. VHDL整数字符串
- 9. VHDL - 移位字节数组
- 10. VHDL 8位计数器
- 11. 浮点数表示的整数表示
- 12. 在GNU/Linux中表示64位整数
- 13. 将整数转换为位表示
- 14. 整数表示
- 15. 浮点表示,整数位和小数位
- 16. 以两位数的整数数组,并存储为两个单数位整数
- 17. 如何约束VHDL 2008中的整数
- 18. 16位std_logic_vector以降低VHDL
- 19. 根据标准,整数中的值表示位的数量?
- 20. VHDL:确定从整数范围属性位大小
- 21. VHDL代码来转换5位向量为整数
- 22. 如何在VHDL中对整数进行按位与?
- 23. VHDL中的4位U/D计数器
- 24. VHDL中的4位Johnson计数器
- 25. 在vhdl整数算术运算
- 26. VHDL编码..从整数转换为bit_vector
- 27. std_logic_vector与赛灵思VHDL整数合成
- 28. 整数位域为列表
- 29. C:大整数的表示
- 30. 的Prolog:表示整数
只要它是编译时评估的,你的常量语句就可以用于综合。 – JHBonarius