-1
所以我已經發布了這個,但我沒有得到任何答案,所以我決定再試一次。我在VHDL中犯了什麼錯誤?
應實現以下運算功能實體: •減法I1 - I2 •輸入操作數1(I1):12位,補 •輸入操作數2(I2):8位,補 •輸出(O):12位,補 •溢出(V)和進位標誌(C)設置相應 •有效標誌(有效):表示如果計算解決方案是否有效
所以我做了什麼?
這裏是:
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;
entity arithmetic is
port(I1 :in std_logic_vector(12-1 downto 0); -- Operand 1
I2 :in std_logic_vector(8-1 downto 0); -- Operand 2
O :out std_logic_vector(12-1 downto 0); -- Output
C :out std_logic; -- Carry Flag
V :out std_logic; -- Overflow Flag
VALID :out std_logic -- Flag to indicate if the solution is valid or not
);
end arithmetic;
architecture behavior of arithmetic is
begin
process(I1,I2)
begin
if ((unsigned(I1)-unsigned(I2)) > unsigned(I1)) and
((unsigned(I1)-unsigned(I2)) > unsigned(I2)) then
C <= '1';
else
C <= '0';
end if;
if I1(11)='1' and signed(std_logic_vector(unsigned(I1)-unsigned(I2)))>0
then
V <= '1';
else
V <= '0';
end if;
if unsigned(I1) < unsigned(I2) then
VALID <= '0';
else
VALID <= '1';
end if;
O <= std_logic_vector(unsigned(I1)-unsigned(I2));
end process;
end behavior;
沒有語法錯誤或類似的東西。唯一的錯誤是 說:
誤差:
COMP2,SUB
I1 = 100000011110
I2 = 01000001
預計:
O = 011111011101
C ='0',V ='1', VALID = '0'
收稿日期:
O = 011111011101
C = '0',V = '1' 和VALID = '1'
如果有人可以幫助我將是非常感謝。