Моите входни данни са комплимент 2 и проектирах, че входът е подписано число и цялата операция се използва подписано число, библиотеката, която използвах ieee.numeric_std.all, но когато направя „+“, възникна грешка „намерих „0“ дефиниции на оператора "+", не може да определи точната дефиниция на претоварено съвпадение за "+"". Така че промених друга в друга библиотека ieee.std_logic_arith.all и направих операцията за добавяне като компонент, работи. когато симулирах моя код с помощта на testbench, възникна грешка: портът на обекта xin не съвпада с типа, подписан на порта на компонента. Мисля, че тази грешка е за моята библиотека. може ли някой да ми помогне
нов
не използвам разширител като компонент и кодът по-долу работи
adder: process(clk)
begin
if (clk'event and clk = '1')then
if enable1='1' then
add1 <= (x0(7)&x0) + (x15(8)&x15);
add2 <= (x1(7)&x1) + (x14(8)&x14);
add3 <= (x2(7)&x2) + (x13(8)&x13);
add4 <= (x3(7)&x3) + (x12(8)&x12);
add5 <= (x4(7)&x4) + (x11(8)&x11);
add6 <= (x5(7)&x5) + (x10(8)&x10);
add7 <= (x6(7)&x6) + (x9(8)&x9);
add8 <= (x7(7)&x7) + (x8(8)&x8);
end if;
end if;
end process adder;
и библиотеката на моя тестов стенд използва use ieee.numeric_std.all;
USE ieee.std_logic_1164.ALL;
use ieee.numeric_std.all;
use ieee.std_logic_textio.all;
use std.textio.all;
ENTITY tb_signedinput IS
END tb_signedinput;
ARCHITECTURE behavior OF tb_signedinput IS
-- Component Declaration
COMPONENT signedinput is
port( Clk : in std_logic;
reset : in std_logic;
enable1 : in std_logic;
Xin : in signed(7 downto 0);
Yout : out signed(19 downto 0)
);
END COMPONENT;
--Inputs
signal Clk : std_logic := '0';
signal reset : std_logic := '0';
signal Xin : signed(7 downto 0) := (others => '0');
signal enable1 : std_logic := '0';
--Outputs
signal Yout : signed(19 downto 0);
-- Array
constant MEMSIZE: integer :=99;
type testarray is array (MEMSIZE downto 0) of signed(7 DOWNTO 0);
signal testvectors: testarray;
shared variable vectornum,outnum: integer;
-- Clock period definitions
constant Clk_period : time := 10 ns;
BEGIN
-- Component Instantiation
uut: signedinput PORT MAP( Clk => Clk,
reset => reset,
Xin => Xin,
enable1 =>enable1,
Yout => Yout );
грешката все още се появява:
Entity port xin does not match with type std_logic_vector of component port
Entity port yout does not match with type std_logic_vector of component port
следователно промених своя разширител отново на
add1 <= resize(x0,9) + x15;
синтаксисът е добър, но същата грешка в testbench..
Грешка ли е относно моя ISE тип или тип библиотека? Благодаря ти!