首页 文章

如何在VHDL中找到平方根号?

提问于
浏览
0

是否有任何算法或代码可以在VHDL中找到整数的平方根?代码不得包含这些库:

IEEE.std_logic_arith.all;
IEEE.std_logic_unsigned.all;
IEEE.math_real.all;
IEEE.std_logic_signed.all;
IEEE.std_logic_unsigned.all;

3 回答

  • 0

    看起来你正在寻找可综合的代码,在这种情况下,问题应该提到 .

    一些数学运算通常由综合工具支持,如整数加法( a + b ),整数否定( - a ),整数减法( a - b ),整数乘法( * ),而其他数学运算则不像点平方根运算 .

    因此,必须单独实现可合成的平方根操作,如user1155120所建议,并且实现将取决于对参数,准确性,吞吐量,延迟,大小等的要求 .

    但是出于模拟目的而不是可合成的,您可以使用 ieee.math_real.sqrt ,下面的示例打印 2.0 的平方根值:

    library ieee;
    use ieee.math_real.all;
    ...
    report real'image(sqrt(2.0)) severity NOTE;
    
  • 0

    如果文字措辞是代码不能包含 IEEE.math_real.all; ,您可以通过从math_real中仅选择所需内容来规避问题 .

    然后 IEEE.math_real.sqrt; 会做你想要的 .

    然而,虽然这满足了上述问题的字母,但我不能保证它满足意图 .

    一个更好的答案是采用任何算法来计算平方根 - 有许多,很容易在通常的来源中找到 . 在VHDL中实现它,并测试它 .

  • 0

    VHDL samples
    ...
    32-bit parallel integer square root

    VHDL源代码是sqrt32.vhdl
    VHDL仿真的输出是sqrt32.out
    从未绘制过原理图 . sqrt8m.vhdl扩大了
    使用"generate"语句创建sqrt32.vhdl

    仅包含对包ieee.std_logic_1164的引用,接受std_logic_vector长度为32并返回长度为16 .

    用搜索词 square root VHDL 搜索谷歌搜索的惊人之处 .

    Addendum

    我很好奇,qsort32.vhdl的测试平台很小 . 代码中有错误,它不起作用 . 纠正它的明显方法是重新实施它 . 在扩展sqrt8m.vhdl作为源(也可以验证)时,它可能会遇到错误的假设 .

    还有其他平方根VHDL模型可用 . 顺序(连续减法除法器)模型在VHDL算术书籍中并不罕见,具有各种划分实现(例如,非恢复) .

相关问题