满意答案
jjh7dc9oay
推荐于 2018.04.04
采纳率:49% 等级:12
已帮助:9052人
已知补码求源码 其实就是对补码求补
先取反 再加1求补码 说明你做的是负数的求补 所以第一位应该是符号位
vhdl代码如下
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY exp IS
PORT(clk : in std_logic;
a : in std_logic_vector (7 downto 0);
b : out std_logic_vector (7 downto 0));
END exp;
ARCHITECTURE one OF exp IS
BEGIN
PROCESS(clk)
VARIABLE temp : std_logic_vector (7 downto 0);
begin
if clk'event and clk = '1' then
temp := a XOR "01111111"; --异或求反
temp := conv_std_logic_vector(conv_integer(temp)+1,8); --temp转换成整数加1后再转换回来
b <= temp; --结果输出
end if;
end process;
end one;
00分享举报