【发布时间】:2014-02-22 01:47:48
【问题描述】:
我不知道如何取两个std_logic_vector(31 downto 0)的绝对值;
下面是代码示例:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all; -- for the signed, unsigned types and arithmetic ops
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
...
...
port (
X: in std_logic_vector(31 downto 0);
Y: in std_logic_vector(31 downto 0);
F: out std_logic_vector(31 downto 0)
);
..
..
..
process(X,Y)
begin
F <= abs(X-Y) --this doesnt work
【问题讨论】:
-
如何使用铅笔和纸计算二进制值的绝对值?只需在 VHDL 中复制该算法即可。
-
@JoeHass 如果您正在学习,或者您需要一些非内置的东西,但在标准
signed类型上使用内置abs时,这是正确的答案@ 类型通常会合成在许多 FPGA 和 ASIC 供应商的合成器中更好地编码,特别是一些内置的数学运算。
标签: vhdl